19 noviembre 2011

A la caza del proxy abierto

Hacía pocos días que notaba que el led de la unidad ONT HG 850G, que me conecta a Internet a través de fibra óptica, parpadeaba más de lo normal.

Por las horas a las que suelo acostarme, puede darse el caso que el servidor de casa esté buscando actualizaciones, haciendo backups, etc, etc,… En otro momento de mi vida quizá diría que el Emule está echando humo y me iría a la cama contento. Al día siguiente tendría muchos capítulos de series descargadas. Sin embargo, actualmente, que cuando necesito algo, lo descargo bajo demanda, me pareció que algo no iba bien.

Cierto es también que, al disponer de una conexión de fibra óptica, la velocidad de descarga de cualquier cosa es tan rápida, que no te das cuenta que hay "algo" comiéndose la línea.

Así pues, me dispuse a investigar qué es lo que estaba pasando en la máquina y esto que os cuento es lo que encontré:
  • Mediante un "tcpdump -n -i ppp0", pude ver que casi toda la actividad de red estaba encaminada al puerto 8088. Las direcciones IP origen procedían de diferentes partes del Mundo, aunque sobre todo, desde China.
  • Mediante un "netstat -tanp|grep -i 8088" ví que se trataba del proceso Apache público.


ProxyRequests On
ServerName miserver.com 

Order deny,allow
Allow from all
ProxyPass /to_be_proxified http://IP_tomcat:Puerto_tomcat/gps
ProxyPassReverse /to_be_proxified http://IP_tomcat:Puerto_tomcat/gps
CustomLog logs/micustomlog combined

Según lo ví… dije WTF!!! casi 4 años trabajando con proxies inversos, y voy y configuro el que es para mi propio uso sin cuidado alguno.

¿Qué estaba sucediendo?


  • Apache está escuchando en la IP Pública  en el puerto 8088 y, la intención es reenviar ciertas peticiones (las que lleguen a /to_be_proxified), a otro servidor web, actuando como un proxy.
  • Sin embargo, la configuración está muy mal hecha… Por culpa de las prisas fundamentalmente, tomé como referencia un bloque Virtualhost de otro servidor web interno que sí que utilizo como proxy saliente.
  • Esta configuración, y sobre todo la línea "ProxyRequests On" lo que permite es que, cualquier máquina que utilice como proxy HTTP la IP pública y el puerto 8088, podrá utilizar mi conexión como "proxy anonimizador".
  • Este Virtualhost además tiene definido que almacene logs de las peticiones en el fichero logs/micustomlog. Mirando dicho fichero (que por cierto ya iba en dos días por los 4 GB), veía peticiones de lo más variopintas.
  • Si apagaba el servicio Apache, el ancho de banda dejaba de consumirse en los términos anteriores. Estaba claro, este era el problema.
¿Y desde cuándo llevaré yo siendo el objeto de la navegación de vaya usted a saber quién?

Analizando los logs de "micustomlog" ví que afortunadamente esto sólo estaba pasando desde hace un par de días. Fue sencillo puesto que las entradas en dicho fichero son siempre del mismo tipo:

"GET /to_be_proxified/Data?imei=123456789012345&rmc=$GPRMC,blah,V,bleh,N,bloh,W,0.00,xyz,12345,,*00,123.4,AUTO HTTP/1.1" 200 2 "-" "-"

En el momento en que empieza a haber cosas que se salgan de ese patrón, es que alguien ha hecho hit.
Así pues, llega un punto de log se ve lo siguiente:

222.215.230.175 - - [09/Nov/2011:06:36:06 +0100] "GET http://www.graduateszone.com/proxyheader.php HTTP/1.0" 200 5 58 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
222.208.183.218 - - [09/Nov/2011:06:36:32 +0100] "GET http://proxyjudge2.proxyfire.net/fastenv HTTP/1.1" 200 401 " -" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

Después, 5 minutos de tranquilidad. A partir de ahí una fiesta de logs con peticiones desde múltiples direcciones IP con destinos de lo más variopintos.

Siguiendo con el análisis, como se puede ver en el extracto del fichero, la segunda entrada del log es http://proxyjudge2.proxyfire.net/fastenv.

Proxyfire, es una herramienta que se define como Cazador de Proxies.

He descargado la herramienta y examinado un poco el contenido. Os aseguro que no tiene desperdicio. Páginas con proxies abiertos, rangos de direcciones IP a escanear, un fichero especialmente interesante llamado "avoid_ip_ranges.txt" que, como podéis imaginar, es un bonito listado de IPs de organizaciones gubernamentales como la NASA, Agencias de Defensa, servidores controlados por el FBI… vamos un sueño recopilado en un único fichero! La primera línea de dicho archivo ya dice explícitamente: "IP Ranges you should not scan".

