Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Kaxperday

#51
Sí se a lo que te refieres, no es ese el problema, claro que me llegan los paquetes con el poisoning, y les hago ip fordward, incluso tengo una función para ver si la red es vulnerable al poisoning pues por desgracia/fortuna, hay redes que no lo son XD.

En una que no era vulnerable, hice lo que dijistes del DHCP para hacer las pruebas, pero no es el caso, los paquetes llegan correctamente, pero claro, llegan pensando que soy el router, conectandose a google, y la IP de mi servidor local (127.0.0.1) no es la de google así que debo de coger el paquete cambiarle la IP de destino y puerto por el de mi servidor local y mandarmelo a mi mismo con pcap_sendpacket (triste pero no hay otro remedio) para que mi SO lo reciba a través de mi server proxy.

Y luego mismo proceso de vuelta, cuando el proxy responda, responderá con IP origen 127.0.0.1 y puerto de server, y tendré que cambiarlo por la IP del servidor de google (o la que solicitó el host) y puerto 80.

Pero el caso es que algo pasa que no llegan al servidor o no salen de este, con wireshark parece que el servidor no responde cuando me reenvio los paquetes, algo les falla a esos paquetes, ojo pues son SYN al server google o que apunta el host, y los estoy usando para conectar a mi server HTTP debería funcionar no?, es igual para todas las conexiones TCP.

No sé el caso es que no reponde el server, y culpa del server no es porque como digo va bien, basta con probarlo con el navegador y ver como hace el strip (además de suplantar exes)  >:D hehehe

Saludos!!

Edito: No hay manera, he probado a mandar el paquete al router y que del router vuelva a mi y trate de entrar en el servidor, pues nada no funciona no sale respuesta del servidor luego no llega.

La cosa es que no entiendo, para que se produzca conexión con el server tiene que pasar esto:

https://wiki.wireshark.org/TCP_3_way_handshaking

Cuando redirecciono el paquete normalmente es un SYN correcto, pero al redirigirlo algo pasa que no es respondido pues hay varios paquetes destino puerto 10000 (el puerto del server) pero ninguno con source puerto 10000, no está ese SYN/ACK.

¿Porque?, en el firewall tengo permitido el programa, juraría que todo bien, incluido checksums. ¿que pasa? XD.

JEJEJE, "incluido checksums", cuando he puesto esto lo decía un poco como a regañadientes y me he puesto a comprobar el que no se si lo había solucionado.. ¡EL TCP CHECKSUM! y sorpresa persiste con su error de unos pocos bits, así que tendré que areglarlo, sin embargo puedo probar a dejarlo normal y poner el puerto 80 el checksum debería ser correcto a ver si así responde... sigue sin funcionar con el 80 tampoco, probaré a calcular bien el checksum que me sale igual que el normal solo que 16 uds por encima, y veré que tal.

Perfecto he puesto "checksum -= 20;" y acierta la mitad de los tcp checksums Y SI SE HA PRODUCIDO EL SYN/ACK que estaba buscando sin embargo no encamina bien para el host pues falla lo de poner la IP del server, pero eso ya son problemas menores CORRECTO, en unos días lo solucionare, ahora lo tengo que dejar.. XD.
#52
Buenas gracias por la respuesta!, pensé que el tema no le había posteado porque pensaba que igual era problema de la MAC que al poner la del host victima en ambos lados al mandarlo al servidor local podría fallar pero no, parece que no tiene que ver.

Ya sabía yo que en el foro C++ me ibais a ayudar :D

Por partes alberto:
Citar
Por que pruebas inyectando los paquetes?
Inyecto los paquetes con pcap_sendpacket para que el paquete vuelva a ser recibido por el SO con los nuevos datos y entre en el servidor, usando la mac/ip/puerto, pero no llega a pesar de lanzar el paquete con mi mac destino, mi ip local en la red e ip de localhost, y puerto destino el de la aplicación, quizás llegue pero no se conecta porque creo que debe de salir el ACK del servidor para que se produzca la conexión y comiencen a llegar los datos. Y ese paquete de ACK no veo que salga del servidor con wireshark (poniendo el tcp port src 1000 para verlo claro), luego lo más normal es que no llegue o que sea rechazado.

Citar
ya tratase con una petición GET Manual usando Telenet o netcat?
Hice con el navegador, simplemente pongo la IP del servidor y el puerto y conecta sin problemas. El servidor no es problema, o los paquetes no  le llegan o no salen de el por lo que no se produce la conexión.

Citar
Como los otros hosts saben que tienen que mandar las peticiones a tu maquina?
Les hago ARP poisoning XD

