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
SharpFtpC2 — Ein optimierter FTP-gesteuerter Befehls- und Kontrollkanal zur Verbindung entfernter Systeme. | Kitploit
Tools/GitHubGitHub/darkcodersc/sharpftpc2
Verschlüsselungs-/EntschlüsselungstoolsCommand and ControlLernen & BildungRed TeamingPayload-EntwicklungAdversarial-Angriff
GitHubdarkcodersc/sharpftpc2

SharpFtpC2

Ein optimierter FTP-gesteuerter Befehls- und Kontrollkanal zur Verbindung entfernter Systeme.

Repository anzeigen
9018vor 2 JahrenVon 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

SharpFtpC2 (PoC)



SharpFtpC2 ist ein kleines, experimentelles Projekt, das die Möglichkeit erkundet, FTP(S) zur Weiterleitung von Befehlen und Antworten zwischen zwei entfernten Computern zu nutzen. Es verwendet das FTP-Protokoll als provisorischen Tunnel, durch den die beiden Computer, die beide als Clients mit einem FTP-Server verbunden sind, kommunizieren können. Ein einfaches Sitzungsverwaltungsschema wird verwendet, um den Austausch von Anfragen und Antworten nachzuverfolgen.

SharpFtpC2 verwendet ein grundlegendes Sitzungsverwaltungssystem. Obwohl es recht elementar ist, dient es dem Zweck, die Kommunikation synchronisiert und zusammenhängend zu halten, was für den Hin- und Her-Austausch zwischen den entfernten Systemen unerlässlich ist.

Es ist erwähnenswert, dass dieses Projekt mühelos portiert werden kann, indem Versionskontrollsysteme wie git, svn oder ähnliche Protokolle verwendet werden.

Wenn Sie sich für die Details der Netzwerkkommunikation interessieren oder einfach nur mit C# und .NET Core herumspielen möchten, könnte SharpFtpC2 ein interessanter Ausgangspunkt sein. Erwarten Sie kein ausgefeiltes Juwel, aber vielleicht, nur vielleicht, lernen Sie etwas Interessantes beim Herumexperimentieren.

SharpFtpC2 ist ein experimentelles Projekt, das zu Bildungszwecken entwickelt wurde, um die Nutzung von FTP(S) als Kommunikationskanal zwischen zwei entfernten Computern zu untersuchen. Es ist wichtig zu verstehen, dass das Projekt als Lernressource für Personen konzipiert ist, die sich für Netzwerkkommunikation, C#, Adversary Simulation, Red Team, Malware interessieren. Als Ersteller bitte ich die Benutzer, keine zusätzlichen Funktionen anzufordern oder dieses Projekt für irgendeine Form von Waffen oder böswilligen Zwecken zu verwenden. Die Kernabsicht ist lehrreich, und die Benutzer werden gebeten, sich verantwortungsbewusst und ethisch mit dem Inhalt auseinanderzusetzen.


Die Geschichte hinter dem Projekt

SharpFtpC2 entstand aus dem Wunsch heraus, zum Unprotect Project beizutragen, insbesondere zu dessen Network Evasion-Kategorie.

Diese Idee, FTP als "Tunnel" zu verwenden, hat tiefe Wurzeln. Tatsächlich weckt sie schöne Erinnerungen an etwa 2005, als ich noch in der Programmierwelt Fuß fasste. Damals traf ich auf einen bemerkenswert kreativen Franzosen mit dem Pseudonym BlasterWar. Er hatte ein Projekt namens BlasterX konzipiert, das – obwohl es der Zeit verloren gegangen ist – für seine Zeit recht avantgardistisch war.

BlasterWars Einfallsreichtum bestand darin, eine Alternative zur herkömmlichen Reverse-Connection zu bieten, bei der der Agent eine Verbindung zurück zum kontrollierenden oder hackenden Gerät herstellen musste.

