День 40.Burp Suite: Other Modules
Задание 1. Введение
Ознакомьтесь с некоторыми менее известными модулями Burp Suite.
Добро пожаловать в раздел «Другие модули Burp Suite» !
Помимо широко известных комнат Repeater и Intruder , в Burp Suite есть несколько менее известных модулей. Именно на них мы сосредоточимся в ходе исследования этой комнаты.
В центре внимания будут инструменты Decoder, Comparer, Sequencer и Organizer. Они упрощают работу с закодированным текстом, позволяют сравнивать наборы данных, анализировать случайность в захваченных токенах и помогают сохранять и аннотировать копии HTTP- сообщений, к которым вы, возможно, захотите вернуться позже. Хотя эти задачи кажутся простыми, их выполнение в Burp Suite может существенно сэкономить время, что подчеркивает важность эффективного использования этих модулей.
Итак, без лишних слов, давайте перейдем к первому инструменту — декодеру.
Задание 2. Декодер: Обзор
Модуль Decoder в Burp Suite предоставляет пользователю возможности манипулирования данными. Как следует из названия, он не только декодирует данные, перехваченные во время атаки, но и предоставляет функцию кодирования собственных данных, подготавливая их к передаче целевому объекту. Decoder также позволяет создавать хеш-суммы данных, а также предоставляет функцию Smart Decode, которая пытается рекурсивно декодировать предоставленные данные, пока они не вернутся в исходный текстовый формат (подобно функции "Magic" в Cyberchef ).
Чтобы получить доступ к декодеру, перейдите во вкладку «Декодер» в верхнем меню и просмотрите доступные параметры:
Этот интерфейс предоставляет множество вариантов.
- Это поле служит рабочей областью для ввода или вставки данных, требующих кодирования или декодирования. Как и в других модулях Burp Suite , данные можно перемещать в эту область из разных частей платформы с помощью опции « Отправить в декодер», активируемой щелчком правой кнопки мыши.
- В верхней части списка справа есть возможность обрабатывать входные данные либо как текстовые, либо как шестнадцатеричные байтовые значения.
- По мере продвижения вниз по списку появляются выпадающие меню для кодирования, декодирования или хеширования входных данных.
- Функция Smart Decode , расположенная в конце, пытается автоматически декодировать входные данные.
После ввода данных в поле ввода интерфейс дублируется, отображая результат нашей операции. Затем мы можем выбрать применение дальнейших преобразований, используя те же параметры:
Вопрос: Какая функция пытается выполнить автоматическое декодирование входных данных?
Ответ: Smart decode
Задание 3. Декодер: кодирование/декодирование
Кодирование и декодирование с помощью декодера
Теперь давайте подробно рассмотрим параметры ручного кодирования и декодирования. Они идентичны независимо от того, выбрано ли меню декодирования или кодирования:
- Plain : Это относится к исходному тексту до применения каких-либо преобразований.
- URL : Кодирование URL используется для обеспечения безопасной передачи данных в URL-адресе веб-запроса. Оно включает замену символов их кодов ASCII в шестнадцатеричном формате, перед которыми стоит символ процента (%). Этот метод крайне важен для тестирования любых веб-приложений.Например, кодирование символа косой черты ( / ), код символа ASCII которого равен 47, преобразует его в шестнадцатеричный код в 2F , таким образом, в кодировке URL он становится %2F . Декодер можно использовать для проверки этого, введя косую черту в поле ввода, а затем выбрав
Encode as -> URL: - HTML : Кодирование HTML-сущностей заменяет специальные символы амперсандом (&), за которым следует либо шестнадцатеричное число, либо ссылка на экранируемый символ, и заканчивается точкой с запятой (;). Этот метод обеспечивает безопасное отображение специальных символов в HTML и помогает предотвратить такие атаки, как XSS. Опция HTML в декодере позволяет закодировать любой символ в его экранированный HTML-формат или декодировать захваченные HTML-сущности. Например, чтобы декодировать ранее обсуждавшуюся кавычку, введите закодированную версию и выберите
Decode as -> HTML: - Base64 : Base64 — широко используемый метод кодирования, преобразующий любые данные в формат, совместимый с ASCII. Принцип его работы на данном этапе не имеет решающего значения; однако заинтересованные лица могут ознакомиться с базовой математической основой здесь .
- ASCII Hex : Эта опция преобразует данные между ASCII и шестнадцатеричным представлением. Например, слово "ASCII" можно преобразовать в шестнадцатеричное число "4153434949". Каждый символ преобразуется из своего числового представления ASCII в шестнадцатеричное.
- Шестнадцатеричная, восьмеричная и двоичная системы счисления : эти методы кодирования применяются исключительно к числовым данным, преобразуя их между десятичной, шестнадцатеричной, восьмеричной (основание восемь) и двоичной системами счисления.
- Gzip : Gzip сжимает данные, уменьшая размер файлов и страниц перед передачей в браузер. Более быстрая загрузка крайне желательна для разработчиков, стремящихся улучшить свои SEO-показатели и избежать неудобств для пользователей. Декодер облегчает ручное кодирование и декодирование данных gzip, хотя они часто не являются допустимыми ASCII/Unicode. Например:
Эти методы можно комбинировать. Например, фразу ("Burp Suite Decoder") можно преобразовать в шестнадцатеричный код ASCII, а затем в восьмеричный:
В совокупности эти методы предоставляют нам существенный контроль над данными, которые мы кодируем или декодируем.
Каждый метод кодирования/декодирования обозначен определенным цветом, что позволяет быстро определить применяемое преобразование.
шестнадцатеричный формат
Хотя ввод данных в формате ASCII удобен, иногда требуется побайтовое редактирование входных данных. Именно здесь на помощь приходит функция «Шестнадцатеричный просмотр», которую можно выбрать над параметрами декодирования:
Эта функция позволяет просматривать и изменять данные в шестнадцатеричном байтовом формате, что является важным инструментом при работе с бинарными файлами или другими данными, не являющимися ASCII-символами.
Smart Decode
Наконец, у нас есть опция «Умное декодирование» . Эта функция пытается автоматически декодировать закодированный текст. Например, текст Burp Suite автоматически распознается как HTML-код и соответственно декодируется:
Хотя эта функция и не идеальна, она может стать быстрым решением для расшифровки неизвестных фрагментов данных.
Кодировка фразы в Base64: Let's Start Simple.
Какова версия этого текста в кодировке base64?
Ответ: TGV0J3MgU3RhcnQgU2ltcGxl
Вопрос: Расшифруйте эти данные по URL: %4e%65%78%74%3a%20%44%65%63%6f%64%69%6e%67.
Какой текст возвращается в открытом виде?
Ответ: Next: Decoding
Вопрос: Используйте функцию Smart decode для декодирования этих данных: %34%37.
Что представляет собой расшифрованный текст?
Ответ: 47
Вопрос: Закодируйте эту фразу: Encoding Challenge.
Начните с кодирования base64. Возьмите результат этого кодирования и преобразуйте его в шестнадцатеричный код ASCII. Наконец, закодируйте шестнадцатеричную строку в восьмеричный код .
Ответ: 24034214a720270024142d541357471232250253552c1162d1206c
Задание 4. Декодер: Хэширование
HashВ дополнение к функциям кодирования/декодирования, Decoder также предоставляет возможность генерировать хеш-суммы для наших данных.
Теория
Хэширование — это односторонний процесс, преобразующий данные в уникальную сигнатуру. Чтобы функция считалась алгоритмом хэширования, её результат должен быть необратимым. Эффективный алгоритм хэширования гарантирует, что каждый входной параметр данных будет генерировать совершенно уникальный хэш. Например, использование алгоритма MD5 для получения хэш-суммы для текста "MD5sum" даёт результат 4ae1a02de5bd02a5515f583f4fca5e8c. Использование того же алгоритма для "MD5SUM" даёт совершенно другой хэш, несмотря на близкое сходство входных данных: 13b436b09172400c9eb2f69fbd20adad. Поэтому хэши обычно используются для проверки целостности файлов и документов, поскольку даже незначительное изменение файла существенно меняет хэш-сумму.
Примечание: Алгоритм MD5 устарел и не должен использоваться в современных приложениях.
Кроме того, хеши используются для безопасного хранения паролей, поскольку односторонний процесс хеширования делает пароли относительно защищенными, даже если база данных будет скомпрометирована. Когда пользователь создает пароль, приложение хеширует его и сохраняет. Во время входа в систему приложение хеширует введенный пароль и сравнивает его с сохраненным хешем; если они совпадают, пароль верен. Используя этот метод, приложению никогда не нужно хранить исходный (открытый) пароль.
Хэширование в декодере
Декодер позволяет создавать хеш-суммы для данных непосредственно в Burp Suite; он работает аналогично параметрам кодирования/декодирования, которые мы обсуждали ранее. В частности, мы щелкаем по выпадающему меню «Хеш» и выбираем алгоритм из списка:
Примечание: Этот список значительно длиннее, чем список алгоритмов кодирования/декодирования — стоит пролистать его, чтобы увидеть множество доступных алгоритмов хеширования.
Продолжая наш предыдущий пример, введем "MD5sum" в поле ввода, а затем прокрутим список вниз, пока не найдем " MD5 ". Применение этой команды автоматически переведет нас в шестнадцатеричный режим отображения:
Результатом работы хеш-алгоритма является не чистый текст в формате ASCII/Unicode. Поэтому принято преобразовывать результат работы алгоритма в шестнадцатеричную строку; это и есть та самая форма «хеша», с которой вы, возможно, знакомы.
Завершим это, применив к хеш-сумме кодировку "ASCII Hex", чтобы получить аккуратную шестнадцатеричную строку из нашего первоначального примера.
Вопрос: Используя программу Decoder, определите хеш-сумму SHA-256 для фразы: Let's get Hashing!?
Для ответа на этот вопрос преобразуйте это в шестнадцатеричную ASCII-строку.
Ответ:6b72350e719a8ef5af560830164b13596cb582757437e21d1879502072238abe
Вопрос: Сгенерируйте хеш-сумму MD4 для фразы: Insecure Algorithms.
Перед отправкой закодируйте это в формате base64 (а не в ASCII Hex).
Ответ:TcV4QGZZN7y7lwYFRMMoeA==
Рассмотрим пример в контексте:
Сначала скачайте файл, прикрепленный к этому заданию.
Примечание: Этот файл также можно загрузить с развернутой виртуальной машины wget http://10.114.155.32:9999/AlteredKeys.zip — это может быть полезно, если вы используете AttackBox.
Теперь ознакомьтесь с приведенным ниже описанием задачи:
«Какой-то шутник подделал мой SSH-ключ! В каталоге четыре ключа, и я понятия не имею, какой из них настоящий. MD5-хеш моего ключа 3166226048d6ad776370dc105d40d9f8 — не могли бы вы его найти?»
Задание 5. Сравнительный анализ: Обзор
Как следует из названия, Comparer позволяет сравнивать два фрагмента данных либо по ASCII-словам, либо по байтам.
Давайте сначала рассмотрим интерфейс:
Интерфейс можно разделить на три основных раздела:
- Слева мы видим элементы, которые нужно сравнить. Когда мы загружаем данные в Comparer, они отображаются в виде строк в этих таблицах. Мы выбираем два набора данных для сравнения.
- В правом верхнем углу расположены параметры для вставки данных из буфера обмена (Вставить), загрузки данных из файла (Загрузить), удаления текущей строки (Удалить) и очистки всех наборов данных (Очистить).
- Наконец, в правом нижнем углу мы можем выбрать сравнение наборов данных по словам или по байтам. Неважно, какой из этих вариантов вы выберете изначально, поскольку это можно изменить позже. Это кнопки, которые мы нажимаем, когда готовы сравнить выбранные данные.
Как и в большинстве модулей Burp Suite , мы также можем загружать данные в Comparer из других модулей, щелкнув правой кнопкой мыши и выбрав «Отправить в Comparer» .
После того, как мы добавим как минимум два набора данных для сравнения и нажмем либо «Слова» , либо «Байты» , во всплывающем окне отобразится результат сравнения:
Это окно также состоит из трех отдельных разделов:
- Сравниваемые данные занимают большую часть окна; их можно просмотреть как в текстовом, так и в шестнадцатеричном формате. Исходный формат зависит от того, выбрали ли мы сравнение по словам или по байтам в предыдущем окне, но это можно изменить с помощью кнопок над полями сравнения.
- В левом нижнем углу находится ключ сравнения, показывающий, какие цвета обозначают измененные, удаленные и добавленные данные в двух наборах данных.
- Флажок «Синхронизировать представления» находится в правом нижнем углу окна. При выборе этого флажка гарантируется синхронизация форматов обоих наборов данных. Другими словами, если вы измените один из них на шестнадцатеричный формат, другой автоматически синхронизируется.
В заголовке окна отображается общее количество найденных различий.
Задание 6. Компаратор: Пример
Теперь мы знаем, что делает Comparer, но в чём его польза?
Существует множество ситуаций, когда возможность быстро сравнить два (потенциально очень больших) массива данных может оказаться полезной.
Например, при проведении атаки методом перебора паролей или подбора учетных данных с помощью Intruder, вы можете сравнить два ответа разной длины, чтобы определить, в чем заключаются различия и указывают ли эти различия на успешный вход в систему.
Практический пример
- Перейти к
http://10.114.155.32/support/loginПопробуйте войти в систему с неверным именем пользователя и паролем — перехватите запрос в Burp Proxy . - Отправьте запрос в Repeater с помощью
Ctrl + R(или аналогичного инструмента для Mac) или щелкнув правой кнопкой мыши по запросу в модуле Proxy и выбрав «Отправить в Repeater» . - Отправьте запрос, затем щелкните правой кнопкой мыши по ответу и выберите «Отправить в Comparer» .
- На вкладке «Ретранслятор» измените учетные данные на следующие: Отправьте запрос еще раз, затем передайте новый ответ в Comparer.
Задание 7. Секвенсор: Обзор
Sequencer позволяет нам оценивать энтропию , или случайность, «токенов». Токены — это строки, используемые для идентификации чего-либо, и в идеале они должны генерироваться криптографически безопасным способом. Эти токены могут быть сессионными cookie-файлами или токенами защиты от межсайтовой подделки запросов ( CSRF ) , используемыми для защиты при отправке форм. Если эти токены не генерируются безопасным способом, то теоретически мы можем предсказывать будущие значения токенов. Последствия могут быть существенными, например, если рассматриваемый токен используется для сброса пароля.
Начнём с рассмотрения интерфейса секвенсора:
В Sequencer есть два основных способа проведения анализа токенов:
- Захват в реальном времени : это более распространенный метод, и он является подвкладкой по умолчанию для Sequencer. Захват в реальном времени позволяет передать в Sequencer запрос на генерацию токена для анализа. Например, мы можем захотеть передать Sequencer POST-запрос к конечной точке авторизации, зная, что сервер ответит cookie-файлом. После передачи запроса мы можем дать указание Sequencer начать захват в реальном времени. Затем он автоматически выполнит тот же запрос тысячи раз, сохраняя сгенерированные образцы токенов для анализа. После сбора достаточного количества образцов мы останавливаем Sequencer и позволяем ему анализировать захваченные токены.
- Ручная загрузка : Это позволяет загрузить список предварительно сгенерированных образцов токенов непосредственно в Sequencer для анализа. Использование ручной загрузки избавляет от необходимости отправлять тысячи запросов к целевому объекту, что может быть избыточным и ресурсоемким процессом. Однако для этого требуется большой список предварительно сгенерированных токенов.
В этой комнате мы сосредоточимся на записи видео в режиме реального времени.
Вопрос: Что позволяет нам оценивать Sequencer?
Ответ: Entropy
Задание 8. Секвенсор: Захват в реальном времени
Отлично, давайте перейдем к процессу использования функции захвата данных в реальном времени Sequencer для анализа энтропии токена защиты от перебора паролей, используемого в форме входа в административную панель.
Сначала перехватите запрос http://10.114.155.32/admin/login/в прокси-сервере . Щелкните правой кнопкой мыши по запросу и выберите «Отправить в секвенсор» .
В разделе «Расположение токена в ответе» можно выбрать между Cookie , полем формы и пользовательским расположением . Поскольку в данном случае мы тестируем loginToken, выберите переключатель «Поле формы» и выберите loginToken из выпадающего меню:
В данной ситуации мы можем смело оставить все остальные параметры по умолчанию. Поэтому нажмите кнопку « Начать захват в реальном времени» .
Откроется новое окно, указывающее на то, что в данный момент идёт захват токенов, и отображающее количество захваченных токенов. Подождите, пока не будет захвачено достаточное количество токенов (примерно 10 000 должно быть достаточно); чем больше токенов мы получим, тем точнее будет наш анализ.
После того, как будет собрано около 10 000 токенов, нажмите «Пауза» , а затем выберите кнопку «Анализировать сейчас» :
Важно отметить, что мы могли бы также остановить захват данных. Однако, выбрав паузу, мы сохраняем возможность возобновить захват данных позже, если в отчете окажется недостаточно выборок для точного расчета энтропии токена .
Если бы нам требовались периодические обновления результатов анализа, мы могли бы также установить флажок «Автоматический анализ». Эта опция указывает Burp выполнять анализ энтропии после каждых 2000 запросов, обеспечивая частые обновления, точность которых будет возрастать по мере загрузки большего количества образцов в Sequencer.
На данном этапе также стоит отметить, что мы можем скопировать или сохранить захваченные токены для дальнейшего анализа в будущем.
После нажатия кнопки «Анализировать сейчас » Burp проанализирует энтропию токена и сгенерирует отчет.
Вопрос: Каково общее качество случайности, по оценке?
Ответ: excellent
Задание 9. Секвенатор: Анализ
Теперь, когда у нас есть отчет по анализу энтропии нашего токена, пришло время его проанализировать!
Сгенерированный отчет об анализе энтропии разделен на четыре основных раздела. Первый из них — это сводка результатов. В сводке содержится следующая информация:
- Общий результат : Это дает общую оценку безопасности механизма генерации токенов. В данном случае уровень энтропии указывает на то, что токены, вероятно, генерируются безопасно.
- Эффективная энтропия : Этот показатель измеряет степень случайности токенов. Эффективная энтропия в 117 бит является относительно высокой, что указывает на достаточную случайность токенов и, следовательно, на их защиту от атак методом предсказания или перебора.
- Надежность : Уровень значимости 1% означает, что существует 99% уверенности в точности результатов. Этот уровень уверенности достаточно высок, что гарантирует точность оценки эффективной энтропии .
- Образец : Здесь представлена подробная информация об образцах токенов, проанализированных в процессе тестирования энтропии , включая количество токенов и их характеристики.
Хотя сводный отчет часто содержит достаточно информации для оценки безопасности процесса генерации токенов, важно помнить, что в некоторых случаях может потребоваться дополнительное расследование. Анализ на уровне символов и битов может дать более детальное представление о случайности токенов, особенно когда сводные результаты вызывают потенциальные опасения.
Хотя отчет об энтропии может служить надежным индикатором безопасности механизма генерации токенов, необходимы более убедительные доказательства. На безопасность токенов могут влиять и другие факторы, а природа теории вероятности и статистики подразумевает наличие определенной степени неопределенности. Тем не менее, эффективная энтропия в 117 бит с уровнем значимости 1% свидетельствует о надежном и безопасном процессе генерации токенов.
Задание 10. Организатор: Обзор
Модуль «Организатор» в Burp Suite предназначен для хранения и аннотирования копий HTTP- запросов, к которым вы, возможно, захотите вернуться позже. Этот инструмент может быть особенно полезен для организации рабочего процесса тестирования на проникновение. Вот некоторые из его ключевых функций:
- Вы можете сохранять запросы, которые хотите изучить позже, сохранять запросы, которые вы уже определили как интересные, или сохранять запросы, которые хотите добавить в отчет позже.
- Вы можете отправлять HTTP- запросы в Burp Organizer из других модулей Burp, таких как Proxy или Repeater . Для этого щелкните правой кнопкой мыши по запросу и выберите «Отправить в Organizer» или используйте стандартную горячую клавишу
Ctrl + O. Каждый HTTP- запрос, отправленный в Organizer, представляет собой копию исходного запроса, сохраненную в момент отправки запроса в Organizer, доступную только для чтения. - Запросы хранятся в таблице, которая содержит такие столбцы, как порядковый номер запроса, время отправки запроса, статус рабочего процесса, инструмент Burp, с которого был отправлен запрос, метод HTTP , имя хоста сервера, путь к файлу в URL, строка запроса в URL, количество параметров в запросе, код состояния HTTP ответа, длина ответа в байтах и любые сделанные вами заметки.
Чтобы просмотреть запрос и ответ:
- Щелкните по любому элементу Органайзера.
- И запрос, и ответ доступны только для чтения. Вы можете выполнить поиск внутри запроса или ответа, выделить запрос, а затем воспользоваться строкой поиска под запросом.
Вопрос: Сохраненные запросы доступны только для чтения? (да/нет)
Ответ: yea
Задание 11. Заключение
Поздравляем с завершением работы над модулем "Другие модули Burp Suite" !
Вкратце, Decoder позволяет кодировать и декодировать данные, упрощая чтение и понимание передаваемой информации. Comparer позволяет выявлять различия между двумя наборами данных, что может иметь решающее значение для обнаружения уязвимостей или аномалий. Sequencer помогает проводить анализ энтропии токенов, предоставляя информацию о случайности их генерации и, следовательно, об уровне их безопасности. Organizer позволяет хранить и аннотировать копии HTTP- запросов, к которым вы, возможно, захотите вернуться позже.
Базовое понимание этих инструментов расширяет ваши навыки в области тестирования веб-приложений на проникновение.
В следующем и заключительном зале этого модуля вы познакомитесь с инструментом Burp Suite Extensions .
Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!