Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TMarmol en 30 Junio 2014, 23:07 pm



Título: [SOLUCIONADO] Headers HttpWebRequest
Publicado por: TMarmol en 30 Junio 2014, 23:07 pm
Hace tiempo que descubrí un addon de Firefox que "enmascara" tu dirección IP, más concretamente genera una dirección aleatoria para los siguientes headers:
Código:

HTTP_X_FORWARDED_FOR :

HTTP_CLIENT_IP :

HTTP_VIA :

Hoy se me ha ocurrido implementar eso en un programa de Visual .Net, no tengo mucha esperiencia con el WebRequest, esto es lo que he intentado:
Código
  1.            MyHttpWebRequest.Headers.Add("HTTP_X_FORWARDED_FOR", "122.141.229.153")
  2.            MyHttpWebRequest.Headers.Add("HTTP_CLIENT_IP", "122.141.229.153")
  3.            MyHttpWebRequest.Headers.Add("HTTP_VIA", "122.141.229.153")                  'La IP es una aleatoria que me he inventado
  4.            MyHttpWebRequest.Headers.Set("HTTP_X_FORWARDED_FOR", "122.141.229.153")
  5.            MyHttpWebRequest.Headers.Set("HTTP_CLIENT_IP", "122.141.229.153")
  6.            MyHttpWebRequest.Headers.Set("HTTP_VIA", "122.141.229.153")
