Mentiras, y gordas…

Estándar

Hola a tod@s!

Estaba leyendo el periódico, la gaceta, el 20 minutos y demás publicaciones, como cada día hago en la oficina, de 9:00 a 13:00 eso sí, y como buen “security researcher”, cuando leo la siguiente noticia…

González Sinde gastó 56.404 euros del Ministerio de Cultura en un proyector para la Familia Real

Y digo… Coño, vaya pastizal que se han gastao en el proyector de los cojones! Las porno se tendrán que ver de puta madre no?

En fin, después de meditar durante un buen rato sobre cómo sería ver una porno en un aparato de tales dimensiones y capacidad técnica, estuve footprinteando un poco a ver si podía buscar más info. Y me encuentro con lo siguiente:

Coño que es verdad!

Que se han gastao la pasta en un proyector para los príncipes y mi hermano en paro!

Acto seguido, empecé a pensar sobre el país en que vivimos y en qué clase política nos “dirige”… A lo único que llegó mi perturbada mente es a pensar en improperios varios que ni yo mismo conocía….. Cuando pienso…. CUANTO COSTARÁ EL BICHO ESTE EN EBAY??

Imagen 1.- El bicho…. NUEVO

Link al bicho

Estoooo…. Recapitulemos…..

42.000 pavos de diferencia???? WFT??

Así que se me ocurren varias opciones…..

Opción 1.- Que cinematografía pereira son unos caros de TRES PARES DE COJONES

Opción 2.- Que traer un BICHO de estas características cueste en aranceles e impuestos varios 42.000 pavos menos el beneficio que tendrá que sacar la pobre Cinematografía Pereira

Opción 3.- Que la señora ministra SINDE, a la cual le doy un afectuoso saludo desde aquí, utilice esa diferencia para arreglar los posibles fallos que pueda tener la Web de los premios GOYI.

Opción 4.- Que se hayan equivocado, lo cual dudo mucho, ya que la película Mentiras y Gordas, ideada y guionizada por nuestra querida EX-Ministra Sinde, se otorgase ella misma (cuñao!!), una adjudicación en “ayudas”, por valor de 1 kilotón de euretes….

Cualquier día me compro una guitarra, y me voy a conocer mundo….

Pero qué coño….. Ya tengo una guitarra!!

Salu2!!

A la caza del mutante, parte III

Estándar

Parte I

Parte II

Parte IV

Parte V

Esta vez, vamos a utilizar las herramientas Process Explorer y Handle, de Sysinternals, para la correcta búsqueda de Mutants (MUTEX) en el sistema.

Siempre que un objeto se crea o se abre, una referencia hacia éste, es creada. Esta referencia, llamada HANDLE, estará asociada con un proceso, a través de una tabla llamada HANDLE TABLE.

Process Explorer, permite, entre otras características, el poder visualilzar estas entradas a través de su interfaz gráfica. Para ello, tendremos que activar el panel inferior, y que sólo nos muestre la referencia.

Imagen 1.- Mostrar handle en Process Explorer

Una vez que el panel inferior se encuentra activo, es fácil encontrar las referencias a los MUTANT (MUTEX), tal y como se muestra en la siguiente figura:

Imagen 2.- Mutant visualizado con Process Explorer

Si se necesita automatizar el proceso en forma de línea de comandos, la herramienta Handle, de Sysinternals, permitirá extraer todas las referencias, incluyendo las del directorio \BaseNamedObjcts. Para ello, habrá que pasarle el parámetro –a, para que incluya todos los handle. Si se desea que pregunte por el Security Descriptor, incluiremos también el parámetro –u.

Imagen 3.- Mutant descubierto a través de Handle

En el próximo post, realizaremos esta tarea, utilizando para ello volatility framework, en un análisis offline.

Saludetes!

 

A la caza del Mutante. Parte II

Estándar

Parte I

Parte III

Parte IV

Parte V

La forma más sencilla de buscar mutantes (MUTEX) en nuestro sistema y en tiempo real, es utilizando las herramientas de SysInternals. Para ello, la primera herramienta que utilizaremos será WinOBJ, la cual nos permitirá visualizar, de forma jerárquica, el manejador de objetos (Object Manager) de Windows. Cada recurso de Windows, se encontrará catalogado en un espacio de nombres. Un recurso puede ser la memoria RAM, una entrada de registro o un directorio, por ejemplo.

