somos todos peligrosos

31 de enero de 2009

¿Que está pasando con Google? Todas las paginas que visito son peligrosas. Hasta el mismo Google es peligrosa. Creo que www.stopbadware.com, servicio que utiliza Google a dejado de responder...

Google + StopBadware.org = Internet Gestapo?







sha1 con un poco de sal

29 de enero de 2009

SSHA (o traducido SHA1 con un poco de sal) es el método que utiliza Zimbra para cifrar las contraseñas de usuario.

A cada usuario dentro del árbol LDAP "ou=people,dc=miempresa,dc=com" se le añade un subschema o un objeto llamado "zimbraAccount" este subschema, también conocida como una objectClass, contiene más atributos pertenecientes al usuario. Entre estos atributos está el userPassword.

Veamos esta objectClass:

# cd /opt/zimbra/openldap/bin
# ./ldapsearch -H ldap://zimbra.miempresa.com -x -b 
   "uid=amperis,ou=people,dc=miempresa,dc=com"
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# amperis, people, miempresa.com
dn: uid=amperis,ou=people,dc=miempresa,dc=com
zimbraMailTransport: lmtp:zimbra.miempresa.com:7025
zimbraMailDeliveryAddress: amperis@miempresa.com
sn: Alejandro Moreno
zimbraMailStatus: enabled
zimbraId: 4ab82437-ff86-45f8-bbd0-76508e7527e4
mail: amperis@miempresa.com
displayName: Alejandro Moreno
uid: amperis
objectClass: organizationalPerson
objectClass: zimbraAccount
objectClass: amavisAccount
cn: Alejandro Moreno
zimbraMailHost: zimbra.miempresa.com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Veamos ahora el contenido de la objectClass para el usuario “amperis@miempresa.com":

# su - zimbra
# zmlocalconfig -s zimbra_ldap_password
zimbra_ldap_password = asdfghjklñ

# exit
# ./ldapsearch -H ldap://zimbra.miempresa.com -w asdfghjklñ -D 
   "uid=zimbra,cn=admins,cn=zimbra" -x "(&(objectClass=zimbraAccount)
   (mail=amperis@miempresa.com))"

# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (&(objectClass=zimbraAccount)(mail=amperis@miempresa.com))
# requesting: ALL
#

# amperis, people, miempresa.com
dn: uid=amperis,ou=people,dc=miempresa,dc=com
zimbraMailTransport: lmtp:zimbra.miempresa.com:7025
zimbraAccountStatus: active
zimbraMailDeliveryAddress: amperis@miempresa.com
sn: Alejandro Moreno
zimbraMailStatus: enabled
zimbraId: 4ab82437-ff86-45f8-bbd0-76508e7527e4
mail: amperis@miempresa.com
displayName: Alejandro Moreno
uid: amperis
objectClass: organizationalPerson
objectClass: zimbraAccount
objectClass: amavisAccount
cn: Alejandro Moreno
zimbraMailHost: zimbra.miempresa.com
zimbraLastLogonTimestamp: 20090126085702Z
userPassword:: e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE=
zimbraPasswordModifiedTime: 20090127170140Z

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Podéis ver el resultado de "userPassword=e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE=". Esto no es la password encriptada, sino la password codificada en Base64.
Si decodificamos la Base64 tenemos:

decodeBase64(e1NTSEF9ajJrc3JGUGNkck9ZMVNJUHdQY2pBSXR1REw4aHlSbEE=) = {SSHA}j2ksrFPcdrOY1SIPwPcj8ItuDL8hyRlA

Por tanto el userPassword es "j2ksrFPcdrOY1SIPwPcj8ItuDL8hyRlA" y está hasheado con el algoritmo SSHA. OpenLDAP proporciona varios métodos para cifrar la información: MD5, SHA1, SSHA, CRYPTO, etc.

El algoritmo SSHA (salted-SHA) se basa en SHA1 añadiendo un token o salt al password del usuario.

