Dicas e Truques que os script kiddies usam para se esconder quando invadem uma máquina Linux
A pergunta esperta de segurança que você deve se fazer é "Todo
mundo é normal?" Um truque comum que os crackers usam é trocar o
comando ps
. Como detectar 'root kits'.
Por Joshua Drake
(LinuxWorld) -- Nas últimas duas semanas eu discuti como evitar que crackers consigam acesso ao seu computador Linux (veja 10 minutes to an iptables-based Linux firewall [*] e How stop crackers with PortSentry). Esta semana, continuamos a série com formas de você saber se alguém invadiu sua máquina.
Script kiddies são o pior tipo de crackers, primariamente por que existem tantos deles e a maioria não tem muitos conhecimentos. Uma coisa é ser invadido quando você colcou os patches corretos, possui um firewall testado, e roda programas de detecção de invasão ativamente em múltipos níveis. Outra coisa é quando você é invadido por ser muito preguiçoso e, por exemplo, não instalou a última correção do BIND.
Um root kit é um pacote de software que um cracker usa pra dar a si mesmo (geralmente é um "ele") acesso de superusuário em sua máquina. Uma vez que o cracker tem acesso de superusuário a sua máquina, está tudo acabado. O único método que é realmente efetivo é fazer backup da máquina, apagar os discos, e reinstalar o sistema operacional. Entretanto, nem sempre é fácil descobrir que alguém se apossou de sua máquina.
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 crackers 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 crackers 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.
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, repetindo, ú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.
Falando sério, apesar de todas estas formas básicas serem boas para saber a natureza do script kiddie, elas não são em si suficientes para uma boa segurança, e não tocam em profundidade o tópico da detecção de intrusos.
Minha sugestão é que, se você suspeita de um problema real, chame um profissional de segurança LInux e consiga referências. Segurança Linux não é um trabalho de 10 minutos.
Estude também os recursos abaixo. Network World Fusion, por exemplo, recentemente conduziu uma análise comparativa de 42 ferramentas de hardware e software para detecção de intruso, muitas das quais trabalham com o Linux.
Joshua Drake é o co-fundador de Command Prompt, Inc., uma compania de desenvolvimento PostgreSQL e Linux. Ele também é o autor atual do Linux Networking HOWTO, Linux PPP HOWTO, e o Linux Consultants HOWTO. Seu projeto atual que mais lhe ocupa é um novo livro sobre PostgreSQL para a O'Reilly, Practical PostgreSQL.
Histórias Relacionadas
Sites Relacionados
* Este artigo pode ser conferido em português em iptables.html.