Demostrando la debilidad de la encriptación inalámbrica mediante WEP

Voy a demostrar la debilidad y facilidad de craquear redes wireless protegidas mediante la obsoleta encriptación WEP, paradójicamente WEP significa «privacidad equivalente a cable» (Wirede Equivalent Privacy en inglés) pero como veremos a continuación nada más lejos de la realidad. Es muy recomendable poder injectar paquetes, lo más fácil es descargar una distribución Live que se ejecute desde USB o CD por ejemplo la bactrack del equipo de remote-exploit (agradecerles su trabajo desde aquí 😉 ) estas distros además de tener aplicados todos los parches necesarios para inyectar paquetes traen todas las herramientas que vayamos a necesitar y muchas más que pueden abrir la puerta a nuevas ideas y retos (keep your mind moving…)

Herramientas que se utilizarán:

  • Kismet: Para la localización de redes
  • wirelesstools: Para la gestión de la tarjeta inalámbrica
  • aircrack-ng: Suit completa de herramientas para los ataques wireless Sigue leyendo

Routerconfigs de cacti no se ejecuta automáticamente

Me he encontrado con este problema y ha resultado ser un fallo en la gestión de la base de datos, routerconfigs establece una opción global que indica si ya se está ejecutando un proceso en de backups. Por algún motivo (posiblemente alguna de mis pruebas mientras desarrollaba las modificaciones para soportar ssh) esta variable se quedó establecida a 1 y esto impide la ejecución automática de este plugin. La variable es «plugin_routerconfigs_running» y se encuentra en la tabla «settings» de la base de datos de cacti, para comprobar su valor ejecutar desde un terminal:

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 1         |
+—————————————+——-+

Si la columna value está establecida a 1 routerconfigs no se ejecutará así que para solucionarlo tan solo hay que ejecutar:

mysql -u cacti -p cacti -e «REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0);»
Enter password:

Y para asegurar que todo ha ido bien

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 0         |
+—————————————+——-+

Con esto routerconfigs se debería ejecutar a la perfección ;)…

O al menos eso pensaba… jejeje tras un día de ejecución volvió a fallar con el mismo resultado así que algo en el código no funciona como debe… entro en modo debugging debugging debugging uuuups que me me sa metio un bug 😛 bueno pues eso tras unas horas de estudio del código y debuggings varios hay un caso en el que un include hace un return antes de hacer el replace pertinente en esta tabla. El archivo en cuestión es el router-download.php, en la línea 66 encontramos un return solito dentro de un else tal que así

if (!empty($devices)) {

.

.

.

} else {
return;
}

para solucionar el problema el else debe quedar de esta otra forma

} else {
db_execute(«REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0)»);
return;
}

Y ahora sí con esto va como la seda os lo juro que ya lleva meses rulandooooo

byte byte my nerds 😛

Plugin routerconfigs de cacti a traves de ssh

Actualmente uso cacti para recolectar datos sobre el estado de la red en el trabajo, también tenemos el Cisco Works para la administración de la misma y desde el principio lo usé para hacer copias de seguridad de las configuraciones de los dispositivos. La cuestión es que no me gusta nada el Cisco Works, creo que consume una cantidad absurda de recursos de la máquina, buscar información en los logs es una verdadera odisea y los servicios dejan de funcionar cuando les apetece, sí se pueden detectar las caidas de los servicios mediante la configuración de alertas de las tareas que ejecute, de modo que si dejas  de recibir correos sabes que ha caido el servicio de automatización de tareas: el JRN (seria algo equivalente al CRON de Unix o al planificador de tareas de Windows). Pero es que dejó de gustarme desde el principio, los que vendieron el servicio pretendias que se usase como plataforma de monitorización pero es muy poco flexible: tan solo permite el envío de alertas a una única cuenta de correo, las alerta son muy poco configurables y cuando he recibido algún correo de alerta no me ha notificado la recuperación del dispositivo. Debo decir que no he dedicado grandes esfuerzos ni tiempo a comprender este software pero la gente a la que he consultado mis dudas, que tienen certificaciones, no han sabido responder mis dudas. Así que desde el principio preferí enfocar mis esfuerzos a Nagios y posteriormente añadí Cacti obteniendo una plataforma con niveles de soporte a los que alertar diferentes criticidades en los dispositivos y tiempos de respuesta para cada nivel, algo mucho más flexible no? 🙂 además junté la capacidad de backup del Cisco Works a la de alerta de Nagios de modo que se envía la versión y la configuración del dispositivo que esté fallando junto a los datos de contacto y localización de la oficina, a eso le llamo yo un buen sistema de alertas.

