Программа позволяет посмотреть пароль любого пользователя в локальной сети, в т.ч. и отделённого свитчом, если:
- Пользователи выходят в инет через прокси, которая требует аутентификации, при этом аутентификация - Basic; а это довольно частое явление, когда локалка - Microsoft, а firewall/proxy - Unix.
- Пароль можно увидеть только в момент выхода пользователя в интернет или когда пользователь запрашивает очередную страничку в интернет.
- Программа работает при установленном WinPCap
(http://netgroup-serv.polito.it/winpcap/install/default.htm)
Программа написана не для того, чтобы кому-то навредить, а чтобы админы не думали, что все пользователи такие кретины и можно совсем забить болта на вопросы защиты.
Алгоритм работы программы таков:
- с помощью WinPCap получаем доступ к содержимому сетевых пакетов
- требуется заранее знать имя или адрес прокси-машины и атакуемой машины
- используется тот факт, что если слать на некоторую машину ложные ARP-ответы, то эта машина запишет в свою таблицу адресов информацию из такого ответа, не проверяя, откуда он пришёл
1) Зная IP-адреса машин, определяем их MAC-адреса, отправляя широковещательные ARP-запросы.
2) Засылаем на атакуемую машину ложный ARP-ответ, в
котором указываем, что прокси имеет МАС-адрес нашей машины, в результате обманываем атакуемую машину - она теперь думает, что прокси - это мы.
3) После этого весь трафик между атакуемой машиной и прокси проходит через нас. мы его зеркально отображаем куда следует - если пакет пришёл от прокси, отправляем его атакуемой машине, и наоборот - если пакет пришёл от атакуемой машины, отправляем его проксе.
4) Просматриваем каждый пакет от атакуемой машины к прокси - когда пользователь выйдет в интернет или просто перейдёт к следующей ссылке, к прокси уйдёт запрос на получение новой странички, в котором будет содержаться в т.ч. и пароль.
5) Как только мы выудили пароль, возвращаем всё на свои места - шлём на атакуемую машину ложные ARP-ответы, указывая в них истинный адрес прокси.
В результате пользователь на атакованной машине даже не заметит, что его пароль стянули.
Если используется сеть Microsoft и proxy тоже на базе Microsoft, то в этом случае обычно используется схема аутентификации NT Lan Manager (NTLM), тогда пароль в чистом виде по сети уже не передаётся, и определить его можно только на базе различного рода угадывальщиков типа LC3 и пр.
То же самое происходит и в случае, когда используется сеть Unix и прокси-Unix. Тогда возможны самые различные способы аутентификации, когда пароль в чистом виде также не передаётся.
Но самый типичный случай, на мой взгляд, это когда сеть - Microsoft, а proxy и firewall (т.е. выход в интернет) - на базе Unix. И вот в этом случае часто у администраторов возникает задача определять, кто выходит в интернет, сколько и чего скачивает, и тут администраторы начинают использовать аутентификацию. Поскольку в качестве прокси в таком случае чаще всего используется Squid, а в версиях до 2.5 в нём не было поддержки NTLM (а в 2.5 ещё пойди настрой NTLM:-) ) - используют простую аутентификацию, когда пароль передаётся в чистом виде без шифрования. Вот тут-то и появляются
возможности этот пароль подсмотреть.
Если в сети не используются свитчеры (интеллектуальные хабы), то можно просто слушать весь сетевой
трафик и грести пароли охапкой. Но в случае наличия свитчеров мы можем услышать только
трафик от нас, к нам и широковещательный. Тогда простым прослушиванием ничего не добиться, приходится идти окольными путями. Именно один из таких путей и демонстрирует данная программа. Ей не страшны всякие свитчи - всю информацию она получит и так.
Программа тестировалась на работоспособность именно в такой сети - результаты впечатляют :-). Думаю, что эти результаты ещё более впечатлили бы админа этой сети.
Конечно, ничего выдающегося здесь нет, но по крайней мере это пример программы, которая реально работает и делает своё дело, в отличие от множества других программ, о которых кто-то там где-то что-то слышал. Надеюсь, что программа покажется интересной не только для меня. Присылайте все свои комментарии, замечания, негодования по адресу:
cpp@nm.ru.