Ataques, prevenção e detecção de vulnerabilidade de sequestro de DLL

DLL significa Bibliotecas de Link Dinâmico(Dynamic Link Libraries) e são partes externas de aplicativos executados no Windows ou em qualquer outro sistema operacional. A maioria dos aplicativos não é completa em si mesma e armazena o código em arquivos diferentes. Se houver necessidade do código, o arquivo relacionado é carregado na memória e usado. Isso reduz o tamanho do arquivo do aplicativo enquanto otimiza o uso da RAM . Este artigo explica o que é o sequestro de DLL(DLL Hijacking) e como detectá-lo e evitá-lo.

O que são arquivos(Files) DLL ou bibliotecas de vínculo dinâmico(Dynamic Link Libraries)

Sequestro de DLL

(DLL)Os arquivos DLL são bibliotecas de vínculo dinâmico(Dynamic Link Libraries) e, como é evidente pelo nome, são extensões de diferentes aplicativos. Qualquer aplicativo que usamos pode ou não usar determinados códigos. Esses códigos são armazenados em arquivos diferentes e são invocados ou carregados na RAM somente quando o código relacionado é necessário. Assim, ele evita que um arquivo de aplicativo se torne muito grande e evita a sobrecarga de recursos pelo aplicativo.

O caminho para arquivos DLL é definido pelo sistema operacional Windows . O caminho é definido usando Variáveis ​​Ambientais Globais(Global Environmental Variables) . Por padrão, se um aplicativo solicitar um arquivo DLL , o sistema operacional procurará na mesma pasta em que o aplicativo está armazenado. Se não for encontrado lá, ele vai para outras pastas conforme definido pelas variáveis ​​globais. Existem prioridades anexadas aos caminhos e isso ajuda o Windows a determinar quais pastas procurar pelas DLLs . É aqui que entra o sequestro de DLL .

O que é sequestro de DLL

Como as DLLs são extensões e necessárias para o uso de quase todos os aplicativos em suas máquinas, elas estão presentes no computador em diferentes pastas conforme explicado. Se o arquivo DLL original for substituído por um arquivo DLL falso contendo código malicioso, ele será conhecido como DLL Hijacking .

Como mencionado anteriormente, existem prioridades quanto ao local onde o sistema operacional procura arquivos DLL . Primeiro(First) , ele procura na mesma pasta que a pasta do aplicativo e depois procura, com base nas prioridades definidas pelas variáveis ​​de ambiente do sistema operacional. Assim, se um arquivo good.dll estiver na pasta SysWOW64 e alguém colocar um bad.dll em uma pasta que tenha maior prioridade em relação à pasta SysWOW64 , o sistema operacional usará o arquivo bad.dll, pois tem o mesmo nome da DLL solicitado pelo aplicativo. Uma vez na RAM , ele pode executar o código malicioso contido no arquivo e pode comprometer seu computador ou redes.

Como detectar o sequestro de DLL

O método mais fácil de detectar e impedir o seqüestro de DLL é usar ferramentas de terceiros. Existem algumas boas ferramentas gratuitas disponíveis no mercado que ajudam a detectar uma tentativa de hack de DLL e preveni-la.

Um desses programas é o DLL Hijack Auditor , mas ele suporta apenas aplicativos de 32 bits. Você pode instalá-lo em seu computador e verificar todos os aplicativos do Windows para ver quais aplicativos são vulneráveis ​​ao sequestro de DLL . A interface é simples e autoexplicativa. A única desvantagem deste aplicativo é que você não pode verificar aplicativos de 64 bits.

Outro programa, para detectar o seqüestro  de DLL , DLL_HIJACK_DETECT, está disponível via GitHub . Este programa verifica os aplicativos para ver se algum deles é vulnerável ao sequestro de DLL . Se for, o programa informa ao usuário. O aplicativo tem duas versões – x86 e x64 , para que você possa usar cada uma para verificar aplicativos de 32 bits e 64 bits, respectivamente.

Deve-se notar que os programas acima apenas verificam os aplicativos na plataforma Windows em busca de (Windows)vulnerabilidades e, na verdade, não impedem o seqüestro de arquivos DLL .

Como evitar o sequestro de DLL

A questão deve ser abordada pelos programadores em primeiro lugar, pois não há muito o que fazer, exceto reforçar seus sistemas de segurança. Se, em vez de um caminho relativo, os programadores começarem a usar um caminho absoluto, a vulnerabilidade será reduzida. Lendo o caminho absoluto, o Windows ou qualquer outro sistema operacional não dependerá das variáveis ​​do sistema para o caminho e irá direto para a DLL pretendida , descartando assim as chances de carregar a DLL de mesmo nome em um caminho de maior prioridade. Este método também não é à prova de falhas, porque se o sistema estiver comprometido e os cibercriminosos souberem o caminho exato da DLL , eles substituirão a DLL original pela (DLL)DLL falsa. Isso seria sobrescrever o arquivo para que a DLL original fosse alterada para código malicioso. Mas, novamente, o cibercriminoso precisará saber o caminho absoluto exato mencionado no aplicativo que chama a DLL . O processo é difícil para os cibercriminosos e, portanto, pode ser contado.

Voltando ao que você pode fazer, tente escalar seus sistemas de segurança para proteger melhor seu sistema Windows(secure your Windows system) . Use um bom firewall . Se possível, use um firewall de hardware ou ative o firewall do roteador. Use bons sistemas de detecção de intrusão para saber se alguém está tentando brincar com seu computador.

Se você gosta de solucionar problemas de computadores, também pode executar o seguinte para aumentar sua segurança:

  1. Desabilite o carregamento de DLL de compartilhamentos de rede remotos
  2. Desabilite o carregamento de arquivos DLL do (DLL)WebDAV
  3. Desative o serviço WebClient completamente ou defina-o como manual
  4. Bloqueie(Block) as portas TCP 445 e 139, pois são mais usadas para comprometer computadores
  5. Instale as atualizações mais recentes do sistema operacional e do software de segurança.

A Microsoft(Microsoft) lançou uma ferramenta para bloquear ataques de seqüestro de carga DLL . Essa ferramenta reduz o risco de ataques de seqüestro de DLL , impedindo que os aplicativos carreguem código de arquivos DLL de forma insegura.(DLL)

Se você gostaria de acrescentar algo ao artigo, por favor, comente abaixo.(If you would like to add anything to the article, please comment below.)



About the author

Sou desenvolvedor web com experiência em Firefox e Google Docs. Sou formado em administração de empresas pela Universidade da Flórida. Minhas habilidades incluem: desenvolvimento de sites, sistema de gerenciamento de conteúdo (CMS), análise de dados e design de interface de usuário. Sou um consultor experiente que pode ajudar sua equipe a criar sites e aplicativos eficazes.



Related posts