Citar
He visto varios de tus temas y todo apunta a que estas haciendo un proxy transparente al estilo squid o algo similar.

Te lo agradezco que los hayas leído :), el squid he estado leyendo ahora y apunta a un servidor proxy HTTP que utiliza una cache, bueno quizás sea algo así.

En definitiva yo hago IP fordward a las máquinas de la red, tienen acceso a todo tipo de servicios IP (y de otros protocolos si me interesa), internet y demás, pero interesado en manipular el tráfico HTTP a través de SSLStrip pues creé este servidor, pero tratando de redirigirle los paquetes TCP que me llegan de los host (con el código que puse) parece que no llegan o algo pongo mal, también he tenido dudas sobre si mandar el paquete al router y que el router me lo mande a mi para que lo trate el SO (poniendo mac del router y la mia), en vez de los que estoy haciendo que es enviarmelo a mi propia mac el paquete que no llega no se porque, aunque dudo que esa sea una solución.

Al volver el paquete atrás he pensado en crear un vector que cada peticion que desvíe al server local guarde IP del servidor con la ip de origen y su puerto en plan (para luego poder recuperar la IP del server con la IP del host y su puerto) de esa manera la recupero y la quito del vector: 192.168.1.43:15673 -> 202.123.12.3

Aunque eso aun no lo he hecho, aún así creo que no funcionaría porque falta algo, quizás el firewall bloquee conexiones entrantes, no sé es complejo, pueden ser muchas cosas, seguiré en ello conforme pueda y tenga tiempo, cualquier ayuda es bienvenida, pues estoy deseando probar el server.

Saludos!.
#53
Hola, buscando errores me he dado cuenta que no llegan o el servidor HTTP proxy no quiere responder los paquetes y rechaza su conexión, no entiendo:

LLegan paquetes TCP con destino puesto 80, lo que hago es redirigirlos a mi servidor local, pero este no los debe de recibir, los paquetes están mal, o no se que pasa pero no se produce conexión:

Código:
Código (cpp) [Seleccionar]

else if (content[36] == 0x00 && content[37] == 0x50)//de host hacia localserver
{//les pongo la mac del otro en ambos sentidos.
// lo manda a 127.0.0.1:10000 y pone la mac del host de src y dest y ip src del server
//le respondera como 127.0.0.1:10000 -> 202.123.123.123.34
//ip red ordenador origen hacia 127.0.0.1:10000 -> 202.20.20.12:80
UCHAR localhost[5] = "\x7f\x00\x00\x01";
memcpy(const_cast<UCHAR*>(content), content + 6, 6);
memcpy(const_cast<UCHAR*>(content + 26), content + 30, 4);//origen IP pongo la del server
memcpy(const_cast<UCHAR*>(content + 30), localhost, 4);//dst IP to localhost
const_cast<UCHAR*>(content)[36] = 0x27;//puerto destino 10000
const_cast<UCHAR*>(content)[37] = 0x10;

memcpy(const_cast<UCHAR*>(content + 24), GetIPChecksum(const_cast<UCHAR*>(content), header->caplen), 2);
memcpy(const_cast<UCHAR*>(content + 50), GetTCPChecksum(content, header->caplen), 2);//si puerto 80 no hace falta modificarlo.
pcap_sendpacket(sniffer, content, header->caplen);
printf("sended to localserver");
continue;
}
#54
Mariano tras ganar las elecciones:

[youtube=640,360]https://www.youtube.com/watch?v=f9jEOHNqFO0[/youtube]

Si no sabe ni decir una frase de niño de primaria al completo, se nota que no le han puesto allí por su gran cordura al hablar e inteligencia, efectivamente votar al mas tonto se los fue de las manos. Me quedo con el análisis de Revilla sobre las elecciones.

Y como opinión personal, no me extraña que la gente emigre de este país a Reino Unido, Francia... a países serios, porque ya está cansada de tanto circo, tanta vergüenza junta no se puede aguantar, en castilla y león votaron 204.241 personas a ciudadanos y que saquen 1 diputado, mientras que al PP lo votaron 639.764 personas y se llevaron 18, quiere decir que necesitamos 6 votantes de ciudadanos para igualar uno del PP (datos aquí). siglo 21, esto se debe no a la ley D'Hont si no a la distribución de los distritos y su baja magnitud, si todo castilla y león fuera un distrito en vez de 9, el voto hubiera sido mucho más proporcionado, y no 1 a 6 cuando debe de ser 1 a 1 de igual a igual votante.

Saludos!.

#55
Hola a todos, son muchos los temas que llevo ya acerca de esto y no ha habido respuestas todavía quizás sea que me explico algo mal así que expondré el caso de manera simple.