Cada objeto administrado por el Object Manager tendrá una estructura determinada. Bajo esta estructura, se encontrará un nombre que identifique al objeto en sí (Object Name) y un Security Descriptor, el cual aportará información sobre los derechos de acceso del objeto.

Los MUTANT (MUTEX),  entre otros objetos, se encuentran catalogados en el directorio (Object Directory) \BaseNamedObjects. Dentro de este directorio, podremos realizar consultas gráficas para encontrar fácilmente Mutex maliciosos.

Imagen 1.- Acceso a objetos MUTANT a través de WinObj

A través de esta utilidad, se pueden realizar consultas al Security Descriptor, para conocer qué derechos de acceso y dueño, tiene este objeto.

Imagen 2.- Permisos de Objeto MUTANT

En la próxima entrega nos centraremos en la búsqueda de estos objetos a través de otras herramientas de Sysinternals como Process Explorer o bajo línea de comandos con Handle.

Referencias

Object Manager (PDF)

Object Manager (PPT)

Object Manager (Wikipedia)

A la caza del Mutante. Parte I

Estándar

Parte II

Parte III

Parte IV

Parte V

Un mutante, es como Windows llama de forma común a un Mutex. Un mutex ayuda a la hora de acceder a los recursos del sistema, o como mecanismo que ayude a que sólo una instancia de la aplicación se encuentre corriendo en el sistema.

Las aplicaciones pueden crear mutantes con un nombre específico o con un nombre en particular. Si una segunda instancia de la aplicación es ejecutada en el sistema, ésta intentará crear un mutex sin éxito, lo cual obligaría a la aplicación a terminar.

A menudo este tipo de técnicas son utilizadas por malware de diverso tipo para prevenir múltiples infecciones de una misma cepa. Y a menudo también nos podemos encontrar con aplicaciones que crean Mutex con la finalidad de proteger al sistema operativo. Entre los diferentes mecanismos de protección que puedan ofrecer, uno de ellos es la creación de Mutex a priori utilizados por Malware. Con esto intentan prevenir que algún tipo de virus pueda ejecutarse bajo esta técnica.

Utilizar la búsqueda de Mutex maliciosos como única técnica de detección de Malware es algo muy pobre, debido a que es muy fácil modificar este parámetro. Una prueba de ello lo tenemos en el configurador del archiconocido Poison Ivy.

Imagen 1.- Nombre de Mutex generado automáticamente por Poison Ivy

Es por ello que, unido a mi morbosa curiosidad, y dado el incremento de este tipo de técnicas en la programación de Malware, que dedicaremos 5 entradas sobre las técnicas y herramientas existentes para buscar con éxito mutantes (MUTEX) creados por aplicaciones.  Para ello, iremos realizando las operaciones desde lo más fácil, a lo más difícil, siempre desde mi punto de vista. La búsqueda de Mutex las realizaremos desde el punto de vista de:

  • Herramientas de Sysinternals (Análisis en Vivo)
  • Volatility Framework (Análisis Offline)
  • WinDBG (Debugging Tools de Windows) (Análisis Offline)

Nos vemos en la segunda parte!!

Defconjonado

Estándar

Hola a tod@s!

El viernes sobre las 8 de la mañana, el Maligno me dio, si cabe, la noticia que más me ha acojonado a nivel laboral en mucho tiempo…. Voy de ponente a la Defcon en las Vegas!! Como diría Marty Mcfly… Esto es muy fuerte Doc!!

En cuanto pude me fui a casa, abrí el portátil, miré el correo…. Y allí estaba…..

Congratulations! DEF CON is pleased to accept you as a speaker at DEF CON 19. You are one of the first to be accepted, so your speaker page will not be up immediately, but we do intend on announcing your acceptance as soon as possible

La charla que vamos a impartir estará relacionada con Citrix y Terminal Server, y de cómo han ido evolucionando los ataques sobre este tipo de plataformas.

La entrada ya está publicada, así que… ya es oficial!

