Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
FFM — Freedom Fighting Mode: Open-Source-Hacking-Werkzeugsammlung | Kitploit
Tools/GitHubGitHub/justicerage/ffm
Privilege EscalationLaterale BewegungDatenexfiltrationInformationsbeschaffungPost-ExploitationPenetrationstestsCommand and ControlDienstprogramme & FrameworksRed Teaming
GitHubjusticerage/ffm

FFM

Freedom Fighting Mode: Open-Source-Hacking-Werkzeugsammlung

34947vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

Freedom Fighting Mode (FFM)

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.

Dokumentation

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:

  • https://ice-wzl.gitbook.io/hacknetics/c2-frameworks/ffm-documentation

Mitwirkende

  • ice-wzl hat im Laufe der Projektgeschichte Befehle, Dokumentation und Refactorings beigetragen.

Installation

Docker-Installation

  • Aufgrund der Vielfalt moderner Terminal-Prompts empfehlen wir dringend, docker mit diesem Tool zu verwenden.
  • Die Verwendung des Dockerfile in diesem Repository wird potenzielle Fehler drastisch reduzieren.
  • Die Verwendung eines Containers zur Interaktion mit entfernten Hosts ist ebenfalls sicherer. Falls Sie während der Interaktion mit einem entfernten Host ausgenutzt werden, befänden sie sich in Ihrem Container und nicht auf Ihrem tatsächlichen Host. Hoffen wir trotzdem, dass das nicht passiert.
  • Stellen Sie sicher, dass Docker auf Ihrem lokalen System installiert ist
root@kitploit:~
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
  • Setzen Sie in Ihrem Container das passwd für root und neo
  • su neo und schon sind Sie bereit

Nicht-Docker-Installation

  • Nicht empfohlen
root@kitploit:~
 git clone https://github.com/JusticeRage/FFM.git
 cd /FFM
 pip install -r requirements.txt

Verwendung

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:

  • Tippen Sie !list ein, um alle vom Harness bereitgestellten Befehle anzuzeigen.
  • Tippen Sie !list tags ein, um die verschiedenen Tags zu sehen, unter denen Befehle kategorisiert werden können.
root@kitploit:~
!list tags
List of commands available:
	 enumeration
	 execution
	 help
	 stealth
	 transfer
  • Sie können nun !list enumeration (oder eines der anderen Tags) eingeben, um Befehle zu sehen, die in diese Kategorie fallen.
root@kitploit:~
!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--

  • Drücken Sie 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.

Liste der Funktionen

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.

Befehle

Enumeration-Befehle

  • !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 .

Transfer-Befehle

  • Befehle, die Ihnen helfen, Dateien zu holen und zu schieben, ziemlich einfach.
  • !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.

Ausführungs-Befehle

  • !sh [lokales Skript] Führt ein Shell-Skript vom lokalen Rechner im Speicher aus. Es befindet sich in commands/remote_script.py.
  • !py [lokales Skript] führt ein lokales Python-Skript auf dem entfernten Rechner aus, und zwar vollständig im Speicher. Es befindet sich in commands/remote_script.py. Schauen Sie sich mein anderes Repository für Skripte an, die Sie verwenden möchten. Dieser Befehl verwendet eine mehrzeilige Syntax mit <<, was bedeutet, dass Pseudo-Shells, die dies nicht unterstützen (Weevely ist ein gutes Beispiel), diesen Befehl ziemlich stark beeinträchtigen.
  • !py3 [lokales Skript] macht genau dasselbe, nur für Systeme mit Python3. Es verwendet dasselbe Modul, commands/remote_script.py.
  • !elf [lokales Skript] Führt eine ausführbare Datei vom lokalen Rechner im Speicher aus, wobei jeder kompatible Python-Interpreter auf dem entfernten Rechner verwendet wird. Es befindet sich in commands/remote_elf.py.

Stealth-Befehle

  • Ich bin mir vollkommen bewusst, dass diese beiden Module das Gegenteil von 'heimlich' sind, aber sie sind derzeit dort platziert, bis ein alternativer Ort gefunden werden kann. Diese Stealth-Kategorie wird höchstwahrscheinlich Befehle enthalten, die Ihnen helfen, sich besser anzupassen, zusätzlich zu den Befehlen, die Sie möglicherweise hervorstechen lassen.
  • !pty erzeugt ein TTY, was man in den meisten Fällen nicht möchte, da es forensische Spuren hinterlässt. Einige Befehle (sudo) oder Exploits erfordern jedoch ein TTY, daher wird dies als Annehmlichkeit bereitgestellt. UNSET HISTFILE HISTFILESIZE HISTSIZE PROMPT_COMMAND wird ihm sofort beim Erzeugen übergeben, zusammen mit export TERM=xterm.
  • !sudo Ruft sudo ohne TTY auf. Es befindet sich in commands/notty_sudo.py.

