Infection Monkey 添加系統信息收集器
這是什么?
本指南將向您展示如何為Infection Monkey創建新的系統信息收集器。系統信息收集器是每個Monkey運行的模塊,它們收集特定信息并將其作為系統信息遙測的一部分發送回該Island。
我需要一個新的系統信息控制器嗎?
如果您只想執行shell命令,則無需添加新的收集器-只需在PBA部分的Monkey Island配置中配置所需的命令即可!另外,如果有一個相關的收集器,而您只需要向其添加更多信息,則擴展現有的收集器。否則,您必須添加一個新的收集器。
如何添加新的系統信息收集器
Monkey side
構架
- 在以下目錄中創建新的收集器:
monkey/infection_monkey/system_info/collectors首先使用收集器的名稱創建一個新文件。 - 在該文件中,創建一個繼承自
SystemInfoCollector類:
from infection_monkey.system_info.system_info_collector import SystemInfoCollector
class MyNewCollector(SystemInfoCollector):
- 在構造函數中設置收集器名稱,如下所示:
class MyNewCollector(SystemInfoCollector):
def __init__(self):
super(MyNewCollector, self).__init__(name="MyNewCollector")
實作
覆蓋 collect您自己實現的方法。見EnvironmentCollector.py收藏家供參考。您也可以在收集期間登錄。
Island side
Island 配置
定義
您需要將收集器添加到 monkey_island/cc/services/config_schema.py 文件,在 definitions/system_info_collectors_classes/anyOf,就像這樣:
"system_info_collectors_classes": {
"title": "System Information Collectors",
"type": "string",
"anyOf": [
{
"type": "string",
"enum": [
"EnvironmentCollector"
],
"title": "Which Environment this machine is on (on prem/cloud)",
"attack_techniques": []
},
{ <=================================
"type": "string", <=================================
"enum": [ <=================================
"MyNewCollector" <=================================
], <=================================
"title": "My new title", <=================================
"attack_techniques": [] <=================================
},
],
},
屬性
另外,您可以將默認情況下使用的收集器添加到 default 關鍵在 properties/monkey/system_info/system_info_collectors_classes:
"system_info_collectors_classes": {
"title": "System info collectors",
"type": "array",
"uniqueItems": True,
"items": {
"$ref": "#/definitions/system_info_collectors_classes"
},
"default": [
"EnvironmentCollector",
"MyNewCollector" <=================================
],
"description": "Determines which system information collectors will collect information."
},
遙測處理
在下面添加一個過程函數
monkey_island/cc/telemetry/processing/system_info_collectors/{DATA_NAME_HERE}.py。該函數應解析收集器的結果。看到processing/system_info_collectors/environment.py例如。將該功能添加到
SYSTEM_INFO_COLLECTOR_TO_TELEMETRY_PROCESSORS下monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py。
Infection Monkey中文使用教程