Engenharia reversa em patch da Microsoft pode ajudar hackers em ataques




Por Network World/EUA

Publicada em 25 de agosto de 2011 às 11h21



Empresa de segurança aplicou técnica para entender mudanças trazidas por correção e descobriu que consequências poderiam ser graves.

A empresa de segurança Qualys demonstrou nesta semana como aplicar engenharia reversa a uma correção da Microsoft para lançar um ataque de negação de serviço (DoS) contra servidores Windows DNS.
A prova de conceito mostra os passos que um hacker poderia seguir para atacar o Windows e põe em evidência a importância de aplicar as correções (patches) da Microsoft o mais rapidamente possível logo após a liberação do pacote mensal Patch Tuesday.
A correção utilizada pela Qualys resolvia duas brechas no Windows DNS Server e havia sido classificada como crítica, a mais alta dentro da escala da Microsoft.
A criadora do Windows afirmou não esperar que a vulnerabilidade fosse explorada este mês, mas a prova de conceito da Qualys mostra que isso seria possível.
“Nós fizemos a engenharia reversa do patch para entender melhor o mecanismo da vulnerabilidade e descobrimos que ela poderia ser explorada com alguns passos básicos”, escreveu, em blog, o engenheiro de segurança Bharat Jogi, da Qualys. “A prova de conceito descrita abaixo demonstra uma negação de serviço, mas cibercriminosos poderiam utilizar a falha para executar código remotamente.”
Comparação binária
A Qualys usou uma ferramenta de comparação binária de arquivos (“binary diffing”), chamada TurboDiff, para comparar as versões corrigidas e não corrigidas dos arquivos do DNS Server afetados. Isso ajudou os especialistas a “entender as mudanças que foram feitas para corrigir a vulnerabilidade”, mas também poderia ajudar pessoas mal-intencionadas a aprender como explorar a vulnerabilidade e usá-la contra os sistemas que ainda não receberam a atualização de segurança.
Depois que as vulnerabilidades foram identificadas, a Qualys configurou dois servidores DNS em laboratório e derrubou um deles com uns poucos comandos. Como a execução do ataque exige apenas alguns passos, a Qualys recomendou que seus próprios clientes façam uma varredura com o software de segurança QualysGuard e “apliquem a atualização de segurança o mais rapidamente possível”.
A correção para o Windows DNS Server foi uma das duas atualizações críticas lançadas este mês pela Microsoft. A outra consertava sete brechas no Internet Explorer. Em relação ao patch para o IE, a Microsoft advertiu seus clientes de que “provavelmente veremos exploits desenvolvidos para esta brecha nos próximos 30 dias”. O especialista em segurança Paul Henry, da Lumension, vai mais longe ao dizer que “estamos trabalhando com uma janela de 24 horas [após a liberação dos patches] para que comecemos a ver códigos de exploit em campo”.
Em resumo: O dia seguinte ao da publicação do Patch Tuesday já dá oportunidade a hackers para atacar sistemas desprotegidos, por isso os responsáveis por sistemas Windows deveriam aplicar as atualizações de segurança assim que possível.

Ná Prática: 

Amostra

Arquivo sem correções: dns.exe (versão: 6.0.6002.18005) 
Arquivo Patched: dns.exe (versão: 6.0.6002.18486)

