
Всё, что нужно знать о генерации расширений Burp

Сначала установите Yeoman и generator-burp-extension с помощью npm (предполагается, что у вас уже установлен node.js).
npm install -g yo
npm install -g generator-burp-extension
Затем сгенерируйте ваш новый проект:
yo burp-extension
При генерации проекта плагина генератор спросит вас, какие возможности следует включить в ваш плагин. Если вы знакомы с разработкой расширений Burp, названия возможностей будут достаточно описательными, но если вы новичок в расширениях Burp, вот краткое описание того, что можно сделать с каждой возможностью.
Пользовательская вкладка, которая будет добавлена в интерфейс Burp. Обычно используется для добавления некоторой функциональности (например, расширение logger++) или просто для настройки расширения пользователем.

Пользовательская вкладка редактора сообщений, которая будет добавлена в интерфейс редактора сообщений Burp (Repeater, Intruder...). Обычно используется для предоставления некоторой пользовательской функциональности редактора/просмотра в полезной нагрузке запросов/ответов. Один из примеров — расширение JSON Beautifier.

Пользовательское контекстное меню будет добавлено почти в любом месте интерфейса Burp при нажатии правой кнопки мыши. Burp позволяет отображать контекстные меню в любой из следующих ситуаций:
Простой пример этой функциональности — расширение copy-as-python-requests, которое позволяет скопировать запрос в виде кода Python (просто пример).

Прослушиватель будет уведомлен о запросах и ответах, обрабатываемых инструментом Proxy (Прокси-прослушиватель) или любым инструментом Burp (HTTP-прослушиватель). Расширения могут выполнять пользовательский анализ или модификацию этих сообщений.
Другими словами, Прокси-прослушиватель перехватывает запросы, поступающие от браузера в Burp, и ответы, идущие от Burp к браузеру. HTTP-прослушиватель перехватывает исходящие запросы от Burp к веб-серверу и входящие ответы, поступающие от веб-сервера.

Пример реального плагина, использующего эту функцию расширения, — AutoRepeater
Расширение полезных нагрузок Intruder с добавлением пользовательских возможностей генерации. Один из возможных вариантов использования этой функциональности — генерация случайных действительных номеров IBAN. Реальный пример — расширение Intruder file payload generator (я его не использую, это просто пример).

Расширение полезных нагрузок Intruder с добавлением пользовательских возможностей обработки. Один возможный пример — выполнение шифрования AES на основе статического ключа.

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

Прослушиватель будет уведомлен, когда расширение выгружается из Burp. Примечание: любые расширения, запускающие фоновые потоки или открывающие системные ресурсы (например, файлы или соединения с базами данных), должны зарегистрировать прослушиватель и завершить потоки / закрыть ресурсы при выгрузке расширения.
Прослушиватель будет уведомлен о новых проблемах, о которых сообщает инструмент Scanner. Расширения могут выполнять пользовательский анализ или логирование проблем сканера, зарегистрировав прослушиватель сканера.
Прослушиватель будет уведомляться каждый раз, когда происходит изменение в общецелевой области Burp.
Вероятно, бесполезно, потому что Burp не позволяет получить доступ к глобальному определению области.
В этом разделе объясняются некоторые решения, принятые при разработке шаблона.
Прежде всего, я не фанат Java
Как вы, возможно, знаете, BurpSuite позволяет разрабатывать расширения на трёх основных языках: Java, Python и Ruby. На самом деле это не совсем так. Burp позволяет разрабатывать на Jython и JRuby. Реальная проблема здесь в том, что при использовании Jython или JRuby в расширении Burp вам всё равно нужно думать на Java (потому что это основной язык Burp), поэтому в итоге вы будете разрабатывать на Python и Java, но с множеством проблем при интеграции вашего проекта с настоящей IDE, с автодополнением и прочими современными вещами.
Ещё одна веская причина использовать Java вместо Jython — это то, что он основан на Python 2.7, а я не использую JRuby, потому что не люблю Ruby, и всё.
Как вы могли заметить, все реализации интерфейса Burp следуют шаблону Singleton. Основная причина этого — полностью субъективна.
Дело в том, что Burp — отличный инструмент, но его внутренняя часть несколько туманна и, вероятно, немного запутана. Так, например, Burp позволяет регистрировать несколько IHTTPListeners, но вы потеряете важные решения, например порядок вызова этих прослушивателей. Подобные ситуации, на мой скромный взгляд, могут затруднить понимание расширения Burp и поддержку кода.
Вы можете рассматривать каждый класс-синглтон как необходимую точку соединения с Burp, которая должна быть уникальной. Из этой точки соединения вы можете управлять своим кодом, используя любой объектно-ориентированный дизайн.
MIT © Raul Sampedro