No es una duda de programación lo primero, es una duda sobre redirección de paquetes, de cómo trabajan los router más que nada, de la NAT, e IP fordwarding, es algo más complejo que actuar como simple router, o hacer una NAT simple.

Bueno al grano, llegan a mi ordenador paquetes de otros hosts a los que tengo que hacer IP fordward al router para darles conexión, algo sencillo cambiando simplemente la cabecera IP y las MACs origen y destino, así pues soy capaz de dar conexión a esos hosts gracias al IP fordward.

Pero ahora bien, supongamos que ahora quiero que de todo ese tráfico IP que se genera quiero pasar una parte de ello en concreto el HTTP por un servidor proxy y reenviar la respuesta al host, para ello mediante filtros redirijo todo el tráfico TCP con destino puerto 80 hacia mi servidor proxy HTTP local, pero pierdo los datos al hacer esto.

Ejemplo: llega un TCP SYN con destino puerto 80 para el host 203.123.231.23 yo lo mando a mi servidor local luego cambio la IP de destino que es 203.123.231.23 por 127.0.0.1, el servidor resuelve la consulta y la reenvia, pero la reenvia al host que tiene IP dentro de la red ejemplo 192.168.1.45, pero ese paquete será rechazado por este host al ver que el paquete proviene de una dirección IP 127.0.0.1 cuando debería ser la IP 203.123.231.23 la que le respondería, por ello puedo capturar ese paquete en la red y enviarlo de nuevo al host cambiandole la IP por 203.123.231.23, PERO hay un problema que al capturar esos paquetes todos llegan de 127.0.0.1 y no se a que IP de servidor iban asociados, ¿como puedo solucionarlo?, ¿alguna idea?, ¿o alternativa para hacer el proxy de otra manera?.

Hasta ahora no se me ocurren buenas soluciones, lo más que se me ha ocurrido es guardando los dominios de cada host y poner por defecto el ultimo que haya usado... pero daria muchos errores, ¿que se puede hacer?.

Saludos y gracias.

Si habría alguna manera de decirle a el socket "cambiame la IP de origen que has usado para el bind() a esta".. pero me da que es imposible :"D

#56
Hola os comento un problema que tengo, quiero actuar como un router, por lo tanto me llegan paquetes desde hosts con IP origen la que tienen en la red, e IP destino la de un servidor web cualquiera. Bien a estos hosts les hago IP fordwarding sin problemas (pero para el tráfico HTTP quiero reenviarlo a mi servidor proxy HTTP, que ahí es donde entra la NAT).

Mi objetivo es recoger los paquetes TCP destino puerto 80 de los hosts hacer NAT a mi servidor local proxy HTTP que analiza la request y obtiene respuesta del servidor, y luego devuelve la respuesta a los hosts para ello tienen que volver a pasar a través de la NAT.
Pero  cuando el paquete vuelve del servidor local, la IP origen es la del servidor local 127.0.0.1 , no la del servidor web que utilizó el host, y debo cambiarla por esa, pero la he perdido ¿como la puedo recuperar?

Ejemplo: Los hosts tienen IPs del rango 192.168.0.1/24, imaginemos que uno se quiere conectar a google (haciendo IP fordward a través de mi obtiene la IP del servidor de google ya ahora trata de conectarse):

Paso 1: Recibir paquetes de los hosts y filtrar los datos.
Lo que recibo:
Citar
IP origen (host): 192.168.0.100:15678 -> IP dest (google): 202.24.123.24:80

Paso 2: Enviar el paquete a el servidor local para que actúe como proxy.
Lo que envío a mi servidor local tras hacer la NAT (solo modifico estos campos y del checksum IP):
Citar
IP origen (host): 192.168.0.100:15678 ->IP dest (servidor HTTP proxy local): 127.0.0.1:80

Sorpresa acabamos de perder la IP destino, la del servidor (pero aun así puede funcionar pero tendrá que resolver de nuevo la DNS).

Paso 3:: El servidor local proxy recibe los paquetes que no llega a procesarlos porque no se produce conexión ¿porque?, le estoy enviando todos los paquetes TCP con destino puerto 80, incluye los de handshake, ¿porque no se produce entonces la conexion con el servidor local proxy?.
Bueno suponiendo que el proxy los recibe los procesaría y obtendría una respuesta correspondiente a la del HTTP request, esa respuesta sin pasar por la NAT sería:

Citar
IP origen: 127.0.0.1:80 -> IP destino: 192.168.0.100:15678

