Você pode confiar no comando ps?
O primeiro truque para encontrar um root kit é executar o comando
ps
. Provavelmente tudo irá parecer normal a você. Eis um exemplo da saída do comando ps
:PID TTY STAT TIME COMMAND
1 ? S 0:05 init
2 ? SW 0:00 [kflushd]
3 ? SW 0:00 [kupdate]
4 ? SW 0:00 [kswap]
5 ? SW 0:00 [keventd]
6 ? SW 0:00 [mdrecoveryd]
2655 ? S 0:01 syslogd -m 0
2664 ? S 0:00 klogd
2678 ? S 0:01 identd -e -o
2685 ? S 0:02 identd -e -o
2686 ? S 0:56 identd -e -o
2688 ? S 0:55 identd -e -o
2690 ? S 0:01 identd -e -o
2696 ? S 0:00 /usr/sbin/atd
2710 ? S 0:00 crond
2724 ? S 0:00 inetd
[...]
A questão real é, entretanto, "Está tudo normal mesmo?" Um truque comum que os hackers usam é trocar o comando
ps
. A versão substituta irá mascarar programas ilícitos rodando em sua máquina. Para testar isto, cheque o tamanho de sua aplicação ps
. Geralmente sua localização é
/bin/ps
. Em nossas máquinas Linux ela geralmente tem 60 kilobytes. Eu encontrei recentemente um root kit que substituiu o programa ps
. O
ps
comprometido do root kit tinha somente 12 kilobytes de tamanho.Outro truque óbvio é fazer um link do arquivo de histórico de comandos do root para
/dev/null
. O arquivo de histórico de comandos é usado para registrar comandos feitos pelos usuários quando eles logam em uma máquina Linux. Os hackers irão redirecionar o arquivo de histórico para /dev/null
para que você não saiba que comandos eles executaram.Você pode acessar o seu arquivo de histórico executando o comando
history
no prompt do seu shell. Se você usar o comando history
e ele não mostrar nenhum comando prévio, dê uma olhada no arquivo~./bash_history
. Se o arquivo estiver vazio, execute um ls -l ~/.bash_history
. Se você executar este comando deve ver algo parecido com o abaixo: -rw------- 1 jd jd 13829 Oct 10 17:06 /home/jd/.bash_history
Entretanto, você pode ver algo como isto: -rw------- 1 jd jd 13829 Oct 10 17:06 /home/jd/.bash_history -> /dev/null
Se você ver o que está acima, o arquivo ~/.bash_history
foi redirecionado para /dev/null
. Esta é uma rota sem saída. Retire sua máquina da Internet agora, faça backup de seus dados (se puder), e comece uma reinstalação.Procure por contas de usuários desconhecidas
Enquanto você está brincando de detetive em sua máquina Linux, sempre é bom checar por contas de usuários desconhecidas. A próxima vez que você logar em sua máquina Linux, execute o seguinte comando:
grep :x:0: /etc/passwd
A única linha que o comando grep
deve retornar em uma instalação padrão do Linux é parecida com a linha abaixo: root:x:0:0:root:/root:/bin/bash
Se seu sistema retornar mais de uma linha com o comando grep
anterior, você pode ter um problema. Deve haver somente um usuário com UID 0 e se aquele comando grep
retornar mais de uma linha, você tem mais de um usuário com aquele UID.Finalmente, a maneira mais rápida de saber se você foi invadido é verificar se você está rodando o IIS.