Bueno ya vale de royos lo que sí tiene chulo el CiscoWorks es la capacidad de ver las diferencias entre dos versiones de las configuraciones de un dispositivo esa fué la razón de seguir usandolo para los backups, sino habría creado un servicio de Nagios que realizase la tarea, pero como ya lo realizaba un software preferí coger las configuraciones por sftp desde la máquina de Nagios… hasta que descubrí el plugin routerconfigs que también dispone de esta funcionalidad genial!. Tras instalarlo y configurarlo vi que no tenia soporte para Cisco ASA ni para CSS y que además tan solo realiza conexiones por telnet así que los dispositivos configurados para ssh no funcionan. Bueno es software libre tengo el código así que ha modificarlo. Las modificaciones que he realizado son:

  • Soporte para copiar a través de SSH
  • Mejoras en rendimiento (muy básicas, seguro que se pueden realizar más)
  • Agregado soporte para ASA y CSS
  • Integración con el sistema de logs de Cacti durante la conexión
  • Copiar el startup-config en lugar del running-config

He modificado la versión 0.1 que cuelgo aquí por si puede ser de utilidad para alguien:

para aplicar el patch una vez descargado el plugin y el patch en el mismo directorio:

tar zxf routerconfigs-0.1.tar.gz

patch -p0 < routerconfigs_0.1_ssh.patch

Espero que os sea útil 😉

Como activar/desactivar Ctrl+alt+backspace en Xorg

En Ubuntu (9,04) Jaunty jackalope han decidido desactivar el reinicio del servidor Xorg mediante la combinación de teclas Ctrl+alt+backspace. Esto es algo que suelo utilizar bastante así que buscando un poco por internet encontré la manera de volver a activarlo, hay dos opciones una es intalando la aplicación dontzap. Pero para quien, como yo, no quiera instalar una aplicación para gestionar una opción del servido Xorg, tan solo hay que establecer la opción del servidor X DontZap editando el fichero /etc/X11/xorg.conf y añadiendole estas lineas:

Section «ServerFlags»
Option «DontZap» «false»
EndSection

La opción DontZap indica al servidor Xorg que no capture la pulsación de esta combinación de teclas, si la establecemos a false (siguiendo la lógica de doble negación) estaremos activando la combinación, para desativarla de nuevo tan solo hay que establecer la opción a «true» o borrar estas lineas 😉

Compilar madwifi para injectar paquetes con el chipset AR5008 de atheros en Ubuntu 9.04 (Jaunty)

1-Pasos rápidos (Todo está explicado en detalle en el siguiente punto)

  • SO:  Ubuntu 9.04 jaunty (ejecuta el comando lsb_release -a para obtenerla)
  • Tarjeta wifi: Atheros Communications Inc. AR5008 Wireless Network Adapter (rev 01) (ejecuta el comando lscpi)
  • Kernel: 2.6.28-11-generic (obtenido mediante el comando uname -a)
  • gcc del kernel: gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) (ejecuta: cat /proc/version)

Para los que tengan esta versión de ubuntu aquí dejo un paquete con el driver listo para ser usado 😉 madwifi-hal-01056-r4003_20090416-1_i386

1-Obtener los drivers de madwifi-hal de la página de snapshots del projecto madwifi

2-Obtener el parche desde esta web r3745-corregido o mediante la orden:

wget http://patches.aircrack-ng.org/madwifi-ng-r3745.patch

3-Preparar, compilar el código, cargar el módulo y probar la injección

cd src

tar zxf madwifi-hal-0.10.5.6-current.tar.gz

cd madwifi-hal-0.10.5.6-r4003-20090416/

sudo aptitude install patch

patch -p1 < ../r3745.patch-corregido

make && sudo make install

sudo modprobe -r ath9k && sudo modprobe ath_pci

sudo airmon-ng start wifi0

Found 5 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!

PID    Name
2834    wpa_supplicant
2851    avahi-daemon
2852    avahi-daemon
5332    NetworkManager
9426    dhclient
Process with PID 9426 (dhclient) is running on interface ath0

Interface    Chipset        Driver

wifi0        Atheros        madwifi-ng
ath0        Atheros        madwifi-ng VAP (parent: wifi0)
ath1        Atheros        madwifi-ng VAP (parent: wifi0) (monitor mode enabled)

sudo aireplay-ng -9 ath1
18:25:52  Trying broadcast probe requests…
18:25:52  Injection is working!
18:25:54  Found 5 APs

Perfecto listo y funcionando 😉

Sigue leyendo

Configurar la interfaz de gestión en un Cisco CSS

Los CSS de Cisco difieren bastante del resto de dispositivos en cuanto a comandos y configuración se refiere, mientras que en la mayoría de los dispositivos para configurar una intefaz hay que entrar en la consola de configuración y, acto seguido, entrar en la interfaz deseada para introducir los comandos que la configuran (ip address, description, vlan etc..) en los CSS no tiene absolutamente nada que ver y configuras las ipés de forma totalmente diferente. El caso que ocupa este post es configurar la interfaz de gestión. Una vez iniciada la sesión en el dispositivo hay que introducir:

