lunes, 28 de marzo de 2016

Cómo usar Metasploit en Armitage desde 0 a modo colaborativo

Hoy vamos a explicar el potencial de Armitage, una interfaz gráfica sobre el conocido framework  de explotación Metasploit, la cual nos va a ayudar en nuestras auditorías, llegando al punto de poder colaborar al mismo tiempo con varios compañeros en nuestro Pentesting. Antes de nada comentar que vamos a usar una máquina atacante con una distribución Kali Linux 2.0 y otra máquina vulnerable Windows como víctima.

Configuración Inicial
Antes de nada vamos a configurar la máquina del atacante. Dado que Armitage trabaja sobre Metasploit y este a su vez trabaja con una base de datos Postgresql, lo primero que debemos hacer es levantar el servicio de la base de datos.



Ahora arrancamos Armitage, donde lo primero que nos pedirá es conectarse al servidor de Metasploit RPC, en caso de que no esté levantado nos preguntará si lo queremos levantar. Acto seguido pedirá los datos de conexión, donde introducimos los datos por defecto que podemos ver en la siguiente imagen.
Configuración por defecto
Primeros pasos
Una vez tenemos Armitage funcionando lo primero que se haría ahora sería escanear la red. Armitage incorpora una función para poder escanearla con Nmap. Para ello nos vamos a la pestaña Hosts Nmap Scan y aquí elegiríamos el tipo de escaneo, en nuestro caso Intense Scan.


 Introducimos la dirección IP de la red y el CIDR (el nº de unos de la máscara).


Una vez finalice el escaneo podemos apreciar como salen los hosts de nuestra red.


Encontrado vulnerabilidades
Una vez tenemos el esquema de la red y los equipos que podemos encontrar, nos iremos uno por uno a escanear los posibles fallos de seguridad. Para ello le damos clic derecho sobre nuestro objetivo y seleccionamos Scan.


Una vez hecho esto, tendríamos que irnos a la pestaña Attacks Find attacks.


Con esa funcionalidad conseguimos que se busquen los diferentes exploits que pueden afectar a los diferentes vectores de ataques encontrados en el escaneo. Vemos en la siguiente imagen como se van consultando al servicio de Metasploit.

Una vez terminado nos vamos a la máquina víctima y hacemos clic derecho para ver la opción Attack, donde encontramos las posibles exploits que pueden afectarle a nuestro objetivo.


En nuestro caso es una máquina XP con una vulnerabilidad muy conocida en el puerto 445 (MS08-067) que aunque parezca sorprendente sigue existiendo en muchas máquinas a día de hoy. Aquí os dejo referencias sobre la misma:

Atacando a la víctima
Ahora que ya tenemos varias ataques posibles podemos elegir el que queramos. Nosotros seleccionaremos el exploit a lanzar en Attack → smb ms08_067_netapi. Una vez hecho esto debemos configurar las opciones del exploit como haríamos en la consola de Metasploit. 


¿Cómo sabemos que nuestro ataque ha funcionado? Podemos ver en la consola si las diferentes fases del exploit se han ejecutando correctamente y si hemos conseguido alguna sesión de meterpreter, shell... Aquellos equipos que sean comprometidos saldrán marcados como en la imagen.


Explotando el objetivo
Ahora ya tendríamos el control del equipo víctima y pasaríamos a la fase de explotación. Un consejo es crear varias sesiones de meterpreter sobre cada víctima previamente a la explotación por si alguna falla. En cuanto a la explotación en si sólo tendríamos que irnos a la sesión que queremos y elegir qué hacer. En la siguiente imagen vemos como podemos ejecutar un keylogger para ver que escribe la víctima Meterpreter1 → Explore  Log keystrokes.


Tenemos gran cantidad de posibilidades como explorar los archivos, tomar capturas de pantalla de lo que está viendo la víctima en cada momento o incluso obtener las contraseñas que hay almacenas en la RAM.

Modo colaborativo
Una funcionalidad muy interesante de Armitage es el modo colaborativo o lo que se conoce como multiplayer. Básicamente nos permite que varios usuarios compartan la información del pentest a través de la interfaz Armitage, para ello todos se conectan a la misma bbdd compartida en tiempo real, donde se almacenan los diferentes vulnerabilidades encontradas. Esto es muy útil en auditorías internas grandes ya que hace que sea mucho más fácil la coordinación entre el grupo de pentesters.

Además de ver que es lo que hace cada uno, podemos comunicarnos con los diferentes usuarios, así como ver los escaneos y máquinas vulneradas. 


¿Cómo usamos el modo multiplayer?
Básicamente en el modo multiplayer tenemos un Armitage en modo servidor y el resto en modo cliente (arquitectura Cliente-Servidor típica). Lo primero que tendremos que hacer para levantar el servidor es irnos a la carpeta de Armitage, que en Kali Linux está en /usr/share/armitage/ :


