NoCommentLab

Cyber Security & Software Development

Reverse Engineering to Phishing ( Agenzia delle Entrate )

Prefazione

Negli ultimi tempi, l’Italia e’ stata bersaglio di numerose campagne di Phishing ai danni dell’Agenzia delle Entrate. Diversi blog post, presenti sul sito web dell’ente appartenente al MEF(Ministero Economie e Finanze), sensibilizzano gli utenti a non aprire allegati presenti nelle email sospette ricevute a nome dello stesso. Di seguito e’ possibile visionare alcuni dei blog post di esempio:

La maggior parte di questi tentativi di Phishing, sono rappresentati da email, contenenti documenti Word o fogli di calcolo malevoli, con all’interno dei dropper codificati utili a far partire l’infezione della macchina del malcapitato. In alcuni casi, sono stati rilevati degli allegati di tipologia zip, protetti con password, al fine di poter bypassare le restrizioni piu’ blande. Tutte le metodologie utilizzate dagli attaccanti, hanno un fattore comune, che potrebbe portare un utente a codificare subito la falsità della comunicazione ricevuta: nessuno dei file e’ firmato digitalmente dall’Agenzia delle Entrate.

Il NoCommentLab, durante una sessione di analisi di un noto applicativo fornito dall’ente, ha portato a termine il processo di firma digitale di un file eseguibile malevolo, utilizzando l’identita’ dell Ente. In questo modo, un attaccante potrebbe generare degli eseguibili per Windows o firmare documenti; chi non si fiderebbe di un documento firmato digitalmente dall’agenzia fiscale italiana?

In questo articolo verra’ descritto nel dettaglio il processo che ha portato il NoCommentLab a tale scoperta.

Desktop Telematico

L’applicazione Desktop Telematico è un “contenitore” destinato ad accogliere le applicazioni per il controllo, l’autenticazione e l’invio dei file. Entratel, FileInternet ed i vari moduli di controllo sono le applicazioni che si possono installare all’interno del Desktop Telematico che provvede a gestirne gli aggiornamenti in modo automatico. Link alla descrizione. Tale applicativo, sviluppato dall’azienda Sogei - Società Generale d’Informatica S.p.A., un’azienda che si occupa di ICT controllata al 100% dal MEF, si basa sullo sviluppo di molteplici plugin per il noto IDE Eclipse Equinox che vanno a comporre l’applicativo completo. Per i piu’ curiosi, e’ possibile dare uno sguardo a questo link per comprendere meglio il funzionamento di questo approccio allo sviluppo di applicativi basati su Eclipse. In questo caso specifico, risulta possibile rilevare il file plugin.xml all’interno del pacchetto it.sogei.telematico.application_1.0.2.202006120935.jar:

Effettuato il setup, sono state rilevate diverse connessioni verso i server gestiti dall’Ente al fine di rilevare updates di cui abbiamo prontamente usufruito. Dopo aver creato un’utenza locale, storicizzata in clear-text su di un database locale non crittografato(piu’ in la’ l’analisi), abbiamo installato tutti i plugin disponibili al fine di aumentare la superficie di attacco. Di seguito i plugin installati:

  • File Internet
  • Asilo Nido
  • Entratel
  • Erogazioni Liberali.

Nel presente articolo, andremo ad analizzare quanto rilevato sul modulo File Internet, ma prima vediamo come vengono memorizzate le informazioni in Desktop Telematico.

Db locale

