Entradas con la etiqueta ‘hackindex’

Psicología de los mensajes de correo maligno IIa

Martes, 20 de Enero de 2009

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: Psicología de los mensajes de correo maligno IIa
Autor: Lokutus
Tema: Virus y gusanos

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

ADVERTENCIA: El presente artículo y todos los que continuarán en esta serie con el mismo título, (y todos los que preceden a este artículo) se envían únicamente con fines didácticos y educativos, no siendo mi intención animar a nadie a cometer delitos relacionados con la transmisión de mensajes de correo malignos (*) del tipo “iloveyou” o “timofónica”.

      (*) Llamados por mi MCM.

———————————————————————-

 Hola, no me he perdido en el espacio, voy a entrar al grano con lo que tengo, aunque os advierto que no tengo cosas acabadas, sino a medio acabar y con problemas, ya os comentaré. Habíamos quedado que en el primer mensaje de la segunda parte cubriríamos los siguientes puntos:

* Envío de un mail por MAPI usando JavaScript.
* Envío de un mensaje por SMTP usando JavaScript.
* Detección de que una cuenta de correo existe, usando SMTP.

   Comenzamos con el envío de mails, usando MAPI:

<table class=”codigo”><tr><td>////////////////////////////////////////////////////////////////////////
//
// Envío de mail usando MAPI desde JavaScript
//
///////////////////////////////////////////////////////////////////////

main()

function main()
{

// Inicializamos las variables
      var objOL;
      var objMapi;
      var objMail;
      var sTexto;

// Creamos los objetos
   objOL   = WScript.CreateObject(“Outlook.Application”);
   objMapi = objOL.GetNameSpace(“Mapi”);
   objMail = objOL.CreateItem(0);

   objMail.Recipients.Add(“Lokutus@galactica.com“);
   objMail.Subject = “Esto es el suject del correo”

   sTexto = “Y esto es el cuerpo del mensaje.\n”;
   sTexto = sTexto + “y a continuación viene el fichero adjunto.\n\n”;

   objMail.Body = sTexto;
   objMail.Attachments.Add(“C:\Fichero.txt”)
   objMail.Send;

} // main</td></tr></table>

Naturalmente, el fichero tiene que tener la extensión .js. He de advertir que no he podido comprobar si funciona, pues tengo problemas con la clase de automatización. (un OCX que se me habrá borrado, :-| ), por lo que quien lo quiera usar tendrá que comprobarlo.

Como esto ya está muy visto, al menos en VBS, voy a intentar hacerlo usando un OCX de comunicaciones por sockets, esa OCX está, o debe estar, en:

C:\Windows\System\MSWINSCK.OCX

Si alguien tiene VC++ o Visual Basic es muy probable que la tenga, decidme los demas si lo teneis, pues ahora no sé si viene por defecto con windows.

Para comprobar que está se puede usar el siguiente fichero Chequeo.JS

…………………………………………………………….
<table class=”codigo”><tr><td>      var objSocket;

   objSocket = new ActiveXObject(“MSWinsock.Winsock”);
   if (objSocket == null)
   {
      WScript.Echo(“Error inicializando el control Active X”);
   }
      else
   {
      objSocket.AboutBox();
   }</td></tr></table>
…………………………………………………………….

También, y para que haga algo util, podeis meter en el else las siguientes líneas:

…………………………………………………………….
<table class=”codigo”><tr><td>      var sInfo;

   sInfo = “\nNombre Maquina: ” + objSocket.LocalHostName;
   sInfo = sInfo + “\n\nDirección IP: ” + objSocket.LocalIP + “\n”;
   WScript.Echo(sInfo);</td></tr></table>
……………………………………………………………

Son muchos los que preguntan, ¿Como puedo saber mi dirección IP?, pues ya lo tienen, un Java Script.

¿Y como he sacado eso de “MSWinsock.Winsock” necesario para inicializar el OCX?, ¿Y los nombres de los métodos exportados?

Usando la herramienta “Active X Control Test Container”, es la que viene con las herramientas de M$, aunque mi imagino que existirán otras herramientas mejores para esa tarea, ¿Alguien conoce alguna?.

Tambien he usado el Active X Control Test Container para hallar que métodos exporta la clase.

He llegado hasta aquí, este es el código que tengo actualmente, que no me funciona del todo bien, consigo conectarme y desconectarme a sitios, pero no consigo enviar ni recibir nada.

