lunes, 10 de noviembre de 2014

Fuga de información en Symfony al chequear requisitos

La semana pasada, mientras jugaba con los Huevos de Pascua en PHP para localizar las versiones del framework instaladas en los servidores web, me topé con una web de control en otro framework  en este caso Symfony, que resolvía toda la problemática del fingerprinting. Solo con llegar a ella ya era posible acceder a la información del framework PHP y mucho más que eso, por lo que solicité a mis compañeros que la metieran en el motor de Faast para reconocer estos leaks en nuestro motor de Pentesting Persistente. Días después he podido jugar mucho más con ello así que aquí va el resultado.

Figura 1: Un "leak" de información en Symfony al chequear los requisitos

Symfony es un framework server-side para aplicaciones PHP que viene con una buena cantidad de controles para desarrollar aplicaciones web. Es un entorno que proporciona capacidades similares a las de Laravel PHP, pero que ha crecido exponencialmente en los últimos tiempos. En las estadísticas de Symfony en Buildwith se puede ver como ya sitios entre el TOP 10.000 mundial comienzan a usarlo, y muchos más en el Top 1.000.000, lo que deja clara la popularidad de esta tecnología.

Figura 2: Estadísticas de uso de Symfony

El asunto es que cuando se instala en un servido web, viene acompañado de un fichero de comprobación de requisitos llamado check.php que se localiza habitualmente en el directorio raíz del sitio web. Esta aplicación no es más que una batería de comprobaciones que revisan si todos los requisitos necesarios se cumplen para que funcione Symfony.

Figura 3: Sección inicial de check.php de Symfony Requirements Check

Lo cierto es, que en la lista de comprobaciones se muestran las versiones del framework PHP así como rutas locales de instalación de los archivos de configuración, lo que es un leak de información que debería ser cortado.

Figura 4: Otra versión más antigua de Symfony Requirementes Check

Este fichero debería eliminarse de la instalación de cualquier sitio web con Symfonyuna vez terminado para evitar que cualquier atacante acceda a dicha información. Sin embargo, es fácil localizarlos en un montón de servidores.

Figura 5: Symphony Server Check v1.01

Como se puede ver, ha habido diferentes versiones de esta aplicación de comprobación de requisitos en Symfony, y algunos como el siguiente, además llevan incorporado un enlace al PHP info, con lo que la fuga de información es aún mayor.

Figura 6: PHP Info generado desde Symfony Server Check

Todos estos datos deberían ser eliminados del servidor para evitar las fugas de información con el objeto de tener el servidor mucho más fortificado.

Figura 7: LatchBundle para Symfony2

Además, hace ya muchos meses que para la versión Symfony2 se hizo un plugin para Latch por lo que si quieres puedes, además de eliminar el leak de información que se genera con check.php, añadir una capa de seguridad para las identidades con LatchBundle.


sábado, 8 de noviembre de 2014

Saber la versión PHP de un servidor web por los huevos de pascua

Los Huevos de Pascua son comunes entre los ingenieros tecnológicos. Famosos son los que los equipos de Apple han puesto a lo largo de la historia, que van desde mostrar fotos - que a veces se encuentran de la forma más inesperada - hasta vídeos, el discurso de Stanford de Steve Jobs o grabaciones de audio. En el caso de Microsoft, en sus productos han llegado hasta a meter juegos que puedes disfrutar desde el propio Excel 2010, donde está incluido el Missile Command y el Tower Defense. Los ingenieros de Google también son proclives, son famosos los Huevos de Pascua en Youtube donde se puede jugar también a juegos como Missile Command. En el nuevo Google Chrome Canary se ha metido en la página de error que muestra problemas de conexión de red el juego del T-Rex Runner, así que en lugar de tener una aburrida página que te frustra, podrás jugar con el dinosaurio.

Figura 1: Cómo saber la versión de PHP de un servidor web por los huevos de pascua

Los Huevos de Pascua son geniales, pero a veces pueden ser peligrosos, especialmente si se pueden convertir en algún problema de seguridad. Lo cierto es que, debido a que los ingenieros ponen los Huevos de Pascua en versiones concretas de software, el descubrimiento de ellos deja claro cuál es la versión que está instalada, y éste es el caso que puede utilizarse en PHP para hacer fingerprinting y conocer si un servidor web tiene desactualizado el framework.

