
Microsoft ICS 取证工具框架是一个开源取证框架,用于分析工业 PLC 元数据和项目文件。
该框架为调查人员提供了一种便捷的方式,可以扫描 PLC 并识别 ICS 环境中的可疑工件,可用于手动检查、自动监控任务或事件响应操作,以检测遭到入侵的设备。
作为一款开源工具,ICS 取证工具允许调查人员审查输出并根据特定需求进行定制。
以下说明将帮助您在本地机器上获取项目副本,并使其运行,以便进行开发和测试。
git clone https://github.com/microsoft/ics-forensics-tools.git
安装 Python 依赖
pip install -r requirements.txt
python driver.py -s -v PluginName --ip ips.csv
python driver.py -s -v PluginName --ip ips.csv --analyzer AnalyzerName
python driver.py -s -v -c config.json --multiprocess
from forensic.client.forensic_client import ForensicClient
from forensic.interfaces.plugin import PluginConfig
forensic = ForensicClient()
plugin = PluginConfig.from_json({
"name": "PluginName",
"port": 123,
"transport": "tcp",
"addresses": [{"ip": "192.168.1.0/24"}, {"ip": "10.10.10.10"}],
"parameters": {
},
"analyzers": []
})
forensic.scan([plugin])
在本地开发时,请确保将 src 文件夹标记为“Sources root”
from pathlib import Path
from forensic.interfaces.plugin import PluginInterface, PluginConfig, PluginCLI
from forensic.common.constants.constants import Transport
class GeneralCLI(PluginCLI):
def __init__(self, folder_name):
super().__init__(folder_name)
self.name = "General"
self.description = "General Plugin Description"
self.port = 123
self.transport = Transport.TCP
def flags(self, parser):
self.base_flags(parser, self.port, self.transport)
parser.add_argument('--general', help='General additional argument', metavar="")
class General(PluginInterface):
def __init__(self, config: PluginConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
def connect(self, address):
self.logger.info(f"{self.config.name} connect")
def export(self, extracted):
self.logger.info(f"{self.config.name} export")
__init__.py 文件中导入您的新插件from pathlib import Path
from forensic.interfaces.analyzer import AnalyzerInterface, AnalyzerConfig
class General(AnalyzerInterface):
def __init__(self, config: AnalyzerConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
self.plugin_name = 'General'
self.create_output_dir(self.plugin_name)
def analyze(self):
pass
__init__.py 文件中导入您的新分析器Microsoft Defender for IoT 是一款无代理的网络安全层解决方案,使组织能够在 IoT/OT 和工业控制系统(ICS)设备(无论是本地还是 Azure 连接环境)中持续监控和发现资产、检测威胁并管理漏洞。
MSRC 博客下的 Section 52
关于该工具的 ICS 讲座
Section 52 - Investigating Malicious Ladder Logic | Microsoft Defender for IoT Webinar - YouTube
本项目欢迎贡献和建议。大多数贡献需要您同意一份 贡献者许可协议(CLA),声明您有权并确实授予我们 使用您贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA 并适当装饰 PR(例如状态检查、评论)。只需遵循机器人提供的说明。 您只需在所有使用我们 CLA 的仓库中执行一次此操作。
本项目已采用 Microsoft 开源行为准则。 有关更多信息,请参阅行为准则常见问题解答或 联系 [email protected] 提出其他问题或意见。
本项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标或徽标的授权使用必须遵守并遵循 Microsoft 商标和品牌指南。 在本项目的修改版本中使用 Microsoft 商标或徽标不得造成混淆或暗示 Microsoft 赞助。 任何第三方商标或徽标的使用均受该第三方的政策约束。
版权所有 (c) 2018 Microsoft Corporation。保留所有权利。
本软件按“原样”提供,不提供任何明示或暗示的保证, 包括但不限于适销性、特定用途适用性和非侵权性的保证。 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他 责任负责,无论此类责任是基于合同、侵权或其他行为,均与 本软件的使用或其他交易有关。
| 参数 | 描述 | 必需/可选 |
|---|
-h, --help | 显示此帮助信息并退出 | 可选 |
-s, --save-config | 保存配置文件以便将来轻松使用 | 可选 |
-c, --config | 配置文件路径,默认为 config.json | 可选 |
-o, --output-dir | 输出生成文件的目录,默认为 output | 可选 |
-v, --verbose | 将日志输出到文件以及控制台 | 可选 |
-p, --multiprocess | 按插件/分析器数量以多进程模式运行 | 可选 |
| 参数 | 描述 | 必需/可选 |
|---|
-h, --help | 显示此帮助信息并退出 | 可选 |
--ip | 地址文件路径、CIDR 或 IP 地址 CSV(需要 ip 列)。 可添加更多列以提供每个 IP 的额外信息(用户名、密码等) | 必需 |
--port | 端口号 | 可选 |
--transport | tcp/udp | 可选 |
--analyzer | 要运行的分析器名称 | 可选 |