……………………………………………………………..

<table class=”codigo”><tr><td>////////////////////////////////////////////////////////////////
//   Los primeros pinitos con el OCX de sockets y Java Script //
////////////////////////////////////////////////////////////////

main()

function main()
{

      var objSocket;
      var sCadena;

   objSocket = new ActiveXObject(“MSWinsock.Winsock”);
   if (objSocket == null)
      WScript.Echo(“Error inicializando el control Active X”);
   } else {
      // 0 = TCP, 1 = UDP
      objSocket.Protocol   = 0;
      // Tiene que ser numérico
      objSocket.RemotePort = 80;
      // No vale dirección IP, da error
      objSocket.RemoteHost = “www.microsoft.com“;

      // Un chequeo innecesario
      sCadena = “\n Host: ” + objSocket.RemoteHost + “\n Puerto : ” + objSocket.RemotePort + “\n”;
      WScript.Echo(sCadena);

      // Me conecto
      objSocket.Connect();
      while (objSocket.State &gt; 7)
      {
         sCadena = “Conectando : ” + objSocket.State;
         WScript.Echo(sCadena);
      } // while

      // El estado de conectado es el 7, (ver tabla siguiente)

    // Código guarro y comentado, de diferentes pruebas

//      if (objSocket.State == 7) {
//         sCadena = “Se supone que estoy conectado : ” + objSocket.State;
//         WScript.Echo(sCadena);
//      } else {
//         sCadena = “Algo ha fallado: ” + objSocket.State;
//         WScript.Echo(sCadena);
//      } // if
      sCadena = “”;

//      var iCont;
//      objSocket.SendData(“Hola\n”);
for (iCont = 0; iCont &gt; 10; iCont ++) {
//         objSocket.SendData(“Hola\n”);
         objSocket.GetData(sCadena);
         WScript.Echo(“[" + sCadena + "] ” + objSocket.BytesReceived + ” ” +
objSocket.State);
      }

      objSocket.Close()

   } // if

} // main</td></tr></table>

 

En realidad el método GetData, tiene otros dos métodos adicionales, que son opcionales

          GetData(data, tipo, maxlen)

Eso si, no son del tipo Variant, no se si mi problema es debido a eso, del segundo parámetro he encontrado las siguientes constantes que están definidas en Visual Basic, pero no se cual debe ser su valor

   Byte                    vbByte
   Entero                 vbInteger
   Largo                  vbLong
   Simple                 vbSingle
   Doble                  vbDouble
   Moneda               vbCurrency
   Fecha                  vbDate
   Booleano             vbBoolean
   SCODE               vbError
   Cadena               vbString
   Matriz de bytes    vbArray + vbByte

Y para la función, State, si que se los valores

0    Predeterminado. Cerrado
1    Abierto
2    Escuchando
3    Conexión pendiente
4    Resolviendo host
5    Host resuelto
6    Conectando
7    Conectado
8    El equipo está cerrando la conexión
9    Error

   Más info, en el MSDN

Tengo tambien otro problema al conectar, no se conecta inmediatamente, si escribo algo como

      objSocket.Connect();
      objSocket.GetData(sCadena);

Salta un evento de error, tengo que parar el script antes del GetData, pero no se como hacerlo.

Se que existen eventos del tipo OnConnect(), aunque aun así tendria que apañarmelas para parar el hilo.

Por ultimo, y como simple comentario, el OCX se puede usar también para hacer servidores, pues tiene los métodos Listen, Accept y Bind.

Para resolver los problemas, he pensado que sería más cómodo usar HTML, tal y como me han comentado “Elete”, además con HTML si se manejar eventos. Los HTML compilados, ¿son los CHM?

¿Qué herramienta necesito para compilar HTML?

Os dejo una cuantas preguntas por si alguien quiere investigar un poco.
El tercer punto, sólamente es posible si está resuelto el segundo, consiste en interrogar al servidor de correo si un destinatario existe, truco que usan los spammer para saber si les estamos intentando engañar con mensajes devueltos falsos.

        VRFY cuenta@servidor.com
 2XX   OK      &gt;– La cuenta existe

              ó

       5XX      &gt;– La cuenta no existe.

El MTU pregunta al MTU de destino si hace falta.
      Lokutus, asimilando la red.
