
Freedom Fighting Mode: Open-Source-Hacking-Werkzeugsammlung
FFM ist ein Hacking-Harness, den Sie während der Post-Exploitation-Phase eines Red-Teaming-Einsatzes verwenden können. Die Idee des Tools stammt von einer Konferenz von 2007 von @thegrugq.
Es wurde auf der SSTIC 2018 präsentiert (Video) und der dazugehörige Foliensatz ist unter dieser URL verfügbar. Wenn Sie mit dieser Art von Werkzeugen nicht vertraut sind, wird dringend empfohlen, sie sich anzusehen, um den Zweck eines Hacking-Harness zu verstehen. Alle Kommentare sind in den Folien enthalten.
Dieses Projekt wird unter den Bedingungen der GPL v3 Lizenz vertrieben.
Die primäre Dokumentation befindet sich in dieser README und den Befehlsmodulen unter commands/. Die oben genannten SSTIC-Vortragslinks bleiben der beste übergeordnete Hintergrund zur Verwendung des Harness. Zusätzliches Walkthrough-Material ist verfügbar unter:
ice-wzl hat im Laufe der Projektgeschichte Befehle, Dokumentation und Refactorings beigetragen.docker mit diesem Tool zu verwenden.Dockerfile in diesem Repository wird potenzielle Fehler drastisch reduzieren.Docker auf Ihrem lokalen System installiert istgit 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 für root und neosu neo und schon sind Sie bereit git clone https://github.com/JusticeRage/FFM.git
cd /FFM
pip install -r requirements.txt
Das Ziel eines Hacking-Harness ist es, als Helfer zu fungieren, der häufige Aufgaben während der Post-Exploitation-Phase automatisiert, aber auch den Benutzer vor Fehlern schützt, die er machen könnte.
Es ist eine Instrumentierung der Shell. Führen Sie ./ffm.py aus, um es zu aktivieren, und Sie können sofort mit der Arbeit beginnen. Die Befehle sind auf die kleinen Module unter commands/ verteilt, wobei commands/command_manager.py die Erkennung und Registrierung übernimmt. Die Hauptgruppen sind Enumeration, Hilfe, Stealth, Transfer und Ausführung.
Es gibt zwei Befehle, die Sie kennen müssen:
!list ein, um alle vom Harness bereitgestellten Befehle anzuzeigen.!list tags ein, um die verschiedenen Tags zu sehen, unter denen Befehle kategorisiert werden können.!list tags
List of commands available:
enumeration
execution
help
stealth
transfer
!list enumeration (oder eines der anderen Tags) eingeben, um Befehle zu sehen, die in diese Kategorie fallen.!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, um die Tab-Vervollständigung auf dem lokalen Rechner durchzuführen. Dies kann nützlich sein, wenn Sie per SSH auf einem entfernten Computer angemeldet sind, aber auf eine Datei auf Ihrem eigenen Rechner verweisen müssen.Dieser Hacking-Harness bietet einige Funktionen, die unten beschrieben werden. Dabei wird auch die Designphilosophie hinter dem Tool vorgestellt. Es wird nicht erwartet, dass alle in FFM implementierten Befehle für Sie geeignet sind. Jeder hat seine eigene Arbeitsweise, und die Anpassung des Harness an Ihre spezifischen Bedürfnisse erfordert wahrscheinlich, dass Sie etwas Code ändern und/oder ein paar Plugins schreiben. Es wurde viel Mühe darauf verwendet, dass dies eine schmerzlose Aufgabe ist.
!os ist ein extrem einfacher Befehl, der lediglich cat /etc/*release* ausführt, um das Betriebssystem des aktuellen Rechners anzuzeigen. Er ist wahrscheinlich am wertvollsten als Demonstration, dass man im Kontext eines Hacking-Harness Aliase definieren kann, die maschinenübergreifend funktionieren. SSHen Sie sich auf einen beliebigen Computer, geben Sie !os ein und der Befehl wird ausgeführt. Die Enumeration-Befehle befinden sich in commands/enumeration_commands.py, die Hilfe-Befehle in commands/help_commands.py und die Stealth-Befehle sind auf commands/stealth_commands.py, commands/notty_sudo.py und commands/log_control.py verteilt.!backup-hunter Sucht nach Sicherungsdateien!info Gibt CPU(s), Architektur, Arbeitsspeicher und Kernelversion des aktuellen Rechners zurück.!log Schaltet die Protokollierung der Harness-Ein- und Ausgabe in eine Datei um. Implementiert in commands/log_control.py.!mtime Gibt Dateien zurück, die in den letzten X Minuten geändert wurden. Beispiel: !mtime 5 zeigt alle Dateien auf dem lokalen Rechner (die Sie sehen dürfen), die in den letzten 5 Minuten geändert wurden.!db-hunter Sucht nach .sqlite-, .sqlite3- und .db-Dateien sowie anderen Datenbankdateien!sshkeys Sucht nach privaten und öffentlichen SSH-Schlüsseln auf dem aktuellen Rechner.!suid Findet SUID-, SGID-Binärdateien auf dem aktuellen Rechner.!strange-dirs Überprüft das Gerät ab einem benutzerdefinierten Pfad auf seltsame Verzeichnisse auf einem Host!sudo-version Prüft auf eine anfällige sudo-Version!vm Überprüft, ob das Gerät eine virtuelle Maschine ist!download [entfernte Datei] [lokaler Pfad] holt eine Datei vom entfernten Rechner und kopiert sie lokal über das Terminal. Dieser Befehl ist etwas komplexer, da eine strengere Fehlerprüfung erforderlich ist, aber es ist ein weiterer Befehl, den Sie leicht lesen können, um loszulegen. Er befindet sich in commands/download_file.py. Beachten Sie, dass er xxd oder od auf dem entfernten Rechner benötigt, um ordnungsgemäß zu funktionieren.!download-dir [entferntes Verzeichnis] [lokales Ziel] streamt ein tar-Archiv eines entfernten Verzeichnisses über das Terminal und extrahiert es lokal, ohne das entfernte Dateisystem zu berühren. Es befindet sich in commands/download_directory.py. Es benötigt tar und base64 auf dem entfernten Rechner und verwendet zusätzlich gzip, wenn verfügbar.!upload [lokale Datei] [entfernter Pfad] funktioniert genauso wie der vorherige Befehl, nur dass eine lokale Datei auf den entfernten Rechner gelegt wird. Er befindet sich in commands/upload_file.py.