August 2, 2018

Сниффинг для начинающих

[Sniffing. What is it?]


Так что же такое сниффинг? Это перехват пакетов передающихся по сети. Сегодня мы уделим все внимание ему. Но перед этим научимся:

  1. Использовать Wireshark.
  2. Собственно анализировать с его помощью пакеты.
  3. Сбор информации о пользователях.
  4. Познакомимся с MITM атакой
  5. Попробуем обойти коммутатор.

Ну что же , приступим))

[1 & 2 - Wireshark и анализ трафика]

Wireshark - это тулза для анализа трафика компьютерных сетей.

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

Linux:

sudo atp-get install wireshark

Теперь давайте запустим нашу акулу и попытаемся ее седлать)

В терминале пропишите wireshark. И наблюдаем следующее

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

После пред нами предстает такая картина.

Панель сверху - предназначена для управления.

Панель посередине - список пакетов, перехваченных нами)

Панель снизу - предназначена для просмотра (исследования) пакетов.

Давайте, пока идет перехват, откроем браузер. Перейдем например на какой-либо сайт с авторизачией. И введем абсолютно рандомный логин и пароль. Далее снова открываем акулу и останавливаем перехват. Кстати мы можем сохранить в файл с расширением .pcap все что мы на нюхали)) Так вот, мы видим целу кучу пакетов

Конечно же мы знаем про то что данные передаются по http(s), но на поиски нужных пакетов может уйти уйму времени. Для этого у акулы есть фильтры. Мы можем отфильтровать пакеты. Фильтр находится тут

Вот некоторые из фильтров:

1. ip.proto - протокол
2. ip.src - отправитель
3. ip.dst - получатель
4. ip.addr - любой адрес

Вы можете присваивать, сравнивать и строить целые логические выражения с фильтрами. Некоторые операторы используемые в фильтрах:

== - присваивание
|| - логическое или
& - логическое и
> - больше
< - меньше

И так я могу использовать например такой фильтр, чтобы получить передаваемые http протоколом данные -http.request.method == "МЕТОД"

Вводим этот фильтр например с использованием метода GET. И посмотрим на результат работы фильтра

Жмем правой кнопкой мыши --> Follow --> TCP Stream

Если хорошо присмотреться, то данные зашифрованы. А именно в Base64. Ну собсна декодируем)

Вот так мы немного разобрались с неким анализом трафика. А давайте теперь Еще не много углубимся в практику с фильтрами. Например возьмем таск с рутми. За одно и убедимся в небезопасности telnet)

Открываем скачанный pcap файл в акуле и видим следующее:

Куча пакетов. Давайте попробуем для начала отсортировать telnet'овские пакеты от прочего "хлама".

telnet

Теперь немного пошарим по первым нескольким пакетам. И воуля) Находим все необходимые нам данные

В этом вся малая часть анализа трафика)

[3 - Сбор информации о пользователях]

Этот пункт является весьма очень важным. Нам нужно собрать информации о пользователях. А именно распознать активные хосты и определить кто есть кто. Для этого есть 1001 способ, мы же воспользуемся чем по интересней(сложней(нет)).

Для начала определим активные хосты. Для этого воспользуемся утилитой fping. Это практически тотже ping, но чуточку лучше.

fping -Asg 192.168.1.0/24 -r 3 >> hosts_active.txt

Команда выше отправляет ясное дело пакеты на все возможные(доступные в сегменте) хосты и ждет ответа. Данное действие выполняется 3 раза и записывается в файл.

Результат:

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

Теперь выводим содержимое в нужном нам формате

cat hosts_active.txt | grep alive

Далее вы можете просканировать хосты nmap'ом дабы определить кто есть кто. Это был интересный способ, но вместо того чтоб тратить на все это время, существует волшебная утилита

netdiscover

На этом наш мини мини сбор информации закончен.

[4 - Знакомимся с MITM]

Для того чтоб разобраться что же такое MITM(Man In The Middle) атака, давайте представим такую картину. У вас есть друг - болтун. Он часто рассказывает все что бы с ним не произошло своему другому другу. Допустим, вы претворились для своего друга тем, кому он рассказывал о себе все что только можно(просто представьте), а для его друга представьтесь своим другом) и рассказывайте ему то, что узнали от того болтуна. Тем самым, вы как бы встали между ними. А теперь не с людьми, а с устройствами. Компьютер человека точно такой же чертов болтун. Но его друг - это роутер. Вы в этом случае совсем не известный человек(верней ваша машина). Для опять таки компьютера болтуна вы притворяетесь роутером, а для роутера тем болтуном. Таким образом вы встали посередине и через вас проходит информация, которая может оказаться очень важной. В этом суть данной атаки. Вы нухаете проходящий через вас трафик стоя меж 2-х устройств.

А теперь к практике! Для проведения данного рода атаки существует масса различных фреймворков которые значительно все упростят. Но давайте хоть немного поработаем руками. Воспользуемся хотя бы mitmproxy.

Для начала нам следует подрубить IP форвординг и изменить правила iptables:

1. echo "1" > /proc/sys/net/ipv4/ip_forward #Включаем форвординг пакетов
2. iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8282 #Перенаправляем трафик с 80 порта на 8282
3. iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-port 8282 #Перенаправляем трафик с 443 порта на 8282

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

Теперь давайте притворимся для устройства A устройством B а для B как устройcтво A. Также перед этим запустите акулу))

Теперь пропишем такую команду у себя в терминале

arpfpoof -i <interface> -t <жертва> <шлюз>

Т.е. если вы хотите встать между роутером и целью, допусти IP цели 192.168.1.3 то команда пудет выглядеть примерно так

arpspoof -i wlan0 -t 192.168.1.3 192.168.1.1

Что же, атака идет полным ходом, акулой вы сниффаете трафик, потом при окончании атаки сможете воспользоватся фильтрами и проанализировать полученный трафик.

[5 - Обход коммутатора]​

На самом деле все невероятно просто. Для начала вспомним про то, чем свитч отличен от некоторого другого. А именно, тем , что у него имеется таблица mac адресов. Да у моста тоже она имеется, но коммутаторы интересней) Так вот, он со своей таблицей, как бы защищает сеть(в основном повышает производительность), но для хакера это минус. Чтобы выяснить почему, взглянем на схему ниже.

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

Как вы думаете в каких vlan'ах нарушитель сможет воспроизвести сниффинг?

А правильный ответ и так сам на себя напрашивается. Во всех виланах. Но ведь там коммутатор скажете вы. А я вам отвечу, что злоумышленник может провести атаку по типу mac flooding, переполнив таблице у коммутатора. Так коммутатор станет работать как концентратор, что нам наруку. Надеюсь все читающие знают что же такое коммутатор и концентратор. А если нет, то бегом читать.

А мы пока займемся превращением свитча в хаб. Все на много проще чем вы думаете. Мы воспользуемся встроенной в kali утилитой - macof. Для этого прописываем

macof -i eth0

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