Postdata: los últimos antivirus de red que se instalan en el servidor de correo, (p.e. McAfee en MCIS), eliminan de forma radical cualquier mensaje de correo que tenga un fichero VBS o JS añadido. No se si tambien los CHM, ¿?

  • Share/Bookmark

Psicología de los mensajes de correo maligno I

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: Psicología de los mensajes de correo maligno I
Autor: Lokutus
Tema: Virus y gusanos

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

ADVERTENCIA: El presente artículo y todos los que continuarán en esta serie con el mismo título, se envían únicamente con fines didácticos y educativos, no siendo mi intención animar a nadie a cometer delitos relacionados con la transmisión de mensajes de correo malignos (*) del tipo”iloveyou” o  “timofónica”.

(*) De ahora en adelante los llamo MCM para abreviar.
1 – INTRODUCCION

En este primer mensaje me centraré en el diseño “psicológico” de un posible MCM y una introducción a lo que serían las carácterísticas de diseño, en la segunda parte, se desarrollarían aquellas partes de codigo que considero interesantes, aunque eso sí, sin acabar nunca de desarrollar el MCM, de tal forma que el código enviado como ejemplo sólo pueda ser utilizado por personas con conocimientos suficientes para comenzarlo desde el principio y evite la transmisión de MCM por parte de “lamers” o gente que quiera usarlo de forma personalizada para realizar venganzas personales.

En la tercera parte, propondré posibles soluciones, algunas de ellas ya existen. El conocimiento es una de esas soluciones, la ignorancia es uno de los principales factores que intervienen en la propagación de MCM y virus en general.

De esta primera parte, considero muy util su divulgación, lectura e incluso debate, pues considero que es mejor adelantarse a lo que puede venir que ser pillado por sorpresa.
2 – LOS MCM HASTA AHORA

Hasta ahora los MCM tenían características similares a la siguiente.

- Utilizaban un engaño basado en la ocultación de extensiones de ficheros, por ejemplo:

Un fichero con el nombre “pepe.txt.exe” se vería como “pepe.txt”

- Algunos de esos MCM, (los ejecutables con extensión exe), usaban un icono como el que usa el editor de Windows para reforzar el engaño.

-  Los más utilizados hasta ahora han sido los “.EXE” y los “.VBS” de tal forma que mucha gente evita como la peste esas extensiones y algunos desarrolladores, están empezando a usar otras extensiones. Como es el caso del LifeStages que utiliza una extensión .SHS

- Normalmente utilizan toda la ingeniería social que pueden, como es el caso del ILOVEYOU.

- Hasta ahora, se trataba de un único fichero, el que se enviaba.

- En algunos, tratan de evitar su desactivación, copiandose a muchos sitios diferentes, y alterar varias entradas del registro.

- En la mayoría de los casos, en el momento en el que llega a la cuenta de correo de un usuario experto, la existencia del MCM es descubierta en el entorno en el que se mueve ese usuario experto, y en algunas ocasiones, por las empresas desarrolladoras de antivirus.

- Excepto en algunos pocos casos, suelen utilizar el interfaz MAPI como mecanismo de envío de mensajes. Lo que hace que no pueda propagarse en aquellas máquinas de usuarios de otros lectores de correo.

- Normalmente, se envían a direcciones de la carpeta de direcciones, y de uno en uno.

3 – COMPORTAMIENTO DE LOS USUARIOS DE EMAIL.

Este apartado, está basado en cuanto a mi experiencia propia, viendo en muchas ocasiones qué tipo de correos se envían y reciben en los centros de trabajo donde disponen de correo electrónico, y de varias listas de correo informales y puede diferir con lo experimentado por otras personas.
- En general, la mayoría de los usuarios saben que no deben abrir cualquier cosa que se les envíe, sobre todo de desconocidos.

- Es corriente, que formen grupos de amistades, y se envíen chistes, fotos, (pornográficas o humorísticas o salvajes), ficheros mpeg o avi con anuncios graciosos.

- Antes he comentado que los MCM solían tener un único fichero adjunto, (que yo sepa), y sin embargo, en los mensajes de correo que se suelen enviar entre amiguetes, es normal que haya 4 ficheros jpeg. o tres ficheros de texto repletos de chistes. o un par de zips, e incluso uno o dos mpeg, (o uno sólo si es muy grande).