Stattdessen entschied sich BlasterWar für FTP (File Transfer Protocol) als alternatives Medium und baute darum ein umfassendes Remote-Access-Tool. Das Tool enthielt Funktionen wie Bildschirmaufnahme, Keylogging und Systemverwaltung, die alle durch den FTP-Tunnel übertragen wurden. Zu dieser Zeit war FTP weit verbreitet und zahlreiche Websites boten der Öffentlichkeit kostenlose FTP-Server an. Dies machte es zu einer idealen Alternative zu Reverse- oder Direktverbindungen, die Portweiterleitung erforderten. Darüber hinaus bot es eine zusätzliche Verschleierungsebene für die Kommando- und Steuerung (C2), da die IP-Adresse des Hackers nicht direkt sichtbar war.

Heutzutage ist die Verwendung von FTP als Tunnel kein neues Konzept mehr, da einige Command-and-Control (C2)-Frameworks dieses Protokoll übernommen haben. Allerdings ist die Verwendung von FTP auf diese Weise mit Risiken behaftet. Insbesondere die Übertragung von Anmeldeinformationen im Klartext über das Netzwerk durch FTP, kombiniert mit der Notwendigkeit, dass beide Parteien diese Anmeldeinformationen besitzen müssen, macht es anfällig für eine Vielzahl von Angriffen. Obwohl FTP-Server Fortschritte bei der Bewältigung dieser Sicherheitsprobleme gemacht haben, indem sie zunehmend FTPS übernehmen, das SSL/TLS-Verschlüsselung integriert, war diese Anpassung kein Allheilmittel für alle inhärenten Risiken.

Mit etwas Einfallsreichtum und durch Inspiration aus bestehenden Protokollen ist es möglich, eine erhebliche Anzahl der bestehenden Risiken anzugehen.

Ausprobieren

Um dieses Projekt zu kompilieren, benötigen Sie zwei Komponenten: Visual Studio und eine Abhängigkeit für den Controller namens CommandLineUtils.

Da dieses Projekt .NET Core verwendet, kann es problemlos für verschiedene Plattformen kompiliert werden, ohne dass Codeänderungen erforderlich sind. Möglicherweise müssen Sie jedoch bestimmte Funktionen implementieren, die auf die Zielplattform zugeschnitten sind.

Um dieses Projekt schnell zu testen, empfehle ich die Verwendung von Docker mit dem Image stilliard/pure-ftpd. Dieses Image unterstützt eine Reihe von Optionen, mit denen Sie schnell Ihren eigenen FTP-Server einrichten können.

docker pull stilliard/pure-ftpd

Ohne TLS

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark stilliard/pure-ftpd

Mit TLS (Empfohlen)

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x --tls=2" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark -e "TLS_CN=localhost" -e "TLS_ORG=maislaf" -e "TLS_C=FR" stilliard/pure-ftpd

Passen Sie die Einstellungen gerne an Ihre Anforderungen an. Ich rate jedoch dringend davon ab, diesen Test-FTP-Server lokalen oder öffentlichen Netzwerken auszusetzen. Es wäre ratsamer, die Exposition dieses Containers nur auf Ihren Host-Rechner zu beschränken.

Die Option ADDED_FLAGS ermöglicht es Ihnen, den pure-ftpd-Server fein abzustimmen. Erklärungen zu allen Flags finden Sie hier.

Bestimmte Flags können Änderungen an der Funktionsweise des C2-Protokolls erforderlich machen. Wenn Sie beispielsweise die Option -K verwenden, um alle Dateien zu behalten, wird das Löschen von Dateien über FTP deaktiviert. Da das aktuelle C2-Protokoll diese Funktion nutzt, müssen Sie möglicherweise alternative Ansätze in Betracht ziehen, wie z.B. das Umbenennen oder Verschieben von Dateien.

C2-Verschlüsselung (RSA + AES)

