SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

admin 2024年8月8日22:26:34评论20 views字数 1941阅读6分28秒阅读模式
随着工业控制系统(ICS)和监督控制与数据采集系统(SCADA)在关键基础设施和工业环境中的广泛应用,这些系统的安全性变得至关重要。然而,研究这些系统的固件与软件通常需要进行逆向工程,以了解其内部工作原理、检测潜在的漏洞,并开发相应的安全措施。为此,GitHub 用户 nezza 创建了一个名为 scada-stuff 的开源项目,这个项目集合了多个脚本和工具,专门用于逆向工程和破解SCADA/ICS设备。

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

项目概述
scada-stuff 项目主要由一系列用于解析和提取特定SCADA/ICS设备固件的脚本组成。这些工具可以帮助安全研究人员将设备的固件从原始格式转换为可供逆向工程工具(如 Hopper、IDA Pro、Radare2)加载和分析的格式。项目的工具主要针对一些特定品牌和型号的设备,如 Moxa 和 Schneider Electric,帮助研究人员更有效地进行分析和研究。

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

主要工具和脚本
1. Hopper bFLT Loader (hopper_bflt_loader.py)

许多工业控制系统设备使用 uClinux/eCos 操作系统,这些系统通常采用 bFLT 格式的固件。hopper_bflt_loader.py 脚本提供了一个用于加载这些 bFLT 格式固件的基本支持。该脚本允许用户将 bFLT 格式的固件文件加载到 Hopper 逆向工程工具中,使用以下设置:

基地址:0x0

入口点:0x0

文件偏移:0x0

CPU:ARMv6 小端

该脚本基于 Craig Heffner(Tactical Network Solutions)编写的 IDA Pro 加载器。

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

2. Moxa 固件解析与提取工具 (moxa_parse_fw.py)

Moxa 设备(如简单的 Mgate 和 Nport 系列设备)的固件通常需要特定的工具进行提取和解析。moxa_parse_fw.py 脚本允许用户提取这些设备的固件镜像,特别是那些没有无线功能的设备。用户可以通过以下命令使用该工具:

parse_upg.py <firmware_file> <output_file>

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

解析后的固件文件将保存在指定的输出目录中,二进制固件文件将命名为 fw.bin。根据不同的设备,Moxa 设备可能使用不同的 CPU 架构,如 ARMv6。解析后的固件可以使用 Hopper、IDA Pro 或 Radare2 进行进一步的分析。parse_upg.py <firmware_file> <output_file>

3. Schneider Electric 固件解析工具 (parse_upg.py)

parse_upg.py 是一个用于解析 Schneider Electric 设备使用的 .upg 固件文件的脚本。它将 .upg 文件转换为一个标准的二进制文件,便于在逆向工程工具中加载和分析。使用该工具的命令格式如下:

parse_upg.py <firmware_file> <output_file>

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

转换后的二进制文件可以直接加载到反汇编器中进行进一步的研究。

设备固件分析示例
该项目还包含了一些针对具体设备固件的说明,如 Moxa NPort W2150 固件和 Advantech ADAM 4570 固件。这些固件文件可以直接加载到逆向工程工具中,进行详细的分析和研究。以下是 Moxa NPort W2150 固件的加载设置示例:

基地址:0x0

入口点:0x0

文件偏移:0x58

CPU:ARMv6 小端

值得注意的是,从固件版本 2 开始,Moxa NPort W2150 的固件已加密,需要额外的步骤进行解密。

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

项目技术架构
scada-stuff 项目的大部分代码使用 Python 编写,同时包含一些 C 语言和 Shell 脚本。Python 在处理文件解析、数据转换等任务时具有很大的灵活性,而 C 语言和 Shell 脚本则用于处理更底层的系统操作,如固件解密等。

具体来说,该项目的代码结构如下:

  • Python (88.9%): 主要用于编写解析和提取固件的脚本。
  • C (6.5%): 用于实现固件解密等底层功能。
  • Shell (4.6%): 用于自动化脚本和系统级操作。
SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合
SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合
SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合
SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合
结语
SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合
SCADA/ICS 设备的安全性至关重要,特别是在这些系统广泛应用于关键基础设施的情况下。scada-stuff 项目通过提供一系列有用的工具和脚本,为逆向工程和研究这些设备的安全漏洞提供了宝贵的资源。随着工业控制系统面临的威胁不断增加,这样的项目将继续在保障关键系统的安全性方面发挥重要作用。

希望通过本文的介绍,更多的安全研究人员和开发者能够了解并参与到 scada-stuff 项目的开发和使用中,共同推进工业控制系统的安全研究。

SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

项目地址

https://github.com/nezza/scada-stuff

原文始发于微信公众号(Urkc安全):SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月8日22:26:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SCADA-Stuff: 逆向工程与破解SCADA/ICS设备的工具集合http://cn-sec.com/archives/3047351.html

发表评论

匿名网友 填写信息