Ir para conteúdo
Faça parte da equipe! (2024) ×

Como Funcionam as DLLs e os Injectores


lukcet12.
 Compartilhar

Posts Recomendados

História DLL

 

A pouco tempo atrás foi descoberta uma vulnerabilidade grave no Windows, que consiste no processo de pesquisa das dlls (dynamic link library) do sistema, esse bug foi nomeado de DLL Hijacking. Essa vulnerabilidade já vem sido discutida a 10 anos, quando os pesquisadores achavam que ela não seria tão grave e poderia ser explorada apenas localmente para elevação de privilégios, agora ela se mostra um risco em potencial, já que foi provado a possibilidade de exploração dessa falha em rede, e o que é mais preocupante, vários programas estão vulneráveis a DLL Hijacking.

Para entendermos melhor essa vulnerabilidade eu vou fazer um breve resumo de como ela acontece.

 

As DLLs

 

Os arquivos.dll estão espalhados por diversas pastas do sistema, eles são códigos prontos que podem ser usados por programas para executar uma determinada tarefa, isso evita o trabalho que o programador teria em ter que escrever várias funções em seu programa, o que tornaria o desenvolvimento ainda mais demorado, fora o tamanho do programa que seria bem maior, por exemplo, eu estou desenvolvendo um player de áudio e vídeo, esse player normalmente irá exigir diversas funções para que possa abrir os arquivos de áudio e vídeo, no Windows existe uma dll que já possui as funções responsáveis por abrir e executar um arquivo de áudio e vídeo, então ao invés de eu ter que escrever do zero todo esse código dentro do meu programa, eu apenas escrevo uma função em que o meu programa fará com que Windows procure por uma determinada dll e a carregue para que o meu aplicativo reutilize o seu código.

 

A vulnerabilidade

 

Agora que já sabemos para que servem e como são utilizadas as DLLs, vamos entender aonde esta a vulnerabilidade. Como foi dito no exemplo acima, um programa pode fazer com que o Windows procure por uma dll, para que ele possa dar continuidade ao seu código e o possibilite executar uma tarefa, até ai normal, o problema é que o Windows procura pela dll por todas as pastas inclusive a pasta original do arquivo, ou seja, se na mesma pasta do arquivo houver uma dll maliciosa, o Windows pode vir a executa-la, entenda como abaixo. Os programas vulneráveis a DLL Hijacking são aqueles que permitem com que o Windows procure por uma dll no mesmo diretório do arquivo.

 

Explorando a vulnerabilidade

 

Para explorar a vulnerabilidade o invasor teria que criar um arquivo.dll malicioso, no qual o programa vulnerável irá usar, vamos usar novamente como exemplo um programa de áudio, digamos que esse programa de áudio precisa da players.dll , sabendo disso, o invasor criaria um players.dll com o código verdadeiro da dll + um código malicioso para que seja carregado junto com a função. Se o players.dll criado pelo invasor tivesse apenas o código malicioso, iria acontecer um erro, afinal as funções pedidas pelo programa não estão na dll, agora se o players.dll do invasor tiver o código verdadeiro da dll + o código malicioso, o código malicioso será carregado junto com as funções verdadeiras da dll sem despertar suspeitas.

Agora que o invasor tem um arquivo dll infectado por um código malicioso, ele disponibilizaria um arquivo comum do programa vulnerável, no nosso caso uma musica, em um compartilhamento de rede do Windows e junto com esse arquivo ele também deixaria o players.dll malicioso. Quando o programa vulnerável requisitar a players.dll o Windows irá procurar no diretório do arquivo que será aberto e irá carregar o código malicioso sem demonstrar nenhuma anormalidade.

 

Correção da vulnerabilidade

 

