10 febrero 2012

El extraño caso del SSH y el ataque de fuerza bruta

Hace poco me pasó una anécdota curiosa que me gustaría compartir con vosotros. Intentaré narrarla de la forma mas fidedigna posible.

Suena el teléfono, es un cliente con el que tengo una de esas relaciones que van mas allá de lo profesional y 'hay confianza':

Cliente> Yago ! Me están atacando !

Yago> ¿? A ti o algún equipo tuyo ?

Cliente> Perdona, estoy un poco acelerado, he encontrado unos logs de lo mas extraños relacionados con intentos de acceso vía SSH

Yago> Si es un servidor de cara a internet, es lo más normal del mundo, deberías cambiar el puerto e instalar fail2ban

Cliente> No, no, es a un equipo con un Linux que uso para administrar máquinas que está tras un router ADSL

#Interesante

Yago> Bueno, mantén la calma, seguro que todo tiene una explicación, ¿podrías enviarme alguna traza del log?

Cliente> Claro, ya mismo

Me llega a mi correo lo siguiente:

Feb  1 22:25:34 localhost sshd[11740]: Failed password for root from 173.83.251.184 port 52597 ssh2
Feb  1 22:25:36 localhost sshd[11742]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=173.83.251.184  user=root
Feb  1 22:25:38 localhost sshd[11742]: Failed password for root from 173.83.251.184 port 53937 ssh2
Feb  1 22:25:41 localhost sshd[11744]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=173.83.251.184  user=root
Feb  1 22:25:43 localhost sshd[11744]: Failed password for root from 173.83.251.184 port 55240 ssh2

Y así, un buen número de líneas con diferentes IPs cuya procedencia geográfica variaba y era de lo más variopinta (turkia, china ...)

Claramente se trata de un ataque de fuerza bruta pero ¿Como podía estar ejecutándose?

Lo primero que me vino a la cabeza son dos hipótesis: O bien era alguien en la misma red (wifi, presumiblemente) o había un 'nat' que hacía visible el puerto.

Descarto el tema de la Wifi por las IPs, si hubiera sido por ahí serian 192.168.x.x

Vamos con el tema nat:

Yago> No tendrás mapeado el puerto 22 de tu router hacia dentro ¿no?

Cliente> No ! claro que no, ya había pensado en eso

Como dicen en Aragón: 'Aragonesico que no toca, no ve'

Yago> Bueno, ve a www.whatismyip.com y la IP que te dé me la envías que quiero hacer una prueba.

Ejecuto un nmap y nada, 0 puertos a la escucha.

El cliente me asegura que su máquina es un pc de sobremesa y por ende, 'no se ha movido', también me asegura solo se conecta vía cable y no tiene interface Wifi (eso descarta que se haya podido conectar a una red insegura de forma inadvertida ...)

Le tranquilizo y le pregunto si tiene activado el acceso vía ssh para el usuario root. Me confirma que no, no está. Le pregunto por la longitud y la complejidad de la contraseña y por lo que cuenta, parece difícil de romper. 

No obstante, le envío una serie de comandos grep para buscar si otros usuarios han sido atacados y si hubo un login positivo. No parece que haya habido compromiso en el sistema.

Dos días después vuelve a sonar el teléfono:

Cliente> Yago ! otra vez ! más intentos de acceso

Como esta persona no está excesivamente lejos decido desplazarme. Ya veré de que forma le hago entender el 'pedazo favor' que le estoy haciendo cuando toque hablar 'de otros proyectos'

Una vez in situ, reviso el router, efectivamente no tiene ningún puerto mapeado, vuelvo a leer los logs y veo que los patrones de acceso suelen ser por la noche.

Le cambio la IP a ese equipo por otra de la red interna y pongo otro PC con la IP anterior, en el que ejecuto un netcat a la escucha en el puerto 22

nc -l -p 22

Y me marcho.

A la mañana siguiente llamo y pregunto

Yago> ¿Que tal? hay alguna conexión en el netcat que dejé ayer ?

Cliente> No, está como lo dejaste, voy a ver en el otro PC

tras un rato ...

Cliente> Joder ! tengo más intentos de acceso !!

Yago> ¿Cooooooooomo? en el equipo donde cambié la IP ?