Pero no  da resultado, lo he probado con la propia pagina del addon que te devuelve estos valores para que compruebes si te funciona bien, pero en la respuesta del servidor, no les asigna ningún valor (la pagina en cuestión es esta : http://ipflood.paulds.fr/?p=demo (http://ipflood.paulds.fr/?p=demo)), si todo funcionase bien, debería devolver lo siguiente:
Código:
HTTP_X_FORWARDED_FOR :122.141.229.153

HTTP_CLIENT_IP :122.141.229.153

HTTP_VIA :122.141.229.153
pero los devuelve en blanco.
Leí en el MSDN de Microsoft que el método "Add" produce una excepción si se intenta modificar un Header protegido, pero mi programa no devuelve ninguna excepción, así que no debe de estar protegido.
¿Alguna sugerencia?
Gracias.


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: ivancea96 en 30 Junio 2014, 23:56 pm
¿Ese addon SOLO modifica esos campos? Podría ser que haga algo más, y por eso el servidor ese no te lo reconoce.


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: TMarmol en 1 Julio 2014, 00:19 am
¿Ese addon SOLO modifica esos campos? Podría ser que haga algo más, y por eso el servidor ese no te lo reconoce.

Sinceramente, no lo sé.
Estas son las paginas que hablan sobre el addon:
  • Oficial: http://ipflood.paulds.fr/ (http://ipflood.paulds.fr/)
  • Como funciona (Francés): http://www.paulds.fr/2010/06/ipfuck-alors-comme-ca-ladresse-ip-est-une-donnee-sure/ (http://www.paulds.fr/2010/06/ipfuck-alors-comme-ca-ladresse-ip-est-une-donnee-sure/) En esta habla sobre las herramientas en las que se basa el addon
  • 1ª Herramienta: http://www.paulds.fr/2009/07/changer-son-ip-pour-surfer-anonymement/ (http://www.paulds.fr/2009/07/changer-son-ip-pour-surfer-anonymement/)
  • 2ª Herramienta: http://www.paulds.fr/2010/05/le-point-sur-hadopi/ (http://www.paulds.fr/2010/05/le-point-sur-hadopi/)


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: Eleкtro en 1 Julio 2014, 00:50 am
No soy un experto en Redes, pero a mi entender "Simular el uso de un proxy" como explican en la página del addon, no creo que "simular" signifique solamente setear un par de Headers... o quizás si, no lo se, pero seguramente que ese servicio haga algo más como te han comentado...

Aquí tienes algunas posibles razones por las que los valores que obtienes están en blanco, quizás pueda servir para descartar, según esto, se supone que si no usas un proxy los valores estarán vacios:

Cita de: http://blogs.msdn.com/b/asiatech/archive/2009/08/28/how-to-obtain-ip-address-of-a-client-behind-proxy-via-web-service.aspx
In above sample code, HTTP_VIA is used to judge whether the client is using proxy server. If client uses proxy server, then the web method will try to obtain IP address behind the proxy server. In many situations, the IP addresses we get are probably the addresses of proxy server. Below is the information on HTTP proxy:

 

1.  Not Use Any Proxy Server:

REMOTE_ADDR = IP address of client
HTTP_VIA = No value or No display
HTTP_X_FORWARDED_FOR = No value or No display

2.  Use Transparent Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = Real IP address of client

3.  Use Normal Anonymous Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = IP address of proxy server

4.     Use Distorting Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = Random IP address

5.     Use High Anonymity Proxies (Elite proxies):

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = No value or No display
HTTP_X_FORWARDED_FOR = No value or No display

Saludos


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: engel lex en 1 Julio 2014, 01:41 am
por otro lado... si cambias tu ip de cliente en la cabecera no esperes respuesta, ya que esa es la dirección a la cual el servidor responderá


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: ivancea96 en 1 Julio 2014, 02:20 am
por otro lado... si cambias tu ip de cliente en la cabecera no esperes respuesta, ya que esa es la dirección a la cual el servidor responderá

El servidor responde por el socket abierto, ¿no es así?


El addon ese a lo mejor redirige el tráfico a través de un proxy de su servidor, o algo así.


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: engel lex en 1 Julio 2014, 02:24 am
no se como es el asunto... pero insisto si cambias la ip de origen, el servidor responderá a esa ip...

(http://arantxa.ii.uam.es/~rc2lab/practicas.html/prac2/paq_ip.gif)
(http://www.pillateunlinux.com/wp-content/uploads/2010/12/Pantallazo-Transmission-Control-Protocol-Wikipedia-the-free-encyclopedia-Chromium.png)


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: TMarmol en 1 Julio 2014, 10:04 am
El servidor responde por el socket abierto, ¿no es así?


El addon ese a lo mejor redirige el tráfico a través de un proxy de su servidor, o algo así.

He "investigado" un poco y la traducción de un fragmento de la web del addon dice lo siguiente:

Citar
¿Cómo funciona?
Puedes pensar que si se pudiera sobrescribir cualquier información existente sobre tu IP yo lo habría hecho(o alguien lo hubiera hecho hace tiempo)
Pero actualmente es un poco mas complicado: Cuando mandamos un petición a un servidor, le proporcionas varia información sobre tu dirección IP : Tres de ellos provienen de la capa de aplicación (Application Layer) y el ultimo viene de la capa de Transporte (Transport Layer). Este ultimo no puedo modificarlo: no obtendrías ninguna respuesta a tu petición si lo estuviera. Pero las otras tres pueden ser sobrescritas sin ninguna consecuencia para tu navegación...

Estos tres Headers fueron creados para proporcionar informacion de la IP real de una persona que nevega a través de un servidor proxy. Así que cuando activas IPFuck, las paginas webs que visites pensaran que tu IP real es un servidor Proxy y (Si la pagina web está hecha correctamente) se centrará en la IP falsa que estás mandando...

Muchas paginas webs tratan de averiguar quien está detras de un servidor proxy. Si no me crees ( no me importa), comprueba esta busqueda de google :http://www.google.com/#hl=en&source=hp&q=get+real+ip+address+php (http://www.google.com/#hl=en&source=hp&q=get+real+ip+address+php) Muchos de los snipplets que salen ahí comprobarán los HTTP Headers (los que hemos modificado) antes que la informacion de "Transport Layer" ('REMOTE_ADDR').

La traducción es cosa mía, puede que no esté bien del todo.  :silbar:
Aún que al principio se contradice un poco con el resto del texto, según eso simplemente está sobrescribiendo los Headers que mencioné en el primer post.


EDITO

Ya lo he solucionado, el problema era el nombre de los headers, el nombre correcto es
Citar
HTTP_X_FORWARDED_FOR    ---  X-Forwarded-For
HTTP_CLIENT_IP                  ---  CLIENT-IP
HTTP_VIA                            ---  VIA

Cambiando eso en mi código ya me permite modificarlo:
Código
  1. 'GetNext es una función para generar un numero aleatorio
  2. MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  3. MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  4. MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  5.  
Aquí pongo unas capturas de mi programa:
Interfaz                                                                          Boton Refresh
(http://i.gyazo.com/bef4434d33d0e15f6d7b33e039ed2d6f.png)   (http://i.gyazo.com/6eb13ba1594e62584f17ec6a01b39810.png)
Boton Renew                                                                          Boton Renew
(http://i.gyazo.com/a1ff65bd22dd13469945085f32b06bb3.png)   (http://i.gyazo.com/ed87c5239c2512c8261c54e77f800003.png)

En el HTTP_VIA solo se ven los primeros digitos por un problema al parsear la respuesta, ya lo he solucionado, pero me da pereza arreglar las capturas.
El codigo basicamente es este:
Código
  1. Public Function Web(url As String, IP As Boolean)
  2.        Dim MyUrl As String = String.Format(url)
  3.        Dim MyHttpWebRequest As HttpWebRequest = CType(HttpWebRequest.Create(MyUrl), HttpWebRequest)
  4.        MyHttpWebRequest.Credentials = CredentialCache.DefaultCredentials
  5.        'MyHttpWebRequest.Proxy = New WebProxy("86.51.26.20:8888")
  6.        MyHttpWebRequest.UserAgent = "Mozilla/4.0"
  7.        If IP = True Then  'Al pulsar el boton Renew el parametro IP es = a True mientras que el Boton Refres el parametro IP = False
  8.            MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  9.            MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  10.            MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
  11.        End If
  12.        Dim MyHttpWebResponse As HttpWebResponse = CType(MyHttpWebRequest.GetResponse(), HttpWebResponse)
  13.        Dim MyStream As Stream = MyHttpWebResponse.GetResponseStream
  14.        Dim MyStreamReader As StreamReader = New StreamReader(MyStream)
  15.        Dim MyHtml As String = MyStreamReader.ReadToEnd
  16.        'Dim MyHtmlEnLineas() As String = Split(MyHtml,vbCrLf)
  17.        'Dim MyLinea As String = MyHtmlEnLineas(linea)
  18.        'MyLinea = Mid(MyLinea, mid1, Len(MyLinea) - mid2)
  19.        Return MyHtml
  20.        MyUrl = Nothing
  21.        MyHttpWebRequest = Nothing
  22.        MyHttpWebResponse = Nothing
  23.        MyStream = Nothing
  24.        MyStreamReader = Nothing
  25.        MyHtml = Nothing
  26.    End Function

Y ya está listo para implementarlo en cualquier programa, ahora probaré si también funciona con el WebBrowser.
Gracias por la información que me habéis proporcionado


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: engel lex en 1 Julio 2014, 13:37 pm
ahh ya, lo que hace es invertir los papeles XD


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: TMarmol en 1 Julio 2014, 13:51 pm
La opción de insertar código de la web tiene algún que otro bug, si lo haces a la primera todo va bien.
(http://i.gyazo.com/9ed704b869347fcdf81a2ea82ca1301d.png)

Si modificas el mensaje 1 vez pasa esto:

(http://i.gyazo.com/be9af3f8d817980bc24b0db7ef4e43eb.png)

Cuando modificas por 3ª vez y arreglas los numeros esos pasa esto.

(http://i.gyazo.com/55eaf4102b1bbfc16ef989147540a01e.png)

No se si solo me pasa a mi, pero molesta


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: Eleкtro en 1 Julio 2014, 20:39 pm
@TMarmol

Antes de nada gracias por compartir el "truquito", parece muy interesante una vez solucionado, ¿pero de verdad es tan facil engañar al servidor así?, me gustaría conocer el grado de efectividad de eso :xD.

Sobre el plugin de las etiquetas GeShi, este no es el lugar indicado para iniciar un debate sobre el tema, pero sí, está mega-bugged!, tanto la previsualización como el código final, hay ciertos caracteres conflictivos que ya reporté hace años pero nadie me hizo ni caso para intentar trastocarlo y corregirlos:

=> Tema: Las etiquetas "Code" no funcionan bien! (http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/las_etiquetas_code_no_funcionan_bien-t347987.0.html;msg1705911#msg1705911)

PD: Puedes aportar tus experiencias en ese hilo o crear uno nuevo al respecto...

Saludos!


Título: Re: Ayuda Headers HttpWebRequest
Publicado por: TMarmol en 1 Julio 2014, 21:52 pm
@TMarmol

Antes de nada gracias por compartir el "truquito", parece muy interesante una vez solucionado, ¿pero de verdad es tan facil engañar al servidor así?, me gustaría conocer el grado de efectividad de eso :xD.

Sobre el plugin de las etiquetas GeShi, este no es el lugar indicado para iniciar un debate sobre el tema, pero sí, está mega-bugged!, tanto la previsualización como el código final, hay ciertos caracteres conflictivos que ya reporté hace años pero nadie me hizo ni caso para intentar trastocarlo y corregirlos:

=> Tema: Las etiquetas "Code" no funcionan bien! (http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/las_etiquetas_code_no_funcionan_bien-t347987.0.html;msg1705911#msg1705911)

PD: Puedes aportar tus experiencias en ese hilo o crear uno nuevo al respecto...

Saludos!

No hay de que, tu me has ayudado en prácticamente todos mis problemas así que, se podría decir que se lo debo al foro.
No sabía lo de las etiquetas GeShi, lo he puesto ahí precisamente por que he tenido que editar el post varias veces hasta con seguir que se entienda a medias.
Me sorprende que con la cantidad de usuario que hay en el foro no lo hayan arreglado ya, a mi entender solo es un plug-in, con actualizarlo bastará no?