Estudio del uso de los TLD en organización

Con la fiebre de los TLD, actualmente ya existen alrededor de 1.530 diferentes según la lista publicada por IANA. Desde el punto de vista de un analista, esto puede suponer un problema a la hora de realizar una investigación. Quizá existan otras ventajas que hayan sido determinantes para que se haya decidido poner en marcha tantos TLD.

¿Cuál es el uso real que se le da a estos dominios? Quizá nos dé por pensar que desde nuestra organización no sale tráfico hasta ciertos TLD. Basta con hacer un par de consultas sobre los registros LOG del proxy y determinar cuáles son los diferentes TLD que se visitan y, en porcentaje, cuáles son los que más se visitan. Al lío.

En primer lugar, extraemos una lista de dominios únicos del log de navegación:

$ awk '{print $13}' proxy.log | cut -d'/' -f 3 | cut -d':' -f 1 | egrep -v "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | sort | uniq > /tmp/dominios.txt

En nuestro log la URL visitada está en el campo número 13. Vamos a quitar las direcciones IP ya que no aplica al estudio de los TLD. Por otro lado, la expresión regular que busca direcciones IP se puede mejorar para que solo busque cadenas hasta 255.255.255.255 y no hasta 999.999.999.999, que es lo que busca nuestra rexeg.

Tras finalizar el proceso, tendremos en /tmp/dominios.txt un listado de todos los dominios visitados a lo largo del día. En este caso, nos encontramos con una lista de 61.402 dominios únicos. A continuación, preparamos un pequeño script en python para llevar a cabo el análisis. Para ello se va a hacer uso de un módulo que nos facilitará la tarea: TLDextract.

Este módulo, haciendo uso de esta lista, separa una URL en tres campos: subdominio, dominio y sufijo. A partir de aquí, podemos darle todas las vueltas de tuerca que queramos. Para nuestro caso, y sin entrar en mucho detalle, sacamos un ‘top’ 20 de los TLD más visitados a lo largo del día (el log del proxy es diario, podéis hacer el estudio sobre los log rotados para sacar más datos).

$ ./TLD.py
Top 20 TLD
=========================
com 66.33%
net 14.53%
    11.96%
es 6.59%
org 2.72%
fr 1.76%
ru 1.39%
de 1.34%
it 0.86%
pl 0.63%
co.uk 0.63%
eu 0.57%
io 0.57%
be 0.46%
tv 0.42%

Si os fijáis en el listado, aparece un TLD en blanco, con 11,96% de conexiones, que nos desconcierta. Efectivamente, como habréis podido imaginar, son dominios aleatorios que utiliza Google Chrome. Por lo tanto podemos decir que aproximadamente el 12% de las peticiones han sido dominios aleatorios de este tipo http://xcoilxxpwk/. Lo obviaremos para nuestro estudio. ¡Sigamos!

Si hemos sacado un ‘top’ 20 de los TLD más utilizados, deberíamos extraer también un ‘bottom’ 20 de los TLD menos visitados, a ver qué encontramos…

$ ./TLD.py
Bottom 20 TLD
=========================
om: 0.003%
com.sv: 0.003%
plus: 0.003%
on.ca: 0.003%
info.pl: 0.003%
net.mx: 0.003%
net.co: 0.003%
org.in: 0.003%
hm: 0.003%
org.pl: 0.003%
life: 0.003%
ao: 0.003%
ac.cn: 0.003%
Ink: 0.003%
codes: 0.003%

El siguiente paso será analizar estos últimos TLD menos visitados para ver cómo de malos son. Para ello podemos utilizar un servicio ofrecido por Spamhaus que nos permite consultar estadísticas de qué TLD han sido utilizados para hacer el mal (o al menos TLD que no hayan tenido muy buenas intenciones). Para automatizarlo modificamos el script de python y así podemos lanzar consultas al recurso https://www.spamhaus.org/statistics/checktld/<tld>.

$ ./TLD.py
Bottom 20 TLD
=========================
om 0.0% bad
com.sv not found.
plus 1.1% bad
on.ca not found.
info.pl not found.
net.mx not found.
net.co not found.
org.in not found.
hm 0.0% bad
org.pl not found.
life 1.2% bad
ao 0.0% bad
ac.cn not found.
ink 0.3% bad
codes 1.3% bad
ne 0.0% bad
nz 0.1% bad

Si os fijáis, nos devuelve muchos resultados con “Not found”. Esto significa que al consultar el recurso nos devuelve un error porque no encuentra el TLD en sus estadísticas, por lo tanto, no podemos determinar cómo de malo es. Podemos buscar en los log del proxy y estudiar en profundidad el dominio.

Antes de terminar, ¿nos atrevemos a verificar todos los TLD encontrados? Pero vamos a mostrar sólo aquellos que tengan un porcentaje mayor a 70%, por ejemplo. ¡Probemos!

$ ./TLD.py
TLD over 70% badness
=========================
[!!] click 70.2% bad

Ahora podemos buscar quién ha hecho esas conexiones y realizar un análisis más exhaustivo de los dominios con TLD “.click” y ver si realmente son maliciosos o no. Tras hacer la búsqueda, encontramos dos dominios que, tras realizar una investigación, detectamos que no son maliciosos pero tampoco necesarios para el desempeño de las funciones del usuario. Por lo tanto, ¿podríamos decidir bloquear todos los dominios “.click”?

