31 enero 2011

"Este mensaje se auto-destruirá en cinco segundos", hace tiempo que ésta frase de película ha pasado a ser una realidad gracias a algunos servicios de comunicación, cuyos mensajes solo pueden ser leídos una vez.

Uno de ellos es Privnote, una web en la que guardamos un mensaje, se genera un link, y al ser abierto por el receptor se muestra el mensaje a la vez que se destruye y el link es dado de baja. Aquí tenéis una breve explicación técnica de cómo funciona escrita por el autor.

Sin quitarle méritos a tan genial idea, para usarlo tenemos que depositar nuestra confianza en el servicio de un tercero que no sabemos cómo está funcionando por debajo, y que, si pensamos de una forma un poco escéptica, puede estar aprovechándose de alguna manera. Por ésto mismo, llevaba tiempo dándole vueltas a la cabeza para montar mi propio "privnote" personal.

El funcionamiento del servicio es sencillo y además teniendo una pequeña descripción de cómo funciona podemos mejorarlo.

Al final, lo que ha salido como alternativa es: https://notes.pentbox.net/

La web trabaja de la siguiente forma:
  1. La nota es subida por el usuario.
  2. Se genera un ID único de 25 caracteres alfanuméricos.
  3. Se genera una clave de cifrado de 32 caracteres alfanuméricos que mezcla mayúsculas y minúsculas.
  4. La nota se cifra con la clave usando Rijndael de 256 bits en modo CBC y se almacena en un fichero del servidor.
  5. Se guarda el ID y la clave en una base de datos. Antes de almacenarse, la clave se cifra con un doble SHA1.
  6. Se le proporciona al cliente un link que contiene el ID y la clave.
  7. Cuando el receptor visita el link se hace un doble SHA1 de la clave y se comprueban ID y clave en la base de datos.
  8. Si coinciden se descifra, muestra y elimina el mensaje, además de eliminar ID y clave de la base de datos.

¿Cuáles son las ventajas de este modelo?

  • El administrador del sitio no puede ver las notas, ya que la clave de cifrado está almacenada con un doble SHA1.
  • Si se comprometiera la base de datos, las notas seguirían a salvo ya que se encuentran en el servidor web. En caso de comprometerse el servidor web o ambos, todo seguiría a salvo, ya que un atacante no puede recuperar las claves de cifrado, al igual que el administrador del sitio.
  • En caso de realizar fuerza bruta sobre la clave, tiene 32 caracteres alfanuméricos que mezclan mayúsculas / minúsculas en doble SHA1 por lo que es (aún) demasiado compleja como para romperla en un tiempo razonable.

El problema es que volvemos a lo de siempre, ¿podemos fiarnos de un desconocido?

En este caso no hay problema (y aquí la verdadera novedad), ya que os dejamos disponible la descarga del código fuente de la aplicación y las instrucciones de instalación para que cualquiera pueda ver de verdad cómo funciona, e incluso montarse su propio sitio web. Todo el trabajo está licenciado bajo GNU/GPLv3.

Por supuesto podéis usar el que hemos nombrado, ya que para algo es público y lo hemos compartido.

- Descarga de Safe Webnotes
- Instrucciones de instalación
Leer más...

30 enero 2011

Enlaces de la SECmana - 56

Leer más...

29 enero 2011

El portátil ¿Propio o corporativo?

Llevo más de 10 años dedicado a la seguridad informática. De ellos, los dos primeros, utilicé portátiles corporativos, suministrados por mi empresa, para desarrollar mi trabajo. Sin embargo, desde 2003 hasta día de hoy, he utilizado mis propios portátiles, comprados con el sudor de mis camisetas.

Por supuesto que, cuando la empresa correspondiente me ha pedido que envíe algún tipo de datos que pueda ser necesario o considerado como propiedad de la empresa, jamás he tenido ningún problema en enviarlos o copiarlos donde se me diga.

Actualmente, y después de 3 años en esta misma dinámica de "portátil propio" en la misma empresa, me piden que sincronice los datos que tenga de la empresa con una carpeta cuando me toque ir a la central en un país vecino. Se supone que además quieren instalarme un agente de sincronización en el mismo "que no controle yo". ¿Hasta que punto es lícito esto?

Al igual que sucede con el correo electrónico, yo doy por sentado que si mi empresa me provee de una cuenta de correo, será utilizado para trabajar; y todo aquello que sea personal, por supuesto que lo enviaré/recibiré desde una cuenta personal.

Así pues, si mi empresa desde el primer día no me provee de un portátil, porque yo me ofrezco a utilizar el mío, con mis herramientas, programas y datos necesarios para realizar mi trabajo, ¿por qué tengo que permitir que se instale un programa ajeno a mí que posiblemente vulnere mi intimidad y privacidad? Yo no soy quien instala ni configura el agente para decidir qué carpetas se sincronizan y cuales no. ¿qué pasará si me niego?

Sé que en el caso del correo electrónico hay jurisprudencia que dan la razón a ambos lados: al empleado porque, al monitorizar su correo, se vulnera su privacidad; y a la empresa, porque el correo es una herramienta de trabajo que la empresa te provee y como tal, lo que envíes y recibas es propiedad de la empresa.

Sin embargo, en el caso de un portátil propio, si desde el primer día has acordado (con jefes que ya no están en las filas de la empresa, claro) que serías completamente capaz de desempeñar tu labor con tu propio equipo, ¿cómo es de lícito que se me exija instalar un agente en mi equipo o "darle acceso" remoto o físico a un tío de sistemas (que desconozco si se lava las manos o no después de ir al baño)? ¿Cómo puedo saber que el individuo de sistemas cotilleará algo más que lo que debería en mi PC?

Por supuesto, mi información sensible está en un contenedor cifrado "con 7 llaves" que no estaría montado en el momento del asalto pero, ¿Y si el agente que me instalan, además de hacer un sencillo backup, fuera un troyano con un keylogger? ¿Debería crear varios ficheros con datos que provengan de /dev/urandom?

En esta ocasión, en vez de contaros algo y su solución, os pido lectores, vuestra opinión. ¿Os habéis visto alguna vez en una situación parecida? ¿Os negasteis a ello? ¿Claudicastéis y permitistéis que  metieran mano a vuestro pc?
Leer más...

28 enero 2011

Contraseñas de un solo uso en Apache

Hace unos días hablábamos de 'Contraseñas de un solo uso en Linux' y explicábamos como configurar Linux vía PAM para aceptar contraseñas temporales. Hoy le toca el turno al servidor web mas empleado en Internet: Apache.

El objetivo de este post es configurar Apache para proteger un directorio cuyo acceso sea mediante contraseñas de un solo uso, para ello vamos a emplear mod-authn-otp, que se integra perfectamente dentro de Apache.

Una vez descargado y compilado (el típico ./configure && make && make install) procedemos a configurarlo.

Lo primero es decidir cual va a ser el directorio que vamos a proteger, en este caso será el directorio 'test' localizado físicamente en /var/www/html/test/ que a su vez se mapea vía http en www.midominio.com/test

Localizamos el fichero httpd.conf (en sistemas RedHat / CentOS / Fedora /etc/httpd/conf/httpd.conf) y añadimos lo siguiente:

#Configuracion para OTP

LoadModule authn_otp_module modules/mod_authn_otp.so

