Manipulando Processos

Um processo é um programa em execução. Cada processo tem um ID de processo númerico chamado de PID. Entender sobre processos é essencial para um Pentester, principalmente quando estamos realizando algum PrivEsc.

Listando Processos

Para vermos os processos que estão sendo executados no momento, utilize o seguinte comando:

ps auxw

EXPLICAÇÃO: a = Mostra os processos do usuário atual e de outros usuários u = Inclui informações mais detalhadas sobre os processos x = Mostra os processos em execução w = Mostra os nomes completos dos comandos e não apenas o que cabe em uma linha

Os campos estão descritos a seguir:

COLUNA

DESCRIÇÃO

PID

ID do processo

TTY

É o dispositivo de terminal em que o processo está executando

STAT

Status do processo, ou seja, o que o processo está fazendo e em que local está a sua memória. Os valores podem ser S (Sleeping) ou R (Running)

TIME

Quantidade de tempo de CPU em minutos e segundos que o processo usou até o momento

COMMAND

Isso parece ser óbvio, mas saiba que um processo pode alterar esse campo em relação ao seu valor original

Matando Processos

Para matar (encerrar) um processo, vamos enviar uma sinal para o Kernel informando o que queremos fazer com o processo. Iremos utilizar o seguinte comando kill seguido o PID do processo.

kill <pid>

Podemos informar o tipo de sinal (por default é TERM (terminate). Esse processo encerra o processo da maneira correta (dando a chance do processo fazer uma limpeza antes de encerrar), mas podemos encerrá-los de outras maneiras também.

Temos o sinal INT (Interrupt) para interromper um processo (quando estamos no terminal e pressionamos CTRL + C, estamos mandando esse sinal automaticamente).

kill -INT <pid>

Diferente das formas anteriores, temos o sinal KILL, que mata o processo de uma forma mais agressiva, forçando a remoção da memória.

kill -KILL <pid>

Geralmente vemos o comando kill -9 <pid>, que muitas pessoas tem o costume de usar sem saber ao certo o que está acontecendo. Esse comando é equivalente ao sinal -KILL, então utilize somente se necessário.

E para finalizar, vamos aprender um método mais prático (útil para quem ainda não tem muita familiaridade com o uso do terminal ou simplesmente acha mais prático) para matar processos. Para isso, deixe o seu terminal aberto em um canto da tela e a outra janela (a que está rodando o processo que deseja finalizar) em outro canto, de um modo que consiga ver as duas janelas na tela simultaneamente. Agora no terminal, digite xkill (note o ponteiro do mouse irá ficar com o formato de um X) e então clique na janela do processo que deseja finalizar.

Gerenciando Processos

Vimos que os processos podem ser inicializados e também encerrados, mas ainda não vimos como fazer um processo ficar em modo STOP (congelado) e depois voltando ao estado de execução.

# Congelando um serviço
kill -STOP <pid>

# Voltando o processo ao seu estado de execução
kill -CONT <pid>

Caso esteja no terminal vendo o serviço ser executado, pressione CTRL + Z para congelar o serviço (equivalente ao sinal STOP) e o comando fg para retornar o processo em modo de execução (equivalente ao sinal CONT).

NOTA: É comum pressionar CTRL + Z ao invés de CTRL + C acidentalmente, e fazer um processo ficar congelado. Utilize o comando jobs para ver todos processos que estão congelados.

Last updated