Andando como ando liado estudiando los buffer overflows, integer overflows y demas hierbas (que diria Rafa Vargas) era inevitable que acabase en alguna parte del codigo del gcc, compilador que estoy utilizando para los ejemplos.
Leyendo el articulo Big Loop Integer Protection del numero 60 de la Phrack me he encontrado con que el autor menciona la existencia de una funcion, rest_of_compilation. Sin creermelo mucho he tenido que ir al svn de gcc y comprobarlo por mi mismo.
¡Y ahi esta! En el fichero toplev.c, en una linea indeterminada, con un comentario antes de la funcion que dice que a rest_of_compilation la llama finish_function. Con dos……….. Me se de mas de uno que ahora mismo debe de estar revolviendose en su silla o corriendo al cuarto de baño a lavarse los ojos con abundante agua.
/* This is called from finish_function (within langhooks.parse_file) after each top-level definition is parsed. It is supposed to compile that function or variable and output the assembler code for it. After we return, the tree storage is freed. */ void rest_of_compilation (tree decl)
En fin, cosas estas del S.L., como la cancion de Guadalinfo, todo un ejemplo de ritmo, mensaje y gusto musical.
P.D. Esto para nota, unas lineas mas abajo hay una llamada a goto…
A veces me siento con ganas de escribir una entrada y a los pocos segundos se me pasa o creo que eso que hace 10 segundos me parecia tan interesante para contar es algo que a la gente no le va a interesar. Puede que tenga razon o que me equivoque con mi concepto de blog… o las dos.
Hoy voy a estar haciendo un esfuerzo durante unos minutos y voy a intentar rellenar dos o tres parrafos mas con algunas cosas que en algun momento he creido interesantes contar por aqui:
- Si, se que UACTwitter no actualiza todo lo que deberia. Es un poco aburrido (si, de nuevo, soy muy perezoso) tener que aceptar el UAC que se lanza al arranque del programa en cada reinicio ademas de que no esta muy afinado el proceso de deteccion de programas hijos lanzados por la aplicacion que requirio elevacion. Estas navidades tengo previsto arreglarlo asi como convertirlo en un servicio de Windows para que se arranque solo al inicio del sistema.
- He desarrollado una aplicacion llamada GORDA (Guard Of Replacement Desktop Apparience). Es una aplicacion de uso propio y que me permite que al bloquear el ordenador con Windows + L se haga una captura automatica de la pantalla, se guarde y se lance el salvapantallas con esta imagen. ¿Para que? Bueno, tampoco viene al caso, pero son de esas cosas que me gusta investigar aunque de primeras no tenga una aplicacion obvia. Lo realmente importante es la manera de capturar el evento de bloqueo de pantalla:
SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch); ... protected void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) { if (e.Reason == SessionSwitchReason.SessionLock) { // Todo tuyo, campeon! - Actualmente estoy dando un curso de seguridad web los viernes por la tarde. Estamos intentando ir aprendiendo mientras sacamos pruebas de la pagina Bright-Shadows.net. Los alumnos se han creado su propio perfil y van compitiendo (de manera sana, espero) entre ellos. Yo tambien tengo creado un perfil desde hace un monton de años de cuando empece a aprender cosas de estas de seguridad.
- Esto no tiene nada que ver con la seguridad, pero ayer me hicieron el mejor regalo de navidad de este año. Si, yo tambien se que es un poco pronto, pero ayer me regalaron una copia de la version extendida de Jay y Bob el Silencioso contratacan, penultima pelicula de Kevin Smith que me quedaba por tener original. Muchas gracias Rosario, muchas gracias Miguel Angel.
- Hace poco publicamos una nueva version del Web Browser Fingerprinting con algunas mejoras, como el soporte definitivo y correcto para cualquier version de Firefox 2, añadidos algunos User-Agent, etc. Pero como siempre tiene que haber algun desaprensivo aburrido que se ha dedicado a entrar con un Internet Explorer 4 desde un Windows 2000. Por si por casualidad tambien esta tan aburrido como para leer esto (que ya empezaria a preocuparme) que sepa que le agradezco mucho el gesto, pues asi aprendere a programar un filtro de IPs que evite que nadie pueda entrar mas de N veces en M minutos.
- Queria compartir aqui algunas fotos curiosas que he capturado con mi movil de, sobre todo, cacharros informaticos fallando, pero ni el lector de SD me reconoce la tarjeta ni el Bluethoot del portatil funciona, asi que me quedo con las ganas hasta que pruebe a sacarlas en otro ordenador. A veces la gente me mira raro cuando me quedo mirando como arreglan una maquina expendedora de billetes de Metro.
- Y con este septimo punto contesto al meme de Mary, no se si es lo que esperaba o no, pero ni me gustan los memes ni me gusta escribir por obligacion, pero hoy podeis darle las gracias a ella porque debido a su nominacion me he animado a escribir por aqui.
Un saludo a todos y a ver si escribo algo antes del año que viene…
Porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, pr0n, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno, porno… Bueno, ya hemos dicho suficientes veces porno en el articulo como para dedicarnos a comentar el resto de cosas.
Hoy cenando por Malaga no he podido evitar escuchar a dos personas mayores proximas a la jubilacion charlando sobre que a uno de ellos su hijo iba a regalarle un ordenador por Navidades y que él no pensaba que se fuese a enganchar al tema del chat, si no que lo usaria para “viajar a traves de Internet”, para conocer datos historicos sobre monumentos, detalles y curiosidades sobre zonas geograficas, etc. Hoy me gustaria compartir aqui cosas para las que he usado internet desde que lo use por primera vez mas o menos sobre el año 1996 o 97 para acceder a una de las primeras versiones de Yahoo.
Recuerdo entrar en la web de algun museo italiano y ver una visita 3D mediante algun plugin propietario para Internet Explorer, recuerdo entrar al chat de terra para intentar charlar con alguien de EEUU y explicarle la receta del gazpacho, recuerdo conectarme al IRC a algun canal de hacking y ver una direccion de un FTP publico en el topic de un canal; conectarme y pensar que aquello era algo absolutamente ilegal y cerrar el WS_FTP del tiron…
Hablando de seguridad (si un FTP publico puede ser considerado seguridad), recuerdo usar internet desde hace ya unos cuantos años es para leer cosas sobre seguridad. Recuerdo bajarme distintas ezines: SET, 7a69, pharck y sobre todo JJF. Imprimirlas y leerlas durante tardes tirado en mi cama, sin enterarme de nada hasta que poco a poco todos esos conceptos iban tomando forma en mi cabeza, enlazandose y relacionandose.
Recuerdo conectarme al IRC hasta las 12 de la noche, ganarme broncas en casa por quedarme hasta tan tarde (mejor no miramos la hora de publicacion de esta entrada…), las charlas en canales privados, el modo moderado, los kicks, los bans… Recuerdo el participar en concursos como iZhal o Boinas Negras con mayor o menor gloria… Recuerdo hacer amistades que aun conservo y valoro como de las mas importantes de mi vida.
Recuerdo tantas cosas de aquellos años donde viviamos a la espera de un festivo nacional para poder tener internet todo el dia sin tener que preocuparnos sobre la tarifa plana que podria escribir durante horas anecdotas y anecdotas sobre cosas que aprendi gracias a internet, pero ya es tarde y un servidor esta viendo una cama detras suya que llama con impaciencia. Y vosotros, ¿que recordais de esos primeros años de internet?
(tardara un poco en cargar…)

Visto en la pagina web de un banco nacional… ¡La pobre mujer tambien tiene que comer!
Hoy no voy a hablar de mi, voy a dejar que la gente lo haga de nuevo y es que me hacen gracia (y me alagan) las descripciones que alguna gente pone de mi cuando me enlaza desde sus blogs.
- La que conozco desde hace mas tiempo y a la que tengo mas cariño es a la de edinne: “Pedro, mi hacker preferido”. (Ya claro, como si tuvieses muchos
) - Elaine dice al enlazame que es la “Pagina personal del gran Pete”, supongo que se referira a la altura…
- Como Pedrito siempre me enlaza Liryel, aunque no creo que tenga la misma percepcion del tamaño de los objetos que Elaine…
- Un alumno de un curso, Jose, me ha enlazado desde su blog conjunto (con su respectiva) con la descripcion de: “Blog de mi profesor del curso de hacking, un friki, pero un crack….jejeje”. Se agradece
Y ya esta, post de relleno para manteneros atentos que a veces me da por escribir cosas medio interesantes y os las podeis perder
Hoy os voy a hablar de una de las nuevas caracteristicas del ¿nuevo? SP1 de Visual Studio 2008 y mas concretamente del .Net Framework 3.5 SP1, de algo que no viene documentado en sus novedades.
Si estais al tanto de mis instalaciones, sabreis que hoy me puse a instalar el SP1 de Visual Studio 2008 para probar las extensiones de Silverlight que lo requerian (¿Seguridad en Silverlight dentro de un tiempo por este blog?) y al terminar de instalar me pidio reiniciarse a lo cual accedi gustoso pues ya era hora de volver a casa
Al arrancar de nuevo mi ordenador y esperar a que terminase la configuracion de las actualizaciones abri el Firefox y de repente me he encontrado con que se me abria la ventana de extensiones con el mensaje de: 1 nueva extension actualizada. De primeras me he quedado un poco sorprendido porque no recordaba haber instalado ninguna, pero todo puede ser porque mi Firefox es un compendio de extensiones de todo tipo, pero repasando la lista de extensiones instaladas me he encontrado con la extension que da nombre al post.
Repasandola un poco por encima se conoce que la extension lo que hace es permitir la funcionalidad de ClickOnce que ya esta disponible en Internet Explorer y que permite instalar aplicaciones .Net desde el propio navegador. Ademas añade algo que venia haciendo IE tambien desde hace mucho tiempo: informar al servidor que se visita sobre la version del framework .Net que tenemos instalada. Hasta aqui todo normal, solo que yo soy un poco friki y me he puesto a enrredar…
La extension se instala en el path “C:\Windows\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension” y contiene, como buena extension de Firefox, dos carpetas: chrome y defaults.
Dandome una vuelta por la carpeta chrome (tip: el fichero jar lo podeis descomprimir con cualquier descompresor de ficheros zip) he visto algunas cosas interesantes:
- La clave del registro de donde se trae la informacion sobre las versiones del CLR instaladas en la maquina: “SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\5.0\\User Agent\\Post Platform” ¿Util para un analisis forense?
- Inferencia de la anterior: Desde extensiones de Firefox se puede acceder al registro y ejecutar programas (contenttype.js, linea 30). ¿Se podra hacer esto desde un js cualquiera? ¿Habra alguna manera de aprovecharlo para mi Javascript Web Browser Fingerprinting?
- En la carpeta locale hay un fichero temp.cmd con la siguiente linea: set editor=”C:\Program Files\SC UniPad\up.exe”, lo cual nos indica que para la creacion de la extension (o al menos en parte) se ha usado el editor SC UniPad, especializado en la creacion de texto UNICODE.
- El fichero temp.cmd.swp nos da aun mas informacion, pues no dice:
- ¿Eso que aparece en primera linea es una referencia a VIM 6.3?
- Parece que el usuario se llama Erichar.
- La maquina desde la que se programo parece llamarse ERICHAR-DEV.
- La ruta en la cual se programo fue g:\dd1\src\wpf\src\Host\Mozilla\Extension\
- Parece que el disco duro tiene “108,257,476,608 bytes free”, o lo que es lo mismo, un poco mas de 100 Gb.
[Siento la parrafada en ingles si sueles leer este blog en español pero el tema a tratar requiere que use la lengua inglesa para alcanzar a la mayor audiencia posible / If it's your first time reading me, understand that I'm from Spain and english isn't my primary language]
The Javascript Web Browser Fingerprinting is a web browser error-based technique that can tell us what is the browser that someone is using without checking his (probably) User Agent modified value.
The main goal of this technique can be detect real browsers to launch concrete exploits to the visitor of a malware website but it can be used to make more accurate visitors stats reports too.
In the PoC that I made I’m base on two different errors types. First of all I try to access with an XMLHttpRequest to the about:blank page, who has to be denied from the navigator render engine. It causes a different exception in every navigator engine and parsing the error code I’m able to determine between major versions of web browsers.
Actually with this code I can detect these browsers:
- Mozilla Firefox 2.0
- Mozilla Firefox 3.0
- Internet Explorer 7.0+
- Internet Explorer 6.0
- Opera 9.50+
- Safari 3
- Google Chrome
At the code you will see I’m doing a try catch block who parses the exception object message when it’s a version of Mozilla Firefox, Opera, Safari or Google Chrome. It’s because doesn’t mind which is your language of your browser, they will throw internally an English error and I can parse it.
If we start to talk about Internet Explorer versions we have to move to special properties of the exception object because they use a localized error message, but IE has some properties that other browsers doesn’t have, so I can use it to determine IE version.
When two browsers have the same navigator engine (like Safari and Chrome) I do another approach to determine which browser is it. Its base on error launched when a variable isn’t defined in a Javascript code and how the different browsers threat it.
I was working (and I’m currently doing too, Mozilla Firefox 3.1 will be the next) at this idea from early June of this year and I was waiting too long to publish because I was waiting that it was approved at Conferencia Ibero-Americana WWW/Internet 2008. At the date I started working of this I couldn’t find any information about this at internet, but this week I found that in the next release of Metasploit they are going to introduce a similar approach to the idea.
As you can see at the SVN they publish a code that made some similar tricks like I do but with some differences. This code only detects Firefox and IE but all of this in a more accurate version approach because they are focused in the exploits they have, but in the last lines of code they use the navigator object, something that I’m trying to avoid. I think I’ll be great to combine both codes to make a more powerful Javascript Web Browser Fingerprinting.
Finalmente hace un rato he terminado de programar la aplicacion que postea automaticamente los eventos que requieren elevacion a Twitter (http://twitter.com/UAC).
El codigo fuente del programa lo teneis para descargar y modificar para crear vuestro propio bot posteador en Twitter, pero acordaros de activar los eventos de auditoria de Windows Vista para la creacion de procesos.
Y si quereis enteraros de que iba todo esto al principio pasaos por el blog que cree: An UAC Chronicle.
Actualizacion: Ahora el plugin tiene algunas mejoras en lo que a UX se refiere. Si habeis usado la version anterior las notareis. Estoy pensando en hacer una version que funcione como servicio de Windows, pero eso ya para el fin de semana si acaso…