La verdad es que todavía estoy intentando asimilar todo esto, y empezando a preocuparme por elementos que el día de la conferencia serán indispensables, como el Inglés!!

La mamona del Maligno dice que está “deseosa ” de verme “cantar” en andalú, así que este fin de semana he recopilado toda la información sobre cursos de inglés, documentales en V.O., programas educativos para niños, etc… Así que ahora, a ponerse las pilas cohóne!

Por lo demás, un sueño que parece se está cumpliendo. Ahora a ver como se desarrolla toda la historia hasta el día del “concierto”….

Saludos a tod@s!!

 

 

 

parseando el fichero consolidated.db

Estándar

Hola a tod@s!

Como ya conoceréis, Iphone, al igual que otros smartphones, guarda información geográfica sobre los puntos en donde ha estado “el móvil”. Entre toda esta información, también se guarda la información de los puntos de acceso WI-FI que se encuentra en “el camino”, incluyendo su MAC.

Imagen 1.- Fichero Consolidated.db

En Seguridad Apple tienen un artículo bastante interesante sobre las aplicaciones existentes en Windows, las cuales extraen esta información y las pintan en Google Maps.

En el curso de Análisis Forense de dispositivos móviles que estamos impartiendo Juan Luis García Rambla y un servidor, y en donde nos estamos peleando con una serie de dispositivos, incluyendo el Iphone, estamos analizando esta información, junto con otras muchas más.

Uno de los puntos que tenemos que tocar, es la creación de herramientas simples que consigan extraer la información necesaria en alguno de los puntos de recogida de información.

Para ello, hemos preparado algunas demos con Python. Una de ellas, es la creación de dos scripts, los cuales extraerán y pintarán en Google Maps la información del fichero Consolidated.db de un Iphone 4.

El script lo único que hace es extraer los campos latitude y longitude de las tablas CellLocation y WifiLocation.

Imagen 2.- Campos WI-FI

Para ello, hemos utilizado un Wrapper llamado PyMaps, el cual pinta el mapa añadiendo las coordenadas extraídas previamente del fichero.

Los scripts no toman ningún parámetro como entrada, y únicamente tendremos que poner en un directorio creado previamente los siguientes ficheros:

Para el script GetCoords.py, una vez lanzado, éste devolverá un fichero HTML. Una vez abierto el fichero, podremos ver algo parecido a esto:

Imagen 3.- Extracción de coordenadas

En el caso del script GetWifi.py, una vez lanzado, éste devolverá un fichero HTML. Una vez abierto el fichero, podremos ver algo parecido a esto:

Imagen 4.- Extracción de coordenadas Wi-Fi

El código de los scripts….

GetCoords.py

#Horrible Script para extraer las coordenadas del fichero Consolidated.db
#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
#Horriblemente codeado por Silverhack
import sys, sqlite3
from PyMaps import Map, PyMap
# Creamos un mapa
NewMap = Map()
NewMap.zoom = 3
connection = sqlite3.connect("consolidated.db")
cursor=connection.cursor()
cursor.execute("SELECT Latitude,Longitude from CellLocation")
for row in cursor:
 print "La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]))
 </p>
     # Latitud y longitud
     # Importamos de la BD consolidated a las variables
     # que posteriormente pasaremos al Script PyMaps

 latitud= str(row[0])
 longitud = str(row[1])

  # Insertamos codigo html
 pointhtml = "I see you..."

     # Anyadimos el punto al mapa
 point = (latitud, longitud, pointhtml)

 NewMap.setpoint(point)
 gmap = PyMap(key="clave", maplist=[NewMap])

 mapcode = gmap.pymapjs()
showhtml = gmap.showhtml()
print showhtml
file = open('Coordenadas.html', 'w')
file.writelines(showhtml)
# Cerramos el fichero
file.close()

GetWifi.py


