Unpacking
Contrastare l'offuscamento
Unpacking è una lezione Ethical Hacking Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ethical Hacking Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ethical Hacking Academy include 4 lezioni in totale.
Che cos'è il packing?
Il packing comprime o cifra il vero codice di un programma e lo racchiude in un piccolo stub. Durante l'esecuzione, lo stub estrae il codice originale in memoria e lo esegue.
Gli autori di malware usano il packing per eludere le firme e ostacolare l'analisi statica.
Perché fare l'unpacking?
Un binario impacchettato mostra poche stringhe, poche importazioni e un'elevata entropia. Il codice significativo rimane nascosto finché lo stub non viene eseguito.
L'unpacking recupera il codice originale, permettendo di analizzarlo staticamente ed estrarre gli IOC effettivi.
Rilevare un packer
Strumenti come Detect It Easy (DIE) e PEiD identificano i packer noti tramite la firma. Anche l'elevata entropia e una tabella delle importazioni molto piccola sono indizi significativi.
Tra i packer più comuni figurano UPX, ASPack e Themida.
die sample.exe
# Packer: UPX(3.96)Unpacking di UPX
UPX è un packer comune e non dannoso che può essere sottoposto a reverse engineering con il proprio strumento. L'opzione -d decomprime il binario riportandolo alla forma originale.
Molti campioni reali usano UPX o una versione leggermente modificata di UPX, quindi questo è spesso il primo tentativo.
upx -d sample.exeUnpacking manuale: l'idea
I packer personalizzati non possono essere annullati con uno strumento. Si lascia invece che lo stub si scompatti in memoria, quindi si acquisisce il risultato.
Il piano è il seguente: eseguire il campione sotto un debugger, interromperlo subito dopo il completamento dell'unpacking e fare il dump del codice appena rivelato.
Individuare l'OEP
L'Original Entry Point (OEP) è il punto a cui passa l'esecuzione una volta terminato l'unpacking. Raggiungere l'OEP significa che il codice reale si trova ora in memoria.
Le tecniche per individuarlo includono osservare un salto lontano fuori dallo stub oppure impostare un breakpoint sulla memoria in cui lo stub scrive e che poi esegue.
Breakpoint per l'unpacking
Un trucco comune consiste nell'impostare un breakpoint hardware sullo stack (lo stub ripristina spesso i registri subito prima di saltare all'OEP) oppure un breakpoint sulle chiamate API comuni utilizzate dal codice scompattato.
Quando il breakpoint scatta sull'OEP, il codice originale è completamente decodificato.
Eseguire il dump del processo
Sull'OEP, esegua il dump della memoria del processo in un nuovo file. Strumenti come Scylla (integrato in x64dbg) o PE-sieve acquisiscono l'immagine scompattata.
Il dump ora contiene le istruzioni reali, ma potrebbe non essere ancora eseguibile autonomamente.
Ricostruire le importazioni
Dopo il dump, la Import Address Table è spesso danneggiata perché il packer ha risolto le importazioni durante l'esecuzione. Scylla può ricostruire la IAT, così il file ottenuto dal dump può essere analizzato.
Una volta corrette le importazioni, può caricare il dump pulito in Ghidra o IDA.
Altre tecniche di offuscamento
Oltre al packing, il malware utilizza altre tecniche di offuscamento: stringhe cifrate decodificate durante l'esecuzione, istruzioni inutili, appiattimento del flusso di controllo e controlli anti-debugging.
Queste tecniche vengono contrastate caso per caso, spesso combinando il tracing dinamico con una lettura statica paziente.
Verificare il campione scompattato
Dopo aver eseguito il dump e ricostruito le importazioni, verifichi il risultato ripetendo l'analisi statica: ora dovrebbe vedere molte più stringhe e una tabella delle importazioni popolata.
Se l'entropia è tornata normale e le API sono visibili, l'unpacking è riuscito e il codice reale è pronto per essere analizzato.
Verifica rapida
Ricordi che cosa indica l'OEP durante l'unpacking manuale.
Riepilogo
Ora conosce l'unpacking:
- Il packing nasconde il codice reale; lo si rileva con DIE/PEiD, l'elevata entropia e il ridotto numero di importazioni.
- I packer noti come UPX vengono scompattati con uno strumento (
upx -d). - Per i packer personalizzati, esegua il campione sotto un debugger, individui l'OEP, esegua il dump con Scylla e ricostruisca le importazioni.
- Le altre tecniche di offuscamento (stringhe cifrate, anti-debug) vengono gestite caso per caso.
Ha completato il corso di reverse engineering del malware.
Domande Frequenti
La lezione «Unpacking» è gratuita?
Sì — il testo completo di «Unpacking» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ethical Hacking Academy, passa a CoddyKit PRO. Il corso Ethical Hacking Academy include 4 lezioni in totale.
Cosa imparerò in «Unpacking»?
Contrastare l'offuscamento Eserciti Ethical Hacking Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ethical Hacking Academy?
Non è richiesta alcuna esperienza precedente. Ethical Hacking Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Unpacking»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ethical Hacking Academy?
Sì. Ogni lezione Ethical Hacking Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.