
Ambiente de depuração do kernel Linux totalmente dockerizado.
O LIKE-DBG (LInux-KErnel-DeBuGger) tem como objetivo automatizar as etapas entediantes ao tentar configurar um ambiente de depuração do kernel Linux. Comecei a mergulhar na pesquisa de exploração de kernels e considerei as soluções existentes pouco utilizáveis. Portanto, esta é uma tentativa de tornar todos os pré-requisitos necessários antes de se poder sequer pensar em mergulhar na pesquisa o mais indolores e divertidos possível. Todas as etapas, desde compilar um kernel, executá-lo num ambiente emulado e anexar um depurador, são realizadas de forma transparente dentro de containers docker para manter os requisitos de sistema mínimos. Atualmente, existe um container docker dedicado para cada uma das seguintes etapas:
Como este projeto está em seus estágios iniciais, espero que as coisas mudem rapidamente, introduzindo também mudanças que quebrem compatibilidade ao longo do caminho. Os principais pontos a melhorar são:
x86_64 e arm64Ponto positivo: apesar dos estágios iniciais, já há alguns recursos úteis presentes:
configs/user.ini de fácil compreensão que permite sessões altamente personalizáveis
ctf/misc que contém alguns scripts engenhosos para auxiliar em CTFsx86_64, arm64gcc e clang para compilar o kernelconfigs/*.ini.io/scripts/gdb_script para uma experiência de depuração adaptada ao cenárioPara começar, você precisa garantir que os seguintes requisitos estejam configurados no seu sistema:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/É recomendado não executar isto como usuário root, por exemplo, para fins de teste em um VPS.
Pode funcionar bem, mas, em geral, recomendo fortemente criar um usuário não-root dedicado e colocá-lo nos grupos docker e sudo!
Nota: Se você estiver usando uma configuração personalizada de TMUX, certifique-se de que seu primeiro painel comece em 0!
Esta seção cobre ferramentas que não são necessárias para executar o LIKE-DBG, mas são boas de ter e auxiliam bastante na depuração ou na escrita de um exploit.
Dentro de like-dbg, execute poetry install
Ajustar finamente a experiência de depuração do kernel é um dos objetivos deste projeto.
Atualmente, todas as opções ajustáveis estão expostas nos dois arquivos de configuração: configs/system.ini e configs/user.ini.
Alguns campos são recomendados para não serem alterados, pois servem principalmente a razões de desenvolvimento.
No entanto, todos os que servem para personalizar o ambiente de acordo com suas necessidades devem ser autoexplicativos, pois todos estão rotulados com um breve comentário.
Nota: Na primeira utilização, execute poetry install.
Assim que você terminar de escrever/adaptar uma configuração, o uso depende do seu cenário.
A maneira mais fácil de começar, baseada na configuração configs/user.ini, é a seguinte:
tmux -f .tmux.conf
poetry shell
# Isto baixa um kernel, o compila, cria um sistema de arquivos raiz e, por fim, inicia o depurador e o depurado
./start_kgdb.py
Existem 2 usuários para os sistemas de arquivos criados automaticamente:
root sem senhauser:userIsto é intencional para que você possa desenvolver e explorar de ambas as perspectivas com facilidade.
# Se você quiser tentar um desafio de CTF onde recebeu uma Imagem Linux (comprimida) e um sistema de arquivos raiz, tente:
./start_kgdb.py --ctf <Image> <RootFS>
# Se você quiser encerrar a sessão de depuração atual
./start_kgdb.py -k
# Se você quiser fornecer um 'user.ini' personalizado para um cenário de depuração específico
./start_kgdb.py -c <caminho_para_cfg> [outros_args]
# Se você quiser testar alguma funcionalidade parcial do LIKE-DBG
# Etapa 1: Baixar o kernel
# Etapa 2: Etapa 1 & descompactar o kernel
# Etapa 3: Etapa 2 & compilar o kernel
# Etapa 4: Apenas criar um sistema de arquivos raiz
# Etapa 5: Etapas 3+4 & iniciar o depurado
./start_kgdb.py -p <numero_da_etapa>
# Atualizar todos os containers
./start_kgdb.py -u
O subdiretório examples contém exemplos de como o LIKE_DBG pode ajudar em tarefas específicas de depuração do kernel.
Cada exemplo contém também um README.md dedicado com as informações necessárias para reproduzir os exemplos.

O código python deve ser bastante legível, então sinta-se à vontade para estender o projeto com suas próprias ideias. Todos os PRs são muito bem-vindos :)! Caso contrário, sinta-se à vontade para criar uma issue de pedido de recurso ou acessar a página de discussões para debater novos recursos interessantes!
PS: Se quiser fornecer um logotipo, sinta-se à vontade para fazê-lo.