Несколько дней назад один из наших пользователей прислал образец (SHA1: fbe71968d4c5399c2906b56d9feadf19a35beb97, определяется как TrojanDropper:Win32/Vundo.L). Это троян для фишинга с сайтов vk.com и vkontakte.ru, запросы на которые перенаправляются на 92.38.209.252 необычным способом.
Обычный метод перенаправления трафика — добавить запись в файл hosts, который находится в папке %SystemRoot%\system32\drivers\etc. Однако, когда мы открываем этот файл на заражённом компьютере, то там нет никаких записей для vk.com и vkontakte.ru:
![](https://habrastorage.org/r/w780q1/storage1/dc5bb84a/5f55f5b8/c9be3ec4/9f426559.jpg)
Но если включить отображение скрытых файлов, то появляется ещё один файл hosts:
![](https://habrastorage.org/r/w780q1/storage1/8004eebb/56176db8/2cc08674/bfdba740.jpg)
Мы видим два файла с одинаковым названием в одной папке. Но ведь одна директория не может содержать двух файлов с одинаковым названием. Если скопировать имена файлов в Notepad, сохранить как текст Unicode и открыть в Hex-редакторе, то появится следующая картина (верхняя строчка для первого файла hosts, нижняя — для второго):
![](https://habrastorage.org/r/w780q1/storage1/c59198f2/fdc36165/ed18107a/f441ba44.jpg)
В Unicode (UTF-16) символ 0x006F выглядит так же, как 0x6F в ASCII, где тот соответствует букве «o». Но что такое 0x043E в Unicode? Это можно посмотреть в таблице Unicode, вот её фрагмент.
![](https://habrastorage.org/r/w780q1/storage1/f4259d9a/78814637/c2ec751e/7c599a71.jpg)
В таблице 0x043E соответствует кириллическому символу, который выглядит так же, как английское «o». То есть настоящим файлом hosts на самом деле является скрытый файл, именно он используется операционной системой. Если открыть этот файл, то сразу видно отличие от фальшивого, это две строчки внизу на несколько экранов от начала:
![](https://habrastorage.org/r/w780q1/storage1/c6b3abc2/d3c45019/e195d3cb/02f8fc50.jpg)
Загадка разгадана.
Это уже не первый раз, когда мы обнаружили использование хакерами кодировки Unicode для вредоносных целей. В августе 2010 года один китайский хакер продемонстрировал приём, как использовать управляющие символы Unicode, чтобы убедить пользователей в безопасности файла. С помощью управляющего символа 0x202E (RLO) можно изменить порядок символов при отображении названия файла в Windows Explorer.
Например, вот потенциально опасный файл picgpj.exe
![](https://habrastorage.org/r/w780q1/storage1/a426aa8e/834054c9/025b8097/1980c679.jpg)
Если перед частью названия «gpj.exe» вставить управляющий символ, то порядок символов меняется и имя файла отображается в Проводнике уже иначе:
![](https://habrastorage.org/r/w780q1/storage1/554a1e6e/6412f039/9d71ef6f/e5ddd45c.jpg)
Хакеры обычно используют картинку в качестве иконки для этого файла. Неосторожный пользователь может принять её за фотографию и открыть двойным щелчком, тем самым запуская программу. Очевидно, этот приём бесполезен для программ с поддержкой Юникода, но пользователи не всегда сами могут распознать опасность.
Можно ли верить своим глазам? Получается, что не всегда.
Обычный метод перенаправления трафика — добавить запись в файл hosts, который находится в папке %SystemRoot%\system32\drivers\etc. Однако, когда мы открываем этот файл на заражённом компьютере, то там нет никаких записей для vk.com и vkontakte.ru:
![](https://habrastorage.org/storage1/dc5bb84a/5f55f5b8/c9be3ec4/9f426559.jpg)
Но если включить отображение скрытых файлов, то появляется ещё один файл hosts:
![](https://habrastorage.org/storage1/8004eebb/56176db8/2cc08674/bfdba740.jpg)
Мы видим два файла с одинаковым названием в одной папке. Но ведь одна директория не может содержать двух файлов с одинаковым названием. Если скопировать имена файлов в Notepad, сохранить как текст Unicode и открыть в Hex-редакторе, то появится следующая картина (верхняя строчка для первого файла hosts, нижняя — для второго):
![](https://habrastorage.org/storage1/c59198f2/fdc36165/ed18107a/f441ba44.jpg)
В Unicode (UTF-16) символ 0x006F выглядит так же, как 0x6F в ASCII, где тот соответствует букве «o». Но что такое 0x043E в Unicode? Это можно посмотреть в таблице Unicode, вот её фрагмент.
![](https://habrastorage.org/storage1/f4259d9a/78814637/c2ec751e/7c599a71.jpg)
В таблице 0x043E соответствует кириллическому символу, который выглядит так же, как английское «o». То есть настоящим файлом hosts на самом деле является скрытый файл, именно он используется операционной системой. Если открыть этот файл, то сразу видно отличие от фальшивого, это две строчки внизу на несколько экранов от начала:
![](https://habrastorage.org/storage1/c6b3abc2/d3c45019/e195d3cb/02f8fc50.jpg)
Загадка разгадана.
Это уже не первый раз, когда мы обнаружили использование хакерами кодировки Unicode для вредоносных целей. В августе 2010 года один китайский хакер продемонстрировал приём, как использовать управляющие символы Unicode, чтобы убедить пользователей в безопасности файла. С помощью управляющего символа 0x202E (RLO) можно изменить порядок символов при отображении названия файла в Windows Explorer.
Например, вот потенциально опасный файл picgpj.exe
![](https://habrastorage.org/storage1/a426aa8e/834054c9/025b8097/1980c679.jpg)
Если перед частью названия «gpj.exe» вставить управляющий символ, то порядок символов меняется и имя файла отображается в Проводнике уже иначе:
![](https://habrastorage.org/storage1/554a1e6e/6412f039/9d71ef6f/e5ddd45c.jpg)
Хакеры обычно используют картинку в качестве иконки для этого файла. Неосторожный пользователь может принять её за фотографию и открыть двойным щелчком, тем самым запуская программу. Очевидно, этот приём бесполезен для программ с поддержкой Юникода, но пользователи не всегда сами могут распознать опасность.
Можно ли верить своим глазам? Получается, что не всегда.