
Ambiente di debugging del kernel Linux completamente dockerizzato
LIKE-DBG (LInux-KErnel-DeBuGger) mira ad automatizzare i passaggi noiosi quando si cerca di impostare un ambiente di debug del kernel Linux. Ho deciso di addentrarmi nella ricerca sullo sfruttamento del kernel e ho trovato le soluzioni esistenti non abbastanza utilizzabili. Pertanto, questo è un tentativo di rendere tutti i passaggi preliminari necessari prima ancora di poter pensare a immergersi nella ricerca il più semplici e divertenti possibile. Tutti i passaggi, dalla compilazione di un kernel, all'esecuzione in un ambiente emulato e al collegamento di un debugger, vengono eseguiti in modo trasparente all'interno di container docker per mantenere minimi i requisiti di sistema. Attualmente, c'è un container docker dedicato per ciascuno dei seguenti passaggi:
Poiché questo progetto è nelle sue fasi iniziali, mi aspetto che le cose cambino rapidamente, introducendo anche breaking changes lungo il percorso. I punti principali su cui migliorare sono:
x86_64 e arm64Dal lato positivo, nonostante le fasi iniziali, alcune funzionalità utili sono già presenti:
Generale:
configs/user.ini facile da comprendere che consente sessioni altamente personalizzabili
ctf/misc che contiene alcuni script utili per aiutare nei CTFBuilder del kernel:
x86_64, arm64gcc e clang per compilare il kernelBuilder del file system root:
Debuggee:
configs/*.ini.Debugger:
io/scripts/gdb_script per un'esperienza di debug su misura per lo scenarioPer iniziare, devi assicurarti di avere i seguenti requisiti installati sul tuo sistema:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/Si consiglia di non eseguirlo come utente root, ad esempio per scopi di test su un VPS.
Potrebbe funzionare comunque, ma in generale consiglio vivamente di creare un utente dedicato non root da inserire nei gruppi docker e sudo!
Nota: Se stai usando una configurazione TMUX personalizzata, assicurati che il primo pannello inizi con 0!
Questa sezione copre strumenti che non sono richiesti per eseguire LIKE-DBG ma che sono utili da avere e aiutano notevolmente durante il debug o la scrittura di un exploit.
All'interno di like-dbg esegui poetry install.
Mettere a punto l'esperienza di debug del kernel è uno degli obiettivi di questo progetto.
Attualmente, tutte le opzioni personalizzabili sono esposte nei due file di configurazione: configs/system.ini e configs/user.ini.
Si consiglia di non modificare alcuni campi poiché servono principalmente per motivi di sviluppo.
Tuttavia, tutti quelli per personalizzare l'ambiente secondo le tue esigenze dovrebbero essere autoesplicativi, poiché ciascuno è accompagnato da un breve commento.
Nota: Al primo utilizzo esegui poetry install.
Una volta che hai scritto/adattato una configurazione, l'utilizzo dipende dal tuo scenario.
Il modo più semplice per iniziare, basato sulla configurazione configs/user.ini, è il seguente:
tmux -f .tmux.conf
poetry shell
# This checks out a kernel, builds it, creates a root file system and starts the debugger and debuggee eventually
./start_kgdb.py
Ci sono 2 utenti per i file system creati automaticamente:
root senza passworduser:userQuesto è pensato per permetterti di sviluppare e sfruttare facilmente da entrambe le prospettive.
# If you want to try a CTF challenge where you were given a (compressed) Linux Image and a root filesystem try:
./start_kgdb.py --ctf <Image> <RootFS>
# If you want to kill the current debugging session
./start_kgdb.py -k
# If you want to provide a custom 'user.ini' for a specific debugging setup
./start_kgdb.py -c <path_to_cfg> [other_args]
# If you want to test some partial functionality of LIKE-DBG
# Stage 1: Download Kernel
# Stage 2: Stage 1 & unpack Kernel
# Stage 3: Stage 2 & build Kernel
# Stage 4: Only build a root file system
# Stage 5: Stage 3+4 & start debuggee
./start_kgdb.py -p <stage_nr>
# Update all containers
./start_kgdb.py -u