<Directory "/var/www/html/test">

    AuthType basic
    AuthName "My Protected Area"
    AuthBasicProvider OTP
    Require valid-user
    OTPAuthUsersFile /etc/httpd/otp/passwd
    OTPAuthMaxOffset 4
    OTPAuthMaxLinger 1000

</Directory>

De este punto de la configuración lo más interesante son las directivas OTPAuthUsersFile OTPAuthMaxOffset y OTPAuthMaxLinger la primera sirve para indicar donde Apache encontrará el fichero con los usuarios / tokens y PINs, para explicar la segunda y la tercera requiere meter un poco de teoría sobre HOTP, que es el algoritmo que emplea mod-authn-otp (aunque también soporta mOTP, pero no lo vamos a ver en este post). Este algoritmo basado en HMAC tiene dos formas de ser empleado, o bien como algoritmo basado en 'tiempo' (es decir, para calcular el password temporal se emplea la fecha+hora del sistema) y también en formato 'evento'.

El comportamiento basado en 'tiempo' implica que la contraseña que espera el servidor se computa tomando como elemento de la fórmula la fecha del sistema y requiere que tanto cliente como servidor estén sincronizados. En el caso de 'evento' el concepto cambia y funciona de la siguiente manera:
  1. Cliente y servidor empiezan en una situación de inicialización (número de contraseñas generadas 0)
  2. La primera vez que el cliente quiere acceder al servidor, este genera una contraseña OTP y la suministra al servidor, cuando el servidor da por buena la contraseña, aumenta en +1 el contador de contraseñas creadas
  3. La siguiente vez que el cliente accede al servidor, cuando va a generar la contraseña debe indicar que ahora ha de generar la contraseña numero 2 (la número uno ya no vale, el servidor ya NO espera esa contraseña)
  4. Y así sucesivamente
Por tanto para emplear este modo requiere 'llevar la cuenta' de cual contraseña se ha de crear. Si existe un desfase entre las contraseñas que has creado y las que has enviado al servidor se puede romper la sincronización.

Explicado esto volvemos a la directriz OTPAuthMaxOffset que define el número de contraseñas de 'desfase' que va a calcular el servidor, es decir el servidor te ofrece de margen hasta 4 contraseñas (si el servidor espera la contraseña número 2 y tu envías la número 4, podrás acceder ya que cae dentro del margen)

En el caso de la directriz OTPAuthMaxLinger especifica el tiempo máximo en segundos que puede permanecer el cliente conectado al recurso del servidor sin necesidad de generar otra nueva contraseña. En función de 'que' estamos protegiendo debemos calcular este parámetro, ya que si esperamos que el cliente esté conectado mucho tiempo puede ser realmente molesto estar cada 2 x 3 calculando contraseñas si ponemos una ventana de tiempo pequeña.

Ahora vamos a explicar como crear el fichero con los usuarios / contraseñas. Mi elección para la ubicación de este fichero es /etc/httpd/otp/passwd pero puede ser cualquier otra. Creamos el fichero:

# mkdir -p /etc/httpd/otp/
# touch /etc/httpd/otp/passwd
# chown -R apache.apache /etc/httpd/otp/

A la hora de crear este fichero, echo mucho mucho en falta algún tipo de herramienta que debería formar parte de mod-authn-otp (y la documentación no es para nada evidente). El formato del fichero es el siguiente:

HOTP    sbdtest       1234    167aa8035341c4e812adce9c26a9f71c

En este caso vamos a usar auth HOTP por eventos (sin sincronización de tiempo) El primer campo es el tipo de auth que vamos a usar, el segundo el username, el tercero es el PIN y el cuarto el token/key.

Teóricamente la parte mas problemática es el token (que, según leo en la documentación, es una representación hexadecimal de un dato aleatorio binario), si usas uno de los soft tokens que recomiendan en el proyecto (hay clientes para Iphone y para Android) el token lo auto-genera el software. Como en este caso queremos usarlo utilizando la herramienta para generar OTPs de mod_authn_otp (otptool) tenemos que crear la parte del token 'a mano'.

Probablemente haya métodos mas fáciles, pero yo lo he hecho así;

Primero generamos un montón de datos binarios aleatorios y los volcamos en el fichero 'random':

# dd if=/dev/urandom of=random count=1

Luego sacamos la representación hexadecimal del fichero:

# hexdump random

Lo que nos dará una salida como:

0000000 003c 19f5 32d8 b89d c982 c854 9471 be51
0000010 b0d2 1fd7 7ddc 7612 4b85 1665 8a47 43b1
0000020 8122 12f3 3f36 5dca 4b3a 751b c0cd 97eb
0000030 12d8 01c8 2860 4176 d637 27f4 f554 61d1
0000040 6056 fd89 055f e72c 0882 0698 4797 2b21
0000050 7532 f86a 3786 1221 d28d e8dd 57c2 30c3

de ahí seleccionamos una fila, por ejemplo:

003c19f532d8b89dc982c8549471be51

Y ya tenemos nuestro token !

Por tanto podemos crear al usuario sbdtest de la siguiente forma

HOTP    sbdtest       1234    003c19f532d8b89dc982c8549471be51

En este caso el PIN es 1234 y el token, lo que anteriormente generamos. Con todo esto re-iniciamos el servidor httpd y empleando la herramienta otptool (que se compila e instala junto con mod_authn_otp), generamos nuestro primer password temporal tomando como parámetro el token:

# otptool 003c19f532d8b89dc982c8549471be51
0: 944668 61a95c

De aquí, nos quedamos con 61a95c, apuntamos nuestro navegador hacia el directorio protegido www.midominio.com/test y debería pedirnos login y password, como login --> sbdtest y como password el PIN+OTP, es decir 123461a95c

Et voila ! deberíamos haber accedido al recurso protegido

La siguiente vez que queramos acceder debemos indicar a otptool que ha de generar la siguiente contraseña con el parámetro -c 1, la siguiente vez será -c 2 y así sucesivamente:

# otptool -c 1 003c19f532d8b89dc982c8549471be51
1: 044536 8202f8

Un último apunte, como decía al principio existen soft-tokens para Iphone y Android aquí
Leer más...

27 enero 2011

GameShark, los cheats de hace algunos años

Hace algunos meses hablábamos en SbD sobre como probar un ejemplo sencillo de hacking de videojuegos. Si recordamos la publicación, se trataba de usar una herramienta para encontrar y modificar valores en memoria que cambian el comportamiento del juego según lo que deseemos. Para ello utilizábamos la herramienta Cheat Engine.

Ésto no es nada nuevo, hace bastantes años existían dispositivos capaces de hacer lo mismo en consolas clásicas. Por aquel entonces no había tantas protecciones anti-cheating, pero por otro lado la razón de existencia de los cheaters era menor ya que los juegos eran locales, no había multijugador remoto, además de que la capacidad de compartir información sobre el funcionamiento técnico era mucho más reducida y los escenarios más cerrados, por lo que el desarrollo y uso de cheats no estaba extendido de forma masiva.

Uno de estos dispositivos clásicos es GameShark, una herramienta que tuvo su boom con la Nintendo 64, y que permitía hacer algo muy parecido a lo que hace Cheat Engine. No es la única, ni para la única consola, pero puede que sea una de las más conocidas.

GameShark en versión Nintendo 64 es un cartucho que se inserta en la consola, para luego insertar el cartucho del videojuego en la parte superior. De esta forma, el dispositivo se interpone entre la consola y el videojuego.

GameShark Pro para N64