- A veces, suelen enviar en mensaje de correo, dentro de otro mensaje de correo, (no recuerdo las cabeceras de los mensajes salvados del OutLook), pero suelen aparecer como un icono.

- Sigue siendo corriente que se sigan enviando ficheros ejecutables EXE, la mayoría de estos ficheros suelen contener animaciones hechas con aplicaciones del tipo Macromedia. (Un ejemplo de lo que digo es la película completa en dibujos animados de la guerra de las galaxias que está en noticias.com).

- Los “emails lúdicos”, generalmente, suelen tener varios destinatarios, y no uno sólo, como suele ser el caso de los MCM.
4 .- CONSIDERACIONES DE INGENIERIA SOCIAL EN LA TRANSMISION DE UN MCM

Para que un MCM tenga éxito:

- Debe ser capaz de engañar al máximo posible al usuario que lo recibe, inspirandole la suficiente confianza para que pinche en el icono.

Por ese motivo, debe llegar de personas con las que normalmente se intercambia correo de tipo lúdico, no de trabajo. Por ejemplo, en el caso del “ILoveYou”, es difícil se engañado si llega de alguien con quien sólo tienes relaciones por correo de trabajo.

- Debe tratar de evitar en la medida de lo posible, el ser descubierto, y para ello, debe ser capaz de dar lo que se espera que dé.

Por ejemplo, en el MCM “timofónica” y en el “LifeStages”, el usuario espera que se abra el notepad con un mensaje de texto plano, y efectivamente es lo que hace.

- Algunos usuarios se dan cuenta enseguida de que han ejecutado un MCM cuando la bandeja de salida se les llena de mensajes. Quizás sería una buena táctica no ser tan agresivo a la hora de enviar mensajes, y enviar pocos y mejor encaminados.

- En lugar de usar la libreta de direcciones, podría mirar los mensajes que están en la carpeta de mensajes enviados.

- Podría incluso contestar a los mensajes que están en la bandeja de entrada.

- El MCM podría llegar acompañado de varios ficheros, y al reenviarse, hacerlo con esos ficheros.

- Combinaciones interesantes podrían ser:

Enviar dos ficheros de texto con chistes, y el tercero un vbs.txt que genera el tercer fichero de texto.
Enviar tres o cuatro jpeg, y entre medias un gif.vbs.

(en algunos clientes los jpeg se visualizan sin siquiera abrirlos, sería sospechoso que un jpeg se viese y otro no, por eso lo cambiaría a otra extensión, por ejemplo gif o incluso html.
Y ahora bien, la ingeniería social está en:

“Me llega un mensaje que es una contestación a otro que he enviado y con varias fotos, no hay alarma, a pinchar tranquilamente”
5 – CONSIDERACIONES DE DISEÑO.

Si fuese lo suficientemente perverso como para crear un MCM entero, lo haría de esta manera:

- Lenguaje de programación: JavaScript, tiene las mismas capacidades que el VBS, pues al estar soportado por WSH, dispone de las mismas capacidades que el VBS, (Acceso al registro de Windows, utilización de Active X, manejo de ficheros, etc).

- Búsqueda y uso de  SMTP  para envío de mensajes de correo electrónico, usando para ello el OCX de manejo de sockets. En el caso de que no funcione ninguno de los SMTP de la lista, (malditos spammers), o no se encuentre el OCX adecuado usará el ya conocido interfaz MAPI.

- El MCM tendrá la forma .gif.js, al ser ejecutado, generará un gif de pequeño tamaño.

- Investigación del formato en el que guardan los mensajes de NetScape y busqueda en la estructura de ficheros, para recuperar direcciones.

- retardo de 24 horas en el envio de mensajes.

- Envío de SMS, usando un camino alternativo al usado por el MCM “timofónica”, utilizando un CGI o accediendo a una web, (Sólo si se encuentra el OCX de TCP/IP).

- PAYLOAD:  Llevar la cuenta de ejecuciones, cuando lleve 10, crear un fichero HTML en el disco duro y llamar al navegador por defecto para que lo abra, el HTML tiene un bucle sin fin que abre ventanas.
En el artículo siguiente sólo trataré los módulos:

Envío de un mail por MAPI usando JavaScript.
Envío de un mensaje por SMTP usando JavaScript.
Detección de que una cuenta de correo existe, usando SMTP, este último punto no es necesario,
pero lo veo interesante, incluso para ser utilizado como una utilidad separada.

Y quizás en otro mensaje aparte que no tiene nada que ver con este, y si nadie se me adelanta, ;-) , envío de SMS sin usar el servicio Mail2SMS de movistar.

  • Share/Bookmark

