
Big Iron Recon & Pwnage
di @singe (Dominic White @ SensePost)
BIRP è uno strumento che aiuta nella valutazione della sicurezza di applicazioni mainframe servite su TN3270. Proprio come BURP e altri proxy per applicazioni web fanno per i test su applicazioni web, BIRP mira a fare lo stesso per i test su applicazioni TN3270. E, proprio come con le applicazioni web, poter vedere e modificare campi che lo sviluppatore presumeva non fossero né visibili né modificabili permette di bypassare le assunzioni di sicurezza.
In particolare, BIRP fornisce due capacità per l'aspirante hacker TN3270. La prima è che mostra tutti i dati restituiti dall'applicazione sullo schermo, inclusi i campi nascosti. La seconda è che permette di modificare campi contrassegnati come "protetti" (non modificabili). A seconda di come è stata sviluppata l'applicazione, ciò può consentire di alterare la funzionalità dell'applicazione.
./birp.py -h ti fornirà la guida all'avvio se vuoi iniziare.
Tutto ciò di cui hai bisogno è specificare un target con -t . La specifica del target può includere una porta con i due punti dopo l'IP, ad esempio 10.10.10.10:1023. Se non viene specificata alcuna porta, verrà utilizzata la porta :23 di default, come nel comportamento predefinito di x3270.
Puoi usare -l per caricare un file di cronologia precedentemente salvato nella cronologia. Devi sempre specificare un target e purtroppo non è ancora possibile visualizzare solo la cronologia.
Controlla i prerequisiti qui sotto per l'installazione. Purtroppo, al momento funziona solo in ambienti Unix, nessun supporto Windows.
Attualmente, BIRP ha un insieme di funzionalità abbastanza limitato. Queste sono:
La modalità interattiva è il cuore delle funzionalità di BIRP. Passa le pressioni dei tasti e altri comandi da BIRP a x3270 e permette all'analista di interagire con l'applicazione come farebbe se usasse direttamente x3270. Tuttavia, mostra anche la "vista hacker" annotata di ogni schermata restituita, oltre a registrare le "transazioni" e memorizzarle nella cronologia del proxy per analisi e ispezioni successive.
In modalità interattiva, premere Ctrl-h stamperà una schermata di aiuto, Ctrl-k mostrerà una legenda dei colori, e ESC tornerà al menu.
BIRP cerca di determinare quando si è verificata una "transazione" e registra la schermata prima e dopo, nonché i campi modificati. Alcuni tasti di solito garantiscono l'inizio di una transazione, come Invio o qualsiasi tasto PF/PA. Tuttavia, se per qualsiasi motivo la schermata richiede tasti diversi per funzionare, puoi "spingere" manualmente una transazione con Ctrl-u subito dopo aver eseguito l'azione.
Infine, se vuoi ristampare la schermata, premi Ctrl-r.
Questo mostrerà la cronologia di tutte le transazioni registrate da BIRP e ne permetterà l'ispezione. In particolare, fornisce l'accesso alla schermata inviata, ai campi che sono stati modificati in quella schermata (cioè i dati inviati) e alla risposta.
Per ogni schermata, viene visualizzata solo la prima riga come contesto, ma l'intera schermata può essere stampata se si visualizza la transazione.
Inoltre, puoi entrare in Python ed esaminare direttamente l'oggetto schermata.
Qui puoi effettuare una ricerca con distinzione tra maiuscole e minuscole per trovare transazioni con schermate che contengono un determinato testo.
Puoi salvare la tua cronologia in un file e caricarla di nuovo in seguito con l'opzione -l da riga di comando. Devi salvarla con un nome file univoco.
Lo strumento non è ancora finito e al momento ci sono molte buone ragioni per poter interagire direttamente con gli oggetti. Puoi entrare in una shell IPython incorporata in vari punti. BIRP ha un insieme abbastanza utile di oggetti Python che puoi interrogare, e mi sono assicurato che abbiano un output pythonico utile (str/repr). L'oggetto principale è la "history" che contiene una lista di "transactions". Puoi interrogare l'ultima transazione aggiunta riferendoti a history.last(). Ogni transazione ha un oggetto request e response. Quindi, ad esempio, per ottenere un elenco di tutti i campi nascosti nell'ultima risposta dal server potresti usare: history.last().response.hidden_fields
Per ulteriori dettagli, sarebbe meglio consultare il modulo tn3270.py.
Librerie Python: py3270 (v0.3.4), colorama, IPython Queste possono essere installate con pip o easy_install. Fino a quando py3270 accetterà questa pull request (https://github.com/py3270/py3270/pull/13) usa la mia libreria py3270 (https://github.com/singe/py3270).
Client x3270 modificato (v3.6) Le patch sono incluse. Puoi scaricare il codice sorgente da http://x3270.bgp.nu/download.html quindi cd nella directory suite3270 una volta estratto, e patch -p1 < suite3270-full.patch Puoi usare un client non modificato, ma in tal caso non sarai in grado di modificare i campi protetti. La patch apporta due modifiche: la prima permette di modificare i campi protetti, l'altra rende visibili i campi nascosti (mostrati con evidenziazione del testo invertita). Questa funzionalità è suddivisa in altre due patch se per qualche motivo ne volessi solo una.
La gestione dei tasti che utilizzo è una mia implementazione personalizzata di getch. È piuttosto orribile, ma funziona. Mi piacerebbe usare un'implementazione più matura come curses, pygame, urwid ecc., ma tutte vogliono prendere il controllo dello schermo. Personalmente, trovo il buffer di scorrimento indietro inestimabile per registrare le mie attività o semplicemente per poter scorrere verso l'alto e ricordare cosa ho fatto, quindi non volevo perderlo, da qui questo approccio.
Ho trovato py3270 piuttosto grezzo e ho finito per incapsularlo parzialmente. Ho fornito questo come wrapper separato che puoi usare nei tuoi programmi.
Di dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage di SensePost è concesso in licenza secondo i termini della Creative Commons Attribution-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/) I permessi al di là di questa licenza possono essere disponibili contattandoci su http://sensepost.com/contact us/.