Plugins können durch Bearbeiten von ffm.conf weiter konfiguriert werden.

Prozessoren

Konzeptionell werden Befehle (wie oben beschrieben) verwendet, um etwas Bash zu generieren, das an die Shell weitergeleitet wird. Sie können komplexere Operationen durchführen, indem sie die Ausgabe der Shell erfassen und basierend auf dem Zurückgegebenen zusätzliche Anweisungen generieren. Prozessoren sind etwas anders, da sie eher dazu verwendet werden, Daten umzuschreiben, die zwischen dem Benutzer und dem zugrunde liegenden Bash-Prozess zirkulieren. Es stimmt zwar, dass jeder Prozessor als Befehl neu geschrieben werden könnte, es schien aber sauberer, die beiden zu trennen. Eingabeprozessoren arbeiten mit dem, was der Benutzer nach Drücken der ENTER-Taste eingibt, und Ausgabeprozessoren können alles ändern, was die Shell zurückgibt.

  • Ein gutes Prozessorbeispiel findet sich in processors/ssh_command_line.py. Es fügt lediglich die Option -T zu jedem SSH-Befehl hinzu, den es sieht, falls sie fehlt. Schauen Sie sich unbedingt seinen einfachen Code an, wenn Sie daran interessiert sind, einen Prozessor zu schreiben.
  • Ein weiterer Eingabeprozessor im Framework, processors/assert_torify.py, enthält eine Blacklist von Netzwerkbefehlen (ssh, nc) und blockiert sie, wenn sie nicht über ein Tool wie torify weitergeleitet zu werden scheinen. Der Harness bemüht sich, den Benutzer nur dann zu belästigen, wenn es den Anschein hat, dass der Befehl auf dem lokalen Rechner ausgeführt wird. Offensichtlich sollte dies nicht Ihre einzige Sicherheitsmaßnahme gegen das Durchsickern Ihrer Heim-IP-Adresse sein.
  • Schließlich ist processors/sample_output_processor.py ein sehr einfacher Ausgabeprozessor, der jedes Vorkommen des Wortes 'password' rot hervorhebt. Da es ziemlich nutzlos ist, ist es im Framework nicht aktiviert, aber Sie können es dennoch als Ausgangspunkt verwenden, wenn Sie etwas Anspruchsvolleres tun möchten.

Bekannte Probleme

CTRL+R ist noch nicht implementiert und wir vermissen es alle sehr.

Problematischer ist die Tatsache, dass das Framework von Zeit zu Zeit hängt. In 99% der Fälle geschieht dies, wenn es nicht erkennt, dass ein von ihm gestarteter Befehl die Ausführung beendet hat. Normalerweise bedeutet dies, dass die Eingabeaufforderung des Rechners, bei dem Sie angemeldet sind, nicht als solche erkannt werden konnte. In diesem Fall können Sie versuchen, den regulären Ausdruck am Anfang der Datei ffm.py zu verbessern, oder sich mit ssh -T auf demselben Rechner anmelden, da es dann keine problematische Eingabeaufforderung mehr gibt. Standardmäßig gibt FFM nach 5 Minuten auf, die Ausgabe eines Befehls zu lesen (einige Plugins können andere Timeouts implementieren); wenn das Framework also hängt, müssen Sie warten, bis Sie eine Fehlermeldung sehen (obwohl Sie möglicherweise immer noch keine Befehle eingeben können, wenn der zugrunde liegende Prozess noch läuft).

Abschließende Bemerkung

Ich denke, ich habe alles über dieses Tool abgedeckt. Noch einmal, es ist etwas anders als das, was ich normalerweise veröffentliche, da die meisten Leute es wahrscheinlich anpassen müssen, bevor es für sie nützlich sein kann.

Viele Plugins müssen noch geschrieben werden, also teilen Sie unbedingt alle Verbesserungen mit, die Sie an FFM vornehmen. Zögern Sie nicht, Issues zu eröffnen, nicht nur für Fehler, sondern auch, wenn Sie versuchen, etwas zu tun und nicht herausfinden, wie; auf diese Weise kann ich die Dokumentation für alle verbessern.

To Do

  • Verschlüsselungsmodul für einzelne Dateien

Kontakt

Tool herunterladen
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