Las imágenes del framework PHP cargadas vía parámetros

Si alguna vez has visto un fichero PHP Info, sabrás que salen unas imágenes en el mismo. Estas imágenes son de PHP y el de Zend Engine. Si miras el código fuente podrás ver que se pintan llamando a los parámetros siguientes:

Figura 2: Logo de PHP que sale en info.php
- Logo de PHP: ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
- Logo de Zend Engine: ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
Figura 3: Logo de Zend Engine

Para sacar estas imágenes se puede utilizar ese parámetro en cualquier fichero PHP de cualquier sitio web que no los haya capado,

El fichero de créditos del framework PHP

Al igual que se obtiene un fichero PHP Info, y las imágenes de los logos, se puede obtener un fichero de respuesta con la lista de los autores de todas las versiones de ese software que vienen con ese framework. 

Figura 4: Fichero de créditos en una versión de PHP 5.1.3 a 5.2.13

Para ello hay que cambiar el parámetro que hay que enviar al fichero PHP.
- ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Figura 5: Fichero PHP Credits de una versión actualizada

Por supuesto, los créditos de PHP cambian dependiendo de la versión, así que es un buen elemento para poder hacer un fingerprinting a la versión exacta del framework que está corriendo en un determinado sitio web.

El Huevo de Pascua del framework PHP

La última de las características es la más peligrosa desde el punto de vista de seguridad, ya que dependiendo de la versión exacta se puede obtener un logo que cambia y afina bastante.

Figura 6: Logo de Elefante en un framework PHP en la web

Para ello se debe utilizar el parámetro siguiente:
- ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

Figura 7: Diferentes imágenes que se obtienen en los huevos de pascua de PHP

Y se obtendrán las siguientes imágenes dependiendo de la versión:

- PHP Versión 5.3 a actual: Logo de PHP con un elefante
- PHP Versión 5.1.3 a 5.2.13: Logo de PHP movido
- PHP Versión 5.0.4 a 5.1.2: Foto de Perro Terrier Escocés Negro.
- PHP Versión 5.0.0. a 5.0.3: Foto de un conejo.
- PHP Versión 4.3.11 a 4.4.6: Foto de Perro Terrier Escocés Negro.
- PHP Versión 4.3.0 a 4.3.10: Foto de Perro color canela sobre césped.
- PHP Versión 4.0.0 a 4.2.3: Foto de programador divertida.
Todas estas fotos son personales de los desarrolladores y el equipo que está detrás del proyecto, pero este Huevo de Pascua en concreto, que no está documentado, puede informar a un atacante - si no sale el logo del elefante, que tu sistema está sin actualizar con un buen número de bugs.

Figura 8: Sitio web con versión antigua de framework PHP

Cómo quitar estas macros

Estos parámetros funcionan porque en el fichero de cabecera "php-source/ext/standard/info.h", en las líneas 53 a 56 puede leerse la definición de estos códigos. Así que basta con que comentes estas líneas de tu instalación y desaparecerán:
#define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42"
#define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42"
#define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42"
#define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000"
Por supuesto, mi recomendación es que lo quites. Cuanta menos información des de tu infraestructura, mejor que mejor, así que en las recomendaciones de nuestro sistema de pentesting persistente Faast se avisa a los clientes de este hecho.



viernes, 7 de noviembre de 2014

Cómo localizar en Facebook a alguien que se ha cambiado el nombre o la dirección

Hace un par de días me pasaron por correo electrónico un pequeño truco para localizar a personas en Facebook que hubieran cambiando su nombre o la dirección de la página, ya que esas dos características pueden ser modificadas. Facebook no permite que se cambien esos parámetros siempre que se quiera, pero sí se puede hacer al menos una vez. Localizar el nuevo nombre o la nueva dirección URL de una persona que se haya cambiado esos datos si tienes información del perfil antiguo.

Figura 1: ¿Cómo localizar la página o el perfil en Facebook de alguien que se ha cambiado el nombre o la URL?

La idea es bastante sencilla, y para explicársela he utilizado la  página de chema alonzo en Facebook. Como podras ver, la direción URL es Chema.Alonso.Maligno y su nombre es Chema Alonso. Esos son los datos que Facebook va a permitir cambiar.