¿Qué otros TLD podríamos bloquear? Veamos. Para no tener que esperar a encontrarlo en nuestra organización, podemos ir un paso por delante y bloquearlo. ¿Exagerado? ¿Innecesario? Todo depende de vuestra organización o de donde vayáis a bloquearlos. Gracias al trabajo de varios servicios como pueden ser Spamhaus y nTLDStats, podemos extraer una pequeña lista de TLD que podríamos plantear bloquear. También podéis encontrar más referencias en el informe de BlueCoat aunque se presentó en el 2015.

Ilustración 1: TOP sacado de SPAMHAUS.ORG

 

Ilustración 2: TOP 10 sacado de nTLDStats

 

Ilustración 3: TOP 10 sacado del informe de BlueCoat

Por lo tanto, cogiendo los TLD de todas las fuentes nos sale la siguiente lista de sospechosos:

.science
.top
.loan
.stream
.date
.bid
.download
.gdn
.club
.biz
.accountant
.click
.link
.win
.zip
.review
.country
.kim
.cricket
.work
.party
.gq

Como podéis ver, en la lista está el TLD “.click” que hemos detectado en nuestra organización. ¿Podríamos llegar a bloquear todos? Habría que ver si están siendo accedidos por nuestros usuarios y con qué fin. ¡Oye, podría haber alguno legítimo! ¿No?
Por último, teniendo una lista de TLD sospechosos, podemos buscar en los log de navegación si ha habido contacto con alguno de ellos.

$ awk '{print $13}' proxy.log | cut -d'/' -f 3 | cut -d':' -f 1 | egrep -v "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | sort | uniq | grep -f /tmp/tld.txt > /tmp/sospechosos.txt

Finalizado el proceso, comprobamos los resultados. Hemos encontrado un total de 79 dominios únicos. Interesante a la vez que preocupante, ¿no?

$ wc -l /tmp/sospechosos.txt
79 /tmp/sospechosos.txt

Teniendo esta lista de 79 dominios sospechosos, repetimos el proceso de analizar e investigar cada uno de ellos y determinar así si realmente es malicioso o necesario para que el usuario desempeñe su trabajo. Con las conclusiones que extraigamos ya se estudiará si bloquear el dominio o el TLD completamente, ahorrándonos posibles desgracias futuras. También es cierto que, para tomar una decisión tan importante como bloquear un TLD completo, se debería estudiar la navegación de un periodo de tiempo más largo. Para realizar el artículo se ha utilizado el log de navegación de un sólo día como prueba de concepto y por motivos de tiempo.

Por último, hemos realizado una pequeña búsqueda de precios de los diferentes TLD y comparándolos con los dominios “.com”, “.net”, “.es” y “.org” que son los que están en el ‘top’ de TLD utilizados. Con una búsqueda rápida en Internet, encontramos los siguientes precios:

*Precio medio de las TLD más comunes (precios a febrero de 2017)

Por un lado, vemos que hay una gran diferencia entre 1and1 y el resto de registradores consultados. Por lo general, el precio es de ~10€/año (al menos, el primer año). Ahora, vamos a ver qué costaría adquirir dominios con los TLD “sospechosos”. Para ello vamos a coger al azar varios TLD de la lista, por ejemplo, “.top”, “.biz”, “.club”, “.click”, “.download”. Vamos a consultar en los mismos registradores a ver qué precios nos sacan:

* Precio medio de los TLD sospechosos (precios a febrero de 2017)

Nos llama especialmente la atención que, tal y como se indica en informe de bluecoat, el 100% de los dominios con TLD .zip son maliciosos. Sin embargo, a la hora de registrarlo, nos encontramos con que todavía no se ha abierto el registro. ¿Por qué lo han marcado como malicioso? Lanzo la pregunta al aire.
Dejando a un lado lo curioso de los TLD “.zip”, seguimos sin ver porqué les sale más a cuento registrar estos TLD a los “malos”. Vamos a consultar en nTLDStats cuáles son los registradores más utilizados…

 

Vamos a consultar qué costaría registrar con ellos dominios cuyos TLD sean los de nuestra lista de sospechosos (excepto “.zip” que todavía no está el registro abierto):

* Precio medio de TLD a través de otros registradores (precios a febrero de 2017)

Como se puede ver en la tabla anterior, adquirir dominios con estos registradores supone un ahorro, en algunos casos, de varios dólares.

Como conclusión, “los malos” tienen fácil la adquisición de TLD poco comunes, y el bloqueo de estos en una organización se debe analizar muy bien, porque puede entrar en conflicto con marcas u organizaciones que dispongan de un dominio legítimo con un TLD diferente a los habituales, y por tanto que estemos bloqueando tráfico legítimo. En cualquier caso, tras un análisis previo, podríamos asumir el bloqueo de ciertos TLD al completo. ATENCIÓN: que cada uno haga el análisis de sus logs de navegación de la organización y determine la viabilidad del bloqueo de ciertos TLD.

Y hasta aquí todo lo que quería compartir con vosotros. Espero que os haya parecido igual de interesante que a nosotros.

Comments

  1. Interesante articulo Marcos.

    Gracias