Mal, acabamos de perder la IP real del servidor web al que lanza la IP el host, luego el paquete probablemente no llegue, debemos de hacer NAT de nuevo, es decir volver al paso 1, recoger ese paquete completo en la red, cambiar la IP de origen de ese paquete por la del servidor web al que lanzó la petición el host y reenviarlo con la nueva IP modificada, pero ¿como sé cual era la IP del servidor web al que lanzó la petición el host?, la he perdido en el paso 1.

En fin, ¿cómo puedo solucionar esto?.

Muchas gracias y un saludo.

Edito: Lo mejor sería alguna manera de hacerlo mediante el OS, he probado con netsh y route sin éxito, y analizando intercepter-ng no encontré que añadiera comandos route, y no se si netsh, pero creo que tampoco, ¿lo hará como estoy proponiendo, con winpcap?.

En resumen quiero algo en plan todo el tráfico HTTP (requests) que entre en la máquina (y que no incluya la IP local) muevemelo al servidor local (a su IP y puerto), y muevelo del server a los hosts, ¿alguna idea con el OS?, me parece que no.
#57
Cita de: rks_9987 en 25 Junio 2016, 21:29 PM
Hola, alguen me puede decir cual es la diferencia entre hacer un mitm y simplemente abrir el wireshark y empezar a capturar paquetes ??
gracias

Wireshark utiliza winpcap, que utiliza un driver que permite poner cualquiera de tus adaptadores de red en modo promiscuo para detectar todos los paquetes entrantes y salientes por la misma, byte a byte. Sin embargo solo capturas los paquetes con origen y destino de tu máquina, y claro paquetes de otros hosts que acceden a tu máquina para solicitar información de la misma y responder sus peticiones.

Al hacer MITM estas actuando como proxy entre los hosts de la red y el gateway, así pues por adaptador de red que tengas en uso entran y salen (si haces fordward) paquetes de los hosts que ellos los mandan pensando que van al gateway, y usando wireshark puedes verlos al igual que los tuyos.

En definitiva, con el MITM tienes acceso a tráfico que de otros hosts que de otro modo no tendrías, actuando como proxy de todos los hosts ya puedes imaginar los destrozos que puedes llegar a ocasionar en una red.

Saludos.
#58
Jajaja al leer eso de que el país vasco esta en mínimo histórico de independentismo gracias a que el PP ha hecho algo bueno casi me sangran los ojos, yo nunca me he sentido menos español que con el gobierno del PP me siento ahora, otros 4 años más y me voy del país después de tragar y tragar tantos escándalos de los que salen impunes y ver como la justicia tarda décadas con unos que luego salen pagando finanza con lo robado mientras que con los que son de a pie les meten el mismo día a la cárcel por cualquier tontería, mucho he tragado ya, tanto que ya nada me sorprende, no vote podemos pero lo hubiese votado antes que PP o PSOE sin duda, creo que Ribera tiene inteligencia para llevar el país, una lástima que el país se quiera suicidar de nuevo, país masoquista.

Y eso de que es un golpe de estado electoral, también me hace gracia, vamos a ver, si, se saca ahora para alterar el voto de acuerdo, pero habrá que afrontarlo, es como si sale ahora que Rajoy es un asesino en serie y en vez de debatir sobre ello, estamos erre que erre con que golpe de estado golpe de estado, venga hombre.

En fin, otros 4 años de PP apretaos bien el cinturon, vendrán recortes de todo tipo, bajará el salario mínimo interprofesional, subirán la deuda pública, vaciarán la hucha de las pensiones, seguirán Urdangarín y compañia sin entrar, al igual que los Pujol, la Rita Barberá y Mario Conde entre otros muchisimos, la única decisión que van a tomar en sus juicios es  la de la preescripción de los mismos, y bueno no he acabado, más recortes en I+D, más cara la universidad, y más ayuda a los estudiantes de grado superior por encima de los universitarios.

En fin país de camareros que pone tapas a los guiris, cada vez más cerca de China que de Europa, en el debate a 7, dijeron una cosa muy importante "hay que invertir en I+D que en eso sí que podemos competir con China y no con los bajos salarios de producción", a ver si algunos se enteran de que Rajoy tiene lo mismo de patriota español que Pujol de catalán. Si ya lo dijo en un programa de TV cuando le preguntaron sobre que pasa si sube el paro cuando llega y dijo que le gustaría verse en esa situación, Rajoy como sus amigos está para hacer negocio de la política (y no me vengais con el cuento de que hay votantes del PP muy honrados, que son manzanas podridas, casos aislados..). La corrupción se ha permitido y se sigue permitiendo, las penas son de risa, y los que destapan casos de corrupción son muchas veces amenazados de muerte sin protección alguna del estado.