Apreti pass

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: Apreti pass
Autor: Lokutus
Tema: Virus y gusanos

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

Hola, me han enviado por email uno de esos troyanos que pululan por la red, en este caso el Pretty Park, aunque la versión antigua, y como siempre que me envían un virus o un troyano me pongo la mar de contento, ya tengo una victima más para asimilar, :) )), he podido completar el script de detección y eliminación del Pretty Park que pongo en el grupo de binarios, junto con algunas cosas más.

El proceso de asimilación, lo he realizado en un ordenador aparte, un viejo 486, ejecutando intencionadamente el icono de “apreti pas” como yo lo llamo.

En la primera prueba con el script, al intentar introducir en el registro HKLM\SOFTWARE\Classes\exefile\shell\open\command el valor “”%1 “%*” me confundí en el script y me cargué el registro, :( . Aunque el sistema seguía funcionando, no podía pararlo, y cuando ejecutaba un programa, no veía sus parámetros, por ejemplo, si hacía un “xcopy fichero1 fichero2″, no me lo copiaba.

Le pasé el RegClean.exe que está en http://www.microsoft.com y me quitó un montón de porquerías del registro, y eso que el sistema operativo estaba recien reinstalado, pero no me resolvió el problema.

Al final me dí cuenta que al escribir el valor “”%1 “%*”, lo puse al reves, y lo que tenía en el registro era “”%1 “*%”.

O sea, el %1 es el primer parámetro, el nombre del fichero y %* son todos los demás parámetros, si escribiese en el registro “”%1 “%2″, no habría posibilidad de pasar más de un parámetro a los programas, cogería el primero y los demás los descartaría. Simplemente no podía pasar parámetros a los programas por que Windows no sabía que hacer con “*%” que ignoraba. Probablemente, la parada del sistema se haga llamando a algún *.exe con un parámetro, y al no tener ese parámetro el ejecutable de parada no funcionaba.

Una vez funcionando el script limpiador, hice algunas pruebas más, por un lado lo he desensamblado para intentar extraer la rutina de ocultación en la tabla de procesos, no lo he conseguido todavía, cuando lo consiga veré si puedo meterla en el GranRAd como código inline, (nunca lo he hecho con Visual C++).

Por otro lado, tengo unos programitas interesantes que conseguí de http://www.sysinternals.com/

 regmon95.zip Tracea todos los accesos al registro de windows.
 openlist.zip Mantiene una lista de ficheros bloqueados.
 filemon.zip Tracea todos los accesos a disco.

Al ejecutar Pretty Park, me quedé asombrado de la cantidad de consultas que hace, el fichero *.log que he guardado lo tengo en el grupo es.misc.binarios, pero resumiendo hace lo siguiente:

Extrae datos acerca de la versión de Windows. Extrae datos del panel de control. Intenta averiguar si tenemos puertos de comunicaciones, COM1, COM2, y de impresora, LPT1 Averigua que protocolos tenemos instalados, si tenemos una DLL de autodialing, Extrae varios parámetros de comunicaciones, si tenemos proxi instalado o si nos conectamos a un proxi. Averigua si estamos capacitados para hacer pings, ¡¡Otia!!, ¿el pretty park hace pings?

Cuando FILES32.vxd entra en ejecución, hace exactamente los mismos accesos y consultas que el fichero Pretty Park.exe, de echo son los dos del mismo tamaño, de echo son el mismo fichero, pero cambiado de nombre.

Ejecutando nuevamente Pretty Park.exe con el programa filemon.exe activado, observamos como hace accesos de lectura a PrettyPark.exe y de escritura a FILES32.VXD, o sea, un proceso de copia.

En el fichero filemonlog.LOG, los accesos de “???” son del sistema operativo. Y por último, puede hayar la causa de por qué Pretty park no mostró en mi máquina los sintomas de su ejecución, la activación del salvapantallas de tuberías.

568 23:37:26 Files32 Attributes C:\WINDOWS\SSPIPES.SCR NOTFOUND GetAttributes

 Lokutus, asimilando la red.

  • Share/Bookmark