Comment empêcher l'écriture ou la lecture de fichiers contenant le caractère Unicode de remplacement de droite à gauche (une méthode d'usurpation de malware)?

20

Comment éviter ou empêcher que des fichiers contenant le caractère Unicode RLO (remplacement de droite à gauche) de leur nom (une méthode malveillante pour usurper des noms de fichiers) soient écrits ou lus sur un PC Windows?

Plus d'informations sur le caractère unicode RLO ici:

Informations sur le caractère unicode RLO, tel qu'il est utilisé par les logiciels malveillants:

Résumé du rapport sur les virus informatiques et les incidents d'accès non autorisé à un ordinateur pour octobre 2011, compilé par l'Agence de promotion des technologies de l'information, Japon (IPA) [ Mirror (Google Cache) ]

Vous pouvez essayer cette page Web de test de caractère RLO pour voir comment fonctionne le caractère RLO.

Le caractère RLO est également déjà collé dans le champ «Test d'entrée» de cette page Web. Essayez de taper ici et notez que les caractères que vous tapez sortent dans leur ordre inverse (de droite à gauche, au lieu de gauche à droite).

Dans les noms de fichiers, le caractère RLO peut être spécifiquement positionné dans le nom de fichier pour usurper ou masquer comme ayant un nom de fichier ou une extension de fichier différent de ce qu'il a réellement. (Sera toujours masqué même si " Masquer les extensions pour les types de fichiers connus " n'est pas coché.)

Les seules informations que je peux trouver qui contiennent des informations sur la façon d'empêcher l'exécution de fichiers avec le caractère RLO proviennent du site Web de l'Agence japonaise de promotion des technologies de l' information .

Quelqu'un peut-il recommander d'autres bonnes solutions pour empêcher l' écriture ou la lecture de fichiers avec le caractère RLO dans leur nom , ou un moyen d'alerter l'utilisateur si un fichier avec le caractère RLO est détecté?

Mon système d'exploitation est Windows 7, mais je chercherai des solutions pour Windows XP, Vista et 7, ou une solution qui fonctionnera pour tous ces systèmes d'exploitation, pour aider les gens à utiliser ces systèmes d'exploitation également.

galacticninja
la source
1
Très bonne question! J'aimerai le savoir aussi. Votre lien ne semble pas fonctionner.
Cerberus
@Cerberus Je viens de découvrir que le lien ne fonctionne pas. J'espère que c'est juste temporairement en panne. Je mettrai à jour la réponse si je trouve un miroir.
galacticninja
@Cerberus Merci. J'ai ajouté le lien miroir à la question.
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.Pouvez-vous nous dire pourquoi ce n'est pas une solution?
Tamara Wijsman

Réponses:

3

Vous pouvez utiliser Tout en combinaison avec AutoHotkey pour créer une alerte chaque fois qu'un caractère de contrôle de texte bidirectionnel fait partie d'un nom de fichier.

Le 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%
}

Ce qu'il fait

Le script lance Tout et recherche ‎|â€|‪|‫|‬|‭|‮(UTF8), c'est-à-dire les sept caractères de contrôle de texte bidirectionnels ( source ), séparés par |.

Ensuite, le script masque la fenêtre Tout et surveille sa barre d'état. Lorsqu'il contient un chiffre différent de 0, une correspondance a été trouvée, la fenêtre Tout s'affiche et la boîte de message suivante apparaît:

Un caractère de contrôle de texte bidirectionnel a été détecté dans un nom de fichier.

Cliquez sur OK pour masquer à nouveau la fenêtre.

Le script relance également tout en cas de fermeture.

Comment utiliser

  1. Téléchargez , installez et lancez Everything.

  2. Appuyez sur Ctrl+ Pet passez à l' onglet Volumes .

    Pour tous les volumes à vérifier, activez Surveiller les modifications .

  3. Téléchargez et installez AutoHotkey.

  4. Enregistrer dans le script ci-dessus sous find-bidirectional-text-control-characters.ahk.

  5. Double-cliquez sur le script pour le lancer.

  6. Créez un raccourci vers le script dans votre dossier de démarrage .

Dennis
la source
2

L' Agence de promotion des technologies de l'information, site Web japonais ( lien miroir ), a conseillé d'utiliser le gestionnaire de paramètres de la politique de sécurité locale pour bloquer l'exécution des fichiers avec le caractère RLO dans son nom.

(Je ne copypaste pas les instructions complètes car je ne suis pas sûr de ce qu'est la licence de copyright de ce site Web sur leur contenu.)

galacticninja
la source
0

Il existe probablement d'autres moyens, mais le moyen le plus simple - et pourtant non trivial - est d'implémenter un filtre de système de fichiers (ou un mini-filtre de système de fichiers) qui filtre ces demandes. En cas de lecture à partir d'un tel fichier, vous pourriez revenir STATUS_ACCESS_DENIEDet lors de l'écriture, vous ne devriez rien faire mais empêcher la création de tels fichiers (probablement aussi avec le code d'erreur ci-dessus) en premier lieu. La création est un autre type de demande.

On peut imaginer d'autres méthodes pour obtenir un résultat similaire, comme le hook SSDT. Mais le seul moyen fiable serait ce qui précède.

Pour ce faire, vous devrez demander à quelqu'un d'écrire ce type de filtre pour vous (relativement trivial pour les mini-filtres pour un développeur de noyau), puis de le signer pour le faire passer par la politique de signature du mode noyau depuis Vista. Si vous ne voulez pas faire ce dernier, vous pouvez toujours tester le binaire du pilote et modifier vos options de démarrage pour autoriser le contenu signé par le test - compromettant ainsi la sécurité du système respectif.

À la lumière de ces informations, je vous conseille fortement d'utiliser la solution que galacticninja et Tom Wijsman ont indiquée.

0xC0000022L
la source
2
" Je vous conseille fortement d'utiliser la solution que Tom Wijsman a indiquée. " En fait, c'est une solution que j'ai indiquée. J'ai déjà configuré Windows pour cela. Comme ce que je répondu à Tom Wijsman, je suis à la recherche d' autres solutions qui empêcheront le caractère RLG d'être écrit et lu, ou une solution qui automatiquement avertir ou avertir l'utilisateur si le caractère RLG est détecté. Je crains de ne pas avoir le savoir-faire technique pour écrire le filtre que vous avez décrit.
galacticninja
@galacticninja: Je suis désolé, je vais corriger cela dans ma réponse.
0xC0000022L