Conferência DEFCON 17. Ria dos seus vírus! Parte 1Em seguida, você pode carregá-lo no IDA e ver que tudo na tabela de endereços importados parece bem, e podemos seguir os links cruzados para definir o ponteiro para o arquivo desejado. Portanto, chegamos ao local exato do código de criptografia dependente.

Assim, com apenas alguns comandos para despejar memória, encontramos o local onde o Coreflood se escondia. Desmontamos, recuperamos e inserimos o cabeçalho PE sem o ter, e obtivemos uma tabela de endereços totalmente restaurada em menos de 20 segundos.
A próxima história se chama "Querida, desculpe incomodá-lo novamente. Estou comovido pela Internet!" Esta história nos diz que o gerador de IP com defeito Conficker.B varre apenas parte da Internet. Aqui voltamos novamente à função rand. Uma parte importante dessa função é a última instrução que marquei com uma seta verde - ela executa qualquer valor final no EAX com um valor de 7FFF. Se você não conhece os princípios de montagem e não sabe o que essas instruções podem fazer, então aqui está uma pequena demonstração sobre isso.

Movemos o valor máximo que o EAX pode conter para esse registro e executamos a instrução final. Você pode ver que "corta" a metade superior do valor e subtrai 7FFF, que é convertido para 32767 no sistema decimal.Parentemente, os autores não perceberam que essa restrição que executa o Windows não retorna ao número inteiro o tamanho desejado . Ele o "corta" para que o valor não exceda 7FFF, para que um byte de 7F nunca seja maior que esse valor de 7F, ou seja, nunca será igual a 80 ou algo assim.
No lado esquerdo do slide, que chamei de "Método vicioso", você vê o código Conficker.B. Isso mostra uma chamada para rand que inicia o primeiro octeto do endereço IP, que deve ser verificado após o retorno do rand. A seguinte chamada do sistema rand inicia o terceiro e o quarto octetos do endereço IP, mas, devido ao exposto acima, dois desses octetos nunca serão maiores que 7F. Assim, a maior parte da Internet não poderá ser verificada porque o Conficker.B usa esse algoritmo.
No lado direito do slide está a parte do código-fonte que mostra o montador. É difícil ler na tela, mas este exemplo está disponível ao público e você pode lê-lo online, se estiver interessado.

Um link para esta ferramenta está localizado na parte inferior do próximo slide, intitulado "Simulação do método vicioso". Você também pode ver que o endereço IP é gerado com PRNG, mas não verificado.

Quero agradecer muito a Brandon Enright, que fez a programação no próximo slide. Esse gráfico é chamado de "curva de Hilbert" e agora aumentarei a imagem para que você possa ver melhor na tela. A cor azul no gráfico indica o intervalo de endereços IP que não estão disponíveis para varredura pelo Conficker.B usando esse algoritmo vicioso. A cor vermelha escura indica o que pode ser digitalizado. Você percebe que a maioria das partes do gráfico não é vermelha escura, mas roxa, e não verá por que isso acontece até aumentar o retângulo correspondente.

Mesmo nesse retângulo ampliado, em cada bloco / 16, você vê muitos fragmentos azuis que se tornam vermelho escuro em roxo. Essas são as partes dos endereços que o Conficker.B não pode digitalizar.

Isso é bastante interessante porque muitas pessoas têm certeza de que o Conficker.B criou "grandes mentes". Talvez seja, mas essas mentes não estavam cientes das limitações existentes no Windows rand ().
Matthew Richard: voltando àqueles caras que, como eu disse, não gerenciam muito bem seus vírus, então no cibercrime isso é semelhante ao provérbio “humano para humano lobo”, então esses caras não são respeitados em seus círculos.
Vamos falar sobre as ferramentas de hackers Neosploit, que "pegaram" todo mundo. Podemos dizer que o lema de seus desenvolvedores era "Obrigado pelo dinheiro, agora é hora de correr". O Neosploit é um kit de ferramentas para organizar ataques na Web, para que os caras do cibercrime o comprem e o configurem contra os do servidor, invadam o servidor, cortam o servidor, baixam códigos etc.