Para modificar el comportamiento de los videojuegos, GameShark modifica valores en direcciones de memoria. El propio dispositivo tiene una lista de cheats preconfigurados para bastantes títulos. También podemos crear nuestros propios cheats sabiendo una dirección de memoria y cambiando el valor por uno válido, por ejemplo:

En Star Wars: Rogue Squadron debemos completar una serie de misiones, y según nuestra calificación pueden compensarnos con una medalla (entre oro, plata y bronce). Sabiendo las direcciones de memoria en las que se aloja el valor que define la medalla en cada misión podemos modificarlas y colgarnos las medallas que queramos:

[Dirección] [Valor] [Misión]

88130B1C 00XX     Ambush at Mos Eisley
88130B1D 00XX     Rendezvou on Bankhesh
88130B1E 00XX     The Search For The Noonnah
88130B1F 00XX     Defection At Corellia
88130B20 00XX     Liberation V
88130B21 00XX     The Jade Moon
88130B22 00XX     Imperial Construction Yard
88130B23 00XX     Assault on Kile II
88130B24 00XX     Rescue on Kessel
88130B25 00XX     Prisons on Kessel
88130B26 00XX     Battle Above Taloraan
88130B27 00XX     Escape From Fest
88130B28 00XX     Blockade on Chandrila
88130B29 00XX     Raid on Sullust
88130B2A 00XX     Moff Seerdon's Revenge
88130B2B 00XX     The Battle of Calamari
88130B2C 00XX     Beggar's Canyon
88130B2D 00XX     The Death Star Trench Run
88130B2E 00XX     Battle of Hoth

Replace XX with:
00     None
01     Bronze Medal
02     Silver Medal
03     Gold Medal

Por supuesto, también tenemos los cheats clásicos para modificarnos atributos como escudo, vida, etc. Todo se basa en encontrar la dirección de memoria que guarda el valor.

[Dirección] [Valor] [Efecto]

81137E7C 4316     Extra Shields
80130B4D 007E     All Levels / Ships
80130B10 0008     Infinite Lives
8010CA32 0008     Infinite Secondary Weapons
80130B87 0063     99 Bonus Collected
80130B85 0063     99 Kills
80130B86 0063     99 Saves
81137E7C 4136     1-Hit Death
81137E7C 4316     Infinite Health


Si ésto para la mayoría de nosotros ya era "lo más" en aquella época, con GameShark Pro llegó algo mejor.

La edición Pro nos permitía hacer búsquedas de valores en la memoria y localizar sus direcciones. Con esta característica podríamos desarrollar nuestros propios cheats sin ayuda de ninguna lista de direcciones. El proceso era localizar un valor (por ejemplo, munición), buscarlo en memoria, modificar el valor (gastando algo de munición) y hacer una nueva búsqueda sobre la anterior. De esta forma encontraríamos la dirección de memoria que guarda el valor y podríamos alterarlo a nuestro gusto.

También nos permitía buscar valores que crecen o decrecen, para encontrar direcciones de memoria que no son un valor determinado visible en el juego, como por ejemplo una barra de vida.

Hay herramientas GameShark para la mayoría de consolas punteras de aquella época, para algunas más modernas, y aún siguen saliendo dispositivos que permiten tweaks para las más nuevas bajo el mismo nombre, aunque ya no tienen la potencia de antes.

- Referencias:
"How to hack like a Pro", videotutorial de Gameshark para N64 (Partes 1, 2, 3).
Leer más...

26 enero 2011

A vueltas con la Ley Sinde

La conocida como Ley Sinde ha vuelto a la carga.

Tras un fin de semana de mucho movimiento en redes sociales como Twitter, donde se comentaban propuestas alternativas, saltaban rumores de un posible acuerdo entre los dos grandes partidos (PP y PSOE), el lunes a última hora de la tarde finalmente se hizo público y oficial: El PP y el PSOE habían llegado a un acuerdo en el Senado, con la aprobación de una enmienda conjunta… De nuevo, la Ley Sinde vuelve a la carga, y parece que ya no hay quien la frene.

Pero… ¿Qué viene a establecer la Ley Sinde?

Para empezar, la denominada Ley Sinde, se aprobará como la Disposición Final Segunda de la Ley de Económica Sostenible. Practica ésta a mi entender nefasta. Tendencia habitual del legislador de denominar inadecuadamente las Leyes. Las esconde bajo rótulos, títulos e indicadores que nada tienen que ver con el ámbito objeto de regulación. Lo que el Primer Presidente del Tribunal Supremo tras la Transición, el eminente jurista, Excmo. Don Federico Carlos Sainz de Robles llamó “el juego del escondite”.

Como comentábamos anteriormente, la citada Ley, viene a modificar distintas normas pre-existentes, con un objetivo común; la protección de la propiedad intelectual en el ámbito de la sociedad de la información y el comercio electrónico. En concreto las normas modificadas son:
  • La Ley 34/2002, de 11 de julio, de Servicios de la Sociedad de la Información y el Comercio Electrónico. Por cierto modificada en solo 8 años hasta en 4 ocasiones, dentro de ese juego del escondite del legislador: Ley de Medidas de Impulso de la Sociedad de la Información, Ley General de Telecomunicaciones, Ley de Firma Electrónica, Ley de Conservación de Datos relativos a comunicaciones electrónicas.
  • El Real Decreto Legislativo 1/1996 de 12 de abril, por el que se aprueba el Texto Refundido de la Ley de Propiedad Intelectual.
  • Ley 29/1998, de 13 de julio, reguladora de la Jurisdicción Contencioso-Administrativa.
Las principales conclusiones de las normas a modificar son:
  • Todas estas modificaciones tienen un objetivo común, la protección de los derechos de propiedad intelectual, pero, en contra de lo que se lee y escucha, que sólo afectaría a páginas de enlaces y descargas, esta normativa afectará a todo soporte, webs y portales que alojen contenidos protegidos por derechos de propiedad intelectual, como: blogs, textos, fotografías, imágenes, música, etc.
  • Uno de los aspectos más criticados de esta Ley es la creación de la Comisión para la Protección de la Propiedad Intelectual, Comisión que estará formada por personal de los principales Ministerios Públicos como: Cultura, Industria, Turismo y Comercio, Ministerio de Presidencia, etc. Esta Comisión, es la que inicia el procedimiento y resuelve.
  • Intervención Judicial: Aunque en el Acuerdo alcanzado anoche entre PP y PSOE se habla de una doble intervención judicial no es del todo cierto, en cuanto que la Sala de lo Contencioso Administrativo de la Audiencia Nacional (órgano competente) no entrará en ningún caso sobre el fondo del asunto, resolviendo sólo sobre los siguientes aspectos:
    • Autorizar el requerimiento a los prestadores de servicios de la sociedad de la información para la cesión de datos de identificación de los titulares de las páginas.
    • La ejecución de las medidas para que se interrumpa la prestación de servicios de la sociedad de la información o para que se retiren contenidos que vulneren la propiedad intelectual
  • Plazos establecidos: Los plazos establecidos para la tramitación y ejecución de los procedimientos establecidos son tan reducidos que hacen difícil su cumplimiento
    • 48 horas para la retirada voluntaria de contenidos por parte de los titulares de las páginas a petición de la Comisión de Propiedad Intelectual.
    • 2 días para la práctica de prueba.
    • 5 días para trasladar a los interesados las conclusiones del procedimiento.

    Estos plazos tan sumarios me generan una serie de dudas razonables, entre ellas, la propia aplicación de la legalidad y que ésta no se convierta en mera apariencia.

    Dando solo dos días para la práctica de la prueba, pueda ocasionar situaciones de clara indefensión. La regla general establece, que el plazo para la práctica de la prueba nunca puede ser inferior a 10 días y en este caso concreto, por intereses que desconocemos, se ha reducido a dos.

    En cuanto a la intervención judicial:
    • 24 horas, previa audiencia del Ministerio Fiscal, para que el Juzgado dicte resolución autorizando la solicitud de datos.
    • Plazo improrrogable de 2 días siguientes a la recepción de la notificación de la resolución de la Comisión y poniendo de manifiesto el expediente, el Juzgado convocará el representante legal de la Administración, al Ministerio Fiscal y a los titulares de los derechos y libertades afectados. Resolverá mediante auto.
    Plazos estos equiparables a los delitos de violencia de género o delitos contra la seguridad en el tráfico, no siendo conductas éstas a mí entender de la importancia o gravedad de las anteriores.
