HHIDE_DUMP
Гость
H
HHIDE_DUMP
Гость
Burp Suite – это мощный комбайн с графическим интерфейсом. В умелых руках с его помощью можно очень легко делать замечательные вещи. В этой заметке я немного раскрою только одну из его функций.
Burp Suite имеет очень гибкий в настройке HTTP прокси. С его помощью ОЧЕНЬ удобно анализировать запросы и полученные ответы. Ещё Burp Suite имеет замечательную гибкую систему замены передаваемых данных на лету. Если рассматривать другие программы, которые можно было бы применить для этих же целей, то для анализа трафика приходят в голову Wireshark, а для подмены данных собственноручно написанные фильтры (Etterfilter) для Ettercap. Но пытаясь анализировать запросы и соответствующие им ответы в Wireshark (особенно при обильном трафике), можно сломать голову. Писать и компилировать фильтры Ettercap умеют тоже далеко не все. А в прокси Burp Suite всё это можно делать в графическом интерфейсе с огромным количеством опций. Подобная простата и гибкость позволит даже новичкам проводить атаки, которые при использовании других программ доступны только продвинутым тестерам на проникновение.
Небольшое примечание: Все команды в этой инструкции я выполняю от рута.
Burp Suite имеет очень гибкий в настройке HTTP прокси. С его помощью ОЧЕНЬ удобно анализировать запросы и полученные ответы. Ещё Burp Suite имеет замечательную гибкую систему замены передаваемых данных на лету. Если рассматривать другие программы, которые можно было бы применить для этих же целей, то для анализа трафика приходят в голову Wireshark, а для подмены данных собственноручно написанные фильтры (Etterfilter) для Ettercap. Но пытаясь анализировать запросы и соответствующие им ответы в Wireshark (особенно при обильном трафике), можно сломать голову. Писать и компилировать фильтры Ettercap умеют тоже далеко не все. А в прокси Burp Suite всё это можно делать в графическом интерфейсе с огромным количеством опций. Подобная простата и гибкость позволит даже новичкам проводить атаки, которые при использовании других программ доступны только продвинутым тестерам на проникновение.
Небольшое примечание: Все команды в этой инструкции я выполняю от рута.
Если посмотреть документацию Burp, то там написано, как настроить браузер, чтобы он работал через прокси Burp. Эта полезная для анализа веб-приложений и сайтов функциональность, но мне больше нравится использовать прокси Burp в атаке человек-посередине.
С помощью сторонник приложений вам нужно начать ARP спуфинга. Его суть заключается в том, что компьютер жертвы вместо отправки трафика через роутер начинает думать, что отправлять трафик нужно теперь нам (атакующему). Наша машина переправляет трафик в Интернет, и ответы из Интернета переправляет жертве. Т.е. мы выступаем в роли роутера.
ARP спуфинга можно сделать в графическом интерфейсе. Если вам нужна подсказка, то посмотрите пример запуска 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:
Запускаем Burp
Переходим во вкладку Proxy -> Options. Там в самом верху в Proxy Listeners нажимаем Add и добавляем новый прослушиватель: на 8080 порту. В качестве Specific Address выберите IP компьютера атакующего (т.е. той машины, где запущен Burp).
Здесь же перейдите во вкладку Request handling и поставьте галочку на Support invisible proxying (enable only if needed):
Когда добавите новый прослушиватель, поставьте галочку там, где Running (это будет означать, что он задействован в данное время):
Теперь спуститесь в самый низ, найдите Allow requests to web interface using fully-qualifyed DNS hostnames и поставьте там галочку:
Теперь перейдите в Proxy -> Intercept, отключите его:
Теперь должен начаться анализ полученных данных.
С помощью сторонник приложений вам нужно начать ARP спуфинга. Его суть заключается в том, что компьютер жертвы вместо отправки трафика через роутер начинает думать, что отправлять трафик нужно теперь нам (атакующему). Наша машина переправляет трафик в Интернет, и ответы из Интернета переправляет жертве. Т.е. мы выступаем в роли роутера.
ARP спуфинга можно сделать в графическом интерфейсе. Если вам нужна подсказка, то посмотрите пример запуска Ettercap (там есть скриншоты).
Переключите вашу машину в режим пересылки (форвардинга).
Код:
echo "1" > /proc/sys/net/ipv4/ip_forward
Код:
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
Код:
burpsuite
Здесь же перейдите во вкладку Request handling и поставьте галочку на Support invisible proxying (enable only if needed):
Когда добавите новый прослушиватель, поставьте галочку там, где Running (это будет означать, что он задействован в данное время):
Теперь спуститесь в самый низ, найдите Allow requests to web interface using fully-qualifyed DNS hostnames и поставьте там галочку:
Теперь перейдите в Proxy -> Intercept, отключите его:
Теперь должен начаться анализ полученных данных.
Анализ данных в прокси Burp очень прост. Например, здесь мы выдим запрос и ответ, которые передаёт и получает LibreOffice при проверке обновлений:
А здесь показана удачная базовая аутентификация:
Обратите внимание на строку Authorization: Basic cnUtYm9hcmQ6cnUtYm9hcmQ=. В ней (в виде хешей, которые очень легко поддаются брутфорсу), передан логин и пароль для аутентификации.
А на этом скриншоте видно, что выполнен вход на форум:
Интересная строка action=dologin&inmembername=f123gh4t6&inpassword=jhRh846Fj&ref=http%3A%2F%2Fforum.ru-board.com%2Fmisc.cgi%3Faction%3Dlogout. В ней присутствует логин и пароль:
Более читаемо в таком виде:
Чтобы увеличить количество данных, передаваемых в открытом виде, в настройках прокси поставьте галочку напротив Convert HTTPS links to HTTP.
А здесь показана удачная базовая аутентификация:
Обратите внимание на строку Authorization: Basic cnUtYm9hcmQ6cnUtYm9hcmQ=. В ней (в виде хешей, которые очень легко поддаются брутфорсу), передан логин и пароль для аутентификации.
А на этом скриншоте видно, что выполнен вход на форум:
Интересная строка action=dologin&inmembername=f123gh4t6&inpassword=jhRh846Fj&ref=http%3A%2F%2Fforum.ru-board.com%2Fmisc.cgi%3Faction%3Dlogout. В ней присутствует логин и пароль:
Код:
inmembername=f123gh4t6
inpassword=jhRh846Fj
Чтобы увеличить количество данных, передаваемых в открытом виде, в настройках прокси поставьте галочку напротив Convert HTTPS links to HTTP.
Необязательно ставить именно бэкдор – можно выбрать любую программу.
Алгоритм следующий:
На компьютере жертвы установлена программа Paint.NET (определили по сайту запроса и по передаваемым данным). Вот пример проверки обновлений:
На целевом компьютере это выглядит так:
Подготовить бэкдор на основе имеющегося исполнимого файла можно, например, с помощью программы Backdoor Factory (BDF). Вариантов достаточно много и этой теме можно посвятить отдельную статью, поэтому пока не будем останавливаться на теме подготовки пропатченных исполнимых файлов.
Обратим внимание на строку:
Это самая свежая версия на сервере. Эту строку программа сравнивает со своей версией и исходя из этого принимает решение – есть обновления или нет.
В Burp переходим в Proxy -> Options. Находим там Match and Replace. Нажимаем Add для добавления нового правила:
Request header меняем на Response body. В качестве строки для поиска вставляем 4.9.5848.30436, в качестве строки, на которую менять, вставляем, к примеру, 5.9.5848.30436:
Добавляем ещё одно правило. Нам нужно строку
Добавляем правило:
После очередной проверки обновлений, оригинальный ответ:
Ответ после нашей модификации:
На компьютере жертвы дела обстоят так:
Видно, что программа считает, что нужно обновиться, но мы забыли поменять ещё одну запись которая выводиться пользователю – хорошо, что мы всё тестируем заранее ))
Создадим ещё одно правило – нам не трудно:
Меняем строку
На
Теперь на целевой машине:
Просто для хохмы:
На целевой машине теперь:
Чтобы программа сама начала обновление и установку файла, нужно передать ей подобный файл (например, если оригинальные обновления упакованы в zip, то в таком же формате и нужно пересылать установщик с бэкдором, если программа использует протокол HTTP, то его и нужно использовать (а не HTTPS)).
Алгоритм следующий:
- ищем запросы с компьютера жертвы, которые сгенерировали программы в поисках обновления;
- модифицируем полученные ответы, вставляя вместо реальных ссылок на обновлённые программы наш файл с бэкдором.
- ищем запросы с компьютера жертвы, которые сгенерировали программы в поисках обновления;
- модифицируем запрос с компьютера жертвы, создавая иллюзию, что обновление запрашивает программа с более низкой версией ИЛИ модифицируем ответ сервера, повышая версию программы, доступную для установки;
- модифицируем полученные ответы, вставляя вместо реальных ссылок с обновлениями программ наш файл с бэкдором.
- можно полностью модифицировать ответ сервера, предлагая обновления даже для актуальной версии программы;
- используя DNS прокси можно вообще перенаправить запросы на свой сервер и на запросы об обновлениях отвечать что угодно и когда угодно.
На компьютере жертвы установлена программа Paint.NET (определили по сайту запроса и по передаваемым данным). Вот пример проверки обновлений:
- Запрос:
Код:
GET /updates/versions.8.1000.0.x64.ru.txt HTTP/1.1
Host: www.getpaint.net
Connection: close
- Ответ:
Код:
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
Подготовить бэкдор на основе имеющегося исполнимого файла можно, например, с помощью программы Backdoor Factory (BDF). Вариантов достаточно много и этой теме можно посвятить отдельную статью, поэтому пока не будем останавливаться на теме подготовки пропатченных исполнимых файлов.
Обратим внимание на строку:
Код:
StableVersions=4.9.5848.30436
В Burp переходим в Proxy -> Options. Находим там Match and Replace. Нажимаем Add для добавления нового правила:
Request header меняем на Response body. В качестве строки для поиска вставляем 4.9.5848.30436, в качестве строки, на которую менять, вставляем, к примеру, 5.9.5848.30436:
Добавляем ещё одно правило. Нам нужно строку
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
поменять на что-то наше – на ссылку установщика с бэкдором. Например, на Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Добавляем правило:
После очередной проверки обновлений, оригинальный ответ:
Ответ после нашей модификации:
На компьютере жертвы дела обстоят так:
Видно, что программа считает, что нужно обновиться, но мы забыли поменять ещё одну запись которая выводиться пользователю – хорошо, что мы всё тестируем заранее ))
Создадим ещё одно правило – нам не трудно:
Меняем строку
Код:
Name=paint.net 4.0.9
Код:
Name=paint.net 5.0.9
Теперь на целевой машине:
Просто для хохмы:
На целевой машине теперь:
Чтобы программа сама начала обновление и установку файла, нужно передать ей подобный файл (например, если оригинальные обновления упакованы в zip, то в таком же формате и нужно пересылать установщик с бэкдором, если программа использует протокол HTTP, то его и нужно использовать (а не HTTPS)).
Burp Suite – это хороший инструмент для тестирования на проникновение веб-приложений. Но, как показано в этом разделе, благодаря гибкости настройки у него могут быть и необычные применения. В данном случае мы рассмотрели насколько удобно и наглядно в прокси Burp Suite можно анализировать HTTP трафик. А также как его легко модифицировать. Модифицировать можно ответы/запросы/заголовки/тело. Можно просто блокировать соединения по определённым параметрам. В общем, Burp Suite – это инструмент с большим количеством возможностей, но для полного использования его функционала необходимо углублённое изучение методов работы и стратегий в Burp.