Y ahora tenemos que iniciar el archivo teamserver pasándole los parámetros de nuestra IP y la contraseña que queremos ponerle. En nuestro caso la IP es 192.168.0.107 y la contraseña wwh. En la siguiente imagen vemos el resultado de la ejecución así como los parámetros que necesitarán el resto de compañeros para conectarse al servidor.


Ahora ejecutamos Armitage desde los diferentes clientes, tanto desde nuestra máquina como desde las del resto de compañero de equipo. Se puede apreciar en la imagen anterior la IP de la máquina donde está el servicio, el puerto, usuario, contraseña y el Fingerprint del servidor. Una vez ejecutado nos pedirá los parámetros de configuración del servidor de los que hablábamos.


Si las credenciales son válidas nos saldrá lo siguiente:


El Fingerprint del servidor del equipo debe ser el mismo, sino estaríamos conectando a uno diferente. Nos pedirá acto seguido nuestro nick para poder hablar con el resto de compañeros:


En la siguiente imagen vemos en el Log de Eventos de Armitage los diferentes usuarios conectados y lo que están haciendo en cada momento. En la imagen vemos como un usuario ha lanzado un escaneo y todos los usuarios verán los resultados. Los avances que lleven a cabo todo el equipo serán compartidos por todos.


Bueno pues esto ha sido todo, espero que os haya gustado la herramienta. Para el que no me conozca me llamo Rafa Sojo, soy estudiante de "Sistemas Microinformáticos y Redes" y me encanta la seguridad. Os dejo mi twitter por si queréis contactar conmigo.

Un saludo.

viernes, 4 de marzo de 2016

Apache + ModSecurity instalación y configuración


Hoy le toca el turno a ModSecurity.



ModSecurity es un módulo para servidores HTTP (Apache, NGINX y Microsoft IIS) cuyo propósito es reforzar la seguridad de las aplicaciones Web. Es efectivamente un sistema de prevención y detección de intrusos para servidores Web, técnicamente hablando es un Firewall a nivel de Aplicación WAF.

Es de multiplataforma y de código abierto, y lo que nos permite es implementar protecciones avanzadas. Esto significa que es posible filtrar tráfico HTTP, directamente en el servidor Web, según el contenido de las peticiones de los clientes, lo cual permite detectar y bloquear ataques de tipo XSS (Cross Site Scripting), SQLi (SQL injection), session hijacking, etc.

Las características principales de ModSecurity son su capacidad de log y filtrado. El log de auditoría permite almacenar el detalle de cada petición en un archivo de log, incluyendo los payloads de los POST HTTP.