La Ley Sinde aún no ha sido aprobada formalmente ni ha entrado en vigor, pero habiendo superado el trámite de su aprobación por el Senado, con el acuerdo de los dos principales partidos, hace suponer, que en un espacio corto de tiempo entrará en vigor y se empezará a aplicar, y será en ese momento, donde los verdaderos problemas de esta Ley saldrán a la luz, y se demostrará al fin si esta “chapuza” sirve para la finalidad para la que fue creada.


Contribución por María González Moreno
Abogado - Consultor
Marco Legal y Regulatorio
División de Consultoría - SIA
Leer más...

25 enero 2011

La ley 'Sinde' es un virus

¿Qué es un virus? Informáticamente hablando podemos definirlo como un proceso que llega de una forma aparentemente inadvertida y que una vez es ejecutado en un sistema operativo, subvierte algunas de sus funciones para que o bien dejen de funcionar o funcionen de forma anómala.

Probablemente en este punto piensen que resulta hilar muy fino, a tenor de esa definición, comparar la ley Sinde con un virus, y que lo único que estoy haciendo es un ejercicio de pura demagogia. Probablemente sea así, pero resulta que al hilo del 25 aniversario de la creación del primer virus informático, me ha llamado mucho la atención que ese primer virus (Brain) fue creado con el propósito de defender la 'propiedad intelectual' de unos informáticos Pakistanís (hermanos para ser mas precisos) que habían desarrollado un programa de gestión médica.

Y aquí estamos 25 años después en la misma tesitura, un sistema operativo (El estado de derecho Español) un virus que nos han intentado colar en un inocente PDF, que como todo buen malware tiene un título que nada hace sospechar (Ley de Economía Sostenible), creado por un grupo de gente cuya motivación es proteger a la fuerza 'su propiedad intelectual', y un montón de funcionalidades del sistema que serán subvertidas o anuladas una vez el virus se ejecute.

Como todo buen virus, muta y muta para eludir las firmas que las casas de Antivirus van liberando para protegernos, así pues si bien en su primera variación PP-av, CIU-av y otros lo detectaron a tiempo y lo anularon, en esta siguiente mutación parece ser que el equipo anti-malware de PP-av (el antivirus con mas base de usuarios) no ha sido capaz de liberar la firma correspondiente y tiene toda la pinta que la ley, perdón, el virus nos va a infectar a todos.

¿Cambiamos de sistema operativo? Dicen que hay otros mas seguros y menos susceptibles a infecciones :)
Leer más...

24 enero 2011

Sniffando conversaciones de Facebook con Borogove

Bien sabido es que en Facebook, la red social por excelencia, la seguridad y cifrado brillan por su ausencia. Aunque es posible acceder por HTTPS, si lo hacemos así el chat que incorpora no funciona, por lo que los usuarios acaban conversando siempre en texto en plano.

En mi opinión la compañía de Zuckerberg debería ponerse las pilas en cuanto a proteger la ya de por sí escasa intimidad de sus usuarios, ya que hay una diferencia sustancial en los datos de su parte mas pública de la privada, como chats y mensajes.

Borogove es un script en Python que aprovecha esta debilidad y  permite capturar conversaciones en la red local a modo de sniffer.

Realiza un ataque Man-In-The-Middle envenenando las tablas ARP entre la víctima y su gateway con la herramienta arpspoof. Seguidamente analiza los paquetes del protocolo HTTP en busca de conversaciones y hace un output en tiempo real del destinatario, el emisor y el contenido del mensaje,todo de forma transparente.

Funciona en entornos UNIX y requiere los paquetes pypcap, dpkt y dsniff.

Su uso es simple (como root):

./borogove.py <interfaz> <victima> <gateway>

Donde el primer parámetro es la interfaz de red donde vamos a capturar, "víctima" es la IP de la máquina que queremos escuchar, y gateway la IP del router o puerta de enlace de la red, por ejemplo:

./borogove eth0 192.168.1.12 192.168.1.1

Podéis encontrar la última versión aquí.


Disclaimer

No me hago responsable del mal uso que pueda darse a esta información o al código de la aplicación que la complementa.

- Contribución por Vdo.
Leer más...

23 enero 2011

Enlaces de la SECmana - 55


Leer más...

21 enero 2011

Despedida y Cierre del Wargame SbD I

Ha sido realmente divertido haber organizado este primer wargame en Internet (aunque ya llevamos tres en la Campus Party), pero es momento de darle cierre, esperar un tiempecito e ir preparando el siguiente.

Así que este lunes 24 a las 00:01 GMT, el portal de pruebas y las pruebas en sí estarán inaccesibles, ¡¡aún queda un fin de semana más para aquellos que se animen!!

Agradeceros a todos la pasión y las ganas con las que habéis participado. 

El primer puesto (a falta de recibir el solucionario) es el grupo español Int3pids, formado por: Dreyer (@dreyercito), Uri, Kachakil (@kachakil), Nullsub (@marioballano), Whats (@whatsbcn) y RomanSoft (@roman_soft). En cuanto nos hagan llegar el documento y lo validemos, será publicado.

El segundo puesto queda para otro grupo español, painsec, que tiene entre sus filas a: 0xroot, Alone, BatchDrake, bNull, Dade, knx, MFox, NighterMan y Sakebomb

Felicitar también a todos los que han participado individualmente o con grupos muy pequeños, como trasnos o pepeluxx/ok5boy por ser tan persistentes y habérselo trabajado tanto para alcanzar los puestos superiores de la tabla.

Datos estadísticos:
  • Número de participantes: 512
  • Número de países distintos: 47 
  • Top participación por paises: 
    • 304 España
    • 50 Colombia
    • 26 Mexíco
    • 24 Argentina
    • 11 Peru
    • 7 USA
    • 7 Afganistan
    • 6 Francia
  • Pruebas superadas: 
    • tri01: 244 tri02: 36 tri03: 87
    • net01: 27 net02: 19 net03: 2
    • bin01: 48 bin02: bin03: 14 
    • cry01: cry02: cry03: [suspendida]
    • web01: 11 web02: web03: 13
Y algunas cosas divertidas y graciosas que nos hemos encontrado en los registros:

Alguien que pensó que lo mismo con un XSS se superaba la prueba (en un fichero que no existía):
[error] [83.165.52.XX] File does not exist: /var/www/js/1<script>
prompt(973707)</script>

La frase de la herramienta w3af es graciosilla, aunque imagino que no le sirvió demasiado:

