jueves, 18 de diciembre de 2014

Como capturar tráfico en dispositivos iOS

Buscando información de como instalar aplicaciones en iOS, e indagando un poco sobre el funcionamiento del Jailbreak y los posibles fallos de seguridad del propio sistema de apple para dispositivos, encontré la manera de poder capturar el tráfico en sistemas iOS.
¿Qué es lo que se consigue capturando el tráfico en un iPhone/iPad? Ver todos los los paquetes de las conexiones que se realizan sin necesidad de tener que emular el sistema Operativo como tal desde un entorno de desarrollo como Xcode.
Por lo general cuando queremos hacer pruebas de seguridad en dispositivos móviles lo que se suele hacer es, o bien emular el propio iOS a partir del Xcode, o bien cambiar el User Agent del navegador o de la herramienta de turno.
De la manera que voy a explicar, lo que se va hacer es capturar todo el tráfico real del dispositivo físico. Con todo lo que conlleva eso.

Para poder capturar el tráfico de cualquier dispositivo iOS necesitamos los siguientes requisitos:
  • Tener instalado xcode
  • Tener instalado las Command Line Tools
Para instalar xcode basta con descargarlo de la propia AppStore (es gratis).
Y en el caso de la instalación de las Command Line Tools necesitamos ejecutar el siguiente comando en el terminal xcode-select --install.
En versiones anteriores las Command Line Tools se podían descargar desde la propia página de Developers de apple. Actualmente para instalarlas hay que ejecutar ese comando tras haber instalado previamente xcode. El propio asistente de OS X descargará las CLT de los servidores de Apple y lo instalará. 

Eso sí, para que todo funcione correctamente debemos aceptar la licencia de políticas de Apple, basta con abrir una sola vez xcode para que nos muestre dicha licencia, aceptamos, y listo.

Una vez hecho todo esto tendremos alguna que otra herramienta pensada para desarrolladores que nos puede venir bien.

En concreto nosotros utilizaremos la herramienta rvictl instalada con CLT, con la que podremos crear un interafece virtual.

Antes de comenzar a explicar parámetros y comandos, voy a comentar cual será todo el proceso a realizar para que se entienda perfectamente lo que estamos haciendo.

Lo que haremos para poder capturar el tráfico será conectar el dispositivo a nuestro Mac mediante USB, posteriormente crearemos una interface virtual, y através de ésta esnifaremos el trafico que pase por ella. Que será el propio de las conexiones que realiza el iOS.

Para poder crear una interface virtual de nuestro dispositivos debemos identificar su UDID. esto lo podmeos obtener desde el propio iTunes

Img 1: UDID del dispositivo. A través de iTunes

Una vez que lo tenemos, utilizamos rvictl (Remote Virtual Interface Tools), para crear una interface virtual con el siguiente comando rvictl -s <UDID>.
Esto creará una nueva interface del tipo rvix

Img 2: Interface nueva creada con rvictl

rcictl nos mostrará un mensaje indicando que la interface se creó correctamente. Nosotros podemos comprobarlo lanzando un ifconfig donde se mostrarán todas las interface instaladas en nuestro sistema OS X.

Img 3: Salida del ifconfig. Mostrando la nueva interface rvi0

Ahora que ya tenemos la interface creada, podemos imaginarnos que si cogemos cualquier programa para esnifar tráfico, podremos ver los paquetes que circulan por dicha interface.

Un claro ejemplo de esto puede ser utilizar TCPDUMP que ya viene instalado por defecto en OS X o utilizar wireshark. Ambas han de ejectarse con permisos root.

Img 4: Captura de tráfico del iPhone con Tcpdump

Bien, sabiendo esto, podemos probar a ver qe tipos de conexiones hace iOS. Por ejemplo, podemos probar a ver que tipo de conexiones realiza cuando se realiza una conexión OTA. Otro ejemplo es ver a qué servidores se conecta nuestro dispositivo cuando se abren aplicaciones del tipo Navegación GPS.
No es lo mismo emularlo, que verlo en real.

La información principal la saqué del blog del desarrollador @kharrison. Él es el encargado de descubrir esta fabulosa manera de capturar el tráfico.

martes, 16 de diciembre de 2014

La Confederación Hidrográfica del Segura lista para ser hackeada.

Bien es sabido por todos que una de las partes más importantes del proceso de un ataque consiste en la recopilación de información, la cual en ocasiones puede suponer hasta un 80% del tiempo de la auditoría o ataque. Práticamente sin información sobre el objetivo no se podría realizar dicho ataque. A día de hoy es más común encontrar artículos que hablan sobre la concienciación de la seguridad informática, y sobre todo de lo importante que es no exponer demasiados datos en nuestro "desarrollo" o sitio web.
Como caso práctico voy a mostrar la cantidad de información que ha decidido mostrar de manera abierta la Confederación Hidrográfica del Segura (CHS) en su página web oficial.