L’applicativo Desktop Telematico utilizza un database locale per storicizzare diverse informazioni, tra le quali le credenziali di accesso dei vari profili creati. Il DBMS utilizzato e’ di tipo Derby, piu’ nello specifico un RDBMS(relational database management system) scritto in Java, molto piccolo e facilmente integrabile all’interno di un’applicativo J2EE gia’ esistente. Come detto in precedenza, l’istanza Derby locale non contiene alcun tipo di layer crittografico, quindi un attaccante avrebbe libero accesso a delle informazioni sensibili, semplicemente copiandosi la cartella contenente i files dell’istanza. Infatti, mediante l’uso di ij(http://db.apache.org/derby/papers/DerbyTut/ij_intro.html) e di una precedente analisi del codice sorgente eseguita mediante reverse engineering dei files jar, siamo riusciti a creare il connection string corretto per estrapolare le informazioni dal database.

Come e’ possibile notare, il connection string contiene una credenziale con username e password avvalorati a rcp. Tale credenziale e’ stata estrapolata dal plugin it.sogei.rcp.database_2.0.0.201502051801.jar che gestisce proprio la connessione verso il database.

Abbiamo rilevato un comportamento anomalo collegandoci all’istanza del db senza fornire tale credenziale e tutto funziona correttamente. Trattasi, probabilmente, di una svista da parte degli sviluppatori. Sebbene la presente problematica non rientri all’interno dello scope dell’articolo, abbiamo pensato di citarla come problematica degna di nota.

Reverse Engineering

La presente fase rappresenta il core dell’articolo, infatti, mediante essa siamo riusciti nell’intento di firmare documenti ed eseguibili cosi’ come descritto nella prefazione. In prima battuta, abbiamo configurato un ambiente di test su cui eseguire il debug dell’applicativo mediante IntelliJ IDEA. Nello specifico abbiamo, come qualsiasi procedura di reverse di un applicativo J2EE, estratto il file jar da analizzare ed aperta la cartella attraverso IntelliJ IDEA. Successivamente, abbiamo provveduto alla configurazione di un un debug remoto sull’IDE e configurato il software Desktop Telmatico al fine di permettere la connessione del debugger. Nel dettaglio e’ stato modificato il file DesktopTelematico.ini come di seguito:

Tale procedura ha permesso di effettuare tutti i processi di debugging che hanno portato alla scoperta dell’utilizzo di un certificato per firmare i documenti inviati all’Agenzia Delle Entrate.

Import certificato

Come detto nel paragrafo precedente, il software firma digitalmente i documenti inviati ai server mediante un certificato con formato PKCS#12. Questa tipologia di certificati vengono tipicamente utilizzati per trasferire informazioni riservate o chiavi private e sono protetti, generalmente mediante una password. Essi contengono, oltre alla chiave privata e alla relativa chiave pubblica, le generalita’ del proprietario. Il formato PKCS#12 puo’ essere utilizzato per firmare qualsiasi tipo di file certificando quindi che l’owner di tale file e’ il proprietario del certificato. In prima battuta abbiamo cercato di importare tale certificato all’interno del Key Store di Windows comprovando che tale certificato era correttamente protetto da password.

Una ricerca approfondita sul codice sorgente reversato ha portato alla scoperta di tale secret key; infatti risulta possibile reperirla all’interno del file it.sogei.telematico.fileinternet.util_1.0.0.201704131521.jar, nello specifico all’interno del file di interfaccia IFileInternet.java:

Per ragioni di sicurezza abbiamo provveduto ad oscurare la password che potrebbe comunque essere facilmente reperibile mediante un processo di reverse engineering.

Recuperata la password della chiave privata, abbiamo eseguito l’import all’interno del Key Store di Windows:

Come e’ possibile notare dallo screenshot precedente, il certificato importato contiene la chiave privata al suo interno ma la data di scadenza risulta essere il 4/13/2015 5:43:12 AM. Un certificato scaduto non puo’ essere utilizzato per firmare digitalmente un file; in fin dei conti e’ corretto perche’ nella realta’ chi validerebbe la vostra identita’ con un documento scaduto?

Firma di un eseguibile

Partendo dal presupposto che un file non puo’ essere firmato attraverso un certificato scaduto, abbiamo modificato la data di sistema compatibile con la scadenza del certificato e firmato un file eseguibile

Come e’ possibile notare dagli screenshot, il software e’ stato firmato digitalmente mediante il certificato dumpato dal software Desktop Telematico ed analizzato con ReaQta(https://reaqta.com/)

La stessa procedura e’ stata portata a termine firmado un documento PDF

Conclusioni

Al fine di poter mitigare questa problematica si consiglia di inserire in blacklist tutti i documenti o PE file firmati digitalmente con il presente certificato avente thumbprint 12d2c3eb279297d24c38578b6a85ad7505a38078.

Timeline
  • [11/10/2020]: Scoperta
  • [19/10/2020]: Segnalazione
  • [Today]: Nessun fix disponibile