Red Hot Cyber

La cybersecurity è condivisione.
Riconosci il rischio, combattilo, condividi le tue esperienze ed 
incentiva gli altri a fare meglio di te.

Cerca
Crowdstrike

ChaiLdr: un caricatore di shellcode che sfida gli antivirus

Sandro Sana : 6 Aprile 2024 08:50

ChaiLdr è un progetto open source che mira a creare un caricatore di shellcode che possa evitare il rilevamento da parte dei software antivirus (AV) e dei sistemi di rilevamento e risposta agli endpoint (EDR). Il shellcode è un codice binario che viene eseguito direttamente nella memoria di un processo, senza passare da un file eseguibile.

Questo codice può essere usato per vari scopi, come l’ottenimento di privilegi, la creazione di backdoor, l’esfiltrazione di dati o l’esecuzione di comandi remoti. Tuttavia, il shellcode è anche uno strumento molto usato dagli hacker e dai malware per compromettere i sistemi informatici. Per questo motivo, i software antivirus e gli EDR cercano di rilevare e bloccare il shellcode, analizzando il suo comportamento, il suo flusso di esecuzione e le sue chiamate alle funzioni di sistema.

Come funziona ChaiLdr?

ChaiLdr cerca di eludere queste tecniche di rilevamento, utilizzando una serie di trucchi e stratagemmi. Ecco alcune delle sue caratteristiche principali:

  • Syscalls Indirette: Utilizza SysWhispers3 per eseguire syscalls in modo indiretto e meno rilevabile. Le syscalls sono le chiamate alle funzioni di basso livello del sistema operativo, che possono essere monitorate dagli EDR per identificare il shellcode. ChaiLdr usa un metodo che genera il codice delle syscalls a runtime, senza usare le librerie standard di Windows, e le esegue tramite un’istruzione di salto indiretto.
  • Iniezione QueueUserAPC: Metodo di iniezione di codice per eseguire shellcode in un processo target. ChaiLdr usa la funzione QueueUserAPC per inserire il shellcode nella coda dei messaggi asincroni di un processo, che verrà eseguito quando il processo entrerà in uno stato di attesa. Questo metodo è meno sospetto di altri metodi di iniezione, come WriteProcessMemory o VirtualAllocEx.
  • Staging Shellcode HTTP/S: Recupera lo shellcode da un server remoto tramite protocollo HTTP/S. ChaiLdr usa la funzione WinHttpOpen per stabilire una connessione con un server web, da cui scarica lo shellcode in una zona di memoria allocata. Questo metodo permette di ridurre le dimensioni del caricatore e di nascondere lo shellcode fino al momento dell’esecuzione.
  • Ritardo nell’Esecuzione: Implementa un ritardo nell’esecuzione per eludere la rilevazione basata sul tempo. ChaiLdr usa la funzione Sleep per inserire una pausa prima di eseguire lo shellcode, in modo da confondere le analisi che misurano il tempo di esecuzione del codice sospetto.
  • Camuffamento IAT: Nasconde le chiamate alle API di Windows per evitare il rilevamento. ChaiLdr usa la funzione LoadLibraryA per caricare le librerie di Windows necessarie, ma non le importa staticamente nel suo codice. In questo modo, la tabella di importazione delle API (IAT) del caricatore rimane vuota, e le chiamate alle API vengono risolte dinamicamente tramite la funzione GetProcAddress.
  • Hashing API: Utilizza l’hashing delle API per mascherare le chiamate alle funzioni di sistema. ChaiLdr usa un algoritmo di hashing per calcolare il valore hash dei nomi delle API, e poi lo confronta con i valori hash delle funzioni esportate dalle librerie di Windows. In questo modo, evita di usare le stringhe dei nomi delle API, che potrebbero essere rilevate dagli AV.

Quali sono le prospettive future di ChaiLdr?

ChaiLdr è un progetto ancora in fase di sviluppo e l’autore prevede di aggiungere altre funzionalità in futuro, come la rimozione delle librerie CRT e l’implementazione di tecniche più avanzate per l’evasione degli EDR.

Il progetto è disponibile sotto licenza MIT, che permette a chiunque di usarlo, modificarlo e distribuirlo liberamente. Tuttavia, il progetto ha anche una natura potenzialmente pericolosa, in quanto potrebbe essere usato da malintenzionati per diffondere malware o attaccare sistemi informatici. Per questo motivo, l’autore avverte che il progetto è solo a scopo didattico e di ricerca, e che non si assume alcuna responsabilità per l’uso che ne viene fatto.

Considerazioni etiche

Progetti come ChaiLdr pongono delle questioni etiche importanti, in quanto mostrano come sia possibile sfruttare le vulnerabilità dei sistemi informatici e come sia difficile difendersi dagli attacchi informatici. Da un lato, si potrebbe sostenere che questi progetti hanno un valore educativo e di ricerca, in quanto contribuiscono a migliorare la conoscenza delle tecniche di sicurezza informatica e a stimolare lo sviluppo di nuove soluzioni di difesa.

Dall’altro lato, si potrebbe criticare il fatto che questi progetti rendono disponibili al pubblico degli strumenti potenzialmente dannosi, che potrebbero essere usati da hacker, criminali o terroristi per violare la privacy, rubare dati sensibili o sabotare infrastrutture critiche. Inoltre, si potrebbe mettere in dubbio la legalità di questi progetti, in quanto potrebbero violare le leggi sulla proprietà intellettuale, sulla protezione dei dati o sulla sicurezza nazionale.

Di fronte a queste questioni etiche, non esiste una risposta univoca o definitiva. Si tratta di bilanciare i pro e i contro di questi progetti, tenendo conto dei principi etici, delle norme legali e delle conseguenze pratiche. In ogni caso, è importante che gli autori di questi progetti siano consapevoli delle responsabilità che assumono e che agiscano con trasparenza, integrità e rispetto. Inoltre, è fondamentale che gli utenti di questi progetti siano informati dei rischi e delle implicazioni che comportano e che li usino con prudenza, etica e legalità.

Sandro Sana
Laureato in Ingegneria Informatica e in Scienze della Comunicazione, si occupa d'Information Technology dal 1990, negli anni ha lavorato con aziende di diverso tipo dalle PMI alle Enterprise e la PA. Dal 2003 inizia ad interessarsi di comunicazione, PNL e Public Speaking. Nel 2014 si specializza in scouting e R&D di soluzioni in ambito Cybersecurity. CEH - EC-Council Certified Ethical Hacker, CIH EC-Council Certified Incident Handler, CISSP - Certified Information Systems Security Professional, relatore a SMAU 2017 e SMAU 2018, docente SMAU Academy & ITS, membro dell'Associazione Informatici Professionisti dal 2017 e Coordinatore per la regione Friuli-Venezia Giulia per AIP-ITCS. Membro CLUSIT e giornalista presso RedHot Cyber, Cybersecurity360 & Digital360. Consulente framework CIS, NIST e ENISA.