Como Matasano foi hackeado?


10

from: http://seclists.org/fulldisclosure/2009/Jul/0388.html

Se eu entendi melhor com as postagens de: http://news.ycombinator.com/item?id=723798, os caras do Matasano deixaram o sshd internet acessível - alguma solução proposta para isso (do ponto de vista da programação)?


Bem, se os logs forem verdadeiros, é um problema de configuração dos serviços expostos e nada tem a ver com a programação.
blowdart

Respostas:


34

Como Matasano foi hackeado?

É impossível responder a partir das informações no post para a divulgação completa. No entanto, é sempre interessante especular, pois eles fornecem algumas informações -

# ./th3_f1n4l_s0lut10n www.matasano.com
[-] Conectando a 69.61.87.163:22 ..
[/] Procurando por um usuário não root válido .. adam
******** R3D4CT3D h4h4h4h4 ********

Eles executam seus binários " th3_f1n41_s01ut10n" no servidor do Matasano, que se conecta à porta ssh. Ele encontra um usuário não raiz válido por alguns meios desconhecidos e o restante da saída é redigido.

# ./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com
[*] Ouvinte do Connectback em 209.112.118.10:3338 ..
[!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1, OpenSSL 0.9.8g, 19 de outubro de 2007] 

O binário é executado novamente usando o nome de usuário encontrado, que efetua login e se conecta novamente 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 4 de março 12:44:55 UTC 2007 i686 GNU / Linux
**** h4h4h4hh4h4h4 l3tz us3 m0r3! 0D4Y! H4H4H4H4H4H4H4 ****

Eles podem estar implicando que eles têm um dia 0 contra esse kernel, o que é bastante antigo quando você considera o estoque da empresa.

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

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

Portanto, há pelo menos duas explorações em andamento aqui - a OpenSSH explora para obter um usuário não raiz válido no sistema, efetue login como esse usuário e, em seguida, a escalação de privilégios locais.

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

Na página de segurança do OpenSSH :

  • O OpenSSH anterior à versão 5.2 é vulnerável à fraqueza do protocolo descrita em CPNI-957037 "Ataque de recuperação de texto sem formatação contra 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 o comunicado cbc.adv e as notas de versão do OpenSSH 5.2.
  • O OpenSSH 4.9 e mais recente não são executados ~/.ssh/rcpara sessões cujo comando foi substituído por uma diretiva ForceCommand sshd_config (5). Esse foi um comportamento documentado, mas não seguro (descrito nas notas de versão do OpenSSH 4.9).
  • O OpenSSH 4.7 e versões mais recentes não voltam a criar cookies de autenticação X11 confiáveis ​​quando a geração não confiável de cookies falha (por exemplo, devido à exaustão deliberada de recursos), conforme descrito nas notas de versão do OpenSSH 4.7.

Eu acho que ter esse kernel Linux mais antigo e um daemon SSH mais antigo fez por eles. Além disso, ele estava sendo executado no servidor www, disponível na Internet, o que é algo bastante confiante para se 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 sejam corrigidos e limitando o número de pessoas que podem se conectar ao invés de permitir que as pessoas se conectem de qualquer lugar. Esse episódio compõe a lição de que a administração segura do sistema é difícil e requer dedicação da empresa para fornecer tempo para que a TI mantenha as coisas corrigidas - na realidade, não é algo que acontece facilmente, pelo menos em empresas menores.

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

Acho que sei o que farei no trabalho amanhã. :)


2
Exija uma chave pública válida para poder efetuar login através do OpenSSH. Não é à prova de idiotas, mas ajuda. Bom post btw.
287 Andrioid

Bom ponto, acrescentou :)
Cawflands

1
Vale ressaltar que a cadeia de caracteres da versão do OpenSSH está longe de ser um guia confiável para saber se as vunerabilites foram corrigidas, devido a várias correções de backport das versões do Linux. Além disso, nenhum dos erros aqui provavelmente permitirá que um usuário efetue login sem outros violadores bastante sérios.
Cian

3

As pessoas adoram criar FUD sobre isso, mas parece que eles sabiam que o usuário Adam já estava lá e também sabiam sua senha (talvez por força bruta ou outros métodos). No entanto, eles querem parecer legais e criar esse barulho todo.

Outra coisa interessante a ser observada é que o usuário Adam não se registra nessa 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 manteve essa senha (talvez uma má) 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 usavam o nome de usuário mais comum nessa caixa (fácil de adivinhar).


2

Por que você tentaria resolver isso do ponto de vista da programação?

Em vez disso, você deve resolvê-lo do ponto de vista do administrador do servidor inteligente. Existem 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, provavelmente não é um especialista em segurança, e qualquer coisa que você pudesse escrever escrever acrescentaria mais buracos. Isso realmente não é uma questão de programação.


uma sugestão era uma lista branca?

que ainda não é uma questão de programação, é um problema de configuração
blowdart


@ Sneakyness Eu não sou um especialista em segurança de qualquer maneira - mas obrigado por apontar - é isso que faço essas perguntas, para que eu possa aprender - e obrigado por tentar me impedir de escrever sobre algo que gostaria de aprender - se é uma programação ou não uma pergunta programação - Eu vou deixar para os especialistas em segurança para responder - vOCÊ incluído (eu estou supondo que você é uma base do seu comentário educacional)
user14898

2

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

Talvez uma boa abordagem seja alegar que seu software é intransponível, o que levará os whitehats a testá-lo e divulgar tudo, deixando menos buracos. O Oracle 10 tinha essa afirmação e, no dia seguinte, foram encontrados 9 novos buracos. É bastante seguro agora.

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


Temos certeza de que este foi mesmo um dia zero?
21139 Josh Brower

2

me surpreende que eles tenham tantos usuários com conchas nessa máquina. foi assim que eles se tornaram donos, com certeza, tudo o mais é um arenque vermelho destinado a distrair. um deles conseguiu o backdoor do ssh em outra máquina shell, provavelmente e acabou o jogo. dar contas shell a todos e tornar o mundo sshd acessível é apenas preguiçoso e estúpido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.