
C# C2 Framework, das sich auf Phase-1-Operationen konzentriert
C# C2-Framework, das auf Phase-1-Operationen ausgerichtet ist
Atlas basiert darauf, einen Fuß in einer Umgebung zu fassen und diesen zu nutzen, um C#-Waffen (derzeit strikt C#) mithilfe eines HTTP-basierten Implantats einzuschleusen. Im aktuellen Zustand ist es nicht wirklich OPSEC-sicher … überhaupt nicht. Es zielt derzeit nur auf Windows-Umgebungen ab.
Hinweis: Die Standardverbindungseinstellungen des Implantats sind so eingestellt, dass eine Verbindung zu localhost auf Port 8080 hergestellt wird. Dies kann hier geändert werden.
Nachdem eine exe des Clients, des TeamServers und des Implantats erstellt wurde, führen Sie einfach Teamserver.exe aus, um den TeamServer zu starten.
Um einen neuen Listener zu starten, verwenden Sie den Befehl StartListener. Dieser Befehl benötigt zwei Parameter: Listener-Name und den Port, auf dem er laufen soll.
Der Befehl Listeners listet alle Listener auf, ViewListener gibt Daten zum angegebenen Listener zurück, und RemoveListener kann verwendet werden, um einen Listener aus der Liste zu entfernen.
Das Auflisten verbundener Implantate erfolgt mit dem Befehl Implants.
Die Verbindung zu einem Implantat erfolgt einfach mit Connect <ImplantId>. Verstehen Sie, was ich da gemacht habe? … Okay, ich gehe dann mal. So wie der Befehl Connect verwendet wird, um ein Implantat auszuwählen. Mit ViewImplant können weitere Informationen zum ausgewählten Implantat angezeigt werden. Der Befehl Disconnect hebt die Auswahl des aktuell ausgewählten Implantats auf, wie unten gezeigt.
Um eine Aufgabe zu verwenden, muss diese zunächst mit SetTask ausgewählt werden. Optionen können mit TaskOpts angezeigt und mit SetTaskOpt gesetzt werden. Aufgaben werden mit SendTask ausgeführt.
Es ist möglich, die Ausgabe einer zuvor ausgeführten Aufgabe mit TaskOut anzuzeigen. TasksOut kann verwendet werden, um alle zuvor ausgeführten Aufgaben anzuzeigen, die zum ausgewählten Implantat gehören.
Atlas ermöglicht es Betreibern, sowohl PowerShell- als auch Cmd-Befehle mit den Aufgaben PSShell bzw. CMDShell auszuführen. PSShell öffnet einen neuen Runspace und führt den Befehl aus, sodass PowerShell-Befehle auch dann ausgeführt werden können, wenn powershell.exe auf der Blacklist steht. Diese Methode umgeht auch den Constrained Language Mode. CMDShell öffnet einen cmd.exe-Prozess und übergibt den Befehl an den Prozess. Die Ausführung eines PowerShell-Befehls wurde oben gezeigt, daher wird sie hier nicht noch einmal gezeigt. Nebenbei bemerkt: Viele gängige Befehle, die mit CMDShell ausgeführt werden (einschließlich, aber nicht beschränkt auf whoami, ipconfig, pwd und cd), wurden in die Funktionalität der Implantate implementiert, um die Notwendigkeit zu vermeiden, solche Befehle über einen cmd.exe-Prozess auszuführen.
Das Laden von Assemblies erfordert einige Schritte, anders als bei CobaltStrike, das alles mit execute-assembly erledigt. Zunächst muss ein Betreiber das Hilfsprogramm ByteConvert verwenden (ByteConvert muss mitgeteilt werden, ob die Datei lokal oder remote ist), um eine lokal gespeicherte oder entfernte Datei in ein Byte-Array zu konvertieren und dieses in der Variable assemBytes zu speichern. Sobald dies erledigt ist, wird die Aufgabe Load verwendet, um die Assembly in den Implantatprozess zu laden.
Um die in den Implantatprozess geladenen Assemblies anzuzeigen, können Betreiber die Aufgaben AssemQuery und AssemMethodQuery verwenden. Ersteres gibt alle geladenen Assemblies zurück, während letzteres alle öffentlichen Methoden einer geladenen Assembly zurückgibt.
Der Screenshot bestätigt, dass die Assembly TestAssem tatsächlich in den Prozess des Implantats geladen wurde.
AssemMethodQuery kann dann verwendet werden, um Informationen zu TestAssem zurückzugeben, die ein Betreiber nutzen kann, um Informationen zur Ausführung öffentlicher Methoden zu erhalten.
Atlas bietet die Möglichkeit, eine Assembly von ihrem Einstiegspunkt oder einer bestimmten exponierten Methode aus auszuführen. ExecuteAssem kann verwendet werden, um vom Einstiegspunkt aus auszuführen. Diese Aufgabe benötigt nur den Namen der Assembly. ExecuteAssemMethod ermöglicht die Ausführung anderer Methoden unter Verwendung von Informationen, die von AssemMethodQuery abgerufen wurden.
Eine vollständige Liste der Funktionen finden Sie im Wiki.
Öffnen Sie die .sln-Datei und erstellen Sie alle 3 Komponenten im Release-Modus. Konsolenfenster und exe-Dateien sollten im \bin\debug-Ordner jeder Komponente generiert werden. Ich muss hierfür noch etwas Besseres entwickeln.
cpupload/downloadAtlas wurde ausschließlich für Bildungs-/ethische Zwecke entwickelt. Ich befürworte keine Handlungen von Benutzern von Atlas und bin nicht für diese verantwortlich.