Quais são as maneiras de impedir que arquivos com o caractere Unicode de substituição da direita para a esquerda em seu nome (um método de falsificação de malware) sejam gravados ou lidos?

20

Quais são as formas de evitar ou impedir que arquivos com o caractere Unicode da RLO (Substituição da direita para a esquerda) em seu nome (um método de malware para falsificar nomes de arquivos) sejam gravados ou lidos em um PC com Windows?

Mais informações sobre o caractere unicode da RLO aqui:

Informações sobre o caractere unicode da RLO, conforme usado por malware:

Resumo do relatório de incidentes de vírus de computador / acesso não autorizado a computadores de outubro de 2011, compilado pela Agência de Promoção de Tecnologia da Informação do Japão (IPA) [ Mirror (Google Cache) ]

Você pode tentar esta página da Web de teste de caracteres RLO para ver como o caractere RLO funciona.

O caractere RLO também já está colado no campo 'Teste de entrada' nessa página da web. Tente digitar lá e observe que os caracteres digitados estão em ordem inversa (da direita para a esquerda, em vez de da esquerda para a direita).

Nos nomes de arquivos, o caractere RLO pode ser posicionado especificamente no nome do arquivo para falsificar ou mascarar como tendo um nome de arquivo ou extensão de arquivo diferente do que ele realmente possui. (Ainda estará oculto, mesmo que ' Ocultar extensões para tipos de arquivos conhecidos ' esteja desmarcado.)

As únicas informações que consigo encontrar com informações sobre como impedir a execução de arquivos com o caractere RLO são do site da Agência de Promoção de Tecnologia da Informação, no Japão .

Alguém pode recomendar outras boas soluções para impedir que arquivos com o caractere RLO em seus nomes sejam gravados ou lidos no computador, ou uma maneira de alertar o usuário se um arquivo com o caractere RLO for detectado?

Meu sistema operacional é o Windows 7, mas procurarei soluções para Windows XP, Vista e 7, ou uma solução que funcione para todos esses sistemas operacionais, para ajudar as pessoas a usá-los também.

galacticninja
fonte
11
Muito boa pergunta! Eu gostaria de saber isto também. Seu link parece não funcionar.
Cerberus
@ Cerberus Acabei de descobrir que o link não funciona. Espero que esteja temporariamente fora do ar. Atualizarei a resposta se encontrar um espelho.
galacticninja
@ Cerberus Obrigado. Eu adicionei o link do espelho à pergunta.
galacticninja
4
They adviced to use the Local Security Policy settings manager to block files with the RLO character in its name from being run.Você pode nos dizer por que isso não é uma solução?
Tamara Wijsman

Respostas:

3

Você pode usar Tudo em combinação com a AutoHotkey para criar um alerta sempre que um caractere de controle de texto bidirecional fizer parte de um nome de arquivo.

O Script

AlertText = A bidirectional text control character was detected in a filename.
AlertText = %AlertText%`n`nClick OK to re-hide the window.

SetTitleMatchMode RegEx
DetectHiddenWindows, On
EnvGet, ProgramFiles32, ProgramFiles

Start:
Run, %ProgramFiles32%\Everything\Everything.exe
WinWaitActive, Everything, , 5
if Errorlevel
    Goto Start
WinGet, Id, ID, A
StatusBarWait, objects, , 1, ahk_id %Id%
StatusBarGetText, Status, 1, ahk_id %Id%
Backup := ClipboardAll
Transform, Clipboard, Unicode, ‎|â€|‪|‫|‬|‭|‮
Send, ^v
WinHide, ahk_id %Id%
Sleep, 100
Clipboard := Backup
Backup =
StatusBarWait, ^(?!^\Q%Status%\E$)
Loop
{
    StatusBarWait, [1-9], , 1, ahk_id %Id%
    IfWinNotExist, ahk_id %Id%
        Goto Start
    WinShow, ahk_id %Id%
    WinRestore, ahk_id %Id%
    MsgBox, %AlertText%
    WinHide, ahk_id %Id%
}

O que faz

O script inicia Tudo e procura por ‎|â€|‪|‫|‬|‭|‮(UTF8), ou seja, todos os sete caracteres de controle de texto bidirecional ( origem ), separados por |.

Em seguida, o script oculta a janela Tudo e monitora sua barra de status. Quando ele contém qualquer dígito diferente de 0, uma correspondência foi encontrada, a janela Tudo é exibida e a seguinte caixa de mensagem é exibida:

Um caractere de controle de texto bidirecional foi detectado em um nome de arquivo.

Clique em OK para ocultar novamente a janela.

O script também relança Tudo, caso seja fechado.

Como usar

  1. Baixe , instale e inicie o Everything.

  2. Pressione Ctrl+ Pe alterne para a guia Volumes .

    Para todos os volumes que devem ser verificados, ative as alterações do Monitor .

  3. Baixe e instale o AutoHotkey.

  4. Salve no script acima como find-bidirectional-text-control-characters.ahk.

  5. Clique duas vezes no script para iniciá-lo.

  6. Crie um atalho para o script na sua pasta Inicialização .

Dennis
fonte
2

A Agência de Promoção da Tecnologia da Informação, site do Japão ( link espelhado ), recomendou o uso do gerenciador de configurações da Diretiva de Segurança Local para impedir a execução de arquivos com o caractere RLO em seu nome.

(Não copio as instruções completas, pois não tenho certeza de qual é a licença de direitos autorais do site em seu conteúdo.)

galacticninja
fonte
0

Provavelmente existem outras maneiras, mas a maneira mais fácil - e ainda assim não trivial - é implementar um filtro de sistema de arquivos (ou mini-filtro de sistema de arquivos) que filtre essas solicitações. No caso de ler esse arquivo, você pode retornar STATUS_ACCESS_DENIEDe, ao escrever, não deve fazer nada, mas impedir que esses arquivos sejam criados (provavelmente também com o código de erro acima). Criação é outro tipo de solicitação.

Pode-se imaginar outros métodos para obter um resultado semelhante, como a conexão SSDT. Mas a única maneira confiável seria o acima.

Para fazer isso, você precisará que alguém escreva esse tipo de filtro para você (relativamente trivial para mini-filtros para um desenvolvedor de kernel) e depois assine-o para obtê-lo através da política de assinatura no modo kernel desde o Vista. Se você não quiser fazer o último, ainda poderá assinar o binário do driver e modificar suas opções de inicialização para permitir conteúdo assinado pelo teste - comprometendo a segurança do respectivo sistema.

À luz dessas informações, eu recomendo fortemente que você use a solução que galacticninja e Tom Wijsman apontaram.

0xC0000022L
fonte
2
Eu recomendo fortemente que você use a solução que Tom Wijsman apontou. ” Na verdade, essa foi uma solução que eu indiquei. Eu já configurei o Windows para fazer isso. Como o que eu respondeu a Tom Wijsman, eu estou procurando outras soluções que impeçam o personagem RLO de ser escrito e ler, ou uma solução que irá automaticamente notificar ou avisar o usuário se o personagem RLO é detectado. Receio não ter o conhecimento técnico para escrever o filtro que você descreveu.
Galacticninja #
@ galacticninja: Me desculpe, eu vou corrigir isso na minha resposta.
0xC0000022L