公告
项目地址:https://github.com/MartinxMax/S-Clustr/tree/V1.0.0
1.成功扩展3类嵌入式设备,组建庞大的"僵尸网络"
|——C51[开发中]
|——Arduino
|——合宙AIR780e[开发中]
2.攻击者端与服务端之间通讯过程全程加密,防溯源分析
3.Generate一键自动生成Arduino代码
4.DebugDevice 测试模拟嵌入式设备连接服务端
5.设备上线钉钉播报
6.中英参数手册
7.新增局域网嵌入式设备控制
S-Clustr 嵌入式设备端
局域网控制
项目地址:https://github.com/MartinxMax/Night_of_19
说明:https://www.freebuf.com/articles/web/377247.html
注意:该版本是Night_of_19变种
准备设备材料(合计 50¥ )
1.Arduino UNO (17¥)
2.ENC28J60 (28¥)
3.1路继电器模块5V (3¥)
4.杜邦线 (2¥)
母转母
接线原理图
公网远控
准备设备材料(合计 48¥ )
1.Arduino UNO (17¥)
2.SIM900A或SIM800A (26¥)
2.1路继电器模块5V (3¥)
3.杜邦线 (2¥)
母转母
4.移动卡
这里需要移动卡是因为SIM800A与SIM900A支持移动的2G网,电信就不行,联通也不行…不过后面测试合宙AIR780e的板子应该联通可行,也就是不需要SIM系列了,内部集成好了
接线原理图
这里将模拟Arduino收到信号后控制继电器行为
不会写代码?..使用Generate.py生成Arduino代码就OK了
一键生成Arduino代码
python3 Generate.py
填写完成参数,这里的127.0.0.1是错误的,你应该输入服务端的公网IP地址,也就是运行S-Clustr_Server.py的服务器的IP
选择型号直接烧录就OK
S-Clustr 服务端
注意:
1.服务端必须在公网,如果你的服务端在内网可以考虑端口映射,黑客端服务默认在端口9999,设备端服务默认在端口10000
2.服务端与黑客端是全程高度加密通信的,强制开启加密服务不可关闭。其次你可以通过Server.conf文件内的配置,来决定嵌入式设备或被控PC接入时是否提供加密服务
3.对于Server.conf文件内参数不理解,请详细阅读手册文档
4.服务端每次启动都将随机长度为12个字符作为密钥用作于黑客与被控设备的身份认证,防止其他黑客未授权接入控制设备。你可以手动指定密钥(python3 S-Clustr_Server.py -keyh Maptnh -keyv Maptnh)
—这里黑客端与被控端各2个密钥,首次为明文密钥,如果你觉得过于敏感,可以把其次的临时TOKEN当作密钥,有效防止明文密钥被破解
在该参数中,置1表示启动被控设备的加密服务,那么被控设备必须提供身份认证密钥才允许接入,否则拒绝
5.有效防止中间人(MITM)嗅探分析黑客端与服务端通信数据包,再进一步防止重放攻击与加密数据被破解
服务端脚本参数解析
-lh
:绑定指定本地IP,默认0.0.0.0
-lpv
:设置本地监听地址(设备端)默认10000端口
-lph
:设置本地监听地址(黑客端)默认9999端口
-keyh
:设置黑客端密钥,默认随机12位字符作为密钥
-keyv
:设置设备端密钥,默认随机12位字符作为密钥
服务端运行
python3 S-Clustr_Server.py
S-Clustr 黑客端
注意:
客户端采用交互式运行,操作类似于Metasploit渗透测试框架
黑客端脚本参数解析
进入后输入 help
或 ?
或 options
来查看所需要设置的参数
set rhosts <IP>
:设置服务端的IP
set rport <Port>
:设置服务端的端口
set id <number>
:选择所需要控制的设备ID编号,0表示选中所有设备
set pwr <state>
:控制设备状态,启动[1],停止[2],查询状态[3]
黑客端连接服务端
python3 S-Clustr_Server.py
查询全部设备当前状态
S-Clustr(V1.0.0)> set rhost 127.0.0.1
[*] rhost => 127.0.0.1
S-Clustr(V1.0.0)> set id 0
[*] id => 0
S-Clustr(V1.0.0)> set pwr 3
[*] pwr => 3
PS:这里必须填写Key,这将决定你是否有权限接入服务器的关键要素。
在服务端中,你可以任意挑选一个作为密钥
S-Clustr(V1.0.0)> set key cf5cdc4798a72283a4c0c0b1ef2ef5da
[*] key => cf5cdc4798a72283a4c0c0b1ef2ef5da
查询全部设备状态
S-Clustr(V1.0.0)> set id 0
[*] id => 0
S-Clustr(V1.0.0)> set pwr 3
[*] pwr => 3
S-Clustr(V1.0.0)> run
[*] Connecting to the server...
[*] Attempting to authenticate to the server [127.0.0.1:9999]
| Device ID | Device Type | Device State | Device Network |
|:-------------:|:-------------:|:-------------:|:---------------:|
| 1 | None | Stopped | Disconnected |
| 2 | None | Stopped | Disconnected |
| 3 | None | Stopped | Disconnected |
| 4 | None | Stopped | Disconnected |
| 5 | None | Stopped | Disconnected |
| 6 | None | Stopped | Disconnected |
| 7 | None | Stopped | Disconnected |
| 8 | None | Stopped | Disconnected |
| 9 | None | Stopped | Disconnected |
| 10 | None | Stopped | Disconnected |
|:-------------:|:-------------:|:-------------:|:---------------:|
我们可以看到已经成功接入服务器了,身份认证成功
我们设置错误的Key时,服务器将无法对你进行授权
【模拟被控设备连接服务端】通过黑客端控制全部设备
设备全部上线
控制全部设备启动
S-Clustr(V1.0.0)> set id 0
[*] id => 0
S-Clustr(V1.0.0)> set pwr 1
[*] pwr => 1
S-Clustr(V1.0.0)> run
控制全部设备停止
S-Clustr(V1.0.0)> set id 0
[*] id => 0
S-Clustr(V1.0.0)> set pwr 2
[*] pwr => 2
S-Clustr(V1.0.0)> run
案例:被控端收到命令后,访问www.bing.com,并且打开计算器
输入我们的被控端KEY
被控端成功接入
我们的黑客端也成功查询到设备
控制设备完成题目要求
手册文档
Parameter_Description-ZH.xls
Parameter_Description-EN.xls