前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ICSpector:一款功能强大的微软开源工业PLC安全取证框架

ICSpector:一款功能强大的微软开源工业PLC安全取证框架

作者头像
FB客服
发布2024-01-26 13:59:38
1530
发布2024-01-26 13:59:38
举报
文章被收录于专栏:FreeBufFreeBuf

关于ICSpector

ICSpector是一款功能强大的开源工业PLC安全取证框架,该工具由微软的研究人员负责开发和维护,可以帮助广大研究人员轻松分析工业PLC元数据和项目文件。

ICSpector提供了方便的方式来扫描PLC并识别ICS环境中的可疑痕迹,可以用于手动检查、自动监控任务或响应事件以检测受损设备。在该工具的帮助下,安全研究人员和取证分许人员可以轻松审查输出结果并根据自己的特定需求进行定制化开发。

工具要求

Python 3.9+

Microsoft Visual C++ 14.0

工具架构

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3.9+环境。接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/microsoft/ics-forensics-tools.git

然后切换到项目目录中,使用pip工具和项目提供的requirements.txt文件安装该工具所需的其他依赖组件:

代码语言:javascript
复制
cd ics-forensics-tools

pip install -r requirements.txt

工具参数选项

常用应用程序参数选项

特定插件参数选项

工具使用

工具命令行使用

代码语言:javascript
复制
python driver.py -s -v PluginName --ip ips.csv
代码语言:javascript
复制
python driver.py -s -v PluginName --ip ips.csv --analyzer AnalyzerName
代码语言:javascript
复制
python driver.py -s -v -c config.json --multiprocess

以代码库形式导入使用

代码语言:javascript
复制
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”。接下来,按照下列步骤开发即可:

1、在插件目录下使用插件名称创建一个新的目录;

2、使用插件名称创建一个新的Python文件;

3、使用下列模板代码开发自己的插件,并将其中的“General”替换为你的插件名称;

代码语言:javascript
复制
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")

添加分析器

1、在分析器目录下使用跟分析器相关的插件名创建一个新的目录;

2、使用分析器名称创建一个新的Python文件;

3、使用下列模板开发自己的分析器,并将其中的“General”替换为你的分析器名称;

代码语言:javascript
复制
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

工具运行截图

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

ICSpector:

https://github.com/microsoft/ics-forensics-tools

【FreeBuf粉丝交流群招新啦!

在这里,拓宽网安边界

甲方安全建设干货;

乙方最新技术理念;

全球最新的网络安全资讯;

群内不定期开启各种抽奖活动;

FreeBuf盲盒、大象公仔.....

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用应用程序参数选项
  • 特定插件参数选项
  • 工具命令行使用
  • 以代码库形式导入使用
  • 添加插件
  • 添加分析器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档