CSS# config
CSS (config)# boot
CSS (config-boot)# ip address 10.54.9.8

%% System must be rebooted for IP address to take effect

CSS (config-boot)# subnet mask 255.255.255.0

%% System must be rebooted for subnet mask change to take effect

CSS (config-boot)# gateway address 10.54.9.1

Tal y como nos indica el propio CSS para que estos cambios surjan efecto es necesario reiniciar el dispositivo, así que si está en producción se debe realizar fuera del horario laboral o programar un reinicio teniendo en cuenta llegar al trabajo antes que el resto para comprobar que todo funcione como debe 🙁 gajes del oficio…

La verdad que estas divergencias en la administración de los dispositivos Cisco es algo que no acabo de asimilar y no deja de sorprenderme, se puede interpretar como una derivación de adquirir otras empresas y no acabar de pulir las cosas o quizás busque promover de esta forma la necesidad de certificarse con ellos… sea cual sea el motivo, el resultado es que dificulta la administración de una red compuesta por sus productos y da la impresión de no ser capaz de seguir una linea clara en el desarrollo de sus IOS, aunque supongo que se lo puede permitir por su posición en el mercado.

¿Como saber el CSS qué está activo?

Una de las primeras preguntas que me surgió al tratar con estos dispositivos es ¿Como qué CSS está activo? Para poder realizar esta pregunta hay que encontrarse en un escenario con dos CSS configurados para alta disponivilidad compartiendo una IP mediante HSRP claro está. Tras intentar usar el comando de los Cisco ASA «show failover» y ver que fallaba tuve que charlar sobre el tema con mi amigo Google quien, naturalmente, me mostró el camino. Una vez iniciada la sesión tan solo hay que ejecutar el comando «show virtual-routers» que produce está salida en el terminal:

CSS1# show virtual-routers

Virtual-Routers:

Interface Address: 10.30.4.5       VRID: 10
Priority:      253                     Config. Priority:  253
State:         Master                  Master IP:         10.30.4.5
State Changes: 23                      Last Change:       01/29/2009 04:59:01
Preempt:       True                    Last Fail Reason:  IF Down
Last Clearing of Stat Counters:  01/07/2009 19:04:10

Critical-Services:
CRITICAL                    State: Alive       Type: Scripted

Interface Address: 10.30.4.5       VRID: 100
Priority:      253                     Config. Priority:  253
State:         Master Master IP:         10.30.4.5
State Changes: 23                      Last Change:       01/29/2009 04:59:01
Preempt:       True                    Last Fail Reason:  IF Down
Last Clearing of Stat Counters:  01/07/2009 19:04:10

Critical-Services:
CRITICAL                    State: Alive       Type: Scripted

Interface Address: 17.16.4.13          VRID: 200
Priority:      253                     Config. Priority:  253
State:         Master Master IP:         17.16.4.13
State Changes: 2                       Last Change:       01/07/2009 19:04:15
Preempt:       True                    Last Fail Reason:  Critical Svc Down
Last Clearing of Stat Counters:  01/07/2009 19:04:10

Critical-Services:
CRITICAL                    State: Alive       Type: Scripted

La salida no será exactamente así ya que además de haber cambiado las ips se ha realizado con un solo CSS encendido, lo importante es ver que interfaz (en realidad qué IP) tiene el State en modo Master

Securizando wordpress

Este post se centra en mejorar la seguridad de wordpress viendo los plugins que considero más útiles para estos menesteres.

Con el poco tiempo que lleva este blog online ya se han dado de alta unos cuantos espammers, aunque ya activé por defecto que los posts y comentarios tienen que ser moderados y el plugin Akismet para detectar y bloquear posts mediante reconocimiento de firmas de spam, me molesta recibir correos de alta de usuarios de rusia, brazil, rumanía… ¿Qué hace gente de esos países en una web en castellano? ¿por qué todos coinciden en un patrón de un grupo letras, un guión y un grupo de números? digamos la expresión regular [a-z]7[-_][0-9]5 o similares. Además no me gusta nada la idea de que puedan hacer login en mi web personas que tan solo quieren explotar vulnerabilidades, así que me puse manos a la obra a ver de qué soluciones disponía.

Sigue leyendo

Desarrollando una extensión para F-spot

Me he decidido a desarrollar una extensión para f-spot, me gusta la filosofía de este estupendo gestor fotografico pero hecho en falta alguna funcionalidad, en concreto me voy a centrar en un buscador que muestre las fotos que no han sido exportadas nunca o que no han sido exportadas mediante alguna extensión de exportación en concreto. Iré explicando los detalles del proceso en este post ¿sere capaz de programar esta extensión? ¿llegará a tener calidad suficiente como para que la añadan al core del programa? ¿servira este post como guía para otros desarrolladores?… Todas estas dudas se iran solventando en futuros episodios, así que no te pierdas el próximo en este mismo canal y a la misma hora.

Sigue leyendo