Um die Integrität und Vertraulichkeit aller Kommunikation zwischen den Agenten und dem C2 zu gewährleisten, wurde nahtlos eine Verschlüsselung in das Kommunikationsprotokoll integriert, die sowohl RSA- als auch AES-GCM-256-Bit-Algorithmen verwendet. Das Hauptziel dieser Funktion ist es, die Möglichkeit zu verhindern, dass ein kompromittierter FTP-Server bösartige Befehle übermittelt. Durch die Verwendung von Verschlüsselung wird eine Befehlsinjektion unmöglich, ohne Zugriff auf den öffentlichen Schlüssel des Agenten zu haben. Ebenso ist es nicht möglich, gefälschte Agentenantworten zu injizieren, ohne den öffentlichen Schlüssel des C2 zu besitzen.

Um die Generierung eigener Schlüsselpaare zu vereinfachen (ein Schlüsselpaar für den Agenten und eines für das C2), habe ich ein Drittanbieter-Tool namens RSAKeyHelper beigefügt. Jedes Mal, wenn Sie die Anwendung ausführen, wird Ihnen ein frisch generiertes Paar aus öffentlichem und privatem Schlüssel präsentiert, die im Programm verwendet werden können, wenn Sie sich für die Verschlüsselung entscheiden.

Banner Image

Um zu überprüfen, ob alles wie beabsichtigt funktioniert, habe ich innerhalb des gleichen Tools auch eine Funktion integriert, mit der Sie die Zeichenfolgenverschlüsselung testen können.

Banner Image

Unterstützte Befehle

  • Shell-Befehl ausführen und Antwort ausgeben.
  • Agentenprozess beenden.

Änderungsprotokoll

09. Juni 2023 - v1.0b

  • Erste Veröffentlichung.

16. Juni 2023 - v1.0

  • Unterstützung für Verschlüsselung wurde eingeführt, unter Verwendung von RSA- und AES-GCM-256-Bit-Algorithmen, um die Integrität und Vertraulichkeit der Kommunikation zwischen Agenten und dem C2-Server zu schützen.

21. Juni 2023 - v2.0

  • Code-Optimierung: Der Code wurde für eine bessere Leistung optimiert.
  • Protokollverbesserung: Das Kommunikationsprotokoll wurde verbessert und ist jetzt modularer aufgebaut, was eine größere Flexibilität ermöglicht.
  • Unterstützung für verschiedene RSA-Schlüsselpaare: C2 und Agenten können jetzt mit verschiedenen RSA-Schlüsselpaaren arbeiten, sodass sie ohne Konflikte auf demselben FTP-Server koexistieren können.
  • Implementierung eines Validierungsdelegaten für gefährliche Aktionen: Ein Validierungsdelegat wurde implementiert, um Benutzer vor der Ausführung potenziell gefährlicher Aktionen um Bestätigung zu bitten.

23. Juni 2023 - v3.0 Final

  • Ein Fehler wurde behoben, der die Ausführung von Shell-Befehlen betraf. Alle Befehle sollten jetzt ausgeführt werden, ohne dass die gesamte Anwendung hängt.
  • Die Protokollversionsprüfung zwischen der Kommando- und Steuerung (C2) und dem/den Agenten wurde integriert. Wenn eine Protokollversionsinkongruenz festgestellt wird, wird der Agent vom C2 ignoriert.

Die Veröffentlichung der Version "3.0 Final" markiert den Abschluss dieses Projekts. Ich werde keine weiteren Funktionen hinzufügen; das Ziel dieser PoC war es, die Erstellung eines zuverlässigen und sicheren C2 unter Verwendung von FTP(S) zu demonstrieren. Sie sind ermutigt, Ihre eigene Version mit maßgeschneiderten Funktionen zu entwickeln. Als Übung könnten Sie die Implementierung von Multithreading-Tasking in Betracht ziehen, um zu verhindern, dass die Anwendung bei länger dauernden Aufgaben hängt.

Ich werde jedoch weiterhin Unterstützung für das Projekt bieten, was die Behebung potenzieller Fehler oder Optimierungsmöglichkeiten betrifft.

Screenshots

(Liste der Agenten) Main

(Befehl an aktiven (Kontext-)Agenten ausführen) Command

(Agent-Konsole Debug-Fenster mit Benutzerbestätigung bei gefährlicher Aktion) Agent

Tool herunterladen