#Horrible Script para extraer las coordenadas WIFI junto con su MAC del fichero Consolidated.db
#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
#Horriblemente codeado por Silverhack
import sys, sqlite3
from PyMaps import Map, PyMap
# Creamos un mapa
NewMap = Map()
NewMap.zoom = 3
connection = sqlite3.connect("consolidated.db")
cursor=connection.cursor()
cursor.execute("SELECT MAC, Latitude, Longitude from WifiLocation")
for row in cursor:
 print "La MAC es %s, La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]),str(row[2]))
 

     # Latitud y longitud
     # Importamos de la BD consolidated a las variables
     # que posteriormente pasaremos al Script PyMaps

 latitud= str(row[1])
 longitud = str(row[2])

  # Insertamos codigo html
 pointhtml = str(row[0])

     # Anyadimos el punto al mapa
 point = (latitud, longitud, pointhtml)

 NewMap.setpoint(point)
 gmap = PyMap(key="clave", maplist=[NewMap])

 mapcode = gmap.pymapjs()
showhtml = gmap.showhtml()
print showhtml
file = open('WiFi.html', 'w')
file.writelines(showhtml)
# Cerramos el fichero
file.close()

 Para la ejecución de los scripts, tan sólo tendremos que utilizar Python 2.6 y pysqlite.

Saludos!

Volatility Framework Installer

Estándar

Hola a tod@s!!

Hace tiempo que salió al público el estupendo trabajo de muchos investigadores que dio como resultado la herramienta Volafility Framework.

Los que me conocéis, sabéis que yo llevo dando por saco con el tema de la memoria RAM desde hace bastante tiempo. Gracias a Dios, que conforme más tiempo pasa, más información sobre este tema hay.

Yo mismo he dado algún que otro Webcast en Microsoft sobre este mismo tema, he hablado en las FIST, y en algún que otro Asegur@IT.

El Framework está escrito en su totalidad en Python. En su día, para hacer funcionar la herramienta, tanto en Windows como en Linux o MAC, tan sólo hacía falta instalar Python y vualá! Ya teníamos el Framework en funcionamiento.

Hoy día la cosa ha cambiado bastante. Existen multitud de Plugins que hacen de la herramienta una tool muy poderosa para analizar por completo la memoria RAM, pudiendo ahorrar costes en tiempo en un análisis forense corporativo o por proyecto. E incluso por diversión!!

El problema para gente que está empezando en esto, es que a día de hoy existen tantos plugins y dependencias, que instalar la herramienta desde cero, y dotarla de una funcionalidad aceptable, puede conllevar una inversión de tiempo importante.

Esto lo pensó en su día Jamie Levy (aka Gleeda), colaboradora habitual en el desarrollo de Volatility Framework, y desarrolló, entre otros impresionantes plugins, uno con la posibilidad de descargar todos los plugins de un tirón. El script para la versión 1.4 de la herramienta, e instalación bajo Linux, lo tenéis disponible aquí.

Yo he realizado mi particular script (en batch! con dos cojones!! jaja) para la total instalación de Volatility Framework, junto con todas sus dependencias. Entre las “capacidades” del Script de instalación se encuentran los siguientes puntos:

  • Descarga e instalación de Python, MinGW
  • Descarga e instalación de YARA (Gracias Hispasec!!), PYGame, PIL (Python Image Library), Distorm3
  • Descarga e instalación de Volatility Framework 1.3 (Versión estable)
  • Descarga e instalación de Plugins válidos para la versión 1.3
  • Compilación automática e instalación de diversos plugins
  • Procesado de Logs de todo lo que se descarga
  • Procesado de HASH (MD5 y SHA1) de todo lo que se descarga
  • Inclusión de rutas en PATH para dotar de máxima funcionalidad
  • Inclusión de shell de comandos con el botón derecho del ratón para facilitar el análisis (Open cmd Here)

Ahora mismo, el script es totalmente funcional para instalarlo en Windows XP/Vista/7, y, como hoy en el FTSAI nos vamos a “pelear” con la memoria y todos sus componentes, me ha parecido buena idea colgarlo por aquí.

En su día, hablando con Lympex de opensec.es, éste me pasó una versión que desarrolló para Linux, la cual todavía no he puesto en el proyecto, debido a que tiene que actualizarse. Me ha prometido que cuando la tenga funcional la colgará en el proyecto.

El proyecto está alojado en Google, y ahora sí…. No tienes excusa para seguir ampliando conocimientos en materia Forense, porque documentación hay, y facilidades también!!

