Глава 9. Написание отчёта о пентесте
Автор: Aditya Gupta Переводчик: Летающий дракон
В этой главе мы изучим заключительный и самый важный аспект пентеста — написание отчёта. Это короткая глава, которая поможет вам описать ваши методы и находки в отчёте. Для большинства пентестеров это самая неинтересная часть пентеста, но она также является одним из самых важных шагов, поскольку отчёт становится «важным материалом», который облегчает понимание для других технических специалистов и менеджеров.
Отчёт о пентесте: основы
Отчёт о пентесте — это краткое изложение всех находок в процессе пентеста, включая, но не ограничиваясь, использованными методами, областью работы, предположениями и степенью серьёзности уязвимостей. Отчёт о пентесте используется только как полный документ пентеста и может быть использован для устранения обнаруженных уязвимостей и дальнейшего использования.
Написание отчёта о пентесте
Чтобы понять, как написать отчёт о пентесте, лучше всего иметь чёткое представление о некоторых ключевых частях отчёта о пентесте.
Некоторые наиболее важные составляющие включают:
Кроме того, должна быть предоставлена достаточная информация о пентесте, организации, проводящей пентест, и клиенте, а также о «соглашении о неразглашении». Давайте рассмотрим каждую часть по очереди, чтобы быстро взглянуть на неё.
Краткое описание выполнения
Краткое описание выполнения — это быстрая демонстрация результатов всего пентеста. Краткое описание выполнения не требует много технических деталей, оно просто представляет собой резюме, используемое для быстрого просмотра пентеста за максимально короткое время. Краткое описание выполнения — первое, что видят менеджеры и руководители.
Пример:
Пентест приложения XYZ имеет множество уязвимостей с открытым вводом проверки, которые могут позволить злоумышленнику получить доступ к конфиденциальным данным.
Вы также должны объяснить степень серьёзности этой уязвимости для бизнеса организации.
Уязвимости
Как следует из названия, здесь должно быть краткое описание всех уязвимостей, обнаруженных в приложении, вместе с соответствующей подробной информацией. Если вы присвоили уязвимостям номера CVE, вы можете включить их. Вы также должны включить технические детали приложения, вызвавшие уязвимость. Другой хороший способ продемонстрировать уязвимости — классифицировать их по категориям: низкая, средняя и высокая, а затем представить их на диаграмме или другом графическом представлении.
Область работы
Область работы просто означает, какие приложения и сервисы охватывает пентест. Она может быть написана в одной строке следующим образом:
«Область работы ограничивается приложением XYZ для Android и iOS и не включает какие-либо серверные компоненты».
Использованные инструменты
Это необязательная категория, которую обычно можно включить в другую категорию, например, обсуждение уязвимостей и технических деталей. Здесь мы можем кратко упомянуть различные инструменты и их конкретные версии, используемые в этом разделе.
Следованные методы тестирования
Эта категория является одной из самых важных и должна быть подробно описана. Здесь пентестер должен указать различные технологии и шаги, которым он следовал на этапе пентеста. Это может быть простой обратный инжиниринг приложения, анализ трафика, использование различных инструментов для анализа библиотек и двоичных файлов и т. д.
Этот раздел должен предоставить другим людям полное понимание и возможность воспроизвести эти уязвимости.
Рекомендации
Здесь должны быть указаны различные задачи, которые необходимо выполнить для защиты программы и исправления уязвимостей. Сюда могут входить такие вещи, как предложение сохранять файлы с соответствующими разрешениями, шифровать сетевой трафик и правильно использовать SSL и т. п. Он также должен включать правильный способ выполнения этих задач с учётом ситуации в организации.
Заключение
Этот раздел должен просто суммировать общие результаты пентеста, и мы можем использовать обзор уязвимостей для простого объяснения небезопасности приложения. Помните, что мы не должны вдаваться в подробности об отдельных уязвимостях, так как мы уже обсудили их в предыдущем разделе.
Приложение
Последний раздел отчёта о пентесте должен быть приложением или быстрым справочником, который читатели могут использовать для быстрого обзора конкретных тем пентеста.
Подведение итогов
В этой главе мы быстро рассмотрели различные части отчёта о пентесте и объяснили, почему пентестеры должны понимать эти части, чтобы написать отчёт. Цель этой главы — служить кратким руководством по написанию отчёта о пентесте в конце этапа пентеста. Кроме того, вы можете найти пример отчёта о пентесте на следующей странице.
Для пентестеров и тех, кто хочет начать работу с безопасностью Android, я надеюсь, эта книга станет отличным инструментом. Инструменты и методы, упомянутые в книге, помогут вам начать работу в области безопасности Android. Удачи!
Ниже приведён пример отчёта о пентесте:
Пример отчёта о пентесте приложения Attify
Версия приложения: 1.0 Дата: январь 2014 года Автор: Адитья Гупта
Резюме: В январе 2014 года лаборатория Attify провела оценку безопасности мобильного приложения «Attify Vulnerability Application» для платформы Android. Этот отчёт содержит все находки, сделанные в ходе аудита. Он также включает в себя процесс обнаружения этих уязвимостей и способы их устранения.
Содержание:
Рисунок 9-1-1
Введение
1.1 Краткое описание выполнения
Лаборатория Attify была уполномочена провести пентест приложения «Attify Vulnerability Application», мобильного приложения для Android. Целью этого пентеста и аудита было определить уязвимости безопасности в приложении Android и в связанном с ним веб-сервисе.
Мы были очень осторожны во время тестирования, чтобы не нанести ущерб бэкенд-веб-серверу во время аудита. Оценка проводилась под руководством Адитьи Гупты, и команда состояла из трёх внутренних пентестеров.
Во время аудита мы обнаружили несколько уязвимостей безопасности как в приложении XYZ для Android, так и в веб-службе, с которой оно взаимодействует. В целом, мы пришли к выводу, что система небезопасна и подвержена высокому риску со стороны злоумышленников.
Результаты этого аудита помогут компании XYZ защитить своё приложение для Android и веб-службу от атак, которые могут нанести вред репутации и доходам.
2.2 Область работы
Выполненный пентест сосредоточен на приложении «Attify Vulnerability Application» компании XYZ для Android. Пентест также включает все веб-сервисы бэкенда, с которыми приложение Android обменивается данными.
1.3 Краткое описание уязвимостей
Приложение «Attify Vulnerability Application» для Android было обнаружено с уязвимостями, включая само приложение, а также многие уязвимости, вызванные использованием сторонних библиотек. Мы успешно использовали эти библиотеки, чтобы получить доступ ко всем данным приложения на устройстве.
Более того, компонент webview
, обнаруженный в приложении, делает его уязвимым для манипуляций с помощью JavaScript, позволяя нам получить доступ ко всему интерфейсу JavaScript приложения. Это, в конечном итоге, позволяет нам контролировать поведение приложения без ведома пользователя, устанавливать дополнительные приложения без разрешения, совершать неожиданные звонки и отправлять текстовые сообщения и т.д.
Другие уязвимости, обнаруженные в приложении, включают небезопасное хранение файлов, которое позволяет нам получить доступ к чувствительным учётным данным пользователей после получения root-доступа к устройству.
Также мы заметили, что веб-служба, связанная с приложением, не имеет надлежащих мер безопасности для аутентификации пользователей, и можно использовать аутентификацию SQL для обхода атак и доступа к чувствительной информации, хранящейся на веб-сервере.
Методы и методология
2.1 Использованные инструменты
Вот некоторые инструменты, использованные для всего процесса аудита и пентеста приложения:
2.2 Уязвимости
Проблема №1: Уязвимость внедрения в приложении
Описание: В файле DatabaseConnector.java
приложения обнаружена уязвимость внедрения. Параметры account_id
и account_name
передаются в запрос SQLite, делая его уязвимым для атаки с внедрением SQLite.
Уровень риска: высокий
Исправление: Перед передачей в базу данных необходимо правильно проверить входные данные пользователя.
Проблема №2: Уязвимость компонента WebView
Описание: Компонент WebDisplay.java
, указанный в приложении, позволяет выполнять JavaScript. Злоумышленник может перехватывать незащищённый трафик в сети, создавать собственные ответы и контролировать приложение.
Уровень риска: высокий
Исправление: Если JavaScript не требуется в приложении, установите setJavascriptEnabled
в значение False
.
Проблема №3: Отсутствие/слабое шифрование
Описание: Приложение хранит учётные данные аутентификации в файле с именем prefs.db
, который находится в папке приложения /data/data/com.vuln.attify/databases/prefs.db
на устройстве. С правами root мы смогли успешно просмотреть учётные данные, хранящиеся в файле. Учётные данные зашифрованы с использованием Base64 в файле.
Уровень риска: высокий
Исправление: При необходимости хранения учётных данных аутентификации локально следует использовать надлежащее безопасное шифрование для хранения.
Проблема №4: Легко атакуемый контент-провайдер
Описание: Обнаружено, что контент-провайдер приложения экспортируется, что позволяет любому другому приложению на устройстве использовать его. Контент-провайдер — content://com.vuln.attify/mycontentprovider
.
Уровень риска: высокий
Исправление: Используйте exported = false
или укажите разрешения контент-провайдера в AndroidManifest.xml
.
Заключение
3.1 Заключение
Мы обнаружили, что приложение в целом имеет уязвимости, связанные с контент-провайдером, технологиями SQLite и хранения данных.
3.2 Рекомендации
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.