87.217.147.XX - - "ALL YOUR BASE ARE BELONG TO US" 400 226 "-" "w3af.sourceforge.net"
En los registros del FTP también hubo de todo, como alguien que le deseó la muerte al pobre servicio:
:D [2141] 34.Red-79-156-XX [16/Jan/2011:15:37:55 +0100] "USER anonymous" 331
:D [2142] 34.Red-79-156-XX [16/Jan/2011:15:37:55 +0100] "USER anonymous" 331
:D [2141] 34.Red-79-156-XX [16/Jan/2011:15:37:55 +0100] "PASS (hidden)" 530
:D [2142] 34.Red-79-156-XX [16/Jan/2011:15:37:55 +0100] "PASS (hidden)" 530
:D [2143] 34.Red-79-156-XX [16/Jan/2011:15:37:55 +0100] "DIE" 500
O uno que se divirtió hablando con el:
:D [12652] 190.254.21.XX  "BUFERRRRRRR" 500
:D [12652] 190.254.21.XX  "=)" 500
:D [12652] 190.254.21.XX  ":D" 500
:D [12652] 190.254.21.XX  "AJA dale" 500
:D [12734] 190.254.21.XX  "VERSION" 500
:D [12734] 190.254.21.XX  "LOGIN" 500
:D [12734] 190.254.21.XX  "SU" 500
:D [12734] 190.254.21.XX  "SOMETIMES work fine???, seems the data must be in time... so, maybe some packages were lost?" 500
:D [12734] 190.254.21.XX  "OK ok not matter let's continue" 500
:D [12734] 190.254.21.XX  "YOUR turn" 500
:D [12734] 190.254.21.XX  "OPEN" 500
:D [12734] 190.254.21.XX  "SESAME" 500
:D [12734] 190.254.21.XX  ":)JAJAJAJAJA" 500
:D [12734] 190.254.21.XX  "USER user" 331
:D [12734] 190.254.21.XX  "USER" 500
:D [12734] 190.254.21.XX  "PASS (hidden)" 530
:D [12734] 190.254.21.XX  "USER user" 331
:D [12734] 190.254.21.XX  "PASS (hidden)" 530
:D [12734] 190.254.21.XX  "AUTH" 500
:D [12734] 190.254.21.XX  "AUTH*" 500
:D [12797] 190.254.21.XX  "AQUIOT" 500
:D [12833] 190.254.21.XX  "MMM may be first is telnet and second is port knocking :)" 500
:D [12833] 190.254.21.XX  "USER anonymouse" 331
:D [12833] 190.254.21.XX  "PASS (hidden)" 530
:D [12833] 190.254.21.XX  "USER annonymous" 331
:D [12833] 190.254.21.XX  "PASS (hidden)" 530
:D [12833] 190.254.21.XX  "SEARCH google anonymouse" 500
:D [12833] 190.254.21.XX  "JAJAJAJAJAJA" 500
:D [12833] 190.254.21.XX  "IM talking to you !!!!!" 500
:D [12833] 190.254.21.XX  "JAJAJA" 500
:D [12833] 190.254.21.XX  "CHGRP" 500
:D [12833] 190.254.21.XX  "FLZHEI" 500
:D [12833] 190.254.21.XX  "HEHEILPIIIIIIIIIIII" 500
:D [12833] 190.254.21.XX  "FILEZILLA" 500
:D [12833] 190.254.21.XX  "CCC" 500

Anda que si este GET da un 200, menuda alegría:

[error] [client 82.158.41.XX] "/var/www/soluciones.php" not found or unable to stat
Leer más...

20 enero 2011

Modificando credenciales en routers Thomson

En este artículo voy a comentar una situación curiosa que me ocurrió el otro día al configurar el router que me ha “regalado” ONO, un Thomson TCW710.

Cual fue mi sorpresa cuando, tras publicar un video en Twitter en el que mostraba el proceso, una persona me comentó que el problema ya había sido reportado para el modelo TCW690. Como podemos comprobar, en Thomson (y ¿ONO?) no se toman en serio los problemas de seguridad, y más este que permite obtener el control del router (y quitarselo a su dueño).

Al final del artículo se enlaza el código de la aplicación utilizada en el video. Además, añado el enlace a la publicación del fallo del modelo TCW690.

¡Comencemos!

Disclaimer:

No me hago responsable del mal uso que pueda darse a esta información o al código de la aplicación que la complementa.

Como todos sabemos, cuando intentas acceder a la configuración del router, te suele saltar la petición de credenciales, y en el caso de que no sean correctos, no puedes acceder. ¿Lógico no?

En el caso de los routers Thomson (voy a generalizar, pero entender que me refiero a esos dos modelos en concreto, no tengo conocimiento de ningún otro), ocurre una situación un tanto curiosa, y es que el sistema únicamente bloquea las peticiones GET, pudiendo seguir realizando POSTS sin ningún problema.

A pesar de que sea un problema importante (pues permite modificar la configuración del router sin necesidad de estar autenticado) es aun peor cuando se comprueba que el software del mismo no pide los credenciales actuales al ir a modificarlos (se entiende que si estas autenticado te la sabes, pero eso ya no es un argumento válido para no añadir una medida más de protección, y más si da la opción de acceder remotamente al panel de administración), por lo que podemos registrar los que queramos (o poner los de fábrica para levantar menos sospechas) y poder acceder mediante la interfaz web.

La petición POST a realizar para modificar los credenciales es:

http://192.168.0.1/goform/RgSecurity
HttpUserId=USER&Password=PASSWD&PasswordReEnter=PASSWD&RestoreFactoryNo=0x00

Una vez realizada la petición, ya podríamos acceder mediante la interfaz web.
En el caso de que quisieramos automatizar tareas y comenzar a realizar peticiones GET para obtener información, hay que añadir en la cabecera Authorization con valor Basic auth_en_b64.

El valor no es más que el usuario y contraseña separados por ‘:’ y codificados en base64. Un ejemplo (el utilizado en la aplicación para obtener la información del router) podría ser:

Petición: http://192.168.0.1/RgSwInfo.asp
Usuario: (vacio)
Contraseña: admin
Auth: :admin --> OmFkbWlu

GET http://192.168.0.1/RgSwInfo.asp
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Behavioral-Ad-Opt-Out: 1
X-Do-Not-Track: 1
Authorization: Basic OmFkbWlu
Cache-Control: max-age=0

¡Hasta aquí todo! Ya para terminar…

Os enlazo el video que publiqué con todo el proceso:


Con respecto a la aplicación, la podéis descargar de aquí.

Su utilización es la siguiente:
(bypassThomson.jar) -h [ip_router] -u [user] -p [password] -info [opc.muestra_info_router]

El reporte del fallo en el Thomson TCW690 podéis encontrarlo aquí. Por lo que pone en la información del exploit, lo reportó un tal MurDoK.

Y vosotros, ¿conocéis FAILs de otros routers?

Artículo por Luis Delgado J.
Leer más...

19 enero 2011

Unhide 20110113 is out !

Calentita del horno sale la última versión de Unhide (20110113) ofrecida en primicia para SbD. Por si alguien anda despistado Unhide es una herramienta de análisis forense para sistemas Unix de la que hemos hablado aquí y aquí (por ejemplo)

En esta ocasión el lanzamiento de la última versión estable coincide con el lanzamiento en paralelo de su propio sitio web www.unhide-forensics.info

