
Tudo o que você precisa sobre Burp Extension Generation

Primeiro, instale o Yeoman e o generator-burp-extension usando npm (assumimos que já tem o node.js instalado).
npm install -g yo
npm install -g generator-burp-extension
Depois gere o seu novo projeto:
yo burp-extension
Quando gere o seu projeto de plugin, o generator perguntará quais funcionalidades devem ser incluídas no seu plugin. Se está familiarizado com o desenvolvimento de extensões Burp, os nomes das funcionalidades serão suficientemente descritivos, mas, se é novo em extensões Burp, aqui está uma breve descrição do que pode ser feito com cada funcionalidade.
Aba personalizada que será adicionada à interface do Burp. Normalmente é usada para adicionar alguma funcionalidade (como a extensão logger++) ou apenas para permitir ao utilizador configurar a extensão.

Aba personalizada do editor de mensagens que será adicionada à interface do Editor de Mensagens do Burp (Repeater, Intruder...). Normalmente é usada para fornecer algum tipo de funcionalidade personalizada de edição/visualização em payloads de pedidos/respostas. Um exemplo é a extensão JSON Beutifier.

Um menu de contexto personalizado será adicionado à interface do Burp em praticamente qualquer lugar, ao clicar com o botão direito. O Burp permite mostrar menus de contexto em qualquer uma destas situações:
Um exemplo simples desta funcionalidade é a extensão copy-as-python-requests, que permite copiar um pedido como código Python (apenas um exemplo).

O ouvinte será notificado de pedidos e respostas processados pela ferramenta Proxy (Ouvinte de Proxy) ou feitos por qualquer ferramenta do Burp (Ouvinte HTTP). As extensões podem realizar análise ou modificação personalizada destas mensagens.
Por outras palavras, os Ouvintes de Proxy intercetam os pedidos que vêm do navegador para o Burp e as respostas que vão do Burp para o navegador. Um Ouvinte HTTP interceta pedidos de saída do Burp para o servidor web e respostas de entrada vindas do servidor web.

Um exemplo de plugin real que usa esta funcionalidade da extensão é o AutoRepeater
Estenda os payloads do Intruder adicionando capacidades personalizadas de geração. Um possível uso desta funcionalidade poderia ser gerar números IBAN válidos aleatórios. Um exemplo real é a extensão Intruder file payload generator (não uso, é apenas um exemplo)

Estenda os payloads do Intruder adicionando capacidades personalizadas de processamento. Um possível exemplo poderia ser realizar uma encriptação AES baseada numa chave estática.

Ao realizar a digitalização, o Burp pedirá à verificação para realizar a digitalização ativa ou passiva no pedido base e reportar quaisquer problemas identificados pelo Scanner.
Quando um pedido é digitalizado ativamente, o Scanner invocará isto, e o fornecedor deve fornecer uma lista de pontos de inserção personalizados que serão usados na digitalização.
Cada ação registada estará disponível na interface de regras de tratamento de sessão para o utilizador selecionar como ação de regra. Os utilizadores podem optar por invocar uma ação diretamente por si só, ou após a execução de uma macro.

O ouvinte será notificado quando a extensão for descarregada do Burp. Nota: Quaisquer extensões que iniciem threads em segundo plano ou abram recursos do sistema (como ficheiros ou ligações a bases de dados) devem registar um ouvinte e terminar threads / fechar recursos quando a extensão for descarregada.
O ouvinte será notificado de novos problemas reportados pela ferramenta Scanner. As extensões podem realizar análise personalizada ou registo de problemas do Scanner registando um ouvinte do Scanner.
O ouvinte será notificado sempre que ocorrer uma alteração ao âmbito alvo de toda a suíte do Burp.
Provavelmente inútil porque o Burp não permite aceder à definição de âmbito global.
Esta secção explica algumas decisões no desenvolvimento do template.
Antes de mais, não sou fã de Java
Como deve saber, o BurpSuite permite desenvolver extensões em três linguagens principais: Java, Python e Ruby. Na verdade, isto não é totalmente verdade. O Burp permite desenvolver em Jython e JRuby. O verdadeiro problema aqui é que, quando se usa Jython ou JRuby numa extensão Burp, ainda é necessário pensar em Java (porque é a linguagem principal do Burp), então, no final, estará a desenvolver em Python e Java, mas com muitos problemas para integrar o seu projeto com um IDE verdadeiro, com autocompletar e esse tipo de coisas modernas.
Outra boa razão para usar Java em vez de Jython é porque é baseado em Python 2.7, e não estou a usar JRuby porque não gosto de Ruby, é só isso.
Como deve ter reparado, todas as implementações de uma Interface Burp seguem um padrão Singleton; a principal razão para isto é completamente subjetiva.
A questão é que o Burp é uma excelente ferramenta, mas é um pouco obscuro sobre os seus internos e provavelmente um pouco confuso. Assim, por exemplo, o Burp permite registar vários IHTTPListeners, mas perderá decisões importantes como a ordem de chamada destes ouvintes. Este tipo de situações, na minha humilde opinião, pode obscurecer e dificultar a compreensão de uma Extensão Burp e a manutenibilidade do código.
Pode ver cada classe singleton como um ponto de ligação necessário com o Burp, que deve ser único. A partir desse ponto de ligação, pode controlar o seu código, realizando qualquer tipo de design orientado a objetos.
MIT © Raul Sampedro