http://code.google.com/p/volatility-installer/

Esta semana he empezado a realizar el mismo script en PowerShell, debido a que como batch tiene muchas restricciones, he tenido que “tirar” de herramientas de terceros, como 7zip, wget y HashMyFiles para hacerla totalmente funcional. El script es muy sencillo de utilizar y no requiere parámetros. Sólo doble clic, y a jugar….

Nota: Tanto Python, como las dependencias, junto con MinGW, se instalan de manera interactiva con el usuario. Las instalaciones son del entorno Next–>Next, menos MinGW, que necesitaremos marcar las opciones de MAKE, más el compilador. Este paso de “interacción” es necesario, ya que de manera desatendida no se compilan bien algunas bibliotecas en Python bajo Windows.

Doy por supuesto (y por invitado!) que colaboraciones y ayudas, serán muy, pero que muy bien recibidas…..

Update.- Chema, de opensec, ya me ha pasado el script de instalación y está subido al proyecto. Su script soporta la instalación de Volatility Framework en los sistemas Arch, Debian y FreeBSD!

Buen fin de semana a tod@s!!

SYSTEM, causa y efecto IV de IV

Estándar

Artículos anteriores

https://windowstips.wordpress.com/2011/01/10/system-causa-y-efecto-i-de-iv/

https://windowstips.wordpress.com/2011/01/11/system-causa-y-efecto-ii-de-iv/

https://windowstips.wordpress.com/2011/01/17/system-causa-y-efecto-iii-de-iv/

Hola a tod@s!

En este último post, nos centraremos en cómo la cuenta SYSTEM se comporta a la hora de ser utilizada de forma interactiva.

Para ello, y en el banco de pruebas que hemos montado, realizaremos una elevación de privilegios, tal y como se ha comentado ampliamente por la Red. Tenéis artículos con formas de realizar este tipo de elevación en los siguientes links:

http://vtroger.blogspot.com/2005/09/mas-vale-quedarse-corto.html

http://www.securitybydefault.com/2010/12/bienaventurados-los-que-no-ven-porque.html

Al realizar el truco, (que no vulnerabilidad) y cambiar alguno de los componentes de accesibilidad por una Shell de Windows, ésta se iniciará de forma interactiva y podremos interactuar con la misma. Entre las “curiosidades” iniciales que nos encontraremos, podremos enumerar las siguientes:

  • El panel de control, no funciona
  • El explorador de Windows, junto con el escritorio, funciona de forma parcial
  • La Shell finaliza al cabo de un tiempo

El acceso total al sistema, lo tenemos única y exclusivamente a través de la línea de comandos.

Esta “irregularidad” viene dada por culpa de las claves de registro que se asocian a cada perfil de usuario.

Cuando un usuario se crea en el sistema, éste recibe un perfil de usuario. La cuenta de sistema, es decir, la cuenta SYSTEM, precarga en  memoria la clave HKEY_LOCAL_MACHINE, y el usuario que trabaja de forma interactiva en el sistema cargará a su vez la clave HKEY_CURRENT_USER, la cual se carga a través de un fichero en el perfil de usuario, que se llama NTUSER.DAT.

Si realizamos una comparación de las claves de registro que crea en el perfil la cuenta SYSTEM, con las que se crean cuando iniciamos sesión con una cuenta de usuario normal, podremos ver ciertas características que no se encuentran en el perfil de SYSTEM.

Si analizamos esas claves con alguna herramienta que permita abrir este tipo de ficheros (NTUSER.DAT), podremos ver ese tipo de diferencias, y contemplar qué claves carga la cuenta SYSTEM cuando inicia sesión en el sistema.

Para el desarrollo de este artículo, se utilizará la herramienta Windows Registry Recovery, la cual nos permite visualizar este tipo de ficheros de forma amistosa y rápida.

Imagen 1.- Claves cargadas por el usuario SYSTEM en Windows 7

Como se puede ver en la anterior imagen, la cuenta SYSTEM carga lo justo y necesario para realizar su trabajo, sin cargar más de lo necesario.

Imagen 2.- Claves cargadas por un usuario típico en Windows 7