La novedad mas destacada es que Patrick Gouin, arquitecto senior en desarrollo de sistemas embebidos, se une al staff de forma estable, y de su mano han llegado bastantes de las novedades de esta versión.

Entre las novedades mas destacadas :
  • Mayor granularidad a la hora de ejecutar tests: Hasta ahora existían 'metatests' que estaban compuestos en algunos casos por múltiples tareas, en esta versión se pueden seleccionar específicamente que tests ejecutar (por ejemplo un test con una syscall determinada)
  • Añadido un nuevo e interesante test llamado 'reverse' para identificar sistemas en los que se haya comprometido /bin/ps para hacerle creer que existe un proceso en ejecución que realmente no lo esté
  • Ampliados los test sobre procfs añadiendo chdir / readdir
  • Posibilidad de volcar el resultado del scan a un fichero con la opción -f
  • Posibilidad de ejecutar un test específico (-r) para Kernels cuyo planificador no sea el estándar (error detectado en sistemas cuyo kernel era una versión 'pura' de kernel.org)
  • Mejor integración con rkhunter
Y muchas otras más que podréis ver reflejadas en la pagina man del proyecto.

Para descargar la última versión: www.unhide-forensics.info
Leer más...

18 enero 2011

Primer Congreso de seguridad e ingeniería web ADWYS CON '11.

Como ya comentamos anteriormente, este año repetimos en Cádiz, donde han abierto el registro y nos han hecho llegar una nota de prensa con la lista de ponentes final y las fechas.

Para asistir, han establecido los siguientes precios: Comunidad UCA 5€, Estudiantes 15€ y el resto de entradas 25€.

Formateo un poco la nota de prensa y os la dejo aquí:
-----
Hoy, día 12 de Enero de 2011, se abre oficialmente el plazo de inscripciones al primer congreso de seguridad e ingeniería web ADWYS CON '11.

Este congreso, enfocado a profesionales de las nuevas tecnologías, expertos en seguridad y estudiantes, surge para exponer las últimas novedades en seguridad informática e ingeniería web y formar de una manera práctica en los últimos avances, que se dan o se esperan dar, de las tecnologías pertenecientes a ambos sectores.

El evento tendrá lugar los días 23, 24 y 25 de Febrero de 2011 en las instalaciones de la Facultad de Filosofía y Letras y contará con numerosos ponentes que hablarán de temas relacionados con la seguridad y el desarrollo web. ADWYS CON '11 está siendo organizado por la recientemente galardonada en los premios Cádiz Joven Asociación de Diseño Web y Seguridad de la Universidad de Cádiz (ADWYS).

Los ponentes son reconocidos expertos en su área como: Martín Álvarez (responsable de la oficina del W3C en España), Jose Emilio Labra Gayo (Director de la escuela de ingeniería informática de la Universidad de Oviedo), Alejadro Ramos (Tiger Team Manager SIA y Editor de Security By Default) o Sergio de los Santos (Hispasec).

Para inscribirse sólo hay que rellenar el formulario de nuestra web en:http://adwys.es


Información:

Primer congreso de seguridad e ingeniería web (ADWYS CON '11)

  • Organiza: Asociación de Diseño Web y Seguridad de la Universidad de Cádiz (ADWYS).
  • Participa: Universidad de Cádiz.
  • Colabora: The Pilot Dog.
  • Lugar: Facultad de Filosofía y Letras de Cádiz.
  • Fecha: 23, 24 y 25 de Febrero de 2011
  • Ponentes:

  1. Vicente Aguilera - Director de OWASP en España
  2. Chema Alonso - Microsoft Security MVP, Informática64
  3. Martín Álvarez - Responsable oficina W3C España
  4. Jordi Collell - EyeOS Team
  5. Jose Emilio Labra Gayo - Director Escuela de Ingeniería Informática (Universidad de Oviedo)
  6. José Picó y David Pérez - Taddong S.L.
  7. Sergio de los Santos - Hispasec
  8. Alejandro Ramos - Tiger Team Manager SIA, Editor de Security By Default
  9. Pedro Sanchez - ATCA, ConexionInversa
  10. Niko - Creador de Cálico Electrónico
  11. Antonio D. Fernandez y Enrique J. Amodeo - ATSistemas
  12. Jesús Contreras - Director de Innovación en ISOCO

Más información e inscripciones: http://adwys.es
---

Leer más...

17 enero 2011

Hacking Roomba!

Para quien no lo conozca, Roomba es un modelo de las aspiradoras inteligentes de iRobot. Este tipo de dispositivos pretenden, a un coste bastante elevado, todo hay que decirlo, hacer la vida más cómoda al propietario, librándole de pasar la aspiradora manualmente.

No sé realmente si la razón de que estuviera detrás de una Roomba, era el mantener la casa limpia o el poder "meterle mano a la chacha" (en el buen sentido de la palabra, al ser un robot).

Así pues, y tras leer el libro "Hacking Roomba" (muchas gracias por el ejemplar a Raúl) me dije que esto, simplemente había que probarlo y si no, a las malas, tendría la casa más limpia.

Así pues encargué el modelo 555, que permite programación manual utilizando una botonera en el propio aparato. Lo primero que pensé: "Esto lo programaré en remoto, sin agacharme!"

El objetivo principal era poder decirle a la Roomba: "Ponte a aspirar AHORA" o "Vete a tu base de carga YA!", desde el servidor de casa, controlando vía cron o de forma manual esas operaciones a voluntad.

Así pues, para hacer frente al problema se me pasaron por la cabeza varias opciones. Existe un mando a distancia por Radiofrecuencia que permite ejecutar las mismas operaciones desde cualquier parte de la casa, en la que tengas el mando. Sin embargo, no es compatible más que con el modelo superior: el 581. La siguiente alternativa era utilizar un mando a distancia compatible con todas las roombas. En este caso, funciona mediante Infrarrojos. por lo que podría hacer un cable al puerto serie con un diodo IR y mediante LIRC, grabar la ejecución de cada operación y reproducirla después. Sin embargo, para poder controlar la roomba en toda su inmensidad, la opción más interesante, potente y versátil era utilizar un interfaz bluetooth.

Para los que como yo, no seais muy manitas con el soldador y  los cables, en Sparkfun, venden interfaces bluetooth ya hechos, llamados Rootooth que son "más o menos" plug & play….

Para meterle mano a la Roomba via Bluetooth, esto es lo que debéis hacer:

  1. Enchufar el dispositivo bluetooth a la Roomba. Consejo: sujetad con cinta aislante el cable y el conector, porque dado el movimiento de la roomba, puede sufrir daños. Al principio lo tenía como la foto que se puede ver en el avatar del post.
  2. En mi caso he utilizado Linux con un adaptador Bluetooth para poder conectarnos al Rootooth.  Mediante hcitool buscamos el nuevo dispositivo Bluetooth y nos apuntamos la MAC.
[root@Carmen ~]#  hcitool scan 
Scanning ...
    00:06:66:ZZ:XX:YY    FireFly-XXYY

3.-) Probamos a establecer una conexión mediante "rfcomm" que, una vez hecha la conexión, nos dejará un puerto en /dev/rfcommN al cuál podremos hablar como si de un puerto serie se tratara.

[root@Carmen ~]# rfcomm connect 2 00:06:66:ZZ:XX:YY
Connected /dev/rfcomm2 to 00:06:66:ZZ:XX:YY on channel 1
Press CTRL-C for hangup

