
Todo lo que necesitas sobre la generación de extensiones de Burp

Primero, instala Yeoman y generator-burp-extension usando npm (asumimos que ya tienes preinstalado node.js).
npm install -g yo
npm install -g generator-burp-extension
Luego genera tu nuevo proyecto:
yo burp-extension
Cuando generes tu proyecto de plugin, el generador te preguntará qué características deben incluirse en tu plugin. Si estás familiarizado con el desarrollo de extensiones Burp, los nombres de las características serán suficientemente descriptivos, pero, si eres nuevo en las extensiones Burp, aquí tienes una breve descripción de lo que se puede hacer con cada característica.
Pestaña personalizada que se añadirá a la interfaz de usuario de Burp. Normalmente se usa para agregar alguna funcionalidad (como la extensión logger++) o simplemente para permitir al usuario configurar la extensión.

Pestaña personalizada del editor de mensajes que se añadirá a la interfaz del editor de mensajes de Burp (Repeter, Intruder...). Normalmente se usa para proporcionar algún tipo de funcionalidad de editor/visor personalizado en los payloads de solicitudes/respuestas. Un ejemplo es la extensión JSON Beutifier.

Se añadirá un menú contextual personalizado a la interfaz de usuario de Burp en casi cualquier lugar, al hacer clic derecho. Burp permite mostrar menús contextuales en cualquiera de estas situaciones:
Un ejemplo simple de esta funcionalidad es la extensión copy-as-python-requests, que permite copiar una solicitud como código python (solo un ejemplo).

El listener será notificado de las solicitudes y respuestas que están siendo procesadas por la herramienta Proxy (Proxy Listener) o realizadas por cualquier herramienta de Burp (HTTP Listener). Las extensiones pueden realizar análisis personalizados o modificación de estos mensajes.
En otras palabras, un Proxy Listener intercepta las solicitudes que llegan del navegador a Burp y las respuestas que van de Burp al navegador. Un HTTP Listener intercepta las solicitudes salientes de Burp al servidor web y las respuestas entrantes que llegan del servidor web.

Un ejemplo de plugin real que utiliza esta característica de la extensión es AutoRepeater
Extiende los payloads de Intruder añadiendo capacidades de generación personalizada. Un posible uso de esta funcionalidad podría ser generar números IBAN válidos aleatorios. Un ejemplo real es la extensión Intruder file payload generator (no la uso, es solo un ejemplo)

Extiende los payloads de Intruder añadiendo capacidades de procesamiento personalizado, un posible ejemplo podría ser realizar un cifrado AES basado en una clave estática.

Al realizar escaneos, Burp pedirá a la verificación que realice un escaneo activo o pasivo en la solicitud base e informe cualquier problema del escáner que se identifique.
Cuando se escanea activamente una solicitud, el Escáner invocará esto, y el proveedor debe proporcionar una lista de puntos de inserción personalizados que se utilizarán en el escaneo.
Cada acción registrada estará disponible en la interfaz de usuario de las reglas de manejo de sesión para que el usuario la seleccione como acción de regla. Los usuarios pueden optar por invocar una acción directamente por sí misma, o después de la ejecución de una macro.

El listener será notificado cuando la extensión se descargue de Burp. Nota: Cualquier extensión que inicie hilos en segundo plano o abra recursos del sistema (como archivos o conexiones de base de datos) debe registrar un listener y terminar hilos/cerrar recursos cuando la extensión se descargue.
El listener será notificado de los nuevos problemas que reporte la herramienta Escáner. Las extensiones pueden realizar análisis personalizados o registro de problemas del escáner registrando un listener de escáner.
El listener será notificado cada vez que ocurra un cambio en el ámbito objetivo de todo el conjunto de Burp.
Probablemente inútil porque Burp no permite acceder a la definición del ámbito global.
Esta sección explica algunas decisiones en el desarrollo de la plantilla.
Primero que nada, no soy fanático de Java.
Como sabrás, BurpSuite permite desarrollar extensiones en tres lenguajes principales: Java, Python y Ruby. En realidad, esto no es del todo cierto. Burp permite desarrollar en Jython y JRuby. El verdadero problema aquí es que, cuando usas Jython o JRuby en una extensión Burp, igualmente necesitas pensar en Java (porque es el lenguaje principal de Burp), así que al final terminarás desarrollando en Python y Java, pero con muchos problemas para integrar tu proyecto con un IDE real, con autocompletado y ese tipo de cosas modernas.
Otra buena razón para usar Java en lugar de Jython es porque está basado en Python 2.7, y no uso JRuby porque no me gusta Ruby, eso es todo.
Como habrás notado, todas las implementaciones de una interfaz de Burp siguen un patrón Singleton; la razón principal de esto es completamente subjetiva.
La cuestión es que Burp es una gran herramienta, pero es un poco oscura en cuanto a su funcionamiento interno y probablemente un poco desordenada. Así que, por ejemplo, Burp te permite registrar múltiples IHTTPListeners, pero perderás decisiones importantes como el orden de llamada de estos listeners. Este tipo de situaciones, en mi humilde opinión, puede oscurecer y dificultar la comprensión de una extensión Burp y el mantenimiento del código.
Puedes ver cada clase singleton como un punto de conexión necesario con Burp, que debe ser único. Desde ese punto de conexión, puedes controlar tu código, realizando cualquier tipo de diseño orientado a objetos.
MIT © Raul Sampedro