Figura 2: Página web en Facebook de Chema Alonso

Si quisiera modificar esa información, solo debería ir a settings y elegir nuevos valores para esos campos. Solo en el caso de la URL tendría problemas de elección, ya que si está ocupada no se puede elegir - evidentemente -.

Figura 3: Opciones de cambiar la URL de la dirección y el nombre de la cuenta

Lo que realmente marca la ubicación de una página o perfil en Facebook es su ID, por lo que basta con buscarlo y guardarlo para siempre poder encontrar la página o el perfil, aunque se hayan cambiado los datos de nombre y/o la dirección URL de la misma. Estos datos se pueden obtener directamente desde Graph, por lo que con cambiar www por graph en Facebook aparecerá el ID de la cuenta, ese es el de la mía.

Figura 4: ID de la cuenta en Facebook

A partir de ese momento, se cambien los datos o no, si alguien quiere llegar a la página Facebook asociada a ese ID, no importa si se ha cambiado el nombre o la URL, basta con poner el ID en la barra de direcciones y listo.

Figura 5: Localización de la página por medio del ID

Como te podrás imaginar, eso solo vale cuando se ha guardado ese dato, así que si estás teniendo problemas con una cuenta en Facebook que vas a denunciar, además de tomar evidencias digitales para la denuncia de la web, haz lo mismo pero con la URL de Graph, lo que ayudará a poder tener localizado siempre al perfil. Ya sabes, guarda el ID de tus amigos ...  para nunca perderlos de vista.

 

martes, 4 de noviembre de 2014

Security Innovation Day 2014: Keynote en Vídeo

El pasado 16 de Octubre tuvo lugar en el Auditorio Principal de Telefónica el evento Security Innovation Day 2014, donde se presentó las novedades respecto las tecnologías que se habían presentado en Eleven Paths y se comercializó a través de Telefónica. La primera de las sesiones, la Keynote, estaba orientada a contar a los clientes los avances en algunas tecnologías que ya se habían presentado, junto con los testimonios de algunos clientes, y ahora la puedes ver en el siguiente vídeo que ha sido subido al Canal Youtube de Eleven Paths:



Figura 1: Security Innovation Day 2014: Keynote


La Keynote cuenta entre otras cosas los avances en materia de Vigilancia Digital, donde además de la incorporación de módulos del sistema de Pentesting Persistente este año, se han incluido los acuerdos con Kaspersky y la Digital Crime Unit de Microsoft, además de los productos Sinfonier y Path 5 para conseguir tener un mejor vigilante en la red.




Figura 2: Acuerdo entre Microsoft Digital Crime Unit & Eleven Paths


En el caso de MetaShield, además de contar con una nueva versión online para que todo el mundo pruebe si un documento tienen o no metadatos, fugas de información y/o datos perdidos, llamada MetaShield Analyzer, se presentó las nuevas evoluciones de los productos con una integración de MetaShield Client dentro de Microsoft Outlook, tal y como se puede ver en el siguiente vídeo.




Figura 3: MetaShield Protector for Clients con Microsoft Outlook



También se destacó el nuevo producto integrado en el que vienen trabajando, tanto RadWare como los demás, para integrar las soluciones MetaShield Protector dentro de un WAF (Web Application Firewall) que evite las fugas de metadatos de cualquier servicio HTTP/FTP que esté protegido por él.





Figura 4: Participa en el concurso de Latch y gana unos BitCoins


En la parte de Latch, además de traer el testimonio de alguno de sus clientes, anunciaron el acuerdo con Incibe para llevar Latch Silver a las PYMES españolas y el concurso de desarrollo de soluciones Latch Plugin Contest por el que se van a regalar 10.000 USD, 5.000 USD y 1.000 USD a las mejores ideas, además de la posibilidad de obtener una beca laboral con ellos.




Figura 5: Funcionamiento normal de una petición Latch


Por último se contó con la aparición de un nuevo producto, llamado Latch Satellite, que permite poner un virtual appliance en la empresa para tener un copia-caché en cada instante de los status de las cuentas pareadas.




Figura 6: Funcionamiento de Latch Satellite

Por último, en la parte de Gestión de Vulnerabilidades contaron la visión de una evolución a Gestión de Vulnerabilidades Persistente utilizando el sistema en cloud Faast para detectar en el menor tiempo posible los nuevos bugs de seguridad. A este producto le dedicaríamos una sesión aparte que se publicará más adelante.

