http://www.vsantivirus.com/xipi-a.htm
Fijaros en los .exe de la parte final.
#####################################
## 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 > 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 > 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 >– La cuenta existe
ó
5XX >– 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, ¿?
Andaba volando por una región llamada “Sistiana”, una de las más pijas de todo SecondLife, y me encuentro este edificio:
Y me llevo la sorpresa que el terreno donde está situado ese edificio tiene por nombre “Kaspersky Internet Security 7.0″ y efectivamente, dentro tienen una máquina de vender licencias de uso de kaspersky, al precio de unos 4100 L$ la licencia, que son aproximadamente unos 14 dolares. (¿Cuanto vale la licencia original?)
Aunque es raro que si se trata de una empresa del tamaño de Kaspersky en lugar de tener su propia región se limite a un pequeño edificio en apenas 700 metros cuadrados. ¿He dado con un piratilla de software?.
No puedo tener la certeza absoluta, puede que sea algún parner de kaspersky o vendedor homologado, pero si puede ser posible que con el dinero que le entregan, compre una licencia y reenvíe al cliente por email o IM el número de serie.
De todas formas ese tipo de negocios actualmente no tiene futuro en secondlife, es decir, ni Kaspersky conseguiría vender licencias de antivirus dentro de secondlife ni Microsoft licencias de Windows Vista.
Como mucho, la presencia de una empresa de ese tipo se limitaría a algo más de tipo publicitario, y más les vale que su sitio sea interesante y entreguen buenos regalos a los visitantes si no quieren ver como su isla se queda vacía como ya ha pasado a muchas empresas.
No obstante, queda una pregunta en el aire, ¿Existe la posibilidad de que exista en SecondLife algo parecido a los virus informáticos?, hace tiempo hice la misma pregunta respecto a los teléfonos móviles e hice un simil usando un robot similar a los que tiene Bilo y nano en la tira ecolnet.
Imaginaros que todo el mundo tuviera un robot como el de Bilo y nano, y escribo en un papel el siguiente mensaje “Prende fuego a tu casa, haz copias de este papel y entregaselas a todo robot que veas” y le entrego a un robot el papel.
En ese hipotético caso, se daría las siguientes condiciones:
1 .- El robot acepta órdenes de extraños, bien por que no hace comprobaciones de seguridad o bien por un fallo de seguridad.
2 .- El robot tiene capacidad de hacer daño. En este caso provocar un incendio.
3 .- El robot tiene capacidad de comunicación.
En los teléfonos móviles, sobretodo en los smartphones el “robot imaginario” que tiene dentro puede aceptar órdenes de extraños, aunque sea por ingeniería social, por ejemplo en un mensaje de correo que le llegue al usuario y que al abrirlo se le infecte el movil.
Este caso sería como si en el ejemplo anterior, en lugar de darle el papel al robot se lo doy a nano y le digo, toma, dale este papel a tu robot y el muy ingenuo va y se lo entrega sin leerlo antes.
En el caso de secondlife, existía una función que permitía que un objeto enviara un script a otro objeto, y esa función fue explotada por un ataque que ocurrió dentro de secondlife que consistía en miles de anillos que se auto-replicaban invadiendo todo secondlife.
LindenLab reaccionó eliminando esa función, haciendo que sea “deprecated” y sustituyendola por otra función que requiere que el objeto destino tenga un PIN.
Existe otra posibilidad y es la ingeniería social, entregándole a alguien un objeto. Actualmente eso está siendo explotado por los grieffers (cibergamberros) de secondlife. Un día ves un coche con muy buena pinta, y además es copiable y sacas una copia, vas a otro sitio, sacas el coche del inventario y de repente ves que empieza a aparecer miles de cubos voladores con la foto de Goatse que invaden todo y se extienden a todas las regiones abyacentes. A la media hora vez un mensaje diciendo que has sido baneado.
Un ataque más inteligente más en la linea del programador de virus sería algo más retardado que no tenga efecto hasta después de una determinada fecha y que esté dentro de un objeto que todo el mundo quiera tener.
Pero aun así, existen o existían posibilidades más sofisticadas. Hasta hace algo menos de un mes, existía un bug muy gordo en secondlife que permitía hacer cosas tales como copiar objetos sin tener permisos de copia incluyendo los scripts y suplantar identidades.
Suplantando identidades de otros usuarios un ciberatacante podría haber inyectado scripts/bombas de tiempo en diversos objetos.
Sin embargo, no podrían propagarse a otros objetos como los auténticos virus, salvo que use la ingeniería social.
Es decir, SecondLife carece de los puntos 1 y 3 para que pueda existir virus informáticos dentro sin embargo un script tiene una enorme capacidad de hacer daño.
Un aspecto muy curioso que hay que tener en cuenta es que el sistema de permisos de SecondLife parece estar calcado o copiado del sistema de permisos de Unix/Linux.
En secondLife existen los Owner(dueños), los grupos y los otros y cada objeto e incluso cada terreno puede tener permisos respecto al owner, al grupo o global. Las mismas limitaciones que dispone Linux para que puedan extenderse los virus también las tiene SecondLife y la única posibilidad que tiene el malware es la propia estupidez ignorancia del usuario.