terça-feira, 17 de novembro de 2015

Invasão

   Um root kit é um pacote de software que um hacker usa pra dar a si mesmo (geralmente é um "ele") acesso de superusuário em sua máquina. Uma vez que o hacker 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.

   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.