Os criadores do Neosploit fizeram um bom investimento vendendo sua ferramenta, mas não permitindo que ela fosse alterada, modificada ou usada em partes. A terceira versão deste kit de ferramentas foi lançada em abril de 2008 e a maioria das explorações exclusivas é escrita em C; portanto, não é PHP ou algum tipo de aplicativo da Web de baixa qualidade. Os clientes receberam uma distribuição binária com um conjunto de explorações CGI.
O Neosploit possui recursos que impedem os clientes de dividir ou aparar explorações. Para fazer isso, todas as explorações foram apresentadas em formato binário, criptografado usando o XOR. Os criadores fizeram isso para que ninguém pudesse cortar, colar e criar seu próprio conjunto de explorações com base no Neosploit. Existem 40-50-60 tipos diferentes de ataques na Web, que são baseados em códigos roubados e copiados inseridos em suas próprias explorações; portanto, o pessoal do Neosploit é um pouco mais inteligente ao criptografar suas explorações por dentro. Na captura de tela, você vê que eles têm um arquivo com a chave neosploit.key, portanto, este é um software totalmente licenciado.

Não tenho dúvidas de que eles tinham um monte de bons clientes que ganharam muito dinheiro com isso. Seus clientes mais famosos eram Torpig. Acho que você já ouviu falar do rootkit Mebroot, com o qual eles comprometeram os sistemas a criar uma rede botnet. Mas os criadores do Neosploit tinham muitos outros clientes. Em maio de 2008, eles lançaram uma nova melhoria - a 3ª versão de seu kit de ferramentas. Os clientes foram solicitados a pagar antecipadamente o pacote de exploração com todas as atualizações subsequentes por US $ 1000. Mais tarde, falarei sobre isso com mais detalhes, pois agora notarei que eles realmente se preocuparam com os piratas e tentaram proteger seu produto deles o máximo possível, por isso foi definitivamente muito divertido.

Até a mídia escreveu que essas façanhas estão por toda parte. Então, é claro, tentaremos desmontar o código e mostrar como o Neosploit funciona.
A primeira coisa engraçada que eles fizeram, depois de promoverem intensamente esse conjunto de explorações de abril a julho, foi o apoio de 20 de julho de 2008. A explicação que eles simplesmente postaram em seu site disse o seguinte: “Infelizmente Suporte adicional ao produto não é viável. Pedimos desculpas pelo inconveniente, mas negócios são negócios, e o tempo gasto no projeto não se justificou. Nos últimos meses, tentamos ao máximo satisfazer os requisitos do cliente, mas um dia o suporte deveria ter cessado. Estamos com você há um ano e meio e esperamos que este não seja o pior momento para o seu negócio. Agora não estaremos perto de você, mas, no entanto, desejamos que sua empresa floresça por muito tempo. ” Em geral, recebemos o seu dinheiro, você pagou pela assinatura, portanto seja saudável!
No entanto, eles simplesmente brincaram e, em agosto de 2008, retornaram e lançaram uma versão completamente nova 3.1, que eles forneceram a seus principais clientes, indicando que todos os outros clientes receberão uma atualização depois de pagarem por isso. Esta atualização incluiu várias novas explorações para Adobe PDF, Shockwave Flash e Quicktime para Firefox.
Então eles decidiram novamente ser sérios e anunciaram que estavam realmente parando de lançar atualizações, para que todos que fizessem uma assinatura pré-paga estragassem tudo.
Então, vamos ao Neosploit, este kit muito legal para organizar ataques na Web. Como seus desenvolvedores lutaram contra piratas e roubaram explorações que podiam ser copiadas e coladas nos kits de outras pessoas, eles pegaram cada exploração e a colocaram em um arquivo CGI, codificando de tal maneira que era muito difícil tirá-la de lá. Os binários de exploração C eram ligeiramente diferentes dos scripts PHP.

No blog Neosploit, foi postada a frase de Dancho Danchev de que "qualquer um pode criar uma nova exploração", mas é bastante difícil. Decidi descobrir o quão difícil era e comecei a desmontar uma das façanhas.
Cada exploração foi armazenada em forma criptografada usando uma chave XOR de 3 bytes. Para cada solicitação recebida, a exploração era descriptografada e fornecida ao usuário para o trabalho, e esse ciclo era repetido constantemente.

Portanto, mesmo que você possa percorrer a memória e remover o despejo de memória, ainda é bastante difícil e obter todas as explorações, mesmo assim, esses buffers são limpos sempre.
Felizmente, se você pode copiar e colar essas explorações no programa que precisa, pode encontrar a resposta. Para isso, é usada uma ferramenta de descriptografia muito poderosa - o script IDA. Com ele, você pode comentar ou despejar uma área de memória específica, atualizar explorações, pode ser útil para trabalhar com malware que usa sequências complicadas por xor, base64 etc. Escrevi um script IDE com o qual tentei desmontar um despejo de memória capturado de uma exploração criptografada.

