
Tutto ciò che ti serve su Burp Extension Generation

Per prima cosa, installa Yeoman e generator-burp-extension usando npm (supponiamo che tu abbia già installato node.js).
npm install -g yo
npm install -g generator-burp-extension
Poi genera il tuo nuovo progetto:
yo burp-extension
Quando generi il tuo progetto plugin, il generatore ti chiederà quali funzionalità includere nel plugin. Se hai familiarità con lo sviluppo di estensioni Burp, i nomi delle funzionalità saranno abbastanza descrittivi, ma se sei nuovo nelle estensioni Burp, ecco una breve descrizione di cosa si può fare con ciascuna funzionalità.
Scheda personalizzata che verrà aggiunta all'interfaccia utente di Burp. Normalmente viene utilizzata per aggiungere alcune funzionalità (come l'estensione logger++) o semplicemente per consentire all'utente di configurare l'estensione.

Scheda personalizzata dell'editor dei messaggi che verrà aggiunta all'interfaccia dell'editor dei messaggi di Burp (Repeter, Intruder...). Normalmente viene utilizzata per fornire una qualche funzionalità di editor/visualizzazione personalizzata nei payload di richieste/risposte. Un esempio è l'estensione JSON Beutifier.

Un menu contestuale personalizzato verrà aggiunto all'interfaccia utente di Burp quasi ovunque, premendo il tasto destro del mouse. Burp consente di mostrare menu contestuali in ognuna di queste situazioni:
Un semplice esempio di questa funzionalità è l'estensione copy-as-python-requests, che consente di copiare una richiesta come codice Python (solo un esempio).

Il listener verrà notificato delle richieste e risposte elaborate dallo strumento Proxy (Proxy Listener) o effettuate da qualsiasi strumento Burp (HTTP Listener). Le estensioni possono eseguire analisi o modifiche personalizzate di questi messaggi.
In altre parole, un Proxy Listener intercetta le richieste provenienti dal browser a Burp e le risposte da Burp al browser. Un HTTP Listener intercetta le richieste in uscita da Burp al server web e le risposte in arrivo dal server web.

Un esempio reale di plugin che utilizza questa funzionalità dell'estensione è AutoRepeater
Estendi i payload di Intruder aggiungendo capacità di generazione personalizzate. Un possibile utilizzo di questa funzionalità potrebbe essere la generazione di numeri IBAN validi casuali. Un esempio reale è l'estensione Intruder file payload generator (non la uso, è solo un esempio).

Estendi i payload di Intruder aggiungendo capacità di elaborazione personalizzate, un possibile esempio potrebbe essere eseguire una crittografia AES basata su una chiave statica.

Durante l'esecuzione della scansione, Burp chiederà al controllo di eseguire una scansione attiva o passiva sulla richiesta di base e segnalare eventuali problemi dello Scanner identificati.
Quando una richiesta viene scansionata attivamente, lo Scanner invocherà questo, e il provider dovrebbe fornire un elenco di punti di inserimento personalizzati che verranno utilizzati nella scansione.
Ogni azione registrata sarà disponibile all'interno dell'interfaccia delle regole di gestione sessione affinché l'utente possa selezionarla come azione della regola. Gli utenti possono scegliere di invocare un'azione direttamente o dopo l'esecuzione di una macro.

Il listener verrà notificato quando l'estensione viene scaricata da Burp. Nota: qualsiasi estensione che avvia thread in background o apre risorse di sistema (come file o connessioni al database) dovrebbe registrare un listener e terminare i thread / chiudere le risorse quando l'estensione viene scaricata.
Il listener verrà notificato di nuovi problemi segnalati dallo strumento Scanner. Le estensioni possono eseguire analisi o registrazioni personalizzate dei problemi dello Scanner registrando un listener Scanner.
Il listener verrà notificato ogni volta che si verifica una modifica all'ambito di destinazione dell'intera suite di Burp.
Probabilmente inutile perché Burp non consente di accedere alla definizione dell'ambito globale.
Questa sezione spiega alcune decisioni nello sviluppo del template.
Prima di tutto, non sono un fan di Java
Come forse saprai, BurpSuite permette di sviluppare estensioni in tre linguaggi principali: Java, Python e Ruby. In realtà questo non è del tutto vero. Burp ti permette di sviluppare in Jython e JRuby. Il vero problema qui è che, quando usi Jython o JRuby in un'estensione Burp, devi comunque pensare in Java (perché è il linguaggio principale di Burp), quindi, alla fine, svilupperai in Python e Java, ma con molti problemi nell'integrare il tuo progetto con un vero IDE, con autocompletamento e quel tipo di cose moderne.
Un altro buon motivo per usare Java invece di Jython è che si basa su Python 2.7, e non uso JRuby perché non mi piace Ruby, tutto qui.
Come forse avrai notato, tutte le implementazioni di un'interfaccia Burp seguono un pattern Singleton. La ragione principale di ciò è completamente soggettiva.
Il fatto è che Burp è un grande strumento, ma è un po' oscuro riguardo ai suoi interni e probabilmente un po' disordinato. Quindi, per esempio, Burp ti permette di registrare multipli IHTTPListeners, ma perderai decisioni importanti come l'ordine di chiamata di questi listener. Questo tipo di situazioni, a mio modesto parere, potrebbe oscurare e rendere difficile la comprensione di un'estensione Burp e la manutenibilità del codice.
Puoi vedere ogni classe singleton come un punto di connessione necessario con Burp, che deve essere unico. Da quel punto di connessione, puoi controllare il tuo codice, eseguendo qualsiasi tipo di progettazione orientata agli oggetti.
MIT © Raul Sampedro