Wireshark Analisi di Malware
Descrizione
In questo lab ho analizzato una cattura di pacchetti malevola nota relativa allo sfruttamento di Log4J. Ho iniziato la mia indagine con lo stesso playbook che uso per l'analisi delle catture di pacchetti, ovvero esaminare le statistiche e vedere quanti endpoint sono presenti e quanto comunicano. Notando la grande quantità di indirizzi IP, ho voluto mappare gli indirizzi sul globo, quindi ho installato e configurato il database GEOIP di Max Mind che risolve gli indirizzi IP nel loro paese e città. Questa quantità di indirizzi IP indica un potenziale attacco da una botnet per l'exploit Log4J o altre scansioni dannose. Poiché il traffico nella cattura usa http e non https (crittografato), sono stato in grado di identificare l'exploit in chiaro filtrando per "jndi", che è l'interfaccia Java Naming and Directory Interface. Il primo pacchetto di questo filtro era una richiesta HTTP POST e, esaminando il campo User-Agent, ha rivelato una richiesta ldap a un IP seguita da testo codificato. Decodificando il testo in CyberChef si è visto che il codice era un wget verso un IP per scaricare uno script shell, usare il comando chmod per dargli i permessi di esecuzione e poi eseguire lo script. Inoltre, per scoprire se la macchina host ha effettuato tentativi di connessione in uscita verso IP pubblici che indicano un server di comando e controllo, ho filtrato per indirizzo sorgente e pacchetti TCP SYN per l'inizio di connessioni TCP e ho confermato che non c'erano connessioni. Questo potrebbe essere il risultato della macchina che è stata patchata o di una regola firewall implicita che blocca le connessioni in uscita. Una volta chiaro che l'attacco non era riuscito, ho condotto ulteriori indagini sulle minacce sull'IP nel comando wget e ho scoperto che l'IP è noto come dannoso e, nella scheda community di VirusTotal, l'IP era collegato ad attacchi Log4shell, confermando ulteriormente l'attacco. Il mio approccio è stato inizialmente vedere chi stava comunicando con il server di destinazione. Poi è stato fondamentale determinare se il server attaccato (198.71.247.91) avesse iniziato nuove connessioni in uscita.
Utility Utilizzate
- Wireshark
- Virus Total
- CyberChef
- Max Mind's GEOIP Database
Ambienti Utilizzati
- Kali Linux tramite Oracle Virtual Box
Panoramica del Lab:
Aprendo il PCAP, la prima cosa che mi piace fare è vedere quanti dispositivi sono presenti/comunicano (Statistics -> Endpoints)
Dopo aver notato una quantità insolita di traffico e diverse conversazioni IPv4 provenienti da paesi diversi, ho esportato gli endpoint per mostrarli su una mappa globale utilizzando il database GEOIP di Max Mind. (Endpoints -> Map -> Open in Browser)
Sapendo che avevo a che fare con un PCAP di un exploit Log4J, che sfrutta la vulnerabilità Java Naming and Directory Interface (jndi), ho pensato che sarebbe stato un buon filtro da cui iniziare (ip contains "jndi")
Il filtro per "jndi" ha funzionato bene, e ho espanso il primo pacchetto che era una richiesta HTTP POST e ho esaminato il campo User-Agent che mostrava una richiesta ldap con un IP seguito da testo codificato in base-64.
Decodificando la fine della richiesta POST iniziale dell'attacco, si vede un wget, ovvero una richiesta web a un IP per scaricare lh[.]sh, uno script shell, e il comando chmod che modifica i privilegi per aggiungere x, cioè i permessi di esecuzione. Infine, avvierebbe lo script shell.
Ho quindi determinato se il server host a 198.71.247.91 ha effettuato connessioni verso server esterni, in particolare verso l'indirizzo IP del wget nella stringa decodificata. Ho filtrato per i pacchetti SYN che stabiliscono una connessione TCP e ho scoperto che il server non si è connesso con indirizzi esterni, il che probabilmente significa che il server era stato patchato e quindi l'exploit è fallito.
Con lo script decodificato ho effettuato ulteriori indagini utilizzando VirusTotal per saperne di più sull'IP che lo script chiamava e ho scoperto che era dannoso
Nella sezione Community di VirusTotal, c'erano ulteriori prove che si trattava di un attacco Log4J, poiché quell'IP era noto per aver tentato l'exploit in passato.

Riflessioni
Questo lab ha fornito esperienza pratica nell'analisi di una cattura di pacchetti (file .pcapng) piuttosto che un'analisi dal vivo sul filo. Ottenere una cattura di pacchetti reale di un tentativo di attacco dannoso e analizzarla è stato incredibilmente interessante, soprattutto perché era in chiaro tramite http sulla porta 80, anziché crittografata. Sebbene abbia usato VirusTotal e CyberChef in precedenti lab e walkthrough, sapere che gli artefatti estratti dal pcap erano reali mi ha reso ancora più curioso di approfondire le risorse che altri nella community della cybersecurity hanno messo insieme riguardo all'indirizzo IP attaccante e all'exploit stesso. Inoltre, ho già usato Wireshark in precedenza, ma questa è stata la prima volta che ho configurato il database GEOIP di Max Mind per risolvere le posizioni dagli indirizzi IP e poi poter esportare come mappa, che è stato un altro momento saliente di questo lab.