Ele percorre todos os objetos criptografados, pesquisa todas as chamadas para as funções de descriptografia, captura os objetos criptografados, descriptografa-os usando o XOR e remove o despejo. Essa é uma maneira, mas acho que você poderia escrever seu próprio script, um aplicativo que faz o mesmo. Se você sabe como adicionar novas explorações ao Neosploit, pode fazer algo nessa direção e, é claro, assim que remover o despejo, você reconhecerá todo o texto simples, poderá "separá-lo" da instrumentação e revendê-lo. Os novos caras que desenvolviam as façanhas simplesmente desistiram porque alguém ganhava muito dinheiro sem cuidar de seus clientes.
Se alguém ouviu o grande filósofo do hip-hop Biggie Smalls, do Notorius BIG, então ele conhece sua música chamada Dez mandamentos do crack, "Os dez mandamentos do crack", que contém grande sabedoria. Se você é um traficante de drogas, siga o 4 mandamento: "Nunca se sente por conta própria que você empurra". Provavelmente, o cara que eu chamei de Peeper e que distribuiu seu próprio código malicioso nunca ouviu essa música porque testou seu produto em si mesmo.
Seu ataque foi o seguinte. Ele enviou e-mails, disfarçados de várias agências governamentais e dirigiu-se às pessoas com o nome: "Querido, alguém apresentou uma queixa contra sua empresa na Federal Trade Commission, então clique aqui para baixar um documento que descreve a essência em detalhes" .

Em seguida, o usuário seguiu o link e tentou fazer o download deste documento, e realmente era um documento do Word no formato .doc. No entanto, havia um recurso muito complicado. Você teve a oportunidade de simplesmente arrastar e soltar arquivos executáveis de um documento do Word e renomeá-los, mas quando tentou fazer o download do arquivo, a mensagem “Microsoft Word detectou um problema e o documento não pôde ser baixado. Por favor, clique duas vezes no ícone do documento para continuar. " Ideia impressionante!

Naturalmente, as pessoas clicaram, clicaram 6 vezes para receber esta mensagem infectada, então esse cara teve várias vítimas. Gostei da mensagem: "Eles tentaram me enganar, blá blá blá".
A próxima coisa que descobrimos ao rastrear esse cara foram os diretórios abertos do Drop Directory, onde ele descartou as informações que recebeu.

Talvez ele não tivesse suas próprias ferramentas para gerenciá-los, ou pensava que os diretórios abertos são uma coisa boa, mas os diretórios abertos são ruins se você armazenar muitas informações recebidas de pessoas diferentes. Qualquer servidor que ele configurasse para o site de "desembarque" tinha um diretório aberto, e você poderia simplesmente entrar lá e ver as listas de todas as vítimas e cada uma individualmente.
De certa forma, ele era um bom desenvolvedor porque escreveu código de qualidade. Mas sua desvantagem foi que, ao endereçar seu código para um servidor ativo, ele usou seu endereço IP real e você não vai durar muito tempo usando essas coisas.

Então, na verdade, ele tinha um modem DSL padrão que entrou em contato com a Ucrânia, testou todo o seu código e malware, que tem uma boa função chamada "siga-me" ou "siga-o". Esse cara estava ocupado roubando informações bancárias, mas às vezes ele só queria assistir suas vítimas para ver o que estavam fazendo, por isso o chamamos de Peeper, ou "Observador". Ele não estava satisfeito com a funcionalidade simples de seu software, ele começou a se monitorar. Parece um pouco estranho, como se você abrisse as janelas de acesso remoto VNC no seu próprio computador e as contornasse, obtendo imagens cada vez menores. De fato, ele fez isso muitas vezes, em muitos servidores "de desembarque", de fato, foi muito, muito estranho. Assim, olhando através desses servidores "de desembarque", pode-se dizer: "Oh, veja, esta é uma imagem em que ele está se observando, se observando, quem está se observando".

"Minha luz, espelho, diga-me, quem é o mais doce do mundo"?
Acima de tudo, gostei do que ele fez por si mesmo. Ele usou esse recurso Siga-me no processo de desenvolvimento de código. De fato, ele escreveu o código, observando-se, enviando tudo isso de volta ao servidor de comando e controle. Assim, ele possibilitou que os policiais invadissem a porta dos fundos, deitassem o rosto no chão e confiscassem seu computador. Em resumo, nada ajuda a se livrar de você como a imagem de uma árvore de origem anexada ao seu endereço IP.

O último malware que iremos analisar certamente interessará as pessoas familiarizadas com o Internet Explorer 7. Mas não se preocupe, a Microsoft diz que tudo está sob controle, confie nelas!

