jueves, abril 29, 2004

Ollydbg (I)

Leyendo la lista de vulv-dev de Security Focus he dado con varios post que hacen referencia a Ollydbg, un desemsablador para Windows. De su página web destacan las siguientes propiedades (traducción directa):
  • Interfaz de usuario intuitivo, sin comándos crípticos.
  • Análisis de código - reconoce procedimientos, bucles, llamadas al API, tablas, constantes, cadenas, ...
  • Búsqueda en ficheros objeto - Localiza rutinas en ficheros objeto y librerias -.
  • Permite la definición por parte del usuario de etiquetas, comentarios y descripciones de las funciones.
  • Entiende las información de depuración de Borland.
  • Permite salvar parches entre sesiones, escribiendo en el ejecutable y actualizacndo la información de relocalización.
  • Arquitectura abierta - permite completmetos desarrollados por terceros.
  • Sin instalación. No toca el registro ni los directorios del sistema.
Y mucho más, según puede verse en su página web.

martes, abril 27, 2004

Varios enlaces de Latex

Ojeando una noticia de Slashdot, sobre información para usar Latex - un sistema especialmente adecuado para la preparación de documentos científicos y matemáticos -, he recopilado algunos enlaces de interés:

lunes, abril 26, 2004

Vulnerabilidades TCP(II)

Siguiendo con el fallo de TCP, se publicado el documento completo de los problemas del TCP con el flag RST y el tamaño de ventana. La osvd, tiene un completa referencia a de la vulnerabilidad.

sábado, abril 24, 2004

COM en Mac OS X

COM (Component Object Model) es una tecnología de componentes desarrollada por Microsoft. Esa tecnología puede encontrarse también en Max OS X, implementado como parte del Core Foundation Framework. En el MacDevCenter de O'Reilly, el artículo citado antes presenta una interesante introducción a su uso, así como algunos ejemplos.

miércoles, abril 21, 2004

Vulnerabilidades TCP

Durante bastante tiempo se ha sabido que el TCP es vulnerable a un ataque de denegación de servicio que permite terminar las conexiones TCP de manera prematura. Dicho ataque consiste en mandar segmentos TCP con los flags SYN o RST a una máquina, haciendose pasar por la máquina real que debe de mandar el flujo TCP. Esto se debe a la facilidad de falsificar la dirección en el paquete IP y el puerto del segmento TCP. Para que este tipo de ataques tenga éxito el emisor del paquete falso debe de ser capaz de averiguar el número de secuencia del paquete TCP que espera la máquina objeto del ataque. Este es un número de 32 bits, con lo cual, en principio la posibilidad de dar con el ataque es 1/2^32. Sin embargo acaba de publicarse un aviso donde se hace referencia a un artículo de Paul A. Watson publicado en la CansecWest titulado Slipping In The Window: TCP Reset Attacks, donde comenta que la probabilidad de acertar con un número de secuencia elevado es mucho más de 1/2^32, debido a que la implementación realmente acepta una ventana de valores. Las conexiones TCP que duren mucho, por ejemplo las usadas en BGP, pueden verse afectados por este problema. Un ataque a los protocolos BGP, compromete el rutado entre los diferentes sistemas autónomos que forman Internet y puede dar lugar a un ataque de denegación de servicios a escala mundial.

martes, abril 20, 2004

libstdc++, gcc y compatibilidad binaria

Una de las peoreos cosas que te puede pasar en un Linux es un problema con el ABI (Aplication Binary Interface) y el C++. En el desarrollo del gcc se suelen producir cambios en el ABI de C++, que dan lugar a incompatibilidades en función de la versión del compilador que estés usando. Estas incompatibilades se tralaslanda a las librerias dinámicas creadas por estos compiladores y contra las cuales se enlazan los ejecutables, en especial porque el compilador de C++ se apoya en libstdc++ para implementar la libreria estandar de C++ - y normalmente, las versiones de esta libreria no ofrecen compatibilidad binaria. Un ejemplo: MapXtreme 4.7 y Suse 9.0 . El instalador de este programa - puro java - tiene un jre (java runtime enviroment) compilado con el gcc-2.9x. El compilador de C++ usa la libreria dinámica libstdc++v2 para implementar las funciones de la libreria estándar. Sin embargo, Suse 9.0 tiene el gcc-3.0 y usa la libstdc++v3, la cual no es compatible binario con la anterior. La solución es utilizar una libreria de una versión anterior de Redhat o Suse, compilada con dicho compilador, lo cual no deja de ser un malabarismo para salir del paso.

domingo, abril 18, 2004

Comparando binarios con isomorfimos gráficos

Todd Sabbin ha publicado un artículo sobre la comparación de ficheros binarios. Sus utilidades pueden ser varias, quizás la más creativa sea usarla en binarios de un Service Pack o Hotfix de software sin fuentes para ver que parte del binario ha cambiado y así sacar la vulnerabilidad.

Visual C++ Toolkit 2003

Microsoft se apunta a la moda (abierta por Borland hace unos años) de proporcionar de manera gratuita la versión en linea de comandos de los compiladores de sus entornos de desarrollo. En este caso concreto viene incluido con las librerias estándar de C así como las STL. Puede usarse sin problemas junto al SDK de Windows y generar código preparado para correr en el CLR. Parece ser que no hay excesivas restricciones en cuanto su uso, pero habrá que leer la EULA para asegurarse.