Pero bueno oye hay gente que los vota que cree que el país ha mejorado con ellos, y que seguro tienen estabilidad económica de otra manera serían lerdos, y quizás hasta disfruten de la situación. Si Otto von Bismarck estaría aquí se jactaría de la razón que tenía al decir lo de "España es el país más fuerte del mundo, los españoles llevan siglos intentando destruirlo y no lo han conseguido.", 120 años después y que salga el PP lo sigue corroborando.

Saludos.


#59
Que lo llamen como quieran, hacerlo en tu país tiene delito, ¿pero hacerlo en cualquier país de fuera de tus fronteras?..., de todas maneras solo harían legal algo que ya están haciendo actualmente.

Por esto es un problema que USA albergue y tenga centralizados los servidores de las empresas que más tráfico generan en internet (google, facebook, youtube...) además de el hardware (hp, mac, iphone...), seguro tienen algún firmware de esos espías como puso Xiami en China.

Allí van nuestros datos, solo tienen que llamar a la puerta de la empresa con una orden judicial para violar tu privacidad cuando quieran.

En fin, que hagan lo que quieran como siempre han hecho. Ya vimos como espiaron a los líderes europeos, hasta ellos mismos reconocían que tenían acceso a muchísimos datos que el problema estaba en filtrarlos.

Siempre hay que partir del axioma fundamental de que USA tiene una copia de tu disco duro.

Saludoss!.
#60
Ey! Buenas agradezco la respuesta,

He estado indagando con route y netsh como alternativas, y haciendo ingeniería inversa a intercepter-ng (que hace la NAT que estoy buscando).

Expongo mi problema más detalladamente para que me podáis ayudar:

Tengo hosts en la red mandandome paquetes pensando que soy su gateway, yo los hago fordward al router y tienen conexión (mediante código y con winpcap), también puedo hacerles fordward activando el registro etc.. Sin embargo quiero hacer de proxy para el tráfico HTTP es decir no hacer un simple fordward en la capa 1 y pasar a manipular todo el contenido de la capa de aplicación (un proxy de toda vida con sockets).

Yo con el código puedo detectar paquetes entrantes de los hosts de tipo TCP a puerto 80 (HTTP), esos paquetes de tipo IP apuntan a la IP destino y cuando los redirijo a mi proxy para que puedan llegar tengo que cambiar la IP destino por la de mi servidor proxy y actualizar el checksum eso sí es ineficiente puesto que tengo que esperar a que me llegue todo el paquete lo tengo que leer, manipularle el campo IP y volverlo a reenviar a la red igual para que lo reciba mi máquina.

Luego cuando mi proxy recibe el paquete lo quiere responder, para que se produzca conexión debe de haber el 3-Handshake, y aún no lo he conseguido hacer, porque hago el fordward a medias.

Cuando el proxy responde manda su paquete con destino IP del host que solicito el paquete, PERO de nuevo debo de cambiarle el campo checksum por la IP que solicito el host (y ojo aqui que IP pongo pues un host puede tener conexión con varias IPs..),y mandarlo de nuevo a la red, es decir con este método cada paquete es enviado y recibido 2 veces, el doble de tráfico para mi máquina. ¿No se puede hacer el IP fordward de otra manera?, pensaba en algo a nivel de SO, que me lea hasta la capa IP y la modificara y reenviara, no que tenga que hacerlo yo, puesto que yo tengo que trabajar con todo el paquete que ya tiene todas las capas hechas.

Mirando intercepter-ng me fijé si hacía algún route o netsh, y usando "route print" pude ver que no añadia nuevos encaminamientos, respecto al netsh se puede hacer algo parecido con:

Código (cpp) [Seleccionar]

BOOLEAN CoreUser::EnablePortFordwarding(std::string ip, std::string sourcePort, std::string destinationPort)
{//Filtrando por distintas versiones de windows.
std::string command;
command = "netsh interface portproxy add v4tov4 listenport=" +
sourcePort + " listenaddress=" + ip + " connectport=" +
destinationPort + " connectaddress=" + ip;
system(command.c_str());
return TRUE;
}


Esto por ejemplo hace que el tráfico de una IP que vaya con destino el puerto X vaya también al puerto Y de esa misma IP, útil para redirigir el tráfico al puerto del servidor proxy, sin embargo, no encuentro manera de extrapolarlo para darlo productividad en la NAT de una manera eficiente al menos. Todo parece apuntar a que intercepter-ng hace la NAT mediante código y eso se traduce a código puro y duro con winpcap.

Saludos y gracias, a ver si me podéis dar más ideas ;)


Pero el problema haciendolo con código además de que es ineficiente