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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19
81  Programación / Programación C/C++ / ¿Tiene C++ algo parecido al this. de java? en: 6 Octubre 2015, 12:47 pm
Para cuando se de el caso de que un parametro de una función se llame igual que una variable declarada en la función, y no tener que renombrar una de ellas, me vendría bien un this de los de java.

A ver si encuentro algo mientras.

Saludos.

http://stackoverflow.com/questions/6905598/c-equivalent-to-java-this

Código
  1. void envenenamiento_activo(lista_victimas *lista)
  2. {
  3. lista_victimas *lista;
  4. this->lista = lista;

Citar
Error: this solo se puede usar en una función miembro no estática.

Si no se puede hacer con una clase static, es como si no se puede hacer para mi código.
82  Programación / Programación C/C++ / La broma del sizeof(mac) en: 3 Octubre 2015, 13:47 pm
Resulta que al hacer sizeof(mac), obtengo 4 bytes, cuando una mac tiene 6 bytes, uno para cada u_char si no me equivoco.

Código
  1. u_char *mac_gateway = new u_char[6]();
  2.  
  3. u_long num_gateway = inet_addr(adaptador->GatewayList.IpAddress.String);
  4.  
  5.  
  6. if (num_gateway == INADDR_NONE){
  7. Sleep(REINTENTAR_MITM * 1000);
  8. continue;
  9. }
  10.  
  11. if (!enviar_arp(adaptador->GatewayList.IpAddress.String,
  12. adaptador->IpAddressList.IpAddress.String, mac_gateway)){
  13. Sleep(REINTENTAR_MITM/2 * 1000);
  14. continue;
  15. }
  16.  
  17. for (int i = 0; i < 6; i++)
  18. printf("%d=%x ", i,mac_gateway[i]);
  19.  
  20. system("pause");
  21.  
  22. for (int i = 0; i < 4; i++)
  23. printf("%d=%x ", i, ip_gateway[i]);
  24. system("pause");
  25. cout << sizeof(mac_gateway) << sizeof(mac_atacante);

Me salen que todas las macs tienen 4 bytes WTF, la ip son 4 bytes, pero las macs no se supone que tienen 6?.

Me he quedado un poco loco con esto. Haber si sabéis algo.

Gracias, un saludo.

Edito: Que broma es esta:

Código
  1. u_char *mac = new u_char[500]();
  2. cout << sizeof(mac);
Citar
4
83  Comunicaciones / Redes / Calcular tamaño campos paquete DNS en: 1 Octubre 2015, 21:10 pm
Hola a todos, necesito hacer 2 cosas con los paquetes dns response.

Primera: modificar todos sus campos de ip, para poder hacer dns spoofing, para ello hay que saber en que posición están los bytes de las ips.

Segunda: obtener el dominio que contienen y la ip real del mismo. Para ello necesito saber donde estan los bytes del dominio y de la ip real.

Con el wireshark he ido probando y es bastante jodido. De momento solo quiero extraer el dominio y la ip que me da el dns response, puede haber más de uno, y cada campo con distintos tamaños (locura).

(C++): En construcción.. A ver quien consigue calcularme el tamaño de cada query y response dns.

Saludos.

Edito: Lo que me rompió los esquemas fueron las "answers", que parecía que siempre tenían 16 bytes, hasta que pumm, había una que incluía el dominio en ella, me refiero al atributo CNAME: ... ,entonces todo se vino abajo. ¿se puede saber si van a incluir el dominio o no? Se puede observar que solo la primera answer lleva el CNAME, las demás no, es como resolver una ecuación de 100 incognitas XD.

Edito: Quizás este proyecto pueda ayudarme:

https://github.com/maurotfilho/dns-spoof/blob/master/dns-spoof.c
84  Programación / Programación C/C++ / Clientes/servidores y threads en: 1 Octubre 2015, 10:01 am
Hola, tengo un problema con el MITM, cuando las victimas se van a conectar a mi servidor el servidor recibe la respuesta y reenvia la petición al servidor destino a través de un send(), luego recibe la respuesta de ese servidor y la reenvía la víctima tal cual.

El problema es que cuando haya 30 víctimas ¿como tendré que programar esto?, ¿tendría que crear un subproceso para cada cliente conectado al servidor? ¿sería viable? ¿alguna otra posible solución?.

Os dejo el code, que cambiaríais??.

Código
  1. while (*on_mitm){
  2.  
  3. int victima;
  4. sockaddr_in addr;
  5. addr.sin_family = AF_INET;
  6. int len = sizeof(addr);
  7.  
  8. if ((victima = accept(servidor, (struct sockaddr*)&addr, &len)) == INVALID_SOCKET){
  9. closesocket(victima);
  10. Sleep(100);
  11. continue;
  12. }
  13. else{
  14. cout << "conectadoo";
  15. setsockopt(victima, SOL_SOCKET, SO_RCVTIMEO, (char*)&tiempo_espera, sizeof(timeval));
  16. setsockopt(victima, SOL_SOCKET, SO_SNDTIMEO, (char*)&tiempo_espera, sizeof(timeval));
  17.  
  18. u_char *ip_victima = new u_char[4]();
  19. u_long num_victima = inet_addr(inet_ntoa(addr.sin_addr));
  20.  
  21. if (num_victima == INADDR_NONE){
  22. closesocket(victima);
  23. Sleep(100);
  24. break;
  25. }
  26.  
  27. ip_victima = (u_char*)&num_victima;//busco en la lista ultima.
  28.  
  29. string respuesta;
  30. char *bloque = new char[3000]();
  31. setsockopt(victima, SOL_SOCKET, SO_RCVTIMEO, (char*)&tiempo_espera, sizeof(timeval));
  32. while (int res = recv(victima, bloque, 3000, 0) > 0)
  33. respuesta += string(bloque);
  34.  
  35. cout << "recibido";
  36. if (respuesta.length() == 0){
  37. closesocket(victima);
  38. Sleep(100);
  39. break;
  40. }
  41.  
  42. int cliente;
  43. sockaddr_in cli_local;
  44.  
  45. cout << respuesta << endl;
  46. respuesta = eliminar_encoding(respuesta, true);
  47. cout << respuesta << endl;
  48.  
  49. if ((cliente = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR){
  50. cout << "falla socket" << GetLastError();
  51. Sleep(REINTENTAR_PROXY * 1000);
  52. continue;
  53. }
  54.  
  55. cli_local.sin_family = AF_INET;
  56. cli_local.sin_port = htons(80);
  57. cli_local.sin_addr.s_addr = inet_addr("217.160.43.9");
  58.  
  59. if (connect(cliente, (struct sockaddr*)&cli_local, sizeof(cli_local)) == SOCKET_ERROR){
  60. cout << "error conectar" << GetLastError();
  61. closesocket(cliente);
  62. }
  63. else{
  64. if (send(cliente, respuesta.c_str(), respuesta.length(), 0) == SOCKET_ERROR){
  65. cout << "error enviar" << GetLastError();
  66. closesocket(cliente);
  67. }
  68. else{
  69. respuesta = "";
  70. while (recv(cliente, bloque, 3000, 0) > 0)
  71. respuesta += string(bloque);
  72.  
  73. if (respuesta.length() == 0){
  74. closesocket(cliente);
  75. closesocket(victima);
  76. Sleep(100);
  77. break;
  78. }
  79.  
  80. cout << "respuesta server: " << respuesta << endl;
  81. respuesta = eliminar_encoding(respuesta, false);
  82. cout << respuesta << endl;
  83.  
  84. if (send(victima, respuesta.c_str(), respuesta.length(), 0) == SOCKET_ERROR)
  85. cout << "fallo reenvio a cliente " << GetLastError();
  86. else
  87. cout << "se envio al cliente";
  88. }
  89. }
  90. }
  91. Sleep(100);
  92. }

Saludos.
85  Programación / Programación C/C++ / ¿Recv() porque tarda infinito? ... en: 29 Septiembre 2015, 11:18 am
Código
  1. string respuesta;
  2. char *bloque = new char[3000]();
  3. while (int res = recv(victima, bloque, 3000, 0) > 0)
  4. respuesta += string(bloque);

... mientras que esto es instantáneo? : recv(victima, bloque, 3000, 0);

¿No hay algún timeout para que salga?, o ¿no se puede hacer algo?.

Saludos.
86  Programación / Programación C/C++ / Threads y travesuras en C++ en: 26 Septiembre 2015, 20:31 pm
Hola a todos,

hasta ahora cuando he trabajado con subprocesos he trabajado con async(), pero es lo mismo que un thread o mejor?. Además no son autenticos thread ¿no?.

Lo digo porque cuando programaba en C# y creaba un nuevo thread en el administrador de tareas salían 2 ejecutables con el nombre del programa el normal y el del thread, sin embargo en cpp ¿como se crea un thread así?.

También el mutex me vuelve un poco loco, da muchos errores, la verdad me esta costando trabajar con procesos bastante XD. ¿Dónde lo declaro para que haya uno único para todo el programa.

Simplemente lo necesito para hacer el reescaneo de hosts ya que allí actualizo la lista de victimas, meto mutex actualizo lista y unlock(), y en todas las partes del programa que se accede a la lista lo mismo lock() y unlock() al salir, es horrible.

Saludos.
87  Seguridad Informática / Seguridad / Duda acerca de clonación de web para varias víctimas en: 23 Septiembre 2015, 13:49 pm
Hola a todos, tengo una duda sobre clonación de una web, ¿cómo se hace si queremos clonar para 10 victimas distinas?.

La idea es hacer un MITM, después hacer DNS spoofing a todas las víctimas diciendo que al dominio sugerido le corresponde mi IP.

Después tendré que montar un servidor ¿en puerto 80 o puede ser otro puerto?, en el que se conecten las víctimas, ese servidor actuaría de cliente pediría datos a los dominios reales que sugirió la víctima y los devolvería a las víctimas modificados si así lo deseamos.

Pero.. Si hay 10 víctimas, y cada una carga 5 pestañas de varios dominios diferentes ¿que habría que hacer?, ¿puedo hacer que mi servidor a parte de diferenciar a las víctimas que diferencie si cargan para una pestaña u otra?, más o menos.

¿La solución está en montar un servidor en el puerto 80 del atacante?, ¿eso podría clonar páginas para varias víctimas aunque soliciten mismos dominios etc?.

Solo quiero saber si es físicamente posible, antes de entrar a programar.

Saludos.
88  Seguridad Informática / Hacking / ¿Funciona el DNS spoofing? en: 22 Septiembre 2015, 18:33 pm
Buenas, lo acabo de implementar y me salen alertas en el navegador de la victima, avisos de cloudfare para páginas normales (raras que he probado unas pocas) y de google si es google.

Seguiré investigando, seguramente se pueda bypassear, justo lo acababa de conseguir y sale esto XDD, me daba error al principio de que era un byte menos en la ip, luego error del checksup udp en el paquete dns que no sabía que existia y lo dejaba igual, luego un error en un for del checksup udp y ya funciona, hace dns req, y mando la dns response falsificada con otra ip para el dominio que solicito, pero salen alertas.

¿Alguien sabe porque? ¿Si ya no funciona? ¿que tipo de seguridad tiene? ¿Y si se puede bypassear?.

Saludos.

Edito:

Error:

Código:
Error 1001 DNS resolution error

Me dice que he solicitado una página que está en la red cloudflare. Vaya, todas deben de estar en esa red menos google visto lo visto :/.

Edito:

https://www.cloudflare.com/ddos

Vaya vaya, esto tiene mala pinta, cuando la victima va a la página "facebook.com" con una ip spoofeada "89.212.23.1", pasa por el servidor cloudflare si pertenece a la red de este, entonces cloudflare lo detecta y envía un mensaje de alerta en su lugar.

AAAMIGOS.

Supongo que se podrá hacer bypass creando un servidor http en el atacante y que cuando cargue "facebook.com" le pasamos la ip del atacante, entonces no saldrá fuera del router y no pasará por cloudflare, se conectaría a nosotros creyendo que es facebook, ya solo quedaría tener preparada una página falsa de facebook en nuestro ordenador, que hayamos cargado previamente de la verdadera con peticiones del atacante.

Saludos.

Edito: Bueno, creo que ya se para lo que vale el dns2proxy... seguramente que para esto.
89  Comunicaciones / Redes / Redirigir tráfico con destino puerto 80 al router hacia otro puerto de localhost en: 19 Septiembre 2015, 12:35 pm
Hola, básicamente quiero que todos los paquetes salientes hacia el router con destino puerto 80 sean redirigidos hacia mí (localhost) y el puerto escogido como por ejemplo el 10000, hacer este comando pero para windows:

Código:
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port <listenPort>

Pero probando con netsh, lo más parecido que encuentro es esto:

Código:
netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.0.156 connectport=10000 connectaddress=192.168.0.156

Que se supone que redirige los paquetes que van a puerto 80 con destino cualquiera, hacia mi ip en la red, pero a pesar de hacerlo las páginas cargan y tengo conexión luego no redirige puesto que llega al router y salen, ¿que puedo hacer?.

Saludos.

La investigación apunta a: https://social.technet.microsoft.com/Forums/windows/en-US/6be8d1f0-f01b-47cf-beae-4d2cfc9c4111/redirect-all-local-port-80-traffic-to-remote-proxy-server?forum=w7itpronetworking

https://technet.microsoft.com/es-es/library/cc731131(v=ws.10).aspx

Con esto no crea ningún servidor proxy y todas páginas cargan por igual:

Código:
set proxy="http=myproxy:80" bypass-list="*.com"

No hay manera.. ¿?

Código:
C:\Users\cabra>netsh interface portproxy show all

Escuchar en ipv4:       Conectar a ipv4:

Dirección       Puerto      Dirección       Puerto
--------------- ----------  --------------- ----------
localhost       80          localhost       123

Estoy probando con wireshark filtrando los puertos a los que redirijo y no llega ningun paquete, PUTO WINDOWS! :*****

Recomiendo está página para hacer pruebas:

http://raunomagi.blogspot.com.es/2012/05/port-forwarding-on-windows-computers.html

Interesante, he probado esto:

Código:
C:\WINDOWS\system32>netsh interface portproxy add v4tov4 listenport=80 listenaddress=localhost connectport=10000 connectaddress=localhost


C:\WINDOWS\system32>netsh interface portproxy show all

Escuchar en ipv4:       Conectar a ipv4:

Dirección       Puerto      Dirección       Puerto
--------------- ----------  --------------- ----------
localhost       80          localhost       10000

Y al conectar con un cliente en mi puerto 80 funcionaba, lo que hace es establecer un servidor en puerto 80 para conexiones de puerto 10000? Esto no es port fordwarding!, bueno seguiré probando a ver si comprendo un poco más.

.. http://stackoverflow.com/questions/24646165/netsh-port-forwarding-from-local-port-to-local-port-not-working

Todo esto lo que hace es modificar la entrada hacia el pc no la salida, lo que hace crea un server en un puerto escuchando, y redirige a otro puerto, lo que busco es que redirija la salida hacia mi, de manera que no habrá paquetes que salgan hacia el router, pero parece que no es el camino.
90  Programación / Programación C/C++ / Como leer paquetes salientes de un puerto C++ en: 17 Septiembre 2015, 23:43 pm
Pues eso, he redirigido los paquetes TCP del puerto 80 al puerto 123 (por ejemplo) y ahora quiero leerlos con un socket o no se con qué por eso creo el hilo. Para poder trabajar con ellos y continuar con mi proyecto de hacking etico.

Saludos.
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines