Hola, ya me ha surgido el primer problema.
http://blog.catchpoint.com/2010/09/17/anatomyhttp/El problema está que cuando la victima manda una peticion dns req, le paso una dns res con mi ip atacante, y se conectará a mi servidor, pero mi servidor desconoce a qué pagina manda la peticion, su dominio, puesto que llega ya con la consulta dns resuelta así que ya deja de usar el dominio, hasta que el servidor la responde. Entonces no puedo cargarla y devolverla, simplemente me llega un HTTP sin host ni nada.
Necesito que vengan a mi servidor antes de hacer el dns spoofing, para que a mi servidor de alguna manera le lleguen los paquetes dns y pueda obtener el dominio real, o sino pasar informacion entre 2 subprocesos de una manera muy compleja que no sé hacer, a ver que se me ocurre.
Saludos.
Edito: El servidor recibe las peticiones de este modo:
GET / HTTP/1.1
Host: 192.168.1.130
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/45.0.2454.99 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-ES,es;q=0.8
Como podemos observar en el campo de host aparece nuestra ip, el servidor HTTP desconoce la página que está buscando el cliente, por lo que no puede pedirla al router y reenviarle la respuesta al cliente. ¿alguna idea?.
Ya simplemente si conseguiría hacer eso habría que reenviar paquete al server removiendo encoding de cabeceras y mandar la respuesta por el socket del cliente.
Y sería un éxito. Aunque tendría que implementar el checksum tcp y mejorar el udp que solo funciona cuando solo tiene un campo el contenido de respuesta udp, pues a veces corresponden varias ips un dns response, lo tengo hecho para corresponder solo una los 4 últimos bytes, ya miraré como hacerlo para varios. Pero bien, poco queda y mucho a la vez XD.
Saludos.
Edito: Como ya he dicho cuando las víctimas van al servidor proxy piensan que es la ip de la página que buscan pero no lo es, entonces el servidor al aceptar conexión con ellas no sabe a dónde enviar sus peticiones pues no tiene ni la ip real ni el dominio real que busca la víctima, ¿alguna solución a esto?.