Penetration Test di Thick Client Parte 2 - Network

Tempo di lettura: 7 minuti
Data pubblicazione: January 11, 2022

Introduzione

I Thick Clients sono software che forniscono funzionalità sia locali sia remote, in quanto vengono installati localmente ma effettuano anche richieste di rete. Essi possono essere per esempio client di messaggistica, client di posta elettronica, software di antivirus, e via discorrendo.

Il Penetration Test di un Thick Client è particolarmente interessante dal punto di vista di un attaccante, in quanto essi hanno una superficie di attacco notevolmente maggiore rispetto alle classiche applicazioni web o mobile.

In questa serie di articoli andremo ad approfondire la maggior parte dei test di sicurezza da effettuare e utilizzeremo come esempio l’applicativo DVTA. Per le istruzioni di installazione consiglio di seguire questo e quest’altro link.

Network

Durante un Penetration Test di un Thick Client è necessario riuscire a sniffare il traffico in modo da poterlo analizzare ad eventualmente fare i dovuti test sulle API, che potrebbero essere vulnerabili alle classiche vulnerablità Web, oltre che contenere informazioni sensibili.

Dopo aver identificato le richieste di rete sappiamo verso quali host e indirizzi IP l’applicativo comunica, ma come riuscire ad intercettarli ed eventualmente modificarli?

Proxy aware

I Thick Client proxy aware sono quei software che hanno tra le impostazioni la possibilità di impostare un proxy HTTP o che non ignorano le impostazioni proxy di Windows e permettono di intercettare il traffico.

Mentre nel primo caso sarà sufficente settare il proxy nelle impostazioni del software, nel secondo caso bisognerà impostare il proxy a livello di sistema. Per farlo bisognerà andare su Internet Explorer -> Opzioni -> Internet Options -> Connections -> LAN Settings ed inserire l’indirizzo IP e la porta di Burp (o il proxy che volete usare)

Potete anche evitare di eseguire IE lanciando il seguente comando dal menu start

control.exe inetcpl.cpl,,4

Nel caso in cui le connessioni HTTP siano cifrate è necessario aggiungere il certificato di Burp seguendo questa guida.

Se l’applicativo fosse scritto in Java potrebbe ignorare le nostre impostazioni e bisogna inserire il proxy all’interno della configurazione di Java. Per farlo basta andare su Config Java (da menu start di Windows) -> Internet Options.

Proxy unaware

In questo caso è decisamente più rognoso, poiché il software ignorerà tutte le impostazioni che inseriamo e andrà dritto per la sua strada. Ma è possibile intercettare lo stesso, grazie all’opzione Invisible Proxy di Burp. Gli step che bisogna fare sono:

  1. Identificare tutti gli host con cui il Thick Client comunica (con NetMon) e mappare la conversione indirizzo IP - Host (per esempio se comunica con Google segnarsi 108.177.16.0 google.com)
  2. Aggiungere nel file hosts tutti gli hostname identificati inserendo come indirizzo IP l’indirizzo IP del proxy, nel mio caso 127.0.0.1
  3. Eseguire Burp Suite come root e impostare nel Tab Proxy un Invisible Proxy sulla 80 e sulla 443
  4. Aggiungere in Project Options -> Connections -> Hostname Resolution la risoluzione degli indirizzi IP del punto 1.

Per esempio, proviamo ad intercettare il traffico di Visual Studio Code.

Per prima cosa avvio NetMon, apro il software in esame e navigo un pò al suo interno, intercettando tutte le possibili comunicazioni effettuate dall’applicativo

Successivamente converto gli hostname trovati in indirizzi IP con un semplice ping

Poi inserisco all’interno del file hosts l’indirizzo IP del proxy con i rispettivi hostname appena intercettati

Aggiungo l’invisible proxy sulla 80 e sulla 443 in Burp

Ed infine inserisco manualmente la risoluzione degli hostname da parte di Burp

Ora chiudo e riapro l’applicazione, tutto il traffico dovrebbe essere redirezionato verso Burp Suite.

Un programma che permette di automatizzare questo processo è extract-sni, che permette, dato un file pcap, di impostare direttamente host e indirizzi IP da importare poi in Burp Suite.

Nel caso in cui il Thick Client invii traffico Java serializzato per decompilarlo tramite Burp consiglio JDSer-DComp e JDSer-ngng e la lettura di questo articolo.

Conclusioni

Ci sono tante guide sul web che insegnano come sniffare il traffico con i Thick Client, che usano Echo Mirage o MitmProxy, ma credo che il metodo migliore sia quello appena spiegato. Permette di verificare tutti gli host con cui comunica il software senza perdere nessuna possibile comunicazione (come potrebbe accadere se utilizzassimo Wireshark).

Se avete modi migliori di quello spiegato sentitevi liberi di contattarmi, sarò felice di aggiornare la guida.

Alcune risorse utili che ho utilizzato per questa serie di articoli sono: