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.
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