userPassword = SHA1(password_usuario + token)

¿alguien se anima a bajarse los fuentes de Zimbra y decirme cual es este token?

a vueltas con el ptr

27 de enero de 2009

Hace una semana que hemos cambiado de ISP. Hemos dejado una antigua ADSL de 8Mb para hacer pasar todo el correo por una fibra garantizada de 2Mb de subida y 2Mb de bajada. Al poco tiempo de empezar a sacar el correo por este ISP se comenzó a llenar la cola de “deferred” de correo que no podía salir con el siguiente mensaje de error:

"Cannot resolve PTR record for x.y.z.t"
"220 Have no reverse-DNS (PTR record) assigned addresses"
"450 4.7.1 Client host rejected: cannot find your hostname"


¿Cambiar solo los MX?... No.

El problema es que la nueva dirección IP con la que enviamos el correo no tiene reverse-DNS. En un sistema de correo, algunos MTA utilizan el reserver-DNS como una técnica antispam. Es decir, cómo mi dirección IP no tenía activado el reverse-DNS, el MTA de destino me respondía con este error.
Para resolver este problema, la IP tiene que tener creado el registro PTR en el DNS, el cual relaciona la dirección IP con el nombre de hostname. Hay más información sobre este registro en el RFC1035.

Veamos un ejemplo. Miremos los servidores de SMTP que tiene google.com consultado sus MX:

# dig google.com MX

; <<>> DiG 9.3.1 <<>> google.com MX
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50975
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com.                    IN      MX

;; ANSWER SECTION:
google.com.             10690   IN      MX      10 smtp3.google.com.
google.com.             10690   IN      MX      10 smtp4.google.com.
google.com.             10690   IN      MX      10 smtp1.google.com.
google.com.             10690   IN      MX      10 smtp2.google.com.

;; ADDITIONAL SECTION:
smtp3.google.com.       3490    IN      A       64.233.183.25
smtp4.google.com.       3490    IN      A       72.14.221.25
smtp1.google.com.       3490    IN      A       209.85.237.25
smtp2.google.com.       3490    IN      A       64.233.165.25

;; Query time: 8 msec
;; SERVER: 10.1.3.13#53(10.1.3.13)
;; WHEN: Tue Jan 27 19:51:11 2009
;; MSG SIZE  rcvd: 180

Consultemos ahora el registro PTR de la dirección IP 209.85.237.25 que corresponde al host smtp1.google.com:

# dig -x 209.85.237.25

; <<>> DiG 9.3.1 <<>> -x 209.85.237.25
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36817
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;25.237.85.209.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
25.237.85.209.in-addr.arpa. 86305 IN    PTR     smtp1.google.com.

;; Query time: 1 msec
;; SERVER: 10.1.3.13#53(10.1.3.13)
;; WHEN: Tue Jan 27 19:52:09 2009
;; MSG SIZE  rcvd: 74

Vemos que la dirección IP 209.85.237.25 está bien configurada porque tiene reverse-DNS.

Por tanto, si estamos bajo este problema, debemos de contactar con nuestro ISP y decirle que bajo la dirección IP que nos ha dado (x.y.z.t) cree su registro PTR con el valor de hostname, por ejemplo, smtp.miempresa.com. De esta forma saldrán todos los correos que tengan este problema.

zimbra multi-server

25 de enero de 2009

Justo un año después de escribir el primer paper de Zimbra para el zimbra-grupo aquí va el segundo con ansias de hacerlo cada vez más grande.

Este documento explica cómo montar un sistema de correo con tres servidores Zimbra para dar cabida a unos 10.000 usuarios de correo. La solución no existen realmente sino que se basa en un laboratorio. Hay que tomarlo como una aproximación a lo real.



las amigas rusas

24 de enero de 2009

Últimamente estoy muy sorprendido de la cantidad de chicas rusas que quieren conocerme y el esfuerzo enorme que hacen por aprender nuestro idioma.