4.-) Lo siguiente es comprobar que el modem que incluye Rootooth funciona correctamente a 115200 bps, para no tener errores en la comunicación. Para ello accedemos mediante "minicom" y comprobamos que todo está correcto:

Welcome to minicom 2.00.0


OPCIONES: History Buffer, F-key Macros, Search History Buffer, I18n
Compilado en Feb 21 2005, 19:32:30.


Presione CTRL-A Z para obtener ayuda sobre teclas especiales
                                                  
CMD                                               
?                                                 
***Settings***                                    
BTA=000666ZZXXYY                                  
BTName=FireFly-XXYY
Baudrt=115K
Parity=None
Mode  =Slav
Authen=0
Encryp=0
PinCod=1234
Bonded=0
Rem=NONE SET
END

Una vez que conecta, enviamos los caracteres "$$$"(3 símbolos del dólar, sin las comillas) para entrar en modo Comando al modem Bluetooth. Nos contestará con CMD si todo es correcto. Pulsando D y Enter, nos dará la info que se puede ver más arriba. Importante que esté a 115K, y Parity None. Si algo no está como debe, con la tecla H se accede a la ayuda y se configura para que quede así.
Una vez todo está correcto, pulsamos "---" (tres guiones seguidos, sin comillas) y devolverá END… Ya estamos fuera del modo command.

5.-) Después de probar diversos programas (RoombaCom, Roomba-tilt.pl, Roomba Status) rebuscando en Internet, que prometían controlar la Roomba en remoto, y ver que estaban todos obsoletos, decidí buscar documentación actualizada de la API de la Roomba para poder hablarle.

El documento actualizado para las especificaciones Open Interface de la serie 500 se puede descargar de aquí.

6.-) Manos a la obra… Bajo estas líneas pongo un script (por supuesto en Perl) que recibe como parámetro "clean" o "dock" y hacen que la roomba se ponga a limpiar o se ponga en modo Dock (o, ir a su base de carga)

Incluyo además el código necesario para que cada vez que lo ejecutemos, cree una conexión nueva contra Rootooth, no teniendo que mantener el rfcomm abierto todo el tiempo.

[root@Carmen tmp]# more /usr/local/bin/roomba.pl 
#!/usr/bin/perl

use IPC::Open2;

$port="/dev/rfcomm2"; #el puerto serie a crear. Importante que no esté siendo usado ya
my $param=lc ($ARGV[0]); #capturo parámetro introducido y lo paso a minúsculas
my $rfcomm="rfcomm connect 2 00:06:66:ZZ:XX:YY"; #comando rfcomm para crear puerto

my $value;

if ($param eq "clean")
{#Si la orden es limpiar
    $value=135;    
}
elsif ($param eq "dock")
{#Si la orden es ir a base
    $value=143;
}
else
{#El resto no está aceptado
    die "$0 [CLEAN|DOCK]\n"; 
}

my $pid=open2 (\*READ,\*WRITE,$rfcomm); #lanzamos por un lado la conexión

sleep (10); #Le damos 10 segundos para que se establezca

system("stty -F $port 115200 raw -parenb -parodd cs8 -hupcl -cstopb clocal"); #Parámetros necesarios para configuración del puerto
    
my $roomba;
open $roomba, "+>$port" or die "couldn't open port: $!"; #Abrimos conexión al puerto
select $roomba; $| =1;  #Eliminamos lo que hubiera en el buffer en la lectura
    
printf $roomba "%c",128;  sleep 0.3;                    # START Necesario cada vez que le demos una orden a Roomba
printf $roomba "%c",132;  sleep 1;                    # FULL Tomamos control completo sobre ella

printf $roomba "%c",$value;  sleep 1;                    # CLEAN OR DOCK  Ejecutamos lo ordenado

kill 9,$pid; #Matamos el proceso de rfcomm

exit (0); #bye bye

Pero claro, la idea (al menos la mía) es hacer un programa que dependiendo de un montón de factores como qué horario es aceptable para pasar la aspiradora, control de presencia en casa (si estoy en casa, no la pases,… no sabéis el ruido que mete!), etc, etc,… puede ser interesante obtener información sobre los sensores de la misma. En mi caso, me interesa saber: La capacidad máxima de la batería; el modo de carga (esperando, cargando, etc,..), la carga actual de la batería, la temperatura de la batería, y si está conectada al cargador correctamente o no (si está en su base de carga o está dando vueltas por ahí). Para ello, el código se puede ver bajo estas líneas. Importante: en este caso contamos con una conexión rfcomm ya hecha en otro terminal!

[root@Carmen tmp]# more roomba_sensors.pl 
#!/usr/bin/perl

$port="/dev/rfcomm2";  #el puerto serie a crear. Importante que no esté siendo usado ya

system("stty -F $port 115200 raw -parenb -parodd cs8 -hupcl -cstopb clocal");  #Parámetros necesarios para configuración del puerto
    
my $roomba;

open $roomba, "+>$port" or die "couldn't open port: $!";
select $roomba; $| =1;   #Eliminamos lo que hubiera en el buffer en la lectura
    
printf $roomba "%c",128;  sleep 1;                    # START Necesario cada vez que le demos una orden a Roomba


printf $roomba "%c%c%c%c%c%c%c",149,5,21,25,26,34,24;  sleep 1; # Roomba requiere el envío del opcode 149 + el número de sensorIDs a solicitar + cada sensorID

#Sin embargo, devuelve byte a byte. Con esto perdí muuuucho tiempo porque no lo ví documentado en ningún sitio!!!
for ($i=0; $i<7; $i++) 
{
    $k=getc($roomba);
    $ok=ord ($k);
    print STDOUT "$i $ok\n";
}

Al ejecutarlo vemos algo como:

----------
0 2
1 1
2 108
3 10
4 136
5 2
6 40
------

La primera columna es un contador, sin más y la segunda, el valor del byte devuelto por la Roomba.

Byte        Explicación


0       Estado de carga: 4 significa que está en Waiting (aunque la pongamos en su base, no cargará)
         y 2 es Full charge (que lo podemos poner a cargar)
1       Byte más significativo de carga actual de batería
2       Byte menos significativo de carga actual de batería
3       Byte más significativo de capacidad total de batería
4       Byte menos significativo de capacidad total de batería
5       Presencia de cargador (Fundamentalmente, si está la roomba en su base o no) Si el valor es 0 es
         que no (está por ahí limpiando) y 2 es que está en la base
6       Temperatura en grados celsius de la batería (Interesante por si queremos monitorizarlo)


Los bytes 1 y 2, así como el 3 y 4 indican la carga actual y la capacidad máxima de carga de la batería. El byte más significativo, en mi caso va de 0 a 10 y el menos significativo va de 0 a 255 (lógicamente es lo que cabe en un byte). Cuando se está descargando la batería, los bytes 1 y 2 van disminuyendo y al cargarse aumentando, hasta llegar a 10/136 que es la carga máxima de la batería.

Conclusiones

Roomba no sé si me hará la vida más fácil o no, pero me lo he pasado bomba sacándole las tripas e intentandole hablar y que me conteste. No he encontrado foros en España (o al menos en español) en los que se haga hacking de este tipo a Roomba. Lo más aproximado ha sido en los foros.zackyfiles.com en los que fundamentalmente, se hace hacking físico a los equipos para que aspiren mejor, y hacerles cierto tunning. Los que quieran ir más allá, pueden contar con este foro en inglés  en el que hay gente con estas mismas inquietudes y en el que abrí un hilo pidiendo ayuda en mis problemas de comunicación con mi Roomba.
Para aquellos que tengáis un cacharro de estos y queráis meterle mano, os animo desde aquí a ello. Si os ponéis y se os atasca la situación, contad conmigo para ayudaros en todo lo que sea posible!

