viernes, enero 30, 2015

Evadir antivirus para utilizar Setoolkit, powershell y meterpreter

Después de otro buen tiempo sin escribir por acá, vengo con algo sencillo, nada del otro mundo, pero que a mas de alguno le puede servir.

No voy a entrar en detalles sobre las herramientas en si, puede encontrarse bastante información en google sobre SETOOLKIT (social-engineer toolkit), para generar un código que se ejecute en la máquina víctima haciendo uso de la powershell y alphanumeric shellcode injector y que nos devuelva una consola meterpreter desde donde podemos controlar fácilmente y extraer información de una computadora víctima, el caso es que hasta hace un tiempo éste método era indetectable para los antivirus, el archivo de texto generado (x86_powershell_injection.txt) podía hacerse .bat y luego ocupar una herramienta para hacerlo ejecutable y que se viera bonito haciendo uso de ingeniería social, pero... al parecer los antivirus ya se están actualizando y aunque se trata de un archivo de texto plano (.txt), Mcafee específicamente interceptaba dicho archivo aún siendo txt que no representa por si solo, ninguna amenaza.
Aún, haciéndolo .bat y luego convirtiéndolo en .exe, el antivirus era capaz de interceptarlo en el directorio temporal al momento que el .bat se corría. Lo interesante del caso es que, si copiaba el contenido del archivo de texto al portapales, abría una consola y lo pegaba, el código se ejecutaba sin que el antivirus se mosqueara.

Luego de hacer varias pruebas y leer un rato encontré una solución que tenía toda la lógica del mundo: hacer un pequeño programa para consola en C++ que copiara el contenido del archivo de texto y que luego lo fuera pegando caracter por caracter en una consola y posteriormente lo ejecutara (además de hacer un autoinstalador ejecutable que agregue nuestro archivo a las tareas programadas y que se ejecute a diario a la hora especificada y muestre además un archivo ejecutable real para seguir con nuestra ingeniería social), así que probé dicha solución pero de igual forma, al desempaquetarse mis archivos, incluyendo el x86_powershell_injection.txt, el antivirus lo eliminaba y el programita daba un error al no encontrar el archivo de texto plano... así que a éste punto, la solución que se me ocurrió fue mas fácil aún: hacer que el programa, en vez de leer el contenido del txt y que luego lo pegara en una consola, mejor eliminaba el archivo de texto del camino, copiando su contenido en una variable dentro del mismo programa y luego pegar dicha variable en la consola para su ejecución y listo... el antivirus no se da cuenta qué es lo que pasa y corre nuestro exploit.

Código propuesto por OneHappyTaco en iNinjas:

#include "stdafx.h"
#include
#include
int main(void)
{
std::ifstream infile("FILE_NAME_HERE");
char ch = ' ';
std::string inString;
while (infile.get(ch))
inString += ch;
system(inString.c_str());
return 0;
}

(Además que con ésta propuesta también es necesario empaquetar unas dlls) Podemos ver que el código lo que hace es leer nuestro archivo de texto caracter por caracter y lo guarda en una variable que luego pasa a la consola.

Y éste es mi código propuesto y que al momento corre sin que salte el antivirus, en lugar de tener mi archivo de texto, hay que copiar y pegar el contenido del archivo de texto en la variable "cadena":

#include "stdafx.h"
#include int main(void)
{
std::string cadena;
cadena="ContenidoDeTuArchivo-x86_powershell_injection.txt";
system(cadena.c_str());
}

... Y listo, tenemos nuestro ejecutable que nos devuelve la powershell deseada.


Saludos!!!


2 comentarios:

Juan Carlos Rodriguez Diaz dijo...

men hay algo que me inquieta quisierasaber que es el stdafx.h que hay en tu codigo

Stefan Rivera dijo...

Hola Juan Carlos, el stdafx.h es una cabecera precompilada... se usa mas convencionalmente que otra cosa, para evitar que el proyecto se compile desde cero cada vez que lo haces... prueba quitándosela, no debería darte problema. Saludos!!!