Análise de patch

  1. Começamos a análise por binary-diffing o unpatched ea versão corrigida dos arquivos que foram disponibilizados pela atualização MS11-058 de segurança. Isso nos ajuda a entender as mudanças que foram feitas, a fim de corrigir as vulnerabilidades por este patch. Para executar binários diffing usamos TurboDiff, que é um plugin para o IDA pro. TurboDiff nos mostra uma lista de todas as funções que são idênticos, mudou, incomparável e aqueles que olham desconfiados. Funções suspeitos têm gráficos de funções inalteradas, mas checksums mudou, o que indica uma alteração de código pequena foi feita. Enquanto a maioria das funções parecem idênticas, TurboDiff lista algumas dessas funções como suspeito (Fig. 1). Figura 1: diffing resultados por TurboDiff.



  2. Como pode ser visto na figura 1, TurboDiff lista quatro dessas funções como suspeito. A vulnerabilidade que estamos investigando está relacionada com CVE-2011-1966, que está relacionado ao nome Pointer Authority (NAPTR) registro de recurso DNS. A partir dos nomes das quatro funções marcado como suspeito, ele é bem claro que a 'NaptrWireRead (x, x, x, x)' tem algo a ver com o registro de DNS NAPTR e esta deve ser a primeira função a análise mais aprofundada.
  3. Tomar um olhar mais atento aos resultados para o diffing NaptrWireRead função (x, x, x, x) revela que há somente uma mudança feita para a função inteiro (Figura 2, indicado com a caixa verde).
  4. A instrução assinada estendida "edi MOVSx, byte ptr [ebx]" é substituída com zero instrução estendida "edi MOVZX, byte ptr [ebx]". Este valor é então usado como o número de bytes a cópia do buffer de origem para o buffer de destino para memcpy ().
  5. A instrução move assinado estendida é um fabricante de problema aqui. Se o byte apontado por "byte ptr [ebx]" é maior do que 127 (0x7F), o valor resultante do registo edi será um número muito grande. Por exemplo, se byte apontado por [ebx] é de 128, o valor resultante em edi registo será 0xFFFFFF80. A próxima instrução "LEA EAX, DWORD PTR DS: [EDI +1]" carregará EAX com 0XFFFFFF81 que é usado como uma contagem para memcpy ().Este exemplo irá tentar copiar o 4Gb de memória inteira, levando o serviço de DNS para falhar. Figura 2: Binary Diff para a função NaptrWireRead (x, x, x, x).



DOS Prova de Conceito

  1. Para a prova de conceito, você precisa de dois servidores DNS. Registrar o domínio crasher.test.com no primeiro servidor e configurar um NAPTR registro DNS, como mostrado na figura 3 abaixo. O segundo servidor DNS irá funcionar como um servidor DNS forwarder.De todos os campos mostrados, o "String Service" e "Expressões Regulares" campos são os únicos que podem tirar a entrada maior do que 127 caracteres, sem restrições.
  2. Para explorar essa vulnerabilidade fazemos qualquer um dos campos acima mencionados têm mais de 128 caracteres. Neste caso, vamos definir o "regular a expressão" campo de até 128 caracteres.
  3. Do forwarder DNS, digite o comando "nslookup-type = all crasher.test.com. 127.0.0.1 ".Este comando irá falhar o servidor DNS trabalhando como forwarder. Figura 3: DNS forma NAPTR.



  4. Para ver a vulnerabilidade em ação, anexe o depurador para o executável do DNS e definir um break point no NaptrWireRead (x, x, x, x) a função e também definir um ponto de interrupção no memcpy () função nessa função. Figura 4: BreakPoint na memcpy () em NaptrWireRead ().



  5. A partir da Figura 4 (ver os valores passados ​​na pilha ao chamar memcpy ()), é claro que definir o valor superior a 128 fez com que o parâmetro count para a função memcpy para ser um valor muito grande causando uma violação de acesso e bater o DNS servidor.
  6. O rastreamento de pilha chamada para a vulnerabilidade acima pode ser visto na Figura 5 abaixo. Figure 5: Rastreamento de Pilha de Chamadas.



  7. Para analisar o acidente via windbg, você pode começar Windbg com o comando "windbg-I" uma registrá-lo como um depurador postmortem padrão. Quando você executar o comando "nslookup-type = crasher.test.com todos. 127.0.0.1 "novamente, a falha no servidor DNS e windbg começa para análise. A Figura 6 mostra a saída do analisador crasher exploráveis!.Figura 6: saída do plugin exploráveis.



Conclusão

Como mostrado na análise acima, esta vulnerabilidade pode ser acionado com alguns passos simples. Enquanto isso PoC demonstra uma negação de serviço, os atacantes com intenção maliciosa pode ser capaz de obter a execução de código confiável. Por isso recomendamos a todos os nossos clientes para verificar o seu ambiente para QID 90726 e aplicar esta actualização de segurança o mais rapidamente possível.

https://community.qualys.com/blogs/securitylabs/2011/08/23/patch-analysis-for-ms11-058
REF: 

Postar um comentário

Comente sem faltar com respeito - ;-)

Postagem Anterior Próxima Postagem