Cliente> Si ! ahí están

En este punto y ya con los esquemas totalmente por los suelos decido empezar a generar conversación intrascendente mientras intento que se me ocurra algo. Lo bueno de la informática es que siempre, SIEMPRE, las cosas tienen un motivo. No es como por ejemplo la medicina donde lo mismo un día te levantas con un misterioso dolor en la cadera y puedes pasar años escuchando 'no sabemos el motivo'

Después de haber hablado del tiempo, fútbol, política, etc ...

Yago> Se están poniendo feas las cosas con tanta SOPA/Sinde y demás ¿Eh?

Cliente> Si ! empieza a dar miedo navegar, yo estoy probando uno de esos servicios de VPN 'anonimizadores' cuando me pongo a bajar algo

¡Ding! Se me enciende la bombilla

Yago> Ehm, déjame hacer una prueba, conéctate a ese servicio de VPN

Cliente> ¿Ahora?

Yago> Si, dale

Cliente> Ok, ya está

Yago> Ve a www.whatismyip.com y me pegas la IP

Cliente> Toma xx.xx.xx.xx

telnet xx.xx.xx.xx 22

Connected to xx.xx.xx.xx.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.6

Misterio resuelto !

Resulta que esa persona, 'además de usar el equipo para administrar' también lo usaba para descargar cosas, accedía mediante la VPN y esta le daba una IP pública totalmente accesible sin las restricciones de su router ADSL

Lecciones aprendidas:

1- Desconfía de lo obvio, pese a que un escenario parezca claramente una cosa (pc de sobremesa, tras un router adsl, sin wifi) has de intentar despejar la mente y no caer en pensamientos del tipo ¡ Es imposible !, si hay un log que dice X, es X y es ahí donde hay que hacer 'foco'.

2- Fuera los remilgos. Probablemente si hubiera auditado el PC a fondo, revisado todos los logs y configuraciones, habría visto tanto las trazas de la conexión VPN, como los ficheros de configuración. En primera instancia me pareció demasiado intrusivo pedirle 'el root' y lanzarme a investigar y opté por no invadir su privacidad. Craso error

38 comments :

Maligno Alonso dijo...

Me ha encantado el artículo Yago, y el tema de usar una VPN que llega a una red no filtrada es una de las lecciones que hay que aprender. Me ha gustado eso de "aragonesito que no toca, no ve" }XD Aps, y tu viaje al mundo teenager con Turkia.

+1

Brrr dijo...

Yago Russinovich

Buen post!

Saludos!

jotacee_bcn dijo...

grande yago!

Natxo dijo...

y cuál es ese servicio vpn que te deja en pompas para toda la internet?

Jon Souto dijo...

Yo añadiria una tercera leccion:

3- Asumir que el usuario siempre te miente. Bien sea con toda la intencion de hacerlo o simplemente por mero desconocimiento.

Yago Jesus dijo...

jaja tienes razón, pero confío que se trate de spanglish, de lo contrario me lo haré mirar !

Yago Jesus dijo...

Gracias !

Yago Jesus dijo...

Gracias !

Yago Jesus dijo...

Hablamos de 'ipredator' o 'ItsHidden', servicios VPN por pptp que al conectar te dan una IP pública

Yago Jesus dijo...

Si el peligro claramente está en las omisiones

Medichi16 dijo...

Perdonad, pero no acabo de entender lo que pasa... quien estaba intentando acceder al root? la compañia de VPN por pptp... u otra persona?? Por lo demas, el articulo esta muy bien!

Greek jewel dijo...

Genial, genial! :) Las lecciones aprendidas, comprendidas. Yo soy más del '
Lo bueno de la informática es que siempre, SIEMPRE, las cosas tienen un motivo. No es como por ejemplo la medicina donde lo mismo un día te levantas con un misterioso dolor en la cadera y puedes pasar años escuchando 'no sabemos el motivo'' :) El mundo teen es más entretenido que en spanglish! 

Yago Jesus dijo...

Te explico. El cliente tiene un ADSL de telefónica y su PC, por tanto, una IP del estilo 192.168.0.190 que sale a internet vía NAT por el router. Así nadie puede acceder al puerto 22.