hola, ¿quién eres?

22 de enero de 2009

Algunos servidores de correo utilizan el comando HELO del protocolo SMTP para verificar si el nombre de host existe. De esta forma podemos evitar cierta entrada de spam.

Puedes encontrarte el caso de conversaciones SMTP como estas:

> 220 linux.YYY.net ESMTP Postfix
< HELO cygnus.XXX.com
> 450 4.7.1 : Helo command rejected: Host not found
El servidor linux.YYY.net rechaza nuestra conexión porque el nombre de host cygns.XXX.com no existe en el DNS y por tanto no puede ser traducido.

Es posible que esto sea un error nuestro al configurar el servidor de correo. Es posible que el servidor al hacer el HELO utilice un nombre de host interno a nuestra red que no está publicado en Internet.
Tendríamos que configurar Postfix para que el valor de $myhostname de main.cf corresponda a un nombre de host traducible desde Internet.

En Zimbra lo cambiaríamos de esta forma:

# zmprov mcf zimbraMtaMyHostname hostpublico.XXX.com
# zmcontrol stop
# zmcontrol start

Más información:
+ postfix helo
+ myhostname

imap en tiempo real

20 de enero de 2009

Hoy me he visto en la necesidad de descubrir si el servidor IMAP de Zimbra tiene disponible una característica que se llama IMAP idle (o IMAP push o mail push). Las versiones más modernas de IMAP la tienen por defecto. Este es el caso de Cyrus en Zimbra. No he podido verificarlo en Courier o Dovecot.

El caso es que esta característica o mejor dicho, esta extensión del protocolo IMAP definido en la RFC2177 permite al servidor IMAP enviar una señal al cliente cuando este reciba un correo electronico en su buzón. Es decir, no hace falta configurar el cliente de correo para que revise el buzón cada X minutos. Si tenemos IMAP con idle esto no hace falta porque el servidor ya avisará al cliente. En el caso de Outlook 2003 esta opción se la pasaba por el forro y no hacia caso a la señal de idle que le llegaba del servidor. En Thunderbird esto no pasa. En el momento que el servidor le envía la señal, este lanza el popup con el aviso de nuevo correo.

Para averiguar si tu servidor de correo tiene IMAP idle basta con conectarse por telnet al 143 y preguntar por las capabilitys:



También tenéis un pantallazo del flujo de paquetes TCP/IP que manda el servidor al cliente para avisarle de la llegada de un nuevo mensaje. El primer paquete que llega es de 192.168.x.x que es el servidor IMAP. El que primero inicia la comunicación es el servidor y no el cliente.



Este tipo de comunicación es muy interesante por ejemplo para los mensajes a foros donde se contestan y responden preguntas constantemente, o por ejemplo para implementar un chat utilizando el protocolo IMAP.

Más información:
+ RFC2177
+ Cyrus & imap idle en zimbra

cuantas query necesito

12 de enero de 2009

Me dicen el otro día que si tengo alguna inyección para sacar el “nombre de usuario” del usuario que hace la consulta. Tal persona desconocida tenía una Web donde había encontrado un parámetro inyectable y quería una única query para sacar el nombre de usuario.

Pocas cosas se pueden conseguir hoy en día con una única query… es el caso del desconocido. Está muy difícil sacar información interesante y si no fuera por técnicas de booleanization y blind injection. Sería casi imposible.
El tiempo y el número de consultas que tenemos que hacer contra un parámetro que sepamos que es inyectable es mucho mayor que la longitud de los datos que obtenemos. Aquí tenéis un ejemplo de lo que os hablo sobre la booleanización. Por ejemplo para sacar que el nombre del usuario “sys” (tres letras) se han necesitado hacer 9 consultas contra la base de datos.

Para el administrador esto es una ventaja, ya que por un lado dificulta el ataque (aunque con las herramientas que corren esto no sirve de nada) y por otro lado el gran número de consultas no pasan desapercibidas dentro del log de la base datos (suponiendo que somos unos feroces lectores de logs).

