SOC Prime Bias: Medio

05 Dec 2025 14:36 UTC

Il Malware CoinMiner Continua a Diffondersi Tramite Chiavette USB

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Il Malware CoinMiner Continua a Diffondersi Tramite Chiavette USB
shield icon

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

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:

    1. Fase 1 – Distribuire una DLL malevola: L’avversario copia un printui.dll nella stessa directory di printui.exe (simulando un payload di driver consegnato tramite un dispositivo USB).
    2. Fase 2 – Eseguire printui.exe: Invocando printui.exe con l’ /ml opzione (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.
    3. 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 per svcinsty64.exe, soddisfacendo la selezione della regola senza attivare il filtro, generando così un allarme.
  • 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