Siga a execução dos arquivos por um módulo do kernel [closed]

0

Atualmente estou fazendo um projeto para proteger o kernel com hooks e logs syscall ... Agora eu fiz hooking read, e chamadas de sistema de soquete, e quando eu tentei fazer a mesma coisa com execve (para seguir qual arquivo acabou de executar) eu recebo um kernel ou simplesmente fiz algo errado porque eu não posso nem abra o dmesg para ver qual erro eu tenho (o dmesg também é executável, e eu apenas anulei essa função de executar arquivos executáveis). Eu também descobri que existe algo chamado stub_execve, e você não pode simplesmente mudar a chamada do systam da tabela de chamadas do systam, porque existem chamadas do sistema que envolvem outro binário ou algo parecido (por favor, corrija-me se eu estiver errado. ). Então, no final, tudo que eu preciso fazer é ver quais arquivos acabaram de rodar e eu preciso fazê-lo através de um módulo do kernel, alguém pensa em como fazê-lo, ou como saltar sobre o stub_execve ou algo assim. .? Por favor me ajude, eu vou ser muito grato.

    
por ChandlerPP 19.10.2017 / 06:29

1 resposta

0

Você examinou o kprobes ? Ou especificamente jprobes .

Usando o jprobe, você pode conectar-se a execve (ou qualquer outra função do kernel), verificar seus argumentos, etc., antes que a função seja executada. A maneira como funciona é que o chamador fornece uma função com a mesma assinatura que deseja rastrear e registra-a com uma chamada para jprobe_register . Vamos chamar essa função my_execve . Então, logo antes de executar a função real, o kernel primeiro salvaria todo o seu contexto (parâmetros, valores de registro, etc.) na pilha e passaria o controle para my_execve , passando uma cópia daquele contexto. Quando my_execve retorna (usando jprobe_return em vez de return ), o kernel restaura o contexto salvo para a função original execve e continua a execução. Isso significa que quaisquer alterações feitas no contexto não afetarão a execução da função original. Você pode ver um exemplo aqui: link .

Se você quiser manipular o contexto, por exemplo altere os valores nos registradores e, em seguida, use kprobes , que segue um padrão semelhante, mas tem uma semântica um pouco mais envolvida.

    
por 19.10.2017 / 07:35