
LIKE-DBG (LInux-KErnel-DeBuGger) は、Linuxカーネルデバッグ環境をセットアップする際の退屈な作業を自動化することを目的としています。 私はカーネルエクスプロイト研究に飛び込もうとしましたが、既存のソリューションは十分に使いやすいものではありませんでした。 そこで、研究に飛び込む前に必要なすべての事前ステップを、可能な限り苦痛がなく楽しいものにする試みとして、このプロジェクトを作成しました。 カーネルのビルド、エミュレート環境での実行、デバッガのアタッチまでのすべてのステップは、システム要件を最小限に抑えるために、dockerコンテナ内で透過的に実行されます。 現在、以下の各ステップ専用のdockerコンテナがあります:
このプロジェクトは初期段階にあるため、急速に変化し、その過程で破壊的な変更も導入されることを予想しています。 改善すべき主な点は以下のとおりです:
x86_64とarm64を超えた真のマルチアーキテクチャサポートを目指す良い面としては、まだ初期段階ではありますが、すでにいくつかの便利な機能が備わっています:
configs/user.ini設定
ctf/miscx86_64、arm64gccとclangのどちらかを選択可能開始するには、システムに以下の要件が設定されていることを確認する必要があります:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/rootユーザーとして実行しないことを推奨します(例:VPSでのテスト目的の場合)。
動作する場合もありますが、一般的にはdockerグループとsudoグループに追加する専用の非rootユーザーを作成することを強く推奨します!
注記:カスタムTMUX設定を使用している場合、最初のペインが0から始まることを確認してください!
このセクションでは、LIKE-DBGの実行に_必須ではない_が、あると便利で、デバッグやエクスプロイトの作成時に大いに役立つツールを紹介します。
like-dbg内でpoetry installを実行します。
カーネルデバッグ体験の微調整は、このプロジェクトの目標の1つです。
現在、調整可能なすべてのオプションは、configs/system.iniとconfigs/user.iniの2つの設定ファイルで公開されています。
一部のフィールドは主に開発用であるため、変更しないことをお勧めします。
ただし、環境をニーズに合わせてカスタマイズするためのフィールドは、すべて簡単なコメントが付いているため、自明のはずです。
注記: 初回使用時はpoetry installを実行してください。
設定の作成・適用が完了したら、使用方法はシナリオによって異なります。
configs/user.ini設定に基づく、最も簡単な開始方法は次のとおりです:
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
自動的に作成されるファイルシステムには2つのユーザーが存在します:
rootuser:userこれは、どちらの視点からでも開発とエクスプロイトを簡単に行えるようにするためのものです。
# 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
examplesサブディレクトリには、LIKE_DBGが特定のカーネルデバッグタスクでどのように役立つかのサンプルが含まれています。
各例には、例を再現するために必要な情報を含む専用のREADME.mdも含まれています。

pythonコードはかなり読みやすいはずなので、自由に自分のアイデアでプロジェクトを拡張してください。すべてのPRを大歓迎します :)! また、機能リクエストのissueを作成したり、ディスカッションページで新しいクールな機能についてアイデアを出し合ってください!
追伸:ロゴを提供したい場合は、ぜひどうぞ。
configs/*.iniファイル内からQEMUランタイムオプションをカスタマイズ可能。io/scripts/gdb_scriptでGDBスクリプトを指定し、シナリオに合わせたデバッグ体験を可能にする