Un ejemplo real:







En la primera inyección se han necesitado más de 20 querys para sacar que la base de datos es MySQL. Para el segundo y tercer caso se han necesitado más de 100 querys para sacar el nombre del usuario de la base de datos y el nombre de la base de datos.

Más información:
+ Lista de proxys anonimos
+ Mira un poquito el log de mysql para detectar estas cosas
+ Si te das prisa sabras más de estas cosas... pero prepara 100€

comienza asterisk (parte 5)

11 de enero de 2009

La nueva versión de firmware SIP 3.1 permite ejecutar comandos de teléfono desde el microbrowser. Es decir, teniendo una pagina HTML con un listado de extensiones, es posible navegar por el listado y hacer la llamada estando directamente sobre un numero de extensión.
Esto es útil si quieres hacer un addressbook HTML del estilo:

101 Persona 1
102 Persona 2
111 Persona 3
112 Persona 4
...

Para poder hacer llamadas a extensiones desde el código HTML basta con utilizar estos tags los cuales solo son interpretadas por el browser del teléfono:

   <a href="Tel://101">Persona 1</a>

addressbook_sip31.php es un script en PHP que accede a la tabla USERS del FreeBPX y hace un listado de todas las extensiones que tenemos. De esta forma una persona desde s u teléfono SIP (por ejemplo un Polycom) puede ir a Menu->Application y cargar esta pagina de forma automática.
Esta pagina le mostrará un addressbook de todas las extensiones de forma que puede llamar a la persona con solo pulsar un botón.
En el momento que añadir una nueva extensión o modificar un nombre simplemente basta con refrescar la pagina web o volver a entrar en Application.

Más información:
+ Desarrollo de aplicaciones Web en Polycom 3.1

christopher baker

10 de enero de 2009

Christopher Baker es un artista urbano que ha enfocado sus trabajos hacia la relación que existe entre las personas y la tecnología. Quien ha visitado alguna vez "art futura" o las exposiciones de "Sonar" sabrá de que hablo.

En todos sus proyectos siempre aparecen luces de láser, elementos de electrónica, etc. Es un tio raro de esos que te coge unas lamparas, unos cables y hace iluminar las bombillas al ritmo de música electrónica.

Lo que quiero enseñar es su proyecto llamado "my map" donde ha recopilado su más de 60.000 correos electrónicos y ha hecho esto:



Esto es una maya de relaciones interpersonales. Es decir, de los campos FROM, CC u CCO a recopilado las direcciones de correo para hacer un gráfico de quien habla con quien. La intensidad del color de la línea indica el grado de amistad o relación con la persona (contra más mails le envío a una persona más amigo es). Podéis ver como los colores van del rojo, naranja y amarillo.

En el siguiente video podéis ver como van aumentado los amigos con el paso del tiempo.


My Map from Christopher Baker on Vimeo.


Este tipo de gráficos me recuerdan mucho a los que se utilizan en CAIDA y que ya he hablado en "cuidar de internet".

md5 to sha en zimbra

9 de enero de 2009

Desde hace unas semanas se estan oyendo noticias de cómo se ha conseguido romper un certificado md5 por parte de investigadores de la universidad Eindhoven y unas cuantas playstation 3.

Pues bien, zimbra genera certificados basados en md5 por defecto. Dado que por debajo se utiliza openssl es posible decirle que genere los certificados con otro tipo de hash.

Para cambiar md5 a sha editaremos /opt/zimbra/conf/zmssl.cnf.in y buscaremos el parametro llamado "default_md". Cambiaremos el valor de "md5" por el de "sha1". Ahora solo tenemos que volver a generar un nuevo certificado utilizando la interfaz web que llegó con Zimbra 5.x o por linea de comandos siguiendo la receta típica.

Yo utilizo este script que hice siguiendo la receta: zmcreatecert.