Además de estas cosas, en el evento se anunció muchas más, pero fueron en otras sesiones que irán publicando poco a poco, como la incorporación de las tecnologías y personas de SmartAccess en Eleven Paths, las tecnologías de Alise Devices que vienen desde una start-up de Wayra, las novedades técnicas de Faast o el nuevo producto Path 5, del que ya publicarán mas detalles luego.  



Fuente


lunes, 3 de noviembre de 2014

Cómo funciona el software de espionaje de Hacking Team

El periodista Gleen Greenwall ha publicado en The Intercept una serie de manuales pertenecientes a la empresa italiana Hacking Team. Esta compañía se dedica a comercializar, al igual que hace por ejemplo FinFisher, software para espionaje gubernamental. Según ellos, han vendido sus sistemas en 40 países en los 5 continentes de nuestro planeta.


Figura 1: Filtrados los manuales y guías de Hacking Tema RCS 9

Con estas guías que han sido filtradas - datadas en 2013 - puedes ver cómo funciona la herramienta para los técnicos de campo en la Guía para Técnicos, donde se explica cómo montar las operaciones, la Guía del Administrador del Sistema donde se cuenta cómo funciona el sistema completo, la Guía del Administrador de las operaciones y la Guía del Analista de la información. Además de algunos docs extra como un par de changelogs y un Informe de Invisibilidad. Material digno de analizar. Éste es un pequeño resumen de todo lo que puedes leer allí.

RCS (Remote Control System) 9

Las guías que se han filtrado hacen referencia a Remote Control System, la versión R.A.T. (Remote Administrator Tool) que comercializan como software de espionaje de objetivos para cuerpos y fuerzas de seguridad. Este sistema se bas en infectar equipos por medio de lo que llaman Network Injectors, que sirven exploits y agentes de infección a los equipos objetivos, ya sean terminales móviles o sistemas operativos. En la guía para los técnicos se puede ver cómo funciona este software.

Figura 2: El Tactical Control Center y los Network Injectors para meter el agente

El sistema RCS 9 de Hacking Team inyecta el software malicioso vía ataques de red usando puntos de acceso Rogue WiFi clonados para lanzar falsas actualizaciones en entornos de Evil Grade como hace FinFisher, ataques man in the middle comunes para inyectar descargas en navegación web, etcétera. Lo que van a enviar puede ser distinto en cada caso, desde una falsa actualización, una descarga forzada vía técnicas de phishing o un exploit que comprometa la seguridad del cliente para inyectar el agente de monitorización.


Figura 3: Configuración del agente a través de la consola de RCS
Estos agentes salieron a la palestra no hace mucho tiempo porque habían creado un mecanismo para infectar terminales iPhone a través del sistema operativo pareado. Estos agentes, cuando se conecta el terminal iOS al equipo realizan directamente el jailbreak para conseguir meter un troyano de espionaje en iOS sin la protección de codesigning de Apple.


Figura 4: Infección de iPhone haciendo jailbreak al dispositivo desde el equipo pareado


Para eludir mejor las protecciones que pudieran suponer los antivirus, el manual recomienda comprar software de firmado de código de Verisign (Symantec), Thawte o GoDaddy, lo que hace que el software de protección sea menos proclive a eliminarlos del sistema al venir firmados. Este es el truco que usó tiempo atrás Flame, que al venir firmado por Microsoft ningún antimalware se atrevía a bloquearlo.

Figura 5: Evidencias capturadas de un equipo controlado

Una vez que los objetivos están infectados, el sistema RCS funciona en primer lugar como una herramienta de recolección de evidencias con técnicas de análisis forense - al estilo de por ejemplo Oxygen Forensics -, es decir, trayéndose del dispositivo a decisión del administrador todo el contenido, o haciendo una captura selectiva por medio de elementos seleccionados o por medio de alertas.


Figura 6: Evidencias de audio en RCS
Al igual que los R.A.T. para terminales móviles, permite capturar evidencias de todo tipo, como llamadas de teléfono en los dispositivos, sonido ambiente a través del micrófono, o realizar grabaciones con la cámara. Por supuesto, el agente reporta en todo momento lo que está pasado y funciona como una herramienta de monitorización en tiempo real que indica la ubicación exacta y los programas en ejecución en cada caso.