Img 1: Página web de la Confederación Hidrográfica del Segura


Antes de comenzar con la recopilación de información hemos de recordar que, cito textualmente de la web:

"La Confederación Hidrográfica del Segura, es un organismo autónomo de la Administración General del Estado, adscrito, a efectos administrativos, al Ministerio de Agricultura, Alimentación y Medio Ambiente."

Esto quiere decir que es el organismo de gestión, regulador y mantenedor de las aguas, riegos y acciones de la cuenca del Segura y de sus afluentes.

Algunas de sus funciones son:
  • La elaboración del plan hidrológico de cuenca, así como su seguimiento y revisión.
  • La administración y control del dominio público hidráulico.
  • La administración y control de los aprovechamientos de interés general o que afecten a más de una Comunidad Autónoma.
  • El proyecto, la construcción y explotación de las obras realizadas con cargo a los fondos propios del Organismo, y las que les sean encomendadas por el Estado.
  • Las que se deriven de los convenios con Comunidades Autónomas, Corporaciones Locales y otras Entidades públicas o privadas, o de los suscritos con los particulares.
Supongo que cuando se creó la web de la CHS la principal intención de ésta sería tener una gran cantidad de información de interés para los usuarios externos o para usuarios de distintos departamentos técnicos. Sin embargo no tuvieron en cuenta que exponer demasiada información podría ser perjudicial para su entorno/infraestructura.

Indagando un poco por los contenidos de la página vemos que existe un apartado llamado SAIH, Sistema Automático de Información Hidrológica. En el cual se recoge toda la información en cuanto a aspetos técnicos de toda la parte hidrológica.
Dentro de toda esta información podemos encontrar un cursioso apartando con el nombre de: SAIH-Segura-Infraestructura> Subsistema informático.

Aquí es donde empezamos a ver información de interés que no tiene desperdicio alguno

Img 2: Información expuesta de la infraestructura y sus sistemas SCADA
Si nos paramos detenidamente a leer su contenido, nos muestra el sistema SCADA con el que está montado, el lenguaje de programación con el que está desarrolado, el motor de bases de datos que utiliza, el entorno gráfico, el software, y hasta un bonito esquema de la infraestructura a nivel informático

Img 3: esqueda de SCADA

Si todo esta información la ordenamos nos quedaría lo siguiente:

Sistema de Adquisición, Supervisión y Control de Datos (SCADA), del SAIH Segura

  • Lenguaje de programación: Fortran 
  • Sistema operativo: Open VMS
  • Base de Datos: RDB de Digital (ahora Oracle)
  • Entorno gráfico: GKS (Graphics Kernel System) 
  • Formato de pantallas: Dec Forms. Este Software comenzó a funcionar bajo un MicroVax 6000-510 de Digital, posteriormente en un Alpha Server 1200 de Digital y actualmente un Alpha Server DS25
  • Servidor actual del SAIH: conectado a una red de Área Local Ethernet conmutada a un Gigabit, de estructura en árbol que recorre longitudinal y transversalmente las cinco plantas del edificio de la Confederación Hidrográfica del Segura
  • Los Usuarios con ordenadores personales en entorno Windows: acceden al sistema SAIH a través de la red conectándose al servidor SAIH con un software de emulación de terminal – X, denominado Excursión
  • Otros usuarios más especializados: disponen de estaciones de trabajo VaxStation 4000-VLC que se conectan al servidor SAIH vía Decnet.
En resumen nos acaban de dar bastante información como para que un atacante se plantee realizar una búsqueda de vulnerabilidades en sus sistemas para controlar el sistema de SCADA. Del cual ya tenemos hasta un esquema de la infraestructura como ya he comentado antes.

No contentos con exponer información específica de sus sistemas y su entorno, se han dejado algunas otras fugas de información por culpa de un mal desarrollo de la aplicación web.

Concretmente el buscador de la página realiza algunas busquedas demasiado "avanzadas". Yo comparo el buscador de la CHS con el de Google, puesto que "indexa" todas sus páginas, incluidas las que nos son públicas.

Cuando realizamos una búsqueda de la palabra "sql" el resultado es ... el contedido del código fuente de aquellos archivos que contienen la palabra sql, pudiendo ver las conexiones a base de datos que se realizan, o el nombre de las propias bases de datos o tablas.

Img 4: Resultados de consultas SQL en el buscador