Pero, cuando se conecta por VPN (VPN pptp) el servidor VPN le asigna una IP pública que es con la que navega en internet, entonces si alguien se conecta a esa IP que le ha dado el servidor VPN llega al PC

Mano dijo...

Por si os interesa esta informacion de fuga de datoos:

http://pastebin.com/m6d8ySst

Un lector dijo...

Excelente historia. Ahi es cuando debes tener la famosa espada del augurio para ver mas alla de lo evidente.

@dh4rm4n dijo...

Que buen post, es encarretador entender un tema por medio de un caso real narrado. Gracias por compartir

Geminis aka Igor dijo...

estoy vago vago pero con proxpn tambien ocurre esto yago?

\GeMiNiS\

Medichi16 dijo...

Ok. Hasta aqui todo entendido. Pero siempre tiene la misma IP privada, ¿no? La que le da el router. Es la IP publica la que cambia, bien al tener activo el VPN o al no tenerlo activo. Pero sabiendo la IP publica y que el pc tenia activo el puerto 22 (que se lo abrio usted con el netcat) da igual que IP utilices par acceder al pc ¿no?

Luego otra cosa que no entiendo es cuando dice "accedía mediante la VPN y esta le daba una IP pública totalmente accesible sin las restricciones de su router ADSL". ¿Que restrricciones pone un router ADSL? Seguro que la pregunta es muy obvia, pero lo unico que se me ocurre es que fuera un router Cisco de esos con FireWall de serie...

Muchas gracias por sus respuestas Yago.

Otro lector dijo...

Brillante. Seguro que todos tenemos historias "inexplicables".
Te metes tanto adentro, sin encontrar nada, hasta que das el paso atrás y "te das de narices" con el problema.

Juan dijo...

Ostra! ¿entonces no es una buena opción contratar una VPN ?? 

Quería contratar una con SSH 6€ (creo) al mes para usar las wifi publicas y dar de baja mi adsl, que con el panorama económico actual no me llega a fin de mes. Tampoco es seguro un tunel VPN SSH? Ahora si tengo mas dudas, ¿sera mejor un usb de datos para el portatil? (de esos que venden ahora las compañias telefonicas).
Agradecería mucho tu respuesta ya que tengo serias dudas.

Saludos!

Yago Jesus dijo...

A ver, lo que tienes que comprender es que hay dos entornos, uno real, que es la oficina de esta persona, con un router ADSL de Telefónica donde su PC tiene una IP privada. En ese escenario nadie puede acceder vía SSH.

Luego, cuando usa la VPN, lo que hace es conectarse a un servidor que le da OTRA IP pública con la que navega en Internet y esa si es accesible puesto que no tiene delante router ni nada.