Figura 7: Análisis de ubicaciones de un objetivo infectado
Para los analistas del sistema, la consola es una herramienta de inteligencia en donde van a poder realizar búsquedas, establecer relaciones entre evidencias, hacer búsquedas de patrones, etcétera, como cualquier consola de búsqueda de conocimiento en datos desestructurados.


Figura 8: Análisis de relaciones con RCS de Hacking Team
Si te interesa conocer en detalle lo que se puede hacer con esta herramienta, para que sepas lo que pueden hacer esas 40 organizaciones en esos 5 continentes que lo habían comprado ya en el año 2011, puedes leerte en detalle las guías. Los documentos están disponibles para descarga en formato PDF, aunque las imágenes no se ven con muy buena calidad, en las siguientes URLs:

Recordad que este software ha tenido presencia en muchos de los incidentes que se cuentan en el informe sobre el espionaje gubernamental a disidentes y en algunos ejemplos de los incidentes de ciberespionaje entre países.


Fuente

sábado, 1 de noviembre de 2014

Geolocalización con python y pygeocoder

pygeocoder es una biblioteca de Python bajo licencia BSD que facilita el uso de la funcionalidad de geolocalización de Google. Con este módulo, podrás encontrar fácilmente las direcciones correspondientes a las coordenadas y viceversa. También podemos utilizarlo para validar y formatear direcciones.
Se basa en google maps 1.0.2 pero recientemente se ha actualizado para hacer uso de la versión 3. Para instalarlo simplemente escribimos en el terminal:


$ pip install pygeocoder

Una vez instalado probaremos a obtener las coordenadas de una dirección de ejemplo:


# python
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pygeocoder import Geocoder
>>> results = Geocoder.geocode("Avenida de la Albufera, 78 28038 Madrid")
>>> print(results[0].coordinates)
(40.3949876, -3.6629345)
>>> print(results[0])
Avenida de la Albufera, 78, 28038 Madrid, Madrid, Spain

A parte de las coordenadas, podemos decirle que nos diga sólo el tipo de componente que nos interese:


>>> print(results[0].country)
Spain
>>> print(results[0].postal_code)
28038
>>>
 
También podemos hacer la búsqueda a la inversa y obtener la dirección a partir de las coordenadas:


>>> results = Geocoder.reverse_geocode(40.3949876, -3.6629345)
>>> print(results[0])
Avenida de la Albufera, 78, 28038 Madrid, Madrid, Spain
>>>


Si lo que queremos es validar una dirección, simplemente escribimos:


>>> Geocoder.geocode("Avenida de la Albufera, 78 28038 Madrid").valid_address
True
>>> Geocoder.geocode("Avenida de la Albufera, 780000000000 28038 Madrid").valid_address
false
>>>

e incluso nos hace automáticamente pequeñas correcciones:


>>> result = Geocoder.geocode("Avenida de la Albufera, 78 28038 Madrid")
>>> result.valid_address
True
>>> print (result)
Avenida de la Albufera, 78, 28038 Madrid, Madrid, Spain

Ahora podemos prepararnos un pequeño script para tenerlo siempre a mano:



import sys
from pygeocoder import Geocoder
results = Geocoder.geocode(sys.argv[1:])
print(results[0].coordinates)
# python geolocate.sh "calle montera, 5 madrid"
(40.4173864, -3.703069499999999)

u otro que abra un fichero con varias direcciones y nos devuelva sus coordenadas correspondientes:


#!/usr/bin/python
import sys, re

fichero = open("/home/usuario/pruebas/localizaciones.txt", "r")

TEXTO = sys.argv[1]
for line in fichero:
        if re.match(TEXTO, line):
                from pygeocoder import Geocoder
                results = Geocoder('ZIzZay2GZazynB3NJ4nrUJk6ZaWJRZZkHcoLvn3').geocode(line.split(";")[1])
                print(results[0].latitude)

Si te fijas en el último script hemos añadido una clave para aumentar el número de llamadas al API.

Por último, si estás detrás de un proxy corporativo no olvides especificar set_proxy(proxy) (ej. '10.0.0.1:9999'.)



Fuente: http://code.xster.net/pygeocoder/wiki/Home