miércoles, septiembre 09, 2015

Dorking & Pentesting con Tacyt: Dominios, IPs y Puertos

A día de hoy, el Big Data de nuestro servicio Tacyt creado para la investigación de seguridad en el mundo Android cuenta con 4.5 Millones de apps - más o menos -. Cada una de esas apps tiene una conjunto de enlaces, que en media pueden ser unos 10 a 15 enlaces por app. Esto nos deja un total de más de 50 Millones de enlaces solo en el código fuente de las apps Android que tenemos en nuestra plataforma. Esos enlaces, además, están mostrando de forma implícita o explícita información del máximo interés sobre los sistemas informáticos en los que se apoya para dar sus servicios, pero también puede que la de sobre los sistemas en los que apoyó para su desarrollo y sobre la red en la que se trabajó.

Figura 1: Dorking & Pentesting con Tacyt (PARTE I): Dominios IPs y Puertos

Con todo esto, el tener toda la información indexada, catalogada y accesible fácilmente, es un entorno perfecto para el dorking y el pentesting. Al igual que se puede hacking con buscadores usando Google, Bing o Shodan, es posible hacer lo mismo con esta base de datos de enlaces que, además, crece día a día y se complementa con el resto de características que guardamos de las apps. Los enlaces de los que ahora mismo estamos tirando en Tacyt son los buscadores estáticos. Por supuesto, en el momento que terminemos la integración con el sistema de búsqueda de enlaces dinámicos en el que estamos trabajando hace tiempo los resultados serán aún mejores.

Figura 2: Apps en nuestro Big Data de Tacyt actualmente

En este artículo - y en las próximas conferencias de Segurinfo en Barcelona y RootedCON Satellite en Valencia - voy a jugar con esto, para que veáis como los enlaces de las apps pueden ser utilizados para localizar servidores de empresas vulnerables a un nuevo exploit, para descubrir servidores inseguros a los que se pudiera subir una shell, credenciales de usuarios, datos de acceso a motores de bases de datos, bugs de SQL Injection o LDAP Injection en aplicaciones de backend fácilmente localizables, etcétera. Para ello, solo hay que hacer un poco de dorking y listo. Os voy a contar en 5 entregas un resumen detallado de este trabajo, así que hoy vamos con la primera.

Dominios, Direcciones IP y Puertos Well-Known

Lo primero que se puede buscar a partir de un enlace son esos tres elementos. En la URL de un enlace hay mucha información sensible que podremos utilizar, como protocolos, rutas, parámetros y valores de entrada, pero para comenzar lo más evidente son los dominios, las direcciones IP y los puertos que se están utilizando.

Una de las búsquedas más sencillas que se se pueden hacer es por dominio de un enlace. Suponed que estuviéramos haciendo una auditoría de seguridad para un Bug Bounty para una empresa cualquiera. Localizar los enlaces que hay indexados en las apps - y por lo tanto apps que están conectadas con la infraestructura que se está auditando de forma directa o indirecta - es bastante sencillo.

Figura 3: Apps con enlaces a policia.es

Por ejemplo, si miramos en qué aplicaciones aparecen enlaces a Policia.es, podemos ver que hay 7 apps que nosotros tengamos en nuestro Big Data que tienen algún enlace a esa web. Son apps normales de servicios de emergencia, pero podrían no serlo. Si hacemos lo mismo con Army.mil, vemos que aparece alguna más. Un total de 61 apps con enlaces a dominios de Army.mil.

Figura 4: 61 apps con enlaces a army.mil. 5 de esas apps están retiradas

Muchas de esas apps están en markets distintos a Google Play, e incluso algunas están retiradas, pero nosotros tenemos los enlaces que nos permiten - usando servicios como Archive.org - investigar qué había en esas URLs. Algunas de ellas, aunque la app haya desaparecido, siguen funcionando, con lo que es útil poder revisar qué había por allí. 

Figura 5: Enlaces a army.mil en una app retirada

En el caso de las direcciones IP, el asunto es más o menos similar. Si tienes las direcciones IP que está utilizando una compañía, en lugar de buscar por los dominios puedes buscar por sus direcciones IP. En muchas conexiones, sobre todo cuando son a motores de bases de datos, servicios ad-hoc en el backend o similares, los programadores de las apps configuran la dirección IP en lugar del dominio. Basta con buscar una a una las direcciones y ver qué va saliendo. En nuestro servicio de Pentesting persistente Faast, por cada nuevo dominio o por cada nueva dirección IP que localizamos, preguntamos a Tacyt por enlaces que existan en las apps. Esto nos permite descubrir aún más infraestructura que auditar.

Figura 6: App con un enlace a un servidor web en una dirección IP interna

Como os podéis imaginar, si buscamos por direcciones IP locales, podemos encontrar una cantidad inmensa de apps que están descubriendo su infraestructura de red local. Por ejemplo, podríamos buscar apps que tuvieran enlaces a 192.168.0 y que en el título apareciera la palabra Bank. La imaginación es del dorker.

Figura 7: Apps con la palabra Bank en el título y con enlaces locales 

Por último, podemos hacer lo mismo pero buscando por puertos Well-Known. Imaginad el caso del bug de Heartbleed donde con un servidor con la versión OpenSSL insegura se podría hacer un destrozo. En aquel entonces yo me dediqué a buscar los Well-Known ports de servicios SSL usando el "truco de la barra" en Google. Aquí se puede hacer lo mismo. Si queremos sacar los servidores Plesk que se encuentran apuntados por las apps, basta con buscar por el puerto asociado. En este caso el 8443.

Figura 8: Miles de apps apuntando a servidores Plesk

Como se puede ver, la app de Norton Antivirus está apuntando a un servidor Plesk que, además, está en una dirección IP local de su red. Un doble leak de información en una app de seguridad que no debería estar.

Figura 9: La app de Norton Security Antivirus apunta a un servidor Plesk interno

De igual forma se puede hacer para descubrir servidores CPanel, paneles de administración web, servidores SQL Server, Oracle, etcétera. Sorprende ver la cantidad de enlaces que los desarrolladores dejan en sus apps ya sea por reutilización de código o por simple falta de preocupación por la seguridad de la infraestructura.

Saludos Malignos!

***********************************************************************************
***********************************************************************************

2 comentarios:

Juan Carlos dijo...

Un 'Tacyt REST API' para el resto de mortales no estaría mal.

Juan Carlos dijo...
Este comentario ha sido eliminado por el autor.

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares