El gesto inconsciente que nos puede asaltar en este momento es tirar de PowerUp, pero al descargar el fichero nos salta el antivirus. "Bueno, lo descargo en memoria con PowerShell", dices. Vas a por ello, pero nos comemos un error de descarga: parece que hay un antivirus perimetral.
Primer paso: codificar el payload en el servidor
A continuación os mostramos un pequeño script .ps1 que convierte un fichero de texto cualquiera a base64. Suena sencillo (y lo es, tampoco nos engañemos), pero hay que tener en cuenta que, al menos con Windows, los retornos de carro y algunos caracteres (como la almohadilla, que estará presente en muchas líneas de comentarios) tienen problemas a la hora de descodificarse desde base64.
$bytes = [System.Text.Encoding]::Unicode.GetBytes($file)
$encodedText =[Convert]::ToBase64String($bytes)
$encodedText > encodedPayload.txt
Segundo paso: descargar a memoria, descodificar y ejecutar
En este segundo paso se utiliza otro script que realiza el proceso inverso. Primero descarga el payload codificado en memoria, lo descodifica de base64 y sustituye los identificadores '_CARRET_' y '_HASHSYMBOL_' por la almohadilla y el retorno de carro ('`n' en Windows). En este punto tendremos cargado el payload en memoria, listo para ejecutarse. Finalmente, el script ejecuta el payload, habiéndose bypasseado así al noob del antivirus perimetral (y seguramente también al de host, si es que no analiza la memoria).
0 comentarios:
Publicar un comentario