Windows

Ataques, Prevenção e Detecção de Vulnerabilidade ao Hijacking de DLl

BZR Player 0.97 (codec_mpeg.dll) dll hijacking vulnerability 0-day

BZR Player 0.97 (codec_mpeg.dll) dll hijacking vulnerability 0-day

Índice:

Anonim

DLL significa Dynamic Link Libraries e são partes externas de aplicativos que rodam no Windows ou em qualquer outro sistema operacional. A maioria dos aplicativos não é completa em si 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 e otimiza o uso da RAM. Este artigo explica o que é Hijacking de DLL e como detectá-lo e preveni-lo.

O que são arquivos DLL ou bibliotecas de link dinâmico

Os arquivos DLL são bibliotecas de link dinâmico e, como é evidente pelo nome, são extensões de diferentes aplicações. 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 fique muito grande e evite sobrecarga de recursos pelo aplicativo.

O caminho para os arquivos DLL é definido pelo sistema operacional Windows. O caminho é definido usando Variáveis ​​Ambientais Globais. Por padrão, se um aplicativo solicitar um arquivo DLL, o sistema operacional examinará a mesma pasta na qual o aplicativo está armazenado. Se não for encontrado, vai para outras pastas conforme definido pelas variáveis ​​globais. Há prioridades associadas a caminhos e ajuda o Windows a determinar quais pastas procurar as DLLs. É aqui que entra o seqüestro de DLL.

O que é o Hijacking de DLL

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

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

Como detectar o seqüestro 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 na detecção de uma tentativa de invasão de DLL e a impedem.

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

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

Deve-se observar que os programas acima apenas examinam os aplicativos na plataforma Windows em busca de vulnerabilidades e não evitar o seqüestro de arquivos DLL

Como evitar o seqüestro de DLL

A questão deve ser abordada pelos programadores em primeiro lugar, pois não há muito o que você pode fazer, exceto reforçar seus sistemas de segurança. Se, em vez de um caminho relativo, os programadores começarem a usar o 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á diretamente para a DLL pretendida, descartando assim as chances de carregar o mesmo nome DLL em um caminho de prioridade mais alta. Esse método também não é à prova de falhas porque, se o sistema for comprometido e os cibercriminosos souberem o caminho exato da DLL, eles substituirão a DLL original pela DLL falsa. Isso seria sobrescrevendo o arquivo para que a DLL original fosse transformada em código malicioso. Mas, novamente, o cibercriminoso precisará saber o caminho absoluto exato mencionado no aplicativo que solicita 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. Use um bom firewall. Se possível, use um firewall de hardware ou ative o firewall do roteador. Use os bons sistemas de detecção de invasão para saber se alguém está tentando brincar com seu computador.

Se você estiver solucionando problemas de computadores, execute o seguinte procedimento para aumentar sua segurança:

  1. Desativar o carregamento de DLLs de compartilhamentos de rede remotos
  2. Desativar o carregamento de arquivos DLL do WebDAV
  3. Desativar completamente o serviço WebClient ou configurá-lo para manual
  4. Bloquear as portas TCP 445 e 139 como elas são mais usadas para comprometer computadores
  5. Instale as atualizações mais recentes para as sistema e software de segurança

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 DLLs, impedindo que os aplicativos carreguem código de forma insegura de arquivos DLL.

Se quiser adicionar algo ao artigo, comente abaixo.