Encontre o pai de um processo

2

Estou tentando escrever um script para ajudar na segurança do computador. Eu estou tentando procurar portas abertas, encontrar o PID e encontrar o que chamou.

Eu tenho isso funcionando, onde minha saída é algo como isto:

IPV4 - 1234 - 2566/nc
Running from: '/bin/nc.openbsd'
Command run: 'nc -l 1234'

Onde consegui obter esses valores de netstat , /proc/$PID/exe e /proc/$PID/cmdline

No entanto, na natureza de procurar backdoors, pode haver um script em meu computador em algum lugar, que chamaria nc . É possível, a partir do PID de nc , encontrar o local dos scripts originais? Eu tentei olhar para os outros arquivos em /proc/$PID/* sem sucesso.

Digamos que em /etc/rc.local coloquei a linha nc -l 1234 , poderia obter algo que me dissesse que o comando nc foi aberto por /etc/rc.local ?

    
por Connor Quick 24.11.2014 / 18:52

3 respostas

7

Para obter o PID pai do processo, portável (POSIXly), você pode usar:

ps -p "$PID" -o ppid=

ou (no Linux):

grep '^PPid' "/proc/$PID/status" |cut -f2

para mais formas, consulte link

    
por 24.11.2014 / 19:00
-1

Acabei usando o seguinte:

grep -r "$command" $(ls -l /proc/$pid/cwd | awk '{ print $11 }') | awk -F: '{ print $1 }'

Onde $command="$(cat /proc/$pid/cmdline | sed 's\x0/ g' | sed 's/.$//')"

Que irá recursivamente percorrer os arquivos no diretório em que o script está localizado para localizar o arquivo que contém a linha de comando que executou o comando nc.

Parece um pouco confuso, então, se alguém puder ajudar a limpar um pouco isso seria ótimo:)

Obrigado pela ajuda pessoal!

    
por 24.11.2014 / 19:34
-1

Você pode usar o local de execução do pid usando o comando abaixo

ls -l /proc/PID_id/cwd

    
por 24.11.2014 / 23:17