En cuando a la imagen anterior, se puede visualizar que un usuario típico, carga lo que necesita para poder interactuar con el sistema. Algo lógico por parte del sistema operativo, ya que estos usuarios son los que están diseñados para trabajar de manera interactiva con el sistema.

Por otra parte, el usuario SYSTEM, opera desde la instancia HKEY_USERS\.DEFAULT. Esta instancia, es en realidad un alias de HKEY_USERS\S-1-5-18, instancia que identifica al SID de la cuenta SYSTEM. Al inicializar la elevación de privilegios, y siempre que no se inicie otro usuario en el sistema, la cuenta SYSTEM, utilizará una instancia que se cargará en 3 sitios diferentes. La ruta de carga es la que se muestra a continuación:

  • HKEY_CURRENT_USER
  • HKEY_USERS\.DEFAULT
  • HKEY_USERS\S-1-5-18

Para verificar lo anterior, desde la Shell de comandos arrancada cuando se realiza la elevación de privilegios, se puede crear una clave en HKEY_CURRENT_USER. Esta clave, se mostrará a su vez en las claves HKEY_USERS\.DEFAULT y HKEY_USERS\S-1-5-18.

Imagen 3.- Instancias cargadas por el usuario SYSTEM

Imagen 4.- Instancias cargadas por el usuario SYSTEM

Estas instancias, a su vez, contienen la información para interactuar con el sistema, es decir, contienen las claves de registro necesarias para lanzar un escritorio interactivo, pero tienen pequeñas diferencias. Estas diferencias, analizadas con cualquier herramienta de monitoreo, muestran como a la hora de lanzar el escritorio interactivo, éste falla al intentar encontrar ciertas claves de registro, necesarias para mostrar iconos, accesos directos, y rutas de lanzamiento a las aplicaciones. El efecto final es que el sistema operativo es capaz de “pintar” el escritorio, pero al no encontrar rutas a las aplicaciones, ni accesos directos que llamen a un programa, éste se queda “a medias”.

Imagen 5.- Rutas no encontradas

 

Como habréis podido observar a lo largo de estos cuatro artículos, es que una elevación de privilegios en Windows implica el conocimiento de muchos factores a la hora de lanzar un posible ataque, y las posibles consecuencias de que este funcione, o no…

Un saludo a tod@s!

Próximos laboratorios in the World

Estándar

Hola a tod@s!!

La semana que viene vamos a estar impartiendo unos Virtual HOls sobre seguridad y redes, los cuales os pongo por aquí!

Los hacemos bajo una plataforma Virtual, así que cada asistente, tendrá su propio laboratorio para “jugar”…. 😉

VHOL-SEG35 Análisis Forense de Red (15/03/2011)

Este lab es muy parecido al que se dió en la Rooted, y se tratarán temas de diverso interés, como por ejemplo análisis de VOIP y VPN. El temario completo lo tenéis en la siguiente dirección:

http://www.informatica64.es/DetalleVHOl.aspx?id=090010619

VHOL-SEG36 Prepara tu empresa ante un forense (16/03/2011)

En este laboratorio se expondrán temas relacionados con LOPD, la problemática que puede existir en una empresa ante la recogida de cierta información, y cómo se puede solventar aprovechando la infraestructura existente. El guión completo lo tenéis en la siguiente dirección:

http://www.informatica64.com/detallevhol.aspx?id=090010620

VHOL-WIN73 MS WS SVR 2008 R2. IPV6 (16/03/2011) 2 Tardes

En este laboratorio, se podrán ver las soluciones que podemos disponer para implantar soluciones basadas en IPV6, o cómo podemos implantar escenarios en los que convivan varios tipos de pilas tcp/ip. Molto Interesante!!
El guión completo lo tenéis aquí:

http://www.informatica64.com/DetalleVHOl.aspx?id=160010622

VHOL-SEG37 Análisis de memoria RAM en entornos Windows (17/03/2011)

En este laboratorio, se expondrán las técnicas y metodologías a emplear en el caso de que se necesite recoger y analizar volcados de memoria en sistemas Microsoft Windows.

http://www.informatica64.com/DetalleVHOl.aspx?id=090010621

Y de momento eso es todo. Nos vemos la semana que viene!