Si no consigo explicarme, creo que tal vez deberías buscar información sobre que es y como funciona una VPN porque creo que mas no se simplificar el concepto :(

Yago Jesus dijo...

No sabría especificar, no lo conozco

Yago Jesus dijo...

Todo depende del tipo de VPN que uses, aquellas basadas en pptp u OpenVPN, probablemente te dén una IP pública. No obstante eso no tiene porque ser malo, simplemente lo has de tener en cuenta

Medichi16 dijo...

Sí, sí entiendo como funciona un VPN, de echo, configure un con el asistente de Windows en mi trabajo. Lo que no logro entender por que con la ip publica que te da la VPN acceden directamente al pc y con la ip publica tambien de Telefonica, no acceden.

Sad dijo...

La diferencia está en que en el entorno real y estándar la IP públca la tiene el router, el cual al no tener ningún tipo de NAt no pasa conexiones hacia la red PRIVADA.

Sin embargo, el cliente VPN instalado en un PC de la red PRIVADA le da la IP PÚBLICA directamente al PC (no al router). Es como cuando usas un modem USB ADSL.

Si el usuario tuviese un firewall SW en local podría haber cortado las conexiones entrantes (ya que al parecer no las necesitaba).

Saludos.

Medichi16 dijo...

Ok, ahora si lo entiendo. Eso era lo que no entendia que la VPN le daba la IP publica directamente al PC. Gracias Yago y gracias Sac tmb.

Juan dijo...

 Hola Yago, estaba pensando en la SwissVPN pero la opción nueva:
"SSL VPN (SSTP)" o la Comodo "TrustConnect Wi-Fi Security", ¿cual es tu opinión al respecto? ¿que me aconsejas?

Saludos!

maykol carbajal dijo...

brother bravasooo gran artículo man Yago espero poder seguir leyendo tus experiencias y gracias por contestar las preguntas de los demás brothers

Jay dijo...

Yago, increíble el artículo. Me ha gustado mucho!!


En principio, los ataques entonces, no provenían de la "compañía/servicio" de VPN, ¿o sí?

Mrsequeiros dijo...

Uff Estupendo.!! Pero te recomiendo que compres una VPN que andan por internet ya que las VPN gratuitas no son casi seguras. A mi me andan de mil maravillas y puedo estar "anonimizado" todo el dia :D

Mamottaniq-406 dijo...

De la forma que lo explicas significa que un PC de la red privada NO conectado directamente a Internet puede tener una IP pública y, además, conexión a Internet. Eso es imposible.

Si el router ADSL es el que le da conexión a Internet, forzosamente los paquetes IP del PC deben ser enrutados al router para llegar al servidor VPN.

De la única forma que podría llevarse a cabo lo que comentas es si el PC, para conectarse al servidor VPN, utilizase otro dispositivo (módem, móvil, etc) para acceder a Internet y no el router ADSL.

Jose Perez dijo...

>----------------------------------------------
Te
explico. El cliente tiene un ADSL de telefónica y su PC, por tanto, una
IP del estilo 192.168.0.190 que sale a internet vía NAT por el router.
Así nadie puede acceder al puerto 22.


Pero, cuando se conecta por VPN (VPN pptp) el servidor VPN le asigna
una IP pública que es con la que navega en internet, entonces si alguien
se conecta a esa IP que le ha dado el servidor VPN llega al PC
>-----------------------------------------------

Eso es imposible. ¿Cuantas IPs públicas necesitaría un servicio VPN para poder  asignarlas a cada cliente? ¿Para qué serviría entonces la conexión por VPN?

Si la conexión a Internet sólo la tiene el router ADSL ¿cómo va a acceder el PC a Internet (en este caso, además, mediante un tunel PPTP) sin pasar por el router?

Yago Jesus dijo...

 Eso es perfectamente posible y real.

Si eres incapaz de aceptar esta realidad, abre una cuenta en un servidor VPN, sigue los pasos del post y vuelves a confirmar lo que te digo.

Saludos

Yago Jesus dijo...

 Es perfectamente posible, contrata una VPN en algún servicio, reproduce los pasos del post y vuelve para confirmar que si es posible

Jose_perez dijo...

 Vuelvo a insistir. Técnicamente eso es imposible. Ahora bien... nunca nos acordamos de IPv6. Existe un fallo de seguridad en PPTP teniendo IPv6 activado.

Muy posiblemente ese equipo debe tener IPv6 activado.

Los problemas deben ir en esa dirección.

Yago Jesus dijo...

 Con toda la educación del mundo te digo que por favor, no pongas en duda un hecho que he comprobado empíricamente.

Que tu raciocinio no te permita verlo lo puedo entender, pero no generes axiomas en base al desconocimiento.

Te digo lo mismo que antes, ve a, por decir una, https://ipredator.se abre una cuenta, desde tu PC tras un router, configura la conexión pptp. Ve a whatismyip.com y verás que tienes una IP pública.

Luego de eso, abre un puerto cualquiera con netcat y pide a alguien desde fuera que se conecte. Verás que llega sin problema.

En serio, no es una especulación, es algo que he comprobado empíricamente.

maravento dijo...

exclente

Alguien dijo...

Siento rescatar un asunto de hace dos años, pero leyendo algunos comentarios pienso que si no hubiera sido más fácil primero leer y entender qué es una VPN, que parece que algunos no lo saben, y luego ya entonces ponerse a discutirle a un experto en seguridad sobre lo que es posible o no es posible.

Y de paso aprovecho el comentario para felicitaros por el blog y daros profundamente las gracias porque estáis ayudando a muchísima gente, en la que me incluyo, a iniciarse en temas de seguridad con artículos de muy alta calidad técnica (de esos que nos gustan a los ingenieros xD) Gracias y un saludo.