Il Malware CoinMiner Continua a Diffondersi Tramite Chiavette USB
Detection stack
- AIDR
- Alert
- ETL
- Query
RIASSUNTO
Il malware CoinMiner continua a propagarsi attraverso chiavette USB in Corea del Sud, sfruttando un collegamento nascosto che attiva script VBS e BAT, i quali a loro volta preparano più componenti che infine consegnano un payload di mining di criptovalute.
Indagine
Il rapporto descrive la struttura delle directory sulla USB infetta, la catena di esecuzione dal collegamento attraverso più fasi di dropper, la registrazione sotto il servizio DcomLaunch, e il dispiegamento dei miner di criptovaluta PrintMiner e XMRig.
Mitigazione
Gli utenti dovrebbero tenere aggiornato il sistema operativo e il software, bloccare l’esecuzione di file di collegamento non attendibili, utilizzare strumenti antivirus aggiornati e negare l’accesso a infrastrutture note come malevole.
Risposta
Rilevare il collegamento malevolo e i suoi script correlati, monitorare la creazione di file dropper e registrazioni DCOM, e bloccare il traffico di rete verso i domini e l’indirizzo IP di comando e controllo identificati del mining.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#66cc66 classDef file fill:#ffcc66 classDef process fill:#c266ff classDef malware fill:#ff6666 classDef network fill:#cccccc %% Nodes action_usb_insert[“<b>Azione</b> – <b>T1204.002 Esecuzione dell’Utente: File Malevolo</b>: L’utente inserisce una chiavetta USB compromessa contenente un collegamento nascosto.”] class action_usb_insert action tool_shortcut[“<b>Strumento</b> – <b>T1547.009 Modifica dei Collegamenti</b>: Collegamento LNK nascosto \”USB Drive.lnk\” visibile all’utente.”] class tool_shortcut tool tool_vbscript[“<b>Strumento</b> – <b>T1059.005 Visual Basic</b>: Il collegamento avvia uno script Visual Basic.”] class tool_vbscript tool tool_batch[“<b>Strumento</b> – <b>T1059.003 Shell dei Comandi di Windows</b>: Lo script VBScript esegue un file batch.”] class tool_batch tool file_malicious_dll[“<b>File</b> – <b>T1036.005 Mascheramento: Nome Legittimo</b> & <b>T1036.008 Mascheramento: Doppia Estensione</b>: DLL malevola \”printui.dll\” (rinominata da .dat) rilasciata in C:\\Windows\\System32 usando directory nascoste.”] class file_malicious_dll file process_printui[“<b>Processo</b> – <b>T1055.001 Iniezione di Processo</b> & <b>T1574.001 DLL Hijacking</b>: Il legittimo printui.exe carica la DLL malevola.”] class process_printui process tool_dcom[“<b>Strumento</b> – <b>T1546.015 Componente Software del Server</b> & <b>T1021.003 DCOM</b>: Registra la DLL con un servizio DCOM per la persistenza.”] class tool_dcom tool file_svcinsty[“<b>File</b>: Eseguibile \”svcinsty64.exe\” creato dal dropper per installare il payload finale.”] class file_svcinsty file file_svctrl[“<b>File</b>: Eseguibile \”svctrl64.exe\” creato dal dropper come supporto.”] class file_svctrl file malware_printminer[“<b>Malware</b> – PrintMiner: Aggiunge un’esclusione a Windows Defender, falsifica avvisi di sicurezza e prepara il download del miner.”] class malware_printminer malware tool_defender_exclusion[“<b>Strumento</b> – <b>T1564.012 Falsificazione del Contenuto del Disco</b> & <b>T1562.011 Modifica del Registro</b>: Modifica l’elenco di esclusioni di Defender per nascondere l’attività.”] class tool_defender_exclusion tool network_c2[“<b>Rete</b> – <b>T1071.001 Protocollo Web</b>, <b>T1102.002 Servizi Web</b>, <b>T1102.003 Trasferimento di Strumenti in Ingresso</b>: Comunicazione HTTPS con il comando‑e‑controllo per recuperare la configurazione e scaricare il miner.”] class network_c2 network malware_xmrig[“<b>Malware</b> – XMRig: Miner Monero open‑source scaricato ed eseguito.”] class malware_xmrig malware action_compute_hijack[“<b>Azione</b> – <b>T1496.001 Dirottamento delle Risorse</b>: Esegue XMRig per minare criptovaluta eludendo gli strumenti di analisi.”] class action_compute_hijack action action_replication[“<b>Azione</b> – <b>T1091 Replicazione tramite Supporti Rimovibili</b>: Ricrea il collegamento e i file nascosti su altre unità USB.”] class action_replication action %% Connections action_usb_insert –>|creates| tool_shortcut tool_shortcut –>|launches| tool_vbscript tool_vbscript –>|executes| tool_batch tool_batch –>|drops| file_malicious_dll file_malicious_dll –>|loaded by| process_printui process_printui –>|establishes persistence via| tool_dcom tool_dcom –>|creates| file_svcinsty tool_dcom –>|creates| file_svctrl file_svcinsty –>|installs| malware_printminer file_svctrl –>|supports| malware_printminer malware_printminer –>|adds exclusion using| tool_defender_exclusion malware_printminer –>|communicates with| network_c2 network_c2 –>|delivers| malware_xmrig malware_xmrig –>|executes| action_compute_hijack action_compute_hijack –>|triggers| action_replication action_replication –>|places| tool_shortcut
Flusso di Attacco
Rilevamenti
Rilevamento delle attività di malware USB Shortcut e BAT [Evento File Windows]
Visualizza
Rilevare la Comunicazione di XMRig con il Server C&C tramite Specifico Nome Host [Connessione di Rete Windows]
Visualizza
Esecuzione di File Malevoli tramite Printui.exe e Svcinsty64.exe [Creazione di Processo Windows]
Visualizza
IOC (HashMd5) per rilevare: CoinMiner Malware in continua distribuzione tramite USB
Visualizza
IOC (DestinationIP) per rilevare: CoinMiner Malware in continua distribuzione tramite USB
Visualizza
Esecuzione di Simulazione
Prerequisito: Il controllo preliminare Telemetria e Baseline deve essere superato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) destinata ad attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare l’esatta telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrazione dell’Attacco e Comandi:
-
Fase 1 – Distribuire una DLL malevola: L’avversario copia un
printui.dllnella stessa directory diprintui.exe(simulando un payload di driver consegnato tramite un dispositivo USB). -
Fase 2 – Eseguire
printui.exe: Invocandoprintui.execon l’/mlopzione (carico malevolo), la DLL malevola viene caricata, generando un evento di creazione processo che corrisponde alla selezione (L'immagine termina con printui.exe) soddisfacendo anche la filtro condizione (L'immagine contiene printui.dll). La regola esclude questo caso, quindi l’attaccante aggiunge un secondo passaggio per evitarlo. -
Fase 3 – Eseguire
svcinsty64.exe: L’attaccante registra un nuovo servizio puntando a un binario payload (payload.exe) memorizzato sull’unità USB. Questa azione crea un evento di creazione processo persvcinsty64.exe, soddisfacendo la selezione della regola senza attivare il filtro, generando così un allarme.
-
Fase 1 – Distribuire una DLL malevola: L’avversario copia un
-
Script di Test Regressivo: Lo script seguente automatizza le tre fasi, garantendo ripetibilità.
# ------------------------------------------------- # Test Regressivo – Attiva la regola Sigma per printui.exe / svcinsty64.exe # ------------------------------------------------- $dllPath = "$env:TEMPprintui.dll" $exePath = "$env:SystemRootSystem32printui.exe" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" $payloadPath = "$env:TEMPpayload.exe" # 1️⃣ Distribuire una DLL malevola fittizia (contenuto binario non importante per il rilevamento) Write-Host "[*] Creazione di una DLL malevola fittizia in $dllPath" Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte # 2️⃣ Eseguire printui.exe (carico benigno) – non dovrebbe attivarsi a causa del filtro Write-Host "[*] Esecuzione di printui.exe benigno (sarà filtrato)" Start-Process -FilePath $exePath -ArgumentList "/p" -Wait # 3️⃣ Eseguire printui.exe con caricamento DLL malevolo – caso filtrato (previsto) Write-Host "[*] Esecuzione di printui.exe con DLL malevola (caso filtrato)" Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait # 4️⃣ Preparare un eseguibile payload fittizio (semplice script CMD compilato in exe) Write-Host "[*] Creazione di un eseguibile payload fittizio" $payloadSource = @" @echo off echo Payload eseguito > $env:TEMPpayload_output.txt "@ $payloadScript = "$env:TEMPpayload.bat" $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII # Convertire .bat in .exe usando iexpress (integrato) $iexpress = "$env:SystemRootSystem32iexpress.exe" $config = "$env:TEMPiexpress.sed" @" [Version] Version=3.0 [Options] ExtractTitle=Payload ExtractLocation=%TEMP% ShowProgress=0 HideExtractWindow=1 [SourceFiles] SourceFiles=0 %TEMP%payload.bat [Run] RunCommand="%TEMP%payload.bat" "@ | Set-Content -Path $config -Encoding ASCII & $iexpress /N /Q /M $config Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force # 5️⃣ Registrare un servizio malevolo usando svcinsty64.exe – DOVREBBE ATTIVARSI Write-Host "[*] Registrazione di un servizio malevolo tramite svcinsty64.exe" $svcName = "MaliciousSvc" $svcDisplay = "Servizio Malevolo" $svcCmd = "`"$payloadPath`"" $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`" Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait # 6️⃣ Pulire il servizio Write-Host "[*] Rimozione del servizio malevolo" $removeArgs = "/uninstall `$svcName`" Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait # 7️⃣ Rimuovere gli artefatti temporanei Write-Host "[*] Pulizia dei file temporanei" Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue Write-Host "[+] Test completato" -
Comandi di Pulizia: (Se lo script sopra fallisce o si preferisce una pulizia manuale)
# Rimuovere il servizio malevolo se ancora presente $svcName = "MaliciousSvc" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" & $svcInstPath /uninstall $svcName # Eliminare DLL e payload temporanei Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue # (Opzionale) Verificare che non ci siano servizi rimanenti Get-Service -Name $svcName -ErrorAction SilentlyContinue