miércoles, abril 14, 2004

daapd

DAAP - digital audio access protocol - es el protocolo de red usado por iTunes. Hay gente que ha programado un daemon que lo implementa, lo cual permite montar un servidor en casa que nos sirva streaming hacia el iTunes. Dicho daemon, daapd junto con la implementación opensource de Rendezvous permite montar un servidor de streaming hacia iTunes en un Linux (o sistema Unix).

Parches de Seguridad de Microsoft 14/04/2004

Microsoft acaba de publicar un boletín con referencia a 4 parches de seguridad para toda la familia Windows 2000 / XP / 2003. Aunque sean sólo 4 parches, merece la pena leer la cantidad de fallos que corrigen, en especial el trabajo de auditoria llevado a cabo por la gente de eEye. Mencionar que la mayoría de estos fallos son remotos, lo cual hace pensar que no tardará mucho en aparece nuevos gusanos que las aprovechen.

miércoles, abril 07, 2004

rsync (I)

rsync es una de esas utilidades que sabes que existen, pero que nunca se te ocurren usar para facilitar el trabajo de administrar sistemas. Su principal virtud es que permite realizar copias incrementales con gran facilidad. Entre algunos usos:
  • Creación de espejos.
  • Distribuir ficheros en varias máquinas desde un repositorio central.
  • Realizar copias de seguridad completas e incrementales.
Hay varios servidores de FTP, que ofrecen el servicio rsync, facilitando la labor de montener espejos locales con los ficheros que interesan (por ejemplo ftp.funet.fi o ftp.sunet.se ofrecen dicho servicio) Si se quiere obtener todos los módulos de un servidor rsync, al cual se tiene acceso anónimo puede usarse: rsync -n server::, por ejemplo rsync -n ftp.sunet.se:: nos dará todos los módulos a los cuales se tiene acceso. Para hacer una copia local de un módulo, ejemplo, pub/aminet puede usarse rsync --arv --delete ftp.sunet.se:pub/aminet/ . (ojo con el "/" al final del directorio, es obligatorio para que haga el espejo correctamente. Ejecutando cada cierto tiempo esta orden tendremos un espejo actualizado de los directorios pub/aminet

lunes, abril 05, 2004

WiX Windows Installer XML

La gente de Microsoft acaba de publicar WiX, software que permite la creación de paquetes .msi y .msn (paquetes de instalación de Windows). El código fuente está disponible bajo licencia Common Public License.

OSVDB: Base de datos de vulnerabilidades

OSVDB es una base de datos de vulnerabilidades, creada por voluntarios, que busca tener una información actualizada de todos los problemas de seguridad. Dispone de sindicación vía rss, facilidades de búsqueda en función de tipo de vulnerabilidad, producto, versión, etc

sábado, abril 03, 2004

Como generar un compilador cruzado en un momento<

Bajarse las binutils, gcc y gdb en las versiones que se quieran. En el ejemplo se usan la 2.14 de las binutils, la 3.3.2 del gcc y la 5.3 del gdb. Si queremos que el compilador genere código para h8/300, se instale en /usr/local/h8 y sólo se necesita el compilador de C: bzcat binutils-2.14.tar.bz2 | tar xvf - cd binutils-2.14 ./configure --prefix=/usr/local/h8 --disable-nls --target=h8300-hms make make install export PATH=$PATH:/usr/local/h8/bin gunzip -c gcc-3.3.2.tar.gz | tar xvf - cd gcc-3.3.2 ./configure --prefix=/usr/local/h8 --disable-nls --target=h8300-hms --enable-languages="c" make make install gunzip -c gdb-5.3.tar.gz cd gdb-5.3 ./configure --prefix=/usr/local/h8 --disable-nls --target=h8300-hms make make install Una explicación más detallada en este documento. Este procedimiento puede usarse en Linux o con el entorno cygwin

viernes, abril 02, 2004

Sincronizando los favoritos de los navegadores

Cuando se trabaja con varios ordenadores - casa, oficina, portatil - y varios sistemas operativos - Mac OS X, Linux, Windows -, se produce un pequeño lio a la hora de tener los enlaces favoritos sincronizados. Y lo peor es que ir con el fichero .html a cuestas no es la situación ideal. No existe ninguna manera estándar de almacenar los favoritos de un navegador, que sean fácilmente exportables a otro, y en el mundo descentralizado de redes que se vive hoy en día, tenerlos en algún servidor y que el navegador sea capaz de bajarlos y sincronizarlos sin problemas. Algo parecido a lo que se puede lograr con IMAP en el mundo de email. Existen algunas soluciones como mod_roaming (Sólo disponible para Netscape) o diversas utilidades como bookie (pero sólo para Mozilla) o syncbkmk (pero sólo sincroniza localmente favoritos de Internet Explorer y Mozilla, o los servicios .Mac que ofrece Apple (restringido a Mac OS). Ninguna aporta:
  • Independencia de localización: Los favoritos deberían residir en un servidor accesible de manera segura en Internet.
  • Independencia de navegador: Debería ser usable con cualquier navegador.
  • Posibilidad de trabajar en modo desconectado.