Durante su ejecución, aparte de permitirte navegar por sitios de dudosa catadura y echar la culpa a otro, Proxyfire dedica una parte de su tiempo a buscar diferentes máquinas mal configuradas por Internet, con proxies abiertos al Mundo. Cuando encuentra una, "llama a casa" y la añade a una lista global, que es descargada periódicamente los usuarios.

Disponen de una versión libre (con sus limitaciones) y una "Profesional". Dios me libre de saber qué tipo de "profesional" necesita pagar por esta herramienta.

En fin, que una vez solucionado el problema de configuración, aún de vez en cuando veo en el log diferentes intentos de peticiones a otros lugares.


Mis dudas y conclusiones
  • Aunque los usuarios de este tipo de herramienta, efectivamente anonimizan la IP de sus accesos, al no ser precisamente yo un "proxy anónimo", sino que tengo loggeados los 2 días que tuve las "piernas abiertas", podría darse el caso que si quisiese registrar de una forma más detallada las peticiones que pasan a través de mí, lograría ser un honeypot interesante.
  • He leído diversas fuentes que ponen en tela de juicio la seguridad y anonimato que ofrece la conocida red TOR. Sin embargo, en este caso, tu máquina no forma parte de ninguna red ni obtiene un certificado TLS. Con esta herramienta, tú utilizas directamente un proxy abierto de los de la lista, que se supone que no guarda logs, para visitar todo el contenido que desees, haciendo culpable a otro de tus fechorías.
  • Señor Juez: si mi dirección IP hubiese roto algo en esos días, mientras servía de pasarela a un montón de chinos que intentan bypassear el Gran Cortafuegos Chino, según las direcciones IP que he extraido de los logs ¿de quién es la culpa?
  • Nunca, nunca, nunca publiquéis, con prisas o haciendo muchas cosas a la vez, un servicio a Internet. Ojo con los Copy-Paste, aunque sean de algo que habéis hecho previamente. En mi caso, por reutilizar la configuración de un servicio interno sin demasiado cuidado, abrí una puerta a Internet para que los chinos naveguen sin censura, desde mi IP, utilizando Proxyfire.

    12 comments :

    templix dijo...

    Bueno, tampoco es tan grave... yo les facilito las cosas con vidalia y el puerto 9001.... es para ganarme el cielo...

    Unknown dijo...

    4GB de losg? Es que no los rotas? Seguro será que estoy acostumbrado a trabajar a otra escala :'(
    Piensa en + y verás que algún chino agradecido habrá grafiteado tu IP el la gran muralla.

    Busindre dijo...

    Eso de que "se supone que no guarda logs",.. no debería inspirar mucha confianza, la trena está llena de gente que en su momento supuso erroneamente algo.

    Lorenzo_Martinez dijo...

    Yo no presupongo nada. Simplemente analizo como funciona la herramienta Proxyfire, y si por azar, te asigna una petición a través de una máquina con un proxy abierto que no esté guardando logs,... será más difícil de demostrar la autoría de un ataque :)

    Angel Alvarez Nuñez dijo...

    Muy divertido Lorenzo, esta buenisimo como vas describiendo las situacion, como leer una novela.....un saludo ;D

    Alberto Ortega dijo...

    Sería interesante ver a qué páginas navegaban los contentos "clientes".

    pedro sanchez dijo...

    Lorenzo, muy buen post. Como siempre!!
    Como bien dices un proxy abierto, es una buena forma de disponer un honeypot, aunque hay que tener cuidado que hacen con tu proxy. Recuerdo un caso en que con un proxy abierto recopilamos suficiente información para detener un inminente ataque de denegación de servicio a una operadora.

    Telefonica dijo...

     No me digas, desconectasteis el router ¿no?

    Newlog dijo...

    Buenísimo!

    Angelo dijo...

    Muy buen post! se aprende mucho gracias a la pagina.

    Lorenzo_Martinez dijo...

    Gracias Pedro!
    De todas maneras me dí cuenta "rápido" y estuve en modo solidario con los chinos durante un par de días... Aparte de navegación por lugares censurados por el gobierno chino, no había mucho más

    Marcos Vives dijo...

    Así que todas esas peticiones raras en mi servidor (GET http://xxx/ HTTP/1.1) son de escáners... Interesante :D