
Mode de combat pour la liberté : harnais de hacking open source
FFM est un harnais de piratage que vous pouvez utiliser pendant la phase de post-exploitation d'un engagement de red teaming. L'idée de l'outil provient d'une conférence de 2007 de @thegrugq.
Il a été présenté au SSTIC 2018 (vidéo) et le jeu de diapositives correspondant est disponible à cette url. Si vous n'êtes pas familier avec cette classe d'outils, il est fortement conseillé de les consulter pour comprendre le but d'un harnais de piratage. Tous les commentaires sont inclus dans les diapositives.
Ce projet est distribué sous les termes de la licence GPL v3.
La documentation principale se trouve dans ce README et dans les modules de commandes sous commands/.
Les liens vers l'exposé SSTIC ci-dessus restent le meilleur aperçu de haut niveau sur la façon dont le harnais est censé être utilisé.
Du matériel supplémentaire de démonstration est disponible à :
ice-wzl a contribué des commandes, de la documentation et des refactorisations au cours de l'historique du projet.docker avec cet outil.Dockerfile dans ce dépôt réduira considérablement les erreurs potentielles rencontrées.Docker installé sur votre système local.git clone https://github.com/JusticeRage/FFM.git
cd /FFM
docker build Docker_Install/ -t ffm:ffm
docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/ffm ffm fb6dd17e3b91 9 minutes ago 614 MB
docker.io/library/ubuntu 22.04 3b418d7b466a 2 weeks ago 80.3 MB
#run your new container and drop into a /bin/bash prompt as root
docker run -it --entrypoint /bin/bash -u 0 fb6dd17e3b91
passwd) pour root et neosu neo et vous êtes prêt. git clone https://github.com/JusticeRage/FFM.git
cd /FFM
pip install -r requirements.txt
Le but d'un harnais de piratage est d'agir comme un assistant qui automatise les tâches courantes pendant la phase de post-exploitation, mais aussi de protéger l'utilisateur contre les erreurs qu'il pourrait commettre.
C'est une instrumentation du shell. Lancez ./ffm.py pour l'activer et vous pouvez commencer à travailler immédiatement. Les commandes sont réparties dans les petits modules sous commands/, avec commands/command_manager.py qui gère la découverte et l'enregistrement. Les groupes principaux sont l'énumération, l'aide, la furtivité, le transfert et l'exécution.
Il y a deux commandes que vous devez connaître :
!list pour afficher toutes les commandes fournies par le harnais.!list tags pour voir les différents tags sous lesquels les commandes peuvent être classées.!list tags
List of commands available:
enumeration
execution
help
stealth
transfer
!list enumeration (ou un autre tag) pour voir les commandes de cette catégorie.!list enumeration
List of commands available:
!backup-hunter: Hunts for backup files
!info: Returns CPU(s), Architecture, Memory, and Kernel Verison for the current machine.
!log: Toggles logging the harness' input and output to a file.
!mtime: Returns files modified in the last X minutes
!os: Prints the distribution of the current machine.
!db-hunter: Hunts for .sqlite, .sqlite3, and .db files
!sshkeys: Hunts for Private and Public SSH keys on the current machine.
!suid: Finds SUID, SGID binaries on the current machine.
--snip--
SHIFT+TAB pour effectuer une complétion par tabulation sur la machine locale. Cela peut être utile si vous êtes connecté en SSH à un ordinateur distant mais que vous devez référencer un fichier situé sur votre machine.Ce harnais de piratage offre quelques fonctionnalités décrites ci-dessous. Au fur et à mesure de leur description, la philosophie de conception derrière l'outil sera également introduite. Il n'est pas attendu que toutes les commandes implémentées dans FFM vous conviennent. Chacun a sa propre façon de faire, et adapter le harnais à vos besoins spécifiques nécessitera probablement de modifier une partie du code et/ou d'écrire quelques plugins. Beaucoup d'efforts ont été faits pour que cette tâche soit indolore.
!os est une commande extrêmement simple qui se contente d'exécuter cat /etc/*release* pour afficher le système d'exploitation de la machine courante. Elle est probablement plus utile comme démonstration que, dans le contexte d'un harnais de piratage, vous pouvez définir des alias qui fonctionnent à travers les limites des machines. Connectez-vous en SSH à n'importe quel ordinateur, tapez !os et la commande sera exécutée. Les commandes d'énumération se trouvent dans commands/enumeration_commands.py, les commandes d'aide dans commands/help_commands.py, et les commandes liées à la furtivité sont réparties entre commands/stealth_commands.py, commands/notty_sudo.py et commands/log_control.py.!backup-hunter Recherche les fichiers de sauvegarde.!info Retourne le(s) CPU, l'architecture, la mémoire et la version du noyau de la machine courante.!log Active ou désactive la journalisation des entrées et sorties du harnais dans un fichier. Implémenté dans commands/log_control.py.!mtime Retourne les fichiers modifiés dans les X dernières minutes. Par exemple !mtime 5 récupérera tous les fichiers sur la machine locale (auxquels vous avez accès) qui ont été modifiés dans les 5 dernières minutes.!db-hunter Recherche les fichiers .sqlite, .sqlite3, .db et autres fichiers de base de données.!sshkeys Recherche les clés SSH privées et publiques sur la machine courante.!suid Trouve les binaires SUID, SGID sur la machine courante.!strange-dirs Vérifie les répertoires étranges sur un hôte à partir d'un chemin spécifié par l'utilisateur.!sudo-version Vérifie une version vulnérable de sudo.!vm Vérifie si l'appareil est une machine virtuelle.