Por cierto, que después de tanta confianza que tengo con la Roomba, le he preguntado cuál es su blog de seguridad y hacking favorito y... bueno en la foto siguiente podéis ver cuál fue su respuesta :D

Leer más...

16 enero 2011

Enlaces de la SECmana - 54


Leer más...

15 enero 2011

Wargame SbD I (segunda parte)

https://portal.securitybydefault.com/





Leer más...

14 enero 2011

Entrevista a David Hernández (aka Dabo)

Dabo es una persona modesta, desenfadada, simpática y con un potencial y ganas de compartir conocimientos como pocos. Personalmente di con él hace no mucho tiempo, pero recuerdo que por aquel entonces ya había leído material suyo, y es que, aunque no le conozcas, es probable que en algún momento hayas leído alguno de sus tutoriales que te ayudó a instalar esa maldita tarjeta X en X sistema, o aquel artículo tan interesante sobre alguna parte de las profundidades de Debian.

He conseguido robarle un poquito de su tiempo para entrevistarle, y aquí dejo unas líneas con él para que le conozcamos un poquito mejor.

- Bueno, antes de nada, ¿quién es Dabo? ¿Cómo te describirías en pocas palabras?

Apasionado de GNU/Linux en general y Debian en particular, los servidores web, inquieto, nadie para tomar como ejemplo, gran amigo de sus amigos y "especialista" en meter en líos en forma de comunidades o proyectos vía web a esos colegas para después, ser el único que injustamente suele salir en "los créditos". Sobre lo que hago en Internet, está todo resumido en davidhernandez.es.

- ¿Cuáles son tus inicios en la informática? ¿Y en la seguridad?

Soy del 71 y pasada la época de los Amstrad o Spectrum, me reenganché con un 286 y un Windows 3.1 con el que me divertía más pegándome con el sistema que usando aplicaciones. Empecé tarde con Windows 95 porque MSDOS perdía protagonismo en pro de la capa gráfica del sistema, en ese momento yo pensé que "perdía" control sobre él y cuando lo hice, ya empezaba a usar conjuntamente GNU/Linux, una Red Hat 3 que me costó un huevo instalar en el 486 DX2 que en ese momento tenía.

Con Windows me quedé en XP, luego usé Mac OS X junto a Debian durante unos 5 años para desde hace 2, salvo para actualizar el teléfono y lo que no puedo hacer fotográficamente hablando bajo GNU/Linux, uso únicamente Debian.

Mis inicios en la seguridad ya vienen casi desde el principio, pero "más en serio", se remontan a unos cuantos años atrás, no sabría decirte la fecha pero sí el motivo. Le hice a la hermana de mi novia de aquél entonces una comunidad privada (creo que en MSN), quienes tenían acceso eran chavales de 10 a unos 12 o 13 años. Un día me avisaron de que se veían fotos "raras" allí. Cuando accedí, la comunidad había sido comprometida, vi que había contenido pornográfico bastante fuerte.

Aprendí la lección, adopté una actitud positiva y ese día comprendí que para colgar algo en Internet donde podía comprometerse la seguridad de terceros, había que hacerlo con unas mínimas garantías y entender la responsabilidad que conlleva.

A partir de ese momento me esforcé por "comprender" y allí empezó mi curiosidad por las redes y como se comunicaban los equipos entre sí. Poco después, un gran amigo me encargó que le echase un vistazo a la configuración de la red de su empresa, esa fue mi primera "auditoría" (un término que me venía grande dados mis conocimientos en aquella época) mi sorpresa llegó a través de NetBios, me di cuenta de que desde la extranet de su empresa, se podía acceder a casi la totalidad de equipos de toda la subred a nivel nacional, conectaba a través de InfoVía.

Pero por si eso era poco, mi sorpresa fue mayúscula cuando comprobé que vía Telnet podía acceder a todo el sistema de facturación del AS400 que corría en red con un simple "user" (nombre del responsable de admon) y "password" su mismo nombre. Tuve una charla con varios puestos clave de la empresa y solventaron la situación. Hablamos del año 1998 si la memoria no me falla.

- En relación con la pregunta anterior, ¿cómo te formaste para este mundillo?

Todo comenzó con el inicio de Daboweb en el año 2002, desde su nacimiento fue una web con foro, allí quise compartir lo que iba aprendiendo con quien tuviese a bien participar sobre cuestiones de seguridad. Fue la época dorada de los foros, llena de descubrimientos y con algunos amigos que hoy en día son como de mi familia. Teníamos un subforo privado de hacking ético, de allí surgió en 2004 hackeando.com, que sigue online por cuestiones histórico-sentimentales.

Por motivos laborales nunca he podido estudiar en un aula nada relacionado con la informática, he aprendido mucho en los foros con las preguntas de los demás, muchos libros de esos que te cuesta digerir porque te falta una base sólida y quizás, con lo que más aprendí fue cuando hace unos 5 o 6 años, tomé la responsabilidad de alojar mis webs y administrar mi propio servidor dedicado.

- ¿Te dedicas profesionalmente a ello? ¿Algún área de especialización?

Salvo temas puntuales como freelance no. El área en la que me suelo mover es en la dedicada a la consultoria, administración, optimización y cuestiones de seguridad en servidores web. Todo ello dentro de apachectl.com, donde junto a dos grandes profesionales y amigos llevamos a cabo estas tareas.

- ¿Que software nunca falta en tu ordenador?

Lo esencial para mi es una instalación de Debian con KDE junto a alguna app de GNOME, luego bajo VirtualBox, una distro de BackTrack con las típicas herramientas que sueles necesitar. Aunque hay ciertas aplicaciones, las "clásicas" como Nmap, Hping, Netcat, OpenVas, etc, junto a alguna más moderna, no sé si te sonará esta, PenTBox -;P que prefiero ejecutar fuera de BackTrack.

- ¿Que personas te han impresionado en el mundo de la seguridad?

No queda nada original decir que Mitnick, pero es cierto que en mis comienzos, su historia y toda la mitología que le acompañó en los 90 me marcó. En la actualidad y sin falta de mirar fuera, el panorama nacional es tan potente que de veras, me quedarían muchos nombres en el tintero dada la gran calidad existente.

- ¿Has participado en Wargames, CTFs, ...? ¿Te mueves por esas zonas?

Sí, hace unos 5 o 6 años lo cierto es que me movía bastante por esos lares, ahora ya tengo bastantes "Wargames" de esos que no buscas como para meterme en otros -;). Además, claramente me faltaría nivel como para no quedar en algún "honroso" penúltimo puesto con tanto máquina que hay compitiendo.

- ¿Con qué disfrutas cuando no tienes un ordenador a mano?

Aquí no estaba mal añadir también o un "Smartphone" al lado ;D. Nada especial, con mis grandes amigos, mi novia, la fotografía, el ajedrez o una timba de poker sin pasta pero con mucho orgullo en las fichas del tapete. Iba a decir con un buen libro pero seguro que sería de contenido técnico. Lamentablemente cada vez leo menos novelas, antes de los chips de silicio era un gran devorador de libros.
Leer más...