Nota: Aunque SHA1 (publicado en 1995) es más moderno que MD5 (publicado en 1991) este también tiene los meses contados... :(

lo que hace la crisis (parte ii de ii)

8 de enero de 2009

Le toca el turno al Thunderbird+Lightning. Para quien no lo sepa el Lightning es un complemento que me permite tener calendarios y tareas. Los complementos en Mozilla tienen extensión .xpi e internamente están comprimidos.

Comenzamos:

+ Bajamos la última versión de Thunderbird.
+ El Thunderbird lo descomprimimos como si fuera un zip dentro de //miserver/sysvol/midominio/scripts/thunderbird. El resultado será un setup.exe y tres carpetas.
+ Bajamos el complemento lightning-0.9-tb-win.xpi y lo copiamos dentro de //miserver/sysvol/midominio/scripts/thunderbird/.
Si quisiéramos añadir más complementos basta con ir poniéndolos todos dentro de esta carpeta y modificando el siguiente script a nuestro gusto.
+ Ahora creamos el archivo //miserver/…/thunderbird/instalar_thunderbird.bat con el siguiente contenido:

@echo off
echo Instalación de Thunderbird + Lightning v2...

\\miserver\sysvol\midominio\scripts\thunderbird\setup.exe -ms
copy \\miserver\sysvol\midominio\scripts\thunderbird\lightning-0.9-tb-win.xpi 
     "%ProgramFiles%\Mozilla Thunderbird"\
cd "%ProgramFiles%\Mozilla Thunderbird"\
thunderbird.exe -install-global-extension lightning-0.9-tb-win.xpi

echo Instalación terminada.

El anterior script lo que hace es arrancar la instalación de Thunderbird en modo silencioso. Una vez instalado, copia el complemento a la carpeta de instalación y lo instala.

+ Sólo queda arrancar el instalar_thunderbird.bat con permisos suficientes para que se pueda instalar en una maquina donde el usuario no tenga permisos. Editamos el script de arranque del usuario donde queremos instalar el Thunderbird y ponemos la siguiente línea:

\\miserver\sysvol\midominio\scripts \CPAU.exe -LWP -u MIDOMINIO\administrator -p 
123456 -ex “\\miserver\sysvol\midominio\scripts\thunderbird\instalar_thunderbird.bat”

“Administrator” es un usuario con permisos para instalar programas es todas las estaciones y “123456” es su contraseña.

lo que hace la crisis (parte i de ii)

7 de enero de 2009

La crisis nos afecta a todos. Tengo un amigo que ha decidido no renovar las licencias de Office 2003 a Office 2008 y pasarlo todo a Openoffice. Para el correo cambia el Outlook por el Thunderbird+Lightning.

Como son muchas maquinas, ha montado unas instalaciones desatendidas de estos productos una vez el usuario entra en el dominio de Windows. Cada usuario tiene un script de arranque que crear carpetas, configura impresoras, etc. Desde estos scripts se lanza la instalación de Openoffice y Thunderbird.

Ningún usuario de la red tiene permisos para instalar software en una estación, así que durante la instalación tendremos que decirle que somos un usuario con permisos suficientes. Para ello necesitaremos tener en //miserver/sysvol/midominio/scripts el comando cpau.exe el cual ejecuta un comando con permisos de administrador.

Cpau.exe es un comando de DOS muy parecido al runas.exe de Windows pero al que se le puede pasar la password por parámetros.

Empezamos con la instalación desatendida de Openoffice:

+ Bajamos la última versión de Openoffice.
+ El .exe que hemos bajado lo descomprimimos como si fuera Zip dentro de //miserver/sysvol/midominio/scripts/openoffice. Tendremos que tener unas cuantas carpetas y unos cuantos archivos, entre ellos uno llamado openofficeorg30.msi.
+ Ahora creamos el archivo de comandos //miserver/…/openoffice/instalar.bat con el siguiente contenido:

@echo off
echo Instalación de OpenOffice v3...

start /wait msiexec /qn /norestart /i 
\\miserver\sysvol\midominio\scripts\openoffice\openofficeorg30.msi SELECT_WORD=0
SELECT_EXCEL=0 SELECT_POWERPOINT=0 ADDLOCAL=ALL

echo Instalación terminada.

El anterior script arranca el Openoffice en modo silencioso. Aquí tenéis más propiedades de instalación.

+ Sólo queda arrancar el instalar.bat con permisos suficientes para que se pueda instalar en una maquina donde el usuario no tenga permisos. Editamos el script de arranque del usuario donde queremos instalar el Openoffice y añadimos la siguiente línea:

\\miserver\sysvol\midominio\scripts \CPAU.exe -LWP -u MIDOMINIO\administrator -p
123456 -ex “\\miserver\sysvol\midominio\scripts\openoffice\instalar.bat”


servicio caido

5 de enero de 2009

Tengo una web que tiene un formulario de contacto y desde mi servidor de correo, una vez al día, recojo esos correos que se han generado en el formulario web. El formulario no envía directamente el correo a mi servidor sino que se queda en un buzón externo a mi dominio. Una vez al día recojo este correo con un fetchmail.

Por motivos que aun no he descubierto el servicio del fecthmail se me cae y pasan semanas hasta que me doy cuenta que no llegan los correo de la web. Para salir del paso lo normal es programar un cron que reinicie el servicio cada cierto tiempo. Si el servicio esta up pues no pasa nada, y si esta down pues se levantará.

Este es un script para determinar si un servicio esta caído y que le llegue al admin un correo. El servicio no es critico y no necesito ninguna solución en tiempo real como whatsup.

#!/bin/bash

if pidof fetchmail > /dev/null; then
   echo Servicio fetchmail esta UP
else
   echo "El servicio de fetchmail esta DOWN en $(uname -n)" | 
         mail -s "ALERT: Fetchmail DOWN" admin@miempresa.com
fi

Este script lo programaría cada hora para que mirara si está levantado el servicio. Podríamos modificarlo para que después de enviar el correo levantara el servicio, pero a mi solo me interesa que me avise.

El comando /bin/pidof me dice si un servicio esta up o down. Este comando es un script con el siguiente código:
#!/bin/sh
ps axc|awk "{if (\$5==\"$1\") print \$1}";


¡qué gordo estás!

3 de enero de 2009

Desde la versión 5 de Zimbra ya existe la posibilidad de que se envíe un correo electrónico al usuario cuando su buzón está cerca de llenarse. En las propiedades del buzón dentro de la pestaña avanzado tenemos las opciones "Espacio de almacenamiento de la cuenta en Mb." y "Umbral porcentual para avisar del espacio de almacenamiento".

En la versión 4 esto había que hacerlo manualmente con un script y llamando al comando "zmprov gqu localhost" que nos informaba del espacio de todos los buzones.

Este es un script para que el administrador reciba un report cada cierto tiempo del estado de ocupación de los buzones. Al final del post está el script completo:

alarma=50
temporal=`mktemp`
/opt/zimbra/bin/zmprov gqu localhost > $temporal

while read line ; do

    buzonReport=$line
    buzon=`echo $buzonReport | cut -f1 -d\ `
    quota_maxima=`echo $buzonReport | cut -f2 -d\ `
    quota_usada=`echo $buzonReport | cut -f3 -d\ `

    if [ $quota_maxima -ne 0 ] ; then
        quota_percentage=`echo "scale=1; (($quota_usada * 100)/ $quota_maxima)" | bc`
        if [ `echo "$quota_percentage >= $alarma" | bc` -eq 1 ] ; then
            quota_maxima_megs=`echo "scale=1; ($quota_maxima / 1048576)" | bc`
            echo -e "$buzon : $quota_percentage% ocupado de un maximo de 
                 $quota_maxima_megs Mb."
        fi      
    fi

done < $temporal

Si lo ejecutamos a mano tenemos:

[zimbra@mail bin]$ ./zmquotawarning
50 warn%

admin@amperisblog.com : 60% ocupado de un maximo de 100 Mb.
francisco@amperisblog.com : 69% ocupado de un maximo de 100 Mb.
rafael@amperisblog.com : 99% ocupado de un maximo de 100 Mb.
vicente@amperisblog.com : 99% ocupado de un maximo de 100 Mb.
wiki@amperisblog.com : 51% ocupado de un maximo de 200 Mb.

Descargar zmquotawarning.

Más información:
+ Wiki quota warning en Zimbra

¿que me has hecho?

2 de enero de 2009

Hace unos meses tuve la desgracia a asistir a un clonado de disco para un análisis forense de un ordenador de una persona. La cosa pintaba mal porque estaba presente un notario, un abogado, un clonador y el usuario del ordenador.

Fueron un par de horas interesantes. La idea del análisis forense es clonar exactamente el disco "atacado" y analizarlo desde el exterior. Es decir nunca se arranca el ordenador o servidor atacado, sino que se saca el disco, se clona y se analiza byte a byte buscando cadenas de texto o navegando por los archivos.

Aunque no estoy muy puesto en el tema hay dos maneras de enfocar el análisis y dependiendo de los que estamos buscando. La primera es si el disco ha sido atacado por un hacker, en cuyo caso tenemos via libre para extraer toda la información que necesitemos para hacer el análisis. Otro caso, que fue el mio, es si el análisis es para buscar cierta información dentro de un ordenador personal de un usuario (aunque este ordenador sea propiedad de la empresa). En este caso el análisis forense no puede realizarse libremente rastreando el disco ya que es posible encontrar información personal del usuario y en este caso se estaría cometiendo un delito (segun la legislación española). En este caso el clonador debe saber exactamente las "palabras clave" que tiene que buscar (la empresa debe tener estas palabras clave porque tiene sospechas). Si el clonador abre un fichero (delante de un juez) y luego resulta que es información personal, se estaría cometiendo un delito.

Si el disco ha sido crackeado, el análisis es siempre más divertido ¿no?. Aquí dejo un par de PDFs muy interesantes de un reto de análisis forense real de RedIris y de la metodología y pasos que se siguen para llegar a la conclusión de que un hacker ha entrado por un bug en el servidor de FTP, ha instalado un rootkit y ha utilizado el servidor para añadirlo a su lista de botnet.

PDF 1 y PDF 2


También pongo una foto de una maquina parecida a la que se utilizó para clonar el disco. La maquinita no es más que una caja de zapados donde se le pincha el disco origen y el disco copia, empieza a copiar y al finalizar crea un hash para ver que los discos son exactamente iguales.

Más información:
+ Botnet
+ Maquinita clonadora
+ Reto forense de RedIris

he ganado !!! he ganado !!!

1 de enero de 2009

Hay día 1 anunciaban los tres ganadores de tres licencias de NOD32 por un año que sorteaba Tecnoseguridad.net... y me ha tocado!!!!!!!!!!!!!!!!!!! Empiezo bien el año.

Este es el resultado...

Yupi!!!

PD: si son 17 personas y hay 3 premios: ¿3/17 = 0,1764 = 17,64% de que me toque?

a repasar todos los certificados

Después de la noticia de que las PKI basadas en MD5 se han roto toca repasar todos los certificados que uno haya comprado... a gastarse pasta en nuevos certificado con sha.

Vuelvo a perder las cuentas del año... el problema de Kaminsky con el DNS, los errores de diseño de BGP, el despiste del programador de Debian con el OpenSSL, otro defecto de diseño en el TCP que puede provocar un ping de la muerte, la rotura de WPA con la ayuda de tarjetas NVIDIA... estamos que nos salimos.



Más información:
+ La gentuza que ha roto el PKI
+ Tocado y hundido
+ El certificado parece que es valido