
완전히 도커화된 리눅스 커널 디버깅 환경
LIKE-DBG (LInux-KErnel-DeBuGger)는 Linux 커널 디버깅 환경을 설정할 때 필요한 지루한 단계를 자동화하는 것을 목표로 합니다. 저는 커널 익스플로잇 연구에 뛰어들기 시작했고, 기존 솔루션들이 충분히 쓸만하지 않다는 것을 알게 되었습니다. 따라서 이 프로젝트는 연구에 뛰어들기 전에 필요한 모든 사전 단계를 가능한 한 수월하고 재미있게 만들기 위한 시도입니다. 커널 빌드부터 에뮬레이트된 환경에서 실행, 디버거 연결까지 모든 단계는 docker 컨테이너 내부에서 투명하게 처리되어 시스템 요구 사항을 최소한으로 유지합니다. 현재 다음 각 단계를 위한 전용 docker 컨테이너가 있습니다:
이 프로젝트는 초기 단계에 있기 때문에, 앞으로 빠르게 변경되고 그 과정에서 호환성을 깨뜨리는 변경(breaking changes)도 도입될 것으로 예상합니다. 개선해야 할 주요 사항은 다음과 같습니다:
x86_64와 arm64를 넘어 진정한 다중 아키텍처 지원을 지향하기좋은 점은, 초기 단계임에도 불구하고 이미 유용한 기능 몇 가지가 존재한다는 것입니다:
configs/user.ini 구성으로 고도로 사용자 지정 가능한 세션 지원
ctf/miscx86_64, arm64gcc와 clang 중에서 선택 가능configs/*.ini 파일 내에서 QEMU 런타임 옵션 사용자 지정io/scripts/gdb_script에 GDB 스크립트를 지정하여 시나리오에 맞춘 디버깅 경험을 할 수 있음시작하려면 시스템에 다음 요구 사항이 갖추어져 있는지 확인해야 합니다:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/예를 들어 VPS에서 테스트 목적으로 이 도구를 root 사용자로 실행하지 않는 것이 좋습니다.
물론 잘 작동할 수도 있지만, 일반적으로 docker 및 sudo 그룹에 포함시킬 전용 비-root 사용자를 만들 것을 적극 권장합니다!
Note: 사용자 지정 TMUX 구성을 사용하는 경우 첫 번째 팬(pane)이 0에서 시작하는지 확인하세요!
이 섹션에서는 LIKE-DBG를 실행하는 데 필수는 아니지만 있으면 좋고 디버깅이나 익스플로잇 작성 시 큰 도움이 되는 도구들을 다룹니다.
like-dbg 디렉터리 안에서 poetry install을 실행하세요.
커널 디버깅 경험을 미세 조정하는 것은 이 프로젝트의 목표 중 하나입니다.
현재 모든 조정 가능한 옵션은 configs/system.ini와 configs/user.ini 두 구성 파일에 노출되어 있습니다.
일부 필드는 주로 개발적인 이유로 변경하지 않는 것이 좋습니다.
하지만 환경을 필요에 맞게 사용자 지정하는 필드들은 모두 간단한 주석이 달려 있어 설명 없이도 이해할 수 있을 것입니다.
Note: 처음 사용 시 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은 매우 환영합니다 :)! 그 외에도 기능 요청 이슈를 만들거나 discussions 페이지로 가서 멋진 새 기능에 대해 브레인스토밍해도 좋습니다!
추신: 로고를 제공하고 싶다면 부담 없이 하세요.