Teoricamente a correção da vulnerabilidade seria simples, bastaria a Microsoft evitar com que o Windows procure por dlls na mesma pasta do arquivo, mas o problema é que se isso ocorrer vários programas poderiam deixar de funcionar, já que muitos arquivos de aplicativos foram criados necessitando do carrego de dlls em seu mesmo diretório, dessa forma, se o Windows não pesquisar na mesma pasta do arquivo, o arquivo não conseguira ser aberto.

O mais viável até agora é que as empresas responsáveis pelos programas vulneráveis lancem correções para os seus programas para que eles não precisem carregar dlls que estão na mesma pasta do arquivo, evitando então o carrego de uma dll criada por um invasor.

Para vocês terem uma noção da gravidade da vulnerabilidade, veja uma pequena lista de programas vulneráveis:

 

Firefox

Sony Sound Forge

Camtasia Studio 7

Media Player Classic

Google Earth v5.1.3535.3218

Daemon Tools lite

Adobe Illustrator CS4

Adobe PhotoShop CS2

Adobe Premiere Pro CS4

Skype 4.2.0.169

Utorrent

Avast

Adobe Dreamweaver CS4 e CS5

Foxit Reader

O pessoal do site Exploit Database fizeram uma lista completa dos programas vulneráveis, qual dll o programa pede e o nickname da pessoa que descobriu a vulnerabilidade, é só dar uma conferida.

Bom ai esta um resumo do que é e como é explorado a vulnerabilidade DLL Hijacking, esse artigo é muito bom para você ter uma noção bem clara de como as vulnerabilidades acontecem e como os Hackers e Crackers criam os seus planos de exploração e invasão. Em breve eu postarei uma vídeo aula mostrando a exploração da vulnerabilidade DLL Hijacking, volto a dizer, mostrando e não ensinando como explorar.

 

 

História Injectores

 

Bem, DLL Injector(Injetor de DLL) é um programa feito em geral na linguagem de programação C++(mas também pode ser feito em outras linguagens).Como o próprio nome diz,ele injeta dll,mas o que são dlls?são programas?

Vamos lá explicar o que é uma DLL(primeiro com uma explicação do nosso amigo wikipédia).

 

Dynamic-link library (Biblioteca de ligação dinâmica) ou DLL, é a implementação feita pela Microsoft para o conceito de bibliotecas compartilhadas nos sistemas operacionais Microsoft Windows e OS/2. Essas bibliotecas geralmente tem as extensões DLL, OCX (para bibliotecas que contêm controles ActiveX), ou DRV (para drivers de sistema legacy). Os formatos de arquivos para DLL são os mesmos dos arquivos executáveis para Windows. Assim como os EXEs, as DLL podem conter códigos , dados, e recursos (ícones, fontes, cursores, entre outros) em qualquer combinação.

 

No sentido amplo do termo, qualquer arquivo de dados com esse mesmo formato, pode ser chamado de DLL de recursos. Exemplos dessas DLL incluem bibliotecas de ícones, podendo ter a extensão ICL, e os arquivos de fontes, quem têm as extensões FON e FOT.

 

Bem,resumindo,DLL's são arquivos feitos em certas linguagens(assim como os injectors),nessas DLL's,no caso das DLLs usadas nos injectors hoje em dia,contém códigos para poder enganar o servidor do tal jogo para que você possa fazer seu hack a vontade.Elas podem ser programadas em muitas linguagens,mas geralmente,para jogos como pt,the duel,etc.São feitas na linguagem de c++,assim como os injetores.

 

 

 

 

Dando uma resumida,os DLL Injectors leem o código da DLL e injetam dentro de certo programa(no caso o jogo),fazendo assim com que mude HP,MP,ganhe GOLD,isso depende de cada DLL de cada jogo. Pelo fato dos injetores lerem os códigos das DLLs e colocarem nos codigos,eles geralmente são feitos na mesma linguagem que a DLL,mas é óbvio que pode ser feito em outra linguagem,mas provavelmente seria mais dificil.

 

 

 

 

Espero que tenham entendido tudinho.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.