En el post anterior, indicaba cómo podemos configurar un Proxy Inverso con Apache si bien es cierto que hablando con Kino @kinomakino sobre la mejor forma de implementar un WAF, me recomendaba montar el proxy inverso con nginx tal y cómo el lo explica en su blog (http://kinomakino.blogspot.com.es - Ya podrías comprar el dominio Kino :D ) , que tiene bastantes entradas dedicadas a este tema y, todo hay que decirlo, del que estoy aprendiendo a manejarlo y configurar bien las reglas, así que gracias Kino :)

Dicho esto, al lío:

Lo primero que tenemos que hacer es instalar modsecurity, como recordatorio indico que estoy sobre un sistema Debian y la forma de instalarlo en otras distribuciones puede variar, en mi caso:

#apt-get install libapache2-modsecurity

Para verificar que realmente se ha instalado:
#apachectl -M | grep --color security

Una vez ejecutado el comando anterior, nos tiene que devolver algo como:
...security2_module(shared)

Nos indicará que el módulo se ha instalado correctamente, antes de "recargar" la configuración de apache, vamos a hacer un par de cositas más.

En la propia web de modsecurity  existen distintas reglas, algunas gratuitas y otras de pago, yo me he decantado por las reglas OWASP que están dentro de la misma web y en un proyecto de GitHub, la url del mismo https://github.com/SpiderLabs/owasp-modsecurity-crs

Ahora toca descargar dichas reglas, así que lo primero que voy a hacer es crearme un directorio para las reglas dentro de /etc/apache2 llamado crs y es ahí donde voy a descargar mis reglas owasp:
# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
# tar xzf master
# mv SpiderLabs-owasp-modsecurity-crs-ebe8790 owasp-modsecurity-crs

El siguiente paso es hacer una copia del fichero de configuración:
# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf

Ahora hay que decirle a apache que use el módulo de mod_security. Vuelvo a hacer hincapié en que estoy sobre un sistema debían y que la configuración difiere de algún que otro sistema, en este caso para decirle a apache que use el módulo hay que modificar el fichero ports.conf ubicado dentro del directorio /etc/apache2 y hemos de añadirle las siguiente líneas:

<IfModule security2_module>
    Include /etc/apache2/crs/owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
    Include /etc/apache2/crs/owasp-modsecurity-crs/base_rules/*.conf
</IfModule>

Bien, ya tenemos la instalación del módulo casi lista, ahora nos queda recargar el servicio apache. Así que:

# service apache2 reload

Para comprobar que todo ha ido bien, listaremos el directorio log de apache:

# ls /var/log/apache2

Y veremos que existe un nuevo fichero llamado modsec_audit.log

Hasta ahora hemos instalado y puesto en marcha modsecurity sobre apache y le hemos cargado las reglas de OWASP. Ahora le toca el turno de configuración al propio modsecurity.
Por defecto modsecurity viene configurado en modo DetectionOnly esto que quiere decir, pues que sólo va a ir recogiendo las peticiones sin realizar ningún bloqueo, esta es la opción recomendada para ir viendo cómo funcionan las reglas antes de pasarlo a producción.

Para ver las distintas opciones que nos permite la configuración de modsecurity, editaremos su fichero de configuración que está alojado en /etc/modsecurity y se llama modsecurity.conf

Al editar el fichero veremos una serie de parámetros, los cuales voy a intentar explicar:
  • SecureRuleEngine DetectionOnly (esta la comenté anteriormente, así que cuando tengamos todo preparado la cambiamos a On)
  • SecuResponseBodyAccess esta directiva es usada para almacenar de forma temporal (yo entiendo que es a modo de cache), lo cual habilita la protección de fuga de datos y demás, lo malo es que el tamaño del registro aumenta. Sus modos de trabajo son On y Off, por defecto está en On
  • SecRequestBodyLimit esta directiva indica el tamaño máximo de los POST, si se intenta subir un fichero con mayor tamaño, nos devolverá un error 413 Request Entity Too Large. Para qué nos vale esto, fácil, si nuestra web no trabaja con ningún tipo de formulario de subida de fichero y demás lo podemos bajar. El valor por defecto es de SecRequestBodyLimit 13107200 que son 12.5Mb así que la podemos reducir. Esta directiva trabaja conjuntamente con:
  • SecRequestBodyNoFilesLimit que sería el tamaño mínimo de fichero que podemos subir, viene predefinida con 131072 que son 128Kb
  • SecRequestBodyInMemoryLimit puedo decir que está es más directa, con ella podemos especificar que cantidad de datos vamos a almacenar en las peticiones (POSTed data) y será almacenada en la memoria ram de nuestra máquina, por defecto viene marcada con 131072 que son 128Kb, un dato a tener muy en cuenta dependiendo de la RAM de nuestra máquina.

Estos parámetros lo podemos modificar a nuestro antojo hasta que demos con la configuración idónea a nuestras necesidades.

Con estas pautas ya tendremos nuestro WAF funcionando.


En el siguiente post lo pondremos a prueba y además, para seguir fortaleciendo nuestro servidor, veremos como funcionan las reglas y analizaremos las mismas con más detalle.








miércoles, 24 de febrero de 2016

Apache Reverse Proxy

Tras meses y meses sin escribir nada, hoy voy a utilizar esta entrada para tenerla de documentación propia, y si así le ayuda a alguien mejor que mejor.

El caso es que me ví en la necesidad de configurar un proxy inverso para un escenario de pruebas que estoy montando, para posteriormente instalar modsecurity.

Mi escenario sería el siguiente:




En mi caso he usado dos VM con SO debian 8, normalmente para las configuraciones de proxy inverso se suele utilizar nginx pero yo me he decidido por apache que lo conozco más.

Al lío, lo primero es instalar apache en la máquina, eso no lo voy a explicar, entiendo que todos sabemos usar apt-get o aptitude.

Una vez lo tengamos instalado y funcionando es donde tenemos que añadir los módulos de apache para que funcione como Proxy Inverso o Reverse Proxy.

Los pasos a seguir:

  • Instalar los módulos necesarios en apache
  • Crear un nuevo host 
  • Configurar un alias al DNS en el equipo para que apunte hacia el servidor interno
  • Habilitar el host y reiniciar el servicio.



Como root y con apache instalado habilitar los siguiente módulos.

#a2enmod proxy proxy_http

Crear el virtualhost

Ahora toca crear el host virtual, en Debian el directorio de instalación de apache está en /etc/apache2

El lugar donde tenemos que configurar nuestro host virtual está en /etc/apache2/sites-enabled 

Dentro de este directorio crearemos el fichero con el nombre que queramos, además tenemos uno como ejemplo que se llama 000-default.com, yo en mi caso al fichero que he creado lo he llamado visibles.conf  y tiene el siguiente contenido.

<VirtualHost *:80>
    ErrorLog "/var/log/apache2/maquina-visible-error.log"
    CustomLog "/var/log/apache2/maquina-visible-access.log" common
    ServerName IP_SERVER_EXTERNO
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://HOSTNAME_IP
    ProxyPassReverse / http://HOSTNAME_IP
</VirtualHost>


- ServerName: hace referencia a la máquina que recibe la petición, en este caso sería la máquina que está en la DMZ
- ProxyRequests Off: evita que el equipo de la DMZ sea utilizado como proxy.
- ProxyPreserveHost On: permite que las peticiones recibidas a la máquina de la DMZ sean enviadas a la máquina interna siendo para el usuario transparente. Además, nos aseguramos que el servidor ubicado en la red interna no es accesible desde internet.
- ProxyPass y ProxyReverse: gestionan el salto de ida y vuelta de un servidor a otro.

Ni hace falta explicar que hace falta otra máquina que haga de servidor web para que sea realmente la que muestre la web.

Realmente lo que hacemos es crear un host virtual que redirecciona a otra máquina, de ahí la directiva ProxyPass. Aquí podemos tener tantos host virtuales como queramos para que redireccionen a distintas máquinas.

En el siguiente post instalaremos el WAF ModSecurity y lo configuraremos.

martes, 13 de octubre de 2015

Hackeando el 2FA en Android

Muchos de nosotros hacemos uso del doble factor de autenticación (2FA: two step verification) y recomendamos su uso, ya que es una capa de seguridad más añadida a nuestras contraseñas en cuentas de correo, blogs y otros servicios en Internet. Si es complicado hacerse con nuestras credenciales, más aún poder obtener el código de verificación 2FA. Pero ¿qué pasaría si pudiésemos obtener ambas cosas al mismo tiempo?

En el siguiendo artículo vamos a ver como podemos obtener las credenciales de cuentas de correo electrónico así como los códigos de verificación almacenadas en un terminal Android. Antes de comenzar es muy importante recordar uno de los principios de la Seguridad en Android (vistos en el artículo Metodología de Seguridad en Android) donde para cada aplicación instalada en Android se crea un usuario, de tal forma que una aplicación no puede acceder a la carpeta de otra aplicación. Además dentro de la memoria del terminal tenemos una parte de memoria interna (sólo accede el sistema) y otra de memoria externa o de usuario (sin contar con el almacenamiento SD).

Todo esto está muy bien, pero esta seguridad se rompe en el momento en que rooteamos el teléfono o una aplicación maliciosa ejecuta un exploit el cual utiliza una vulnerabilidad del sistema para hacer una elevación de privilegios y hacerse root, de tal forma que una aplicación con permisos root tendrá permiso para campar a sus anchas y acceder a los ficheros que quiera en la memoria interna. 

Nosotros nos vamos a centrar en dos aplicaciones que podemos encontrar en muchos terminales Android, un gestor de correo y el gestor de 2FA. Las aplicaciones en concreto son:
  • Correo (com.android.email)
  • Google Authenticator (com.google.android.apss.authenticator2)
Una de las grandes vulnerabilidades de las aplicaciones Android que podemos encontrar dentro del TOP 10 Owasp Mobile Risks es el almacenamiento inseguro de datos, este tipo de vulnerabilidad es la segunda más encontrada como podemos ver en el esquema de OWASP.


Como hemos hablado anteriormente, dentro del sistema operativo Android existe una memoria interna en la cual se instalan las aplicaciones, concretamente la ruta es /data/data/ y ahí vamos a encontrar las aplicaciones de la cual queremos obtener información, tal cual como lo haría una aplicación maliciosa que consigue acceso root.

Insecure Data Storage en com.android.email

Esta aplicación de correo electrónico desarrollada por Google la podemos encontrar en muchas distribuciones de Android como parte del sistema operativo, tanto en ROMs de marcas comerciales como también en ROMs cocinadas.

Si nos traemos las todo el directorio /data/data/com.android.email/ podemos encontrarnos con que hay una base de datos SQLite muy interesante dentro del directorio databases: EmailProvider.db


Concretamente dentro de la tabla HostAuth podemos encontrar los correos configurados en el terminal junto con la contraseña en plano, algo increible pero cierto. Si abrimos este fichero con algún programa para visualizar SQLites encontramos lo siguiente:


Aquí no acaba la cosa, el sistema también almacena en texto plano las contraseñas de los correos en texto plano en el siguiente fichero /data/system/users/0/accounts.db 


Bueno ya tenemos los correos electrónicos y las contraseñas, si ahora intentamos acceder a alguno de estos correos nos solicita el 2FA. ¿Cómo hacemos para conseguir el código de verificación teniendo acceso al terminal como root?

Insecure Data Storage en com.google.android.apss.authenticator2

Vamos a ver ahora un caso parecido con la aplicación de Google Authenticator ¿Alguna vez os habéis planteado restaurar vuestro Android de fábrica con su correspondiente Wipe-Data pero no os habéis atrevido porque podéis perder el 2FA? 

Además de eso podemos preguntarnos (por aquello del pensamiento lateral de los hackers) qué ocurriría si copio el directorio completo /data/data/com.google.android.apps.authenticator2 y lo monto en otro terminal, ¿debería dejarme acceder a los códigos de verificación? ¿la instalación del Google Authenticator y los códigos que se generan debería ser única? es decir,si tendría algún tipo de protección por seguridad. Pues bien, la respuesta a estas preguntas es que no tiene protección, podemos hacer lo que queramos

Paso a paso, haremos lo siguiente:

 1. Copiamos la carpeta completa del terminal con la instrucción: 

adb pull /data/data/com.google.android.apps.authenticator2  

 2. Vemos que tenemos dentro tres carpetas: app_sslcache, databases y shared_prefs.

 3. Dentro de la carpeta databases nos centramos en el fichero databases.db y en la tabla accounts obtenemos lo que buscamos, las cuentas asociadas con su código secreto.


Con estos secret keys podemos generar los códigos de verificación asociados a cada una de las cuentas de correo cuyas contraseñas ya teníamos. Pero vamos a probar a montar toda la estructura de directorios en un emulador a ver si funciona el Google Authenticator, para ello primero instalamos la aplicación y acto seguido copiamos todo el directorio completo con las tres carpetas.


Instalamos con adb install <aplicación.,apk> y copiamos todo el directorio al emulador para ver si nos permite así cambiar los códigos de un terminal a otro simplemente con Copy/Paste. En la siguiente imagen vemos como lo permite perfectamente.


Conclusión

Hemos visto como por culpa de fallos a nivel de programación donde se lleva a cabo un almacenamiento inseguro de información sensible, se ven expuestas nuestras contraseñas y los códigos secretos de verificación. Cualquiera de nuestros terminales puede ser víctima de cierta aplicación maliciosa, de una vulnerabilidad de 0day o de una vulnerabilidad no parcheada por nuestro fabricante.

Recomendaciones
  • Actualizar el sistema lo máximo posible, ya que los fabricantes no suelen sacar muy a menudo actualizaciones para forzarnos así a comprar nuevos terminales. Recomiendo en este caso el uso de ROMs cocinadas que parchean los fallos de seguridad a diario
  • Hacer uso de herramientas de control de permisos para impedir a las aplicaciones tener más permisos de los necesarios, de tal forma que podemos así controlar quien accede a que recuersos. Podéis ver herramientas de control de recursos en mi artículo  Privacidad en Android del blog de Hacking Ético (http://hacking-etico.com/2014/08/12/privacidad-en-android/)
  • Hacer uso de herramientas de seguridad como antivirus, antimalware y otras herramientas que te chequean los fallos de seguridad más reciente. Os recomiendo que uséis la herramienta Android Vulnerability Test Suite (https://github.com/nowsecure/android-vts) que os permite testear si tenéis las últimas vulnerabilidades parcheadas.
  • Otras capas de seguridad recomendables serían deshabilitar el ADB (Android Debug Bridge), usar bloqueo de sesión bien con pin numérico de más de 5 dígitos o patrón y sobre todo cifra tu dispositivo por si cae en manos equivocadas. 
Formación en Seguridad Android

Si te interesa la seguridad en Android, los próximos cursos y talleres que impartiré serán los siguientes:


  • Curso Forense en Android ( 29 Enero y 5 Febrero - Modalidad Online): curso totalmente práctico donde llevaremos a cabo el proceso forense de un terminal Android para obtener el máximo número de pruebas. Tocando directorios claves del sistema operativo como de las aplicaciones más utilizadas que nos brindan gran cantidad de información. Más información aquí.
  • Taller Pentesting de Aplicaciones Android (12 Febrero Cuenca - MorterueloCon): taller de 4 horas sobre auditoría de aplicaciones móviles siguiendo la metodología OWASP. Más información aquí.
  • Curso Pentesting en Android (27 Febrero Valencia): un curso presencial muy completo de 8 horas de duración, donde veremos los diferentes puntos del Pentesting en Android para poder auditar aplicaciones, analizar malware e incluso llevar a cabo un análisis forense de un terminal. Más información aquí.



Espero que os haya gustado el artículo y que tengáis presente que la seguridad 100% no existe, sólo podemos añadir cuantas más capas de seguridad mejor.

Un handshake


"Comienza haciendo lo que es necesario, después lo que es posible y de repente estarás haciendo lo imposible"
S.F.d.A.










lunes, 27 de julio de 2015

No hace falta que seas un manitas para hacer phishing

No hace falta ser un manitas en esto de la informática para conseguir suplantar la identidad de una empresa y conseguir las credenciales de acceso con un poco de ingenio e ingeniería social. Y sobre todo cuando existen aplicaciones que lo hacen por ti simplemente agregando la URL del sitio web que quieres clonar, como es el caso de HTTrack, una aplicación desarrollada para dos tipos de personas, bien puede servir para un auditor de aplicaciones web que quiera analizar el sitio a auditar de manera offline, o para un cibercriminal que quiera suplantar la identidad de una página para conseguir datos que puedan interesarle como las credenciales de acceso.

Esta aplicación multiplataforma que está disponible para Windows, Linux  y OS X tiene un uso muy sencillo y es que, solamente tendremos que indicarle el nombre del proyecto, la ruta donde guardarlo y la URL del sitio a clonar. Después de esto, tendremos el sitio clonado idéntico al original y ya nosotros tendríamos que configurarlo a nuestro gusto para recibir los datos que el usuario introduzca y añadirle un poco de astucia a la hora de engañar.

HTTrack nos brinda varias opciones a la hora de hacer el clonado, en este caso vamos hacer una copia del sitio web.




También podemos definir una serie de opciones a la hora de realizar el clonado del sitio como puede ser filtrar archivos, modificar cabeceras o especificar el número de conexiones que se hará por si la aplicación contiene algún tipo de control. Tampoco entraré en mucho detalle sobre estas opciones y lo dejaré en vuestras manos para que juguéis con la aplicación.

En mi caso, voy a realizar un clonado de la página web Steam, una plataforma de videojuegos que cuenta con más de 125 millones de usuarios registrados y que es muy común encontrarse con alguien que intente hacer phishin de este sitio para conseguir cuentas y luego venderlas.




Si le echamos un vistazo a la URL que le indico que quiero que haga el clonado http://store.steampowered.com/ podemos comprobar que esta URL no navega por HTTPS por lo que engañar en este caso a un usuario podría ser un más fácil que a la hora de hacer login que lo veremos más adelante. Como dije anteriormente aquí entraría el ingenio del cibercriminal a la hora de engañar al usuario para conseguir que acceda a este sitio web como podría ser, con acortadores de URL estilo https://goo.gl/ y rezar para que cuando el usuario haga click en la URL acortada no mire la barra de direcciones, o también conseguir un nombre de dominio semejante como podrían ser http://store.steampovvered.com/ (nótese las dos "v" en vez de una "w").

Una vez le digamos que empiece al clonar podemos ver como HTTrack va visitando el sitio web completo para descargarse los archivos en el equipo local.




Ya clonado, vamos a comparar los dos sitios a ver si conseguimos ver algo diferente.

Sitio web original de Steam

Sitio web clonado de Steam

Como podemos comprobar el sitio web es idéntico al original. En este caso el login de esta aplicación web si contiene HTTS por lo que navegará por el protocolo SSL y además contiene un certificado EV SSL que explicaré al final del post. En este caso el cibercriminal le sería algo más complicado engañar al usuario pero nunca imposible ya que la mayoría de los usuarios navegan por Internet sin mirar la barra de direcciones por lo que no saben si realmente están el sitio web legítimo o no. En estos casos lo que se suele hacer es, cuando el usuario introduce su usuario y contraseña y le llega al cibercriminal, este le redirige al sitio web original indicándole que las credenciales introducidas no son válidas.

El login en este caso tendrá el siguiente aspecto.

Login original de Steam


Como podemos comprobar la navegación cambian a HTTPS y vemos el cuadrado verde con el candado garantizando la identidad de la empresa Valve, no quedaría duda de que es el sitio web original. Nuestro sitio web clonado quedaría de la siguiente manera.

Login clonado de Steam

De nuevo son idénticos y no se consigue apreciar ningún cambio significativo por lo que el usuario no se daría cuenta realmente de no ser porque mire la URL.


¿Cómo prevenir un ataque de phishing?

Poniendo este caso como ejemplo, lo mejor para prevenir este tipo de ataques es mirar siempre la URL a la que accedemos por terceros en los que desconfiamos como puede ser por email, foros o desconocidos. Verificar el candado verde que nos garantiza la identidad de la empresa y la navegación por HTTPS que nos dice que los datos irán cifrados en todo momento. En el caso de que la URL esté acortada, podemos ver a donde apunta con knowurl.

Tipos de certificados

Como dije antes, el candado verde significa que es un certificado EV, es decir, existe un tercero que verifica y valida la identidad de la aplicación web. También existe el certificado normal que lo que garantiza es que los datos en todo momento van cifrados y no se podrán extraer. Por supuesto, el certificado EV es más caro a la hora de adquirirlo.

Luego podemos encontrarnos y seguro que os habréis topado con alguno, los llamados certificados autofirmados. Estos certificados no tienen un tercero que lo firme y verifique la identidad del sitio web y cuando vamos a navegar por su sitio nos dice "Esta conexión no es de confianza o no está verificada" en mi caso, me ha pasado mucho con la Junta de Andalucía.


En estos casos, tenemos tres opciones. La primera es no confiar en el sitio web y no navegar por él. La segunda sería, entender los riesgos y navegar aunque, podríamos ser vulnerables a un ataque de MiTM (Man-in-the-middle). Y la tercera opción sería importar el certificado en nuestro navegador y poder navegar por el sitio web y que los datos vayan cifrados así evitando un ataque MiTM. Para hacer esta última opción se tendría que confiar plenamente en el sitio web.




Un saludo @Joseliyo_Jstnk.


DISCLAIMER: No me hago responsable del uso que se le de a la aplicación explicada que se ha hecho con fines educativos. Esta aplicación está desarrollada para descargar sitios web y analizarlos de forma offline.



lunes, 13 de julio de 2015

Test de Intrusión a un NAS y Medidas de Seguridad

En el pasado artículo vimos como se puede virtualizar un NAS de Synology (Modelo DS3615xs) usando Virtual Box, en el cual podemos instalar multitud de servicios nativos y otros que no lo son pero que son muy utilizados como veremos más adelante. Vamos ahora a preocuparnos de la seguridad del NAS para intentar reducir el número de vectores de ataque al mínimo, para ello pasaremos a hacerle un test de intrusión.


Justificación

Antes de nada comentar el porqué de elegir dicho dispositivo para el test de intrusión. Dado el alto coste de estos dispositivos y que no todo el mundo puede disponer de uno, hasta ahora que ya podemos virtualizarlo, los investigadores de seguridad parece que no le han prestado interés a las aplicaciones nativas de Synology e incluso a su Synology DSM.

Vamos a hacer un análisis haciendo uso de Shodan a ver que encontramos. Si recordáis del artículo anterior, el Synology DSM da servicio vía Web a través de los puertos 5000 y 5001. Haciendo una búsqueda a nivel global por los puertos indicados encontramos lo siguiente:


A nivel mundial nos salen más de medio millón de dispositivos NAS de Synology, donde el mayor número de ellos se encuentran en Australia y Estados Unidos, seguido de Alemania, Francia y Holanda. Aquí tenéis el reporte por si queréis consultarlo más a fondo de esta búsqueda: Reporte Shodan Synology

Si ahora realizamos la búsqueda a nivel de España encontramos estos resultados:



Encontramos 8577 dispositivos en España de los cuales la gran mayoría, excepto 23, dan servicio por el puerto 5000, el resto por el 5001. En ambas búsquedas de Shodan podemos encontrar falsos positivos, ya que puede haber servicios que estén publicados en el puerto 5000, pero al igual que hay muchos NAS de Synology que cambian el puerto y no los estamos listando. Estos los podemos encontrar haciendo un poco de Google Hacking.


Con todo esto podemos ver que son dispositivos muy utilizados por las empresa y algunos particulares.

Obteniendo Información

Para llevar a cabo el test de intrusión vamos antes a buscar información sobre nuestro NAS de Synology. Como es una auditoría interna, no tenemos que buscar información del dominio. Lo que si sabemos son los puertos sobre los que suele trabajar Synology que son 5000 o 5001, caso de trabajar en otro puerto, más adelante lo veremos.

Intentamos obtener toda la información posible buscando primero en el propio centro de paquetes de Synology, donde conoceremos los servicios que nos podemos encontrar.



Además el propio fabricante nos facilita una lista detallada de puertos donde trabaja cada uno de los servicios de Synologyhttps://www.synology.com/es-mx/knowledgebase/faq/299 Esta lista nos será muy útil en la siguiente fase.

A nivel específico de seguridad Synology nos proporciona una apartado sobre actualizaciones de seguridad tanto de su DSM como de sus servicios nativos. Si pinchamos en la actualización nos indica incluso los identificadores de la vulnerabilidad que ha sido parcheada.



Escaneo de Puertos

Lo primero a la hora de llegar a esta fase es lanzar un escaneo de puertos con nmap e intentar identificar servicios y versiones. Nos va a ayudar mucho la lista de puertos-servicios encontrada en la fase anterior.


Antes de analizar el resultado del escaneo de nmap también llevaremos a cabo un escaneo con Nessus configurándole varios plugins específicos para Synology que vemos a continuación.  Si nos fijamos tenemos dentro de la lista uno que nos detecta la versión de DSM que corre en el NAS, concretamente el plugin con ID 72341. Dentro de Nessus debemos irnos al escaneo actual, apartado plugins y añadirlos por su ID.



Tras el escaneo nos da 1 vulnerabilidad de nivel MEDIO y 31 INFO.


La vulnerabilidad de nivel MEDIO nos indica que deberíamos hacer usos de certificados de seguridad para cifrar la información en el protocolo SMB para evitar ataques MiTM. En los info vemos sobre todo los mismos puertos abiertos que con nmap (Nessus SYN scanner) y el plugin que antes configurábamos nos devuelve la versión exacta del Synology DSM que es la 5.2.5565.


Respecto a los puertos que tenemos: 80, 139, 161, 445, 515, 548, 3306 y 5000 tenemos donde jugar. Según la la lista de Synology del apartado anterior tendríamos los siguientes paquetes/servicios levantados en los siguientes puertos:

  • Puerto 80: Photo Station, Web Station, Mail Station o DS Photo.
  • Puerto 139: Demonio de smb para transferencia de ficheros sobre el que también corren las copias de seguridad.
  • Puerto 161: Protocolo SNMP para obtener información de la red.
  • Puerto 445: Se utiliza junto con el 139 para transferencia de archivos.
  • Puerto 515: Protocolo LPR (Line Printer Remote), es decir para impresión a través de la red.
  • Puerto 548: Protocolo AFP (Apple Filing Protocol) para transferencia de archivos con máquinas Apple.
  • Puerto 3306:  Servicio MySql corriendo en este puerto.
  • Puerto 5000: Puerto por defecto que utiliza DSM para gestión vía Web.

Nos vamos a centrar primero en los puertos sobre los cuales corre un servicio Apache que son el 80 y el 5000. Normalmente este tipo de dispositivos se suele utilizar para guardar copias de seguridad y crear Web por cada uno de los usuarios. Si utilizamos un navegador Web encontramos en cada uno lo siguiente:

Puerto 80: Encontramos un WebStation

 Puerto 5000: Encontramos el DSM

Corroboramos la versión del DSM obtenida con Nessus que nos decía que era DSM 5.2. Vamos ahora un poco más lejos e intentamos hacer un descubrimiento de directorios con una herramienta de fuerza bruta:  OWASP  DirBuster.


Encontramos un directorio de wordpress y otro de phpMyAdmin, parece que poco a poco vamos atando cabos. Nuevamente usamos el navegador Web para comprobar:

Front-End de Wordpress

Back-End de Wordpress

phpMyAdmin

Se nos van presentando cada vez más vectores de ataque, ya que conseguimos fácilmente obtener el back-end por defecto del sitio WordPress.

Si queremos centrarnos en el sitio WordPress tenemos muchas herramientas que podemos usar como vemos en las siguientes imágenes.

Detectamos versión Wordpress 4.1.5 con módulo auxiliar de Metasploit.

Identificamos plugins instalados y vulnerabilidades con wpscan

Si lanzamos otros escáneres también podemos sacar más información y otras vulnerabilidades. Hemos lanzado también OpenVas y nos da un servicio vulnerable (LPR en puerto 515) para el cual si buscáis tenemos un exploit.


Podíamos seguir así analizando cada uno de los servicios y buscar vulnerabilidades en cada uno de de ellos para llegar a la siguiente fase de explotación con muchos vectores de ataque posibles.

Explotación

En la fase de explotación podemos buscar exploits para las diferentes versiones de servicios que están corriendo en nuestro Synology DSM, ya que tenemos muchos vectores de ataques: 
  • Versiones de paquetes propietario obsoletas, como las que hace unos días han sido parcheadas ( Download Station 3.5-2963 y Photo Station 6.3-2953 )
  • Versiones del Synology DSM vulnerables, como las versiones de la 4.0 a la 4.3 con su CVE-2013-6955 con su exploit para Metasploit (synology_dsm_sliceupload_exec_noauth
  • Servicios muy conocidos vulnerables, bien por configurados por defecto o con vulnerabilidades en sus versiones o complementos como puede ser Wordpress y sus plugins, o la propia versión de PHP.
  • También podemos tener ataques de fuerza bruta o denegación de servicio en los diferentes servicios (login del DSM, Back-End de Wordpress o login de phpMyAdmin) si no tomamos medidas.

Os dejamos a vosotros la fase de explotación para que juguéis con los exploits y el correspondiente informe que se que a más de uno le encanta escribir. Vamos a ver ahora que contramedidas podemos llevar a cabo para aumentar la seguridad.

Medidas de Seguridad

Las medidas de seguridad a llevar a cabo para reducir riesgos son las siguientes:
  • Activar el doble factor de autenticación (2FA) en todos los servicios que requieran user/pass y te lo permitan, como son el DSM o el Back-End de Wordpress. Opciones de Usuario - Cuenta - Habilitar verificación en 2 pasos.
  • Habilitar la comunicación vía HTTPS, para lo cual tendremos que crear nuestro propio certificado. Panel de Control - Certificado - Crear Certificado y después Panel de Control - Red - Configuración DSM para activar HTTPS
  • Crear reglas de cortafuegos para permitir ciertos servicios sólo desde ciertas IPs y sólo a ciertos usuarios. Panel de Control - Cortafuegos
  • Habilitar la protección DoS que incorpora Synology DSM. Panel de Control - Protección
  • Habilitar los bloqueos automáticos cuando se detecte un número de intentos de inicio de sesión en cualquiera de los servicios (lo incorpora Synology DSM). Configurar whitelist y blacklist. Panel de Control - Bloqueo Automático

Todas estas medidas las podéis encontrar más detalladamente en la siguiente dirección:


Ahora os toca a vosotros poneros manos a la obra y securizar vuestros NAS.

Un #handshake de @eduSatoe

"No se trata de ser los más rápidos, los más fuertes, o los más grandes, se trata de ser nosotros mismos
Killian Jornet