Sabiendo todo esto no es de extrañar que el día menos pensado aparezca la web o el servidor hackeados. Y eso sería lo de menos, seguramente a alguien le interese mucho más controlar sus sistemas SCADA para "jugar".

lunes, 15 de diciembre de 2014

SEOSpyder: Un spyder de entorno gráfico para OS X

Desde hace unos años hasta la fecha los productos de Apple se están comercializando y expandiendo más que nunca. Eso hace que los desarrolladores inviertan su tiempo en crear aplicaciones en casi todos los campos. Cada vez es más común encontrarse con aplicaciones de seguridad que corren de manera nativa en OS X.
Esta vez vamos a hablar de SEOSpyder, un spyder programado para funcionar directamente en plataformas OS X. Pero que no os confunda ver la palabra SEO en el nombre del programa, se trata de un spyder en toda la regla independienteme del uso que nosotros queramos darle.

Como cualquier otro spyder su facilidad de uso es bastante sencilla, básicamente se introduce la URL que queremos analizar y con eso nos bastaría para empezar con el spyder.

Img 1: SEOSpyder, menú principal


Aunque como podemos ver en la imagen anterior el menú principal para empezar a escanear una URL nos permite parametrizar algunas opciones como el tipo de archivo que queremos obviar, el User Agent, o el número de hilos.

Img 2: Configuración del User Agent

Lo cierto es que seospyder funciona de manera rápida y en sólo unos pocos segundos podemos tener un gran número de URLs de la web que queremos analizar.
Para mostrar una prueba de concepto he pasado el spyder a la web del Instituto Nacional de Estadística (www.ine.es)
El resultado de este análisis muestra, como es evidente, todas las URLs de la web permitiendo hacer un filtro entre los distintos tipos de archivos:

  • HTML
  • Images
  • CSS
  • Javascript
  • XML

Img 3: Resultados obtenidos


Además de estas características, en cada uno de los encales encontrados se muestra información que puede ser valiosa para realizar un ataque. Información del tipo: metadatos, tipo de servidor y versión, código de respuesta, etc.

Img 4: Metadatos de la web



SEOSpyder se puede descargar directamente desde la AppStore de manera gratuita, aunque también tiene su versión PRO de pago

viernes, 12 de diciembre de 2014

Knock Subdomain Scan v.2.0

Posiblemente cuando hablamos de hacer una enumaración de subdominios siempre se nos venga en mente dnsenum o dnsmap, ya que además de ser las más "conocidas", también son dos de las que vienen instaladas por defecto en Kali Linux. Además de éstas dos, también es posible que pensemos en Maltego, sin embargo, no voy a hablar de ninguna de estas tres herramientas.Vengo hablaros de una alternativa bastante óptima, útil y ligera. Se trata de Knock Subdomain Scan v.2.0. O más conocido como Know.py. Es un pequeño script en python bastante sencillito para realizar búsqueda de subdominios de un dominio.

Img 1: Knock Subdomain Scan v.2.0

Su manera de trabajar es mediante diccionario.Por defecto ya trae un diccionario de palabras, wordlist.txt, el cual es utilizado al lanzar lanza know.py sin ningún parámetro para la búsqueda de subdominios.

Img 2: Fragmento del diccionario.


Personalmente suelo utilizar mucho know.py para buscar subdominios en páginas como eBay donde ofrecen recompensas (bug bountry) por encontrar determinados fallos de seguridad. Por ejemplo, en el caso de ebay, tienen un programa de bug bountry que abarca a bastantes dominios de la empresa. Como el dominio principal posiblemnte sea el más securizado de todos, y en el que menos fallos pueda encontrar, lo que hago es lanzar know.py con el fin de enumerar o listar los subdominios que cuelgan de ebay.com

Img 3: Subdominios de ebay.com
Como se puede observar el número de subdominios enconrados es alto. Por lo que el diccionario que tiene por defecto know.py se podría decir que es efectivo. Aun así, si quisieramos utilizar nuestro propio diccionario podríamos hacerlo con la opción --wordlist.

Img 4: Opción --wordlist
Por otra parte esta herramienta tiene también otras opciones útiles como por ejemplo la de chequear si existe la posibilidad de hacer una transferencia de Zona.

Img 5: transferencia de zona
Desde luego esta es una alternativa más a las herramientas que ya he comentado. Desde mi punto de vista no es mejor, ni peor, simplemente una más, que quizás sea algo más ligera que el resto. Y que viene bien cuando se quiere ser rápido. Maltego por el contrario es bastante pesado sólo para realizar una resolución de DNS. U otro caso es nmap, una herramienta muy potente que quizás tenga demasiadas opciones como para realizar una simple búsqueda de subdominios.