Portanto, a Microsoft teve um grande problema com o Internet Explorer 6, devido ao fato de ser muito fácil roubar senhas salvas deste navegador. Normalmente você vai ao site, eles perguntam se você deseja salvar a senha, um formulário especial é chamado, você responde "sim" e é salvo no registro. O problema com o IE 6 era que, se você efetuar login como usuário, precisará fazer apenas uma chamada do sistema CryptUnprotectData () para descriptografar essas senhas que realmente não têm proteção.
Portanto, o malware em execução com privilégios de usuário lê essas senhas livremente e as envia ao invasor. Portanto, no IE 7, eles instalaram um excelente "patch" - as senhas foram criptografadas com uma chave de 128 bits. Realmente não é uma solução quebrável!
Se você olhar mais fundo, poderá ver o hash disponível no site, explicarei isso um pouco mais tarde, no qual há um arquivo binário contendo o nome de usuário e a senha. Quero citar outro grande filósofo, John Travolta, do filme Swordfish. Minha passagem favorita é quando ele fica sentado e explica: "Esse código é tão bom que nem eu consigo decifrá-lo". Acho que ele tinha em mente a criptografia de 512 bits e ele, o melhor criptografador do mundo, por que foi contratado, diz que nem ele pode fazê-lo.
Então aqui está o que a Microsoft fez. Eles criptografam a senha, para a qual geram uma chave de 128 bits com base no hash MD5 do site para o qual salvam essa senha. Isso parece bastante razoável; portanto, se você acessar
www.bank.com/login.sp , eles usarão esta linha, deixarão todas as letras em minúsculas, depois as codificarão em caracteres grandes e usarão o algoritmo MD5, transformando essa linha em uma chave que será usado para criptografar a senha no registro para o nome de usuário.
Então, quando você visita este site para o qual existe uma senha salva, eles fazem o oposto: o IE normaliza a URL, transcodifica a string e verifica o registro para verificar se existem valores armazenados para você. Em detalhes, acontece assim:
- leia o hash do registro para cada URL em index.dat;
- URL é convertido para minúsculas;
- Os parâmetros GET são reduzidos;
- URL é convertido em caracteres grandes;
- se o hash do valor da URL for igual a qualquer valor no registro, os dados serão descriptografados usando esta URL.
Isso parece bastante razoável, mas se você pensar bem, há um pequeno problema. De fato, há muito pouca entropia, e o hacker pode lidar facilmente com isso. Isso não é muito mais complicado do que a criptografia de senha no IE 6.
Hackear é bem simples. Para salvar a senha, o usuário deve visitar o site, que pode ser facilmente encontrado em index.dat ou na seção de chave de registro “TypedURLS”. Se considerarmos apenas os Estados Unidos, existem cerca de 15.000 sites de bancos e cooperativas de crédito, e você pode encontrá-los facilmente. Você conhece os sites para os quais deseja encontrar senhas e cada um desses sites tem páginas de login, portanto, é fácil reunir uma coleção inteira de chaves. Como você pode ver, a proteção aqui é claramente insuficiente.
É claro que, se você é um cara mau, provavelmente conhece muitos sites que precisam de senhas: Facebook, Myspace ou Twitter ou outros com uma página de login, para que possa descobrir esses sites. Você pode usar o serviço Alexa, que mantém uma lista dos sites mais populares, coletando estatísticas sobre o tráfego. As chaves são realmente fáceis de descriptografar, você pode fazer algo como uma “Tabela Arco-Íris” com base nessas fontes comuns e, em seguida, você terá todas as chaves para descriptografar senhas.
Para os bandidos, é bem simples, então a moral da história com o IE 7 é a seguinte: não é tão boa quanto seus desenvolvedores estão tentando garantir.? , . . , Mozilla Firefox, , . , , , «Remember My password». . Firefox IE 7 , , , , .
, , , .
Laqma. , , . - , , , command and control.

, . , , PHP -, PHP , – .
.
: , , , . , . Laqma, . , , Laqma , . , SSDT, IDA - .
, Volatility, . , Laqma, SSDT , , . SSDT, , SSDT, SSDT.

TOS, win32k, , . SSDT , , TOS win32k.
, , , , drv, .sys, . , . , SSDT . .
Esse processo é um pouco automatizado usando o plug-in SSDT. Você vê como o BSOD piscou na tela; ele funcionou no programa de linha de comando da IDA. Como resultado do processamento automático, um BID é criado, isso é um pouco mais de automação, como resultado das funções do BID correspondentes às funções SSDT "conectadas".Assim, com um pequeno passo, aprendemos quais funções do SSDT estavam associadas ao dump que possui o módulo do BID criado e fomos capazes de nomeá-los para saber exatamente onde procurar no BID quando inicio a engenharia reversa.Espero que você tenha se divertido!Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até dezembro de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Somente nós temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?