
Kalim backdooe Malware Report


Il campione importa un gran numero di API di Windows, indicando che non è packed. In totale, importa funzioni da sei DLL: KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll e WININET.dll.
Sebbene siano importate più API da ogni DLL, diverse funzioni sono particolarmente degne di nota per il loro ruolo nel comportamento del malware.
Nello specifico, il campione importa API relative alla rete da WININET.dll per stabilire la comunicazione con il server di comando e controllo (C2). Sfrutta anche funzioni relative a COM da ole32.dll per creare e interagire con oggetti del Component Object Model (COM). Inoltre, il malware usa SHGetFolderPathW da SHELL32.dll per recuperare i percorsi delle directory di sistema identificati dai valori CSIDL.

Il malware implementa la sua logica di comunicazione di rete attraverso tre funzioni distinte e genera due thread separati. Un thread è responsabile della creazione e gestione di una shell dei comandi, mentre il secondo thread gestisce il caricamento dei dati raccolti dopo che il malware ha completato la sua esecuzione.
Le tre funzioni gestiscono collettivamente la comunicazione tra l'host infetto e il server di comando e controllo (C2) e sono organizzate in tre livelli logici.
Il primo livello è responsabile della raccolta di informazioni di fingerprinting basate sull'host dal sistema compromesso. Il secondo livello elabora questi dati eseguendo crittografia e ulteriori manipolazioni per prepararli alla trasmissione. Il terzo livello stabilisce la comunicazione di rete con il dominio C2 moodleuni[.]com e trasmette i dati elaborati.
Le prime due funzioni relative alla rete sono specificamente responsabili dell'autenticazione e della costruzione di richieste HTTP POST, consentendo la trasmissione autenticata dei dati al server remoto.

La terza funzione è responsabile della ricezione dei comandi dal server C2. In base alla risposta del server, il malware determina la sua azione successiva: generare una shell dei comandi nascosta o caricare i dati raccolti in base al comando ricevuto dal C2.

Nel primo thread, il malware crea un oggetto job insieme ad altri due pipe e poi imposta una certa proprietà su di essi.
Poi crea un CMD con alcune proprietà:
Il valore 1 nel quarto argomento significa che il CMD può ereditare dagli handle dei pipe
Il valore 0x1000200u nel quinto argomento significa che il CMD ha quanto segue:
CREATE_NO_WINDOW = 0x0000000u
CREATE_NEW_PROCESS_GROUP = 0x0000200u
CREATE_UNICODE_ENVIRONMENT = 0x0000400u
E alcune informazioni di avvio: {dimensione della struttura = 104 byte, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}.
Il primo pipe è responsabile di leggere l'output dalla shell e il secondo di scrivere nella shell.
E un puntatore a PROCESS_INFORMATION
E dopo aver creato la shell, la assegna all'oggetto job e la mette in stato di attesa in attesa di comandi dal C2.

La shell controlla i comandi di controllo inviati tramite memoria condivisa:
Pending: Esecuzione normale.
Terminate: Uccidi la shell e pulisci. Shell completamente distrutta e resettata
Ctrlc: Forza l'uccisione di eventuali processi figli rimanenti.
