Классификация ярлыков Windows и виды их заражения

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,814
Реакции
6,593
Классификация ярлыков Windows и виды их заражения

Автор: Dragokas


В современном мире угроз для эффективного выявления следов вредоносного ПО консультант должен представлять себе, какими бывают способы заражения, связанные с эксплуатацией ярлыков Windows, а также разновидности самих ярлыков.

Часть 1. Файлы LNK.

Наиболее популярным в данное время форматом ярлыков является MS ShellLink (*.LNK). Злоумышленники используют их в таких целях:

1) Для распространения рекламного ПО (Adware):

1.1. Добавление аргумента
Сканируются все папки профилей пользователей на соответствие с распространенными именами браузеров, после чего добавляется дописка в виде рекламного сайта (часто с реферальной ссылкой), например:
Код:
["C:\Program Files\Internet Explorer\iexplore.exe"  =>> hxxp://virus.com]
где iexplore.exe – цель ярлыка, hxxp://virus.com – аргумент.

Во время запуска такого ярлыка стартует браузер Internet Explorer и открывается страница по адресу hxxp://virus.com.
Пример детектирования VirusTotal - Opera.lnk

1.2. Установка ярлыку атрибута «Только чтение»
Это делается с целью затруднить возможность пользователю вручную удалить из ярлыка дописку аргумента.

[article]
Для запутывания следов, ухода от распознавания инфицированных ярлыков антивирусными движками, используются приемы промежуточного запуска через скрипты, а также изменение хешей и обфускация самих скриптов, так например:
[/article]
1.3. Цель ярлыка заменяется на путь к батнику (.BAT или .CMD-файл).
В природе были замечены подмены только на .BAT.
Батник – это обычный текстовый файл, в котором последовательно выполняются указанные в нем программы или команды.
Вирусописатели подставляют в него путь к браузеру и аргумент, аналогично п. 1.1.

Пример ярлыка:
Код:
"Firеfох.lnk" -> ["C:\firefox.bat"] -> start "" /I /B /D"C:\PROGRA~2\MOZILL~1\" "C:\PROGRA~2\MOZILL~1\firefox.exe" "hxxp://virus.com/"¶(обфусцирован)

Пример детектирования VirusTotal - BrowserManager.bat

1.4. Запись командной строки прямо в аргументы ярлыка
Аналогично батникам, только содержимое батника находится целиком в аргументах ярлыка и запускается через интерпретатор cmd.exe

Пример:
Код:
"Firеfох.lnk" -> ["cmd.exe" =>> /cstart "" /I /B /D"C:\PROGRA~2\MOZILL~1\" "C:\PROGRA~2\MOZILL~1\firefox.exe" "hxxp://virus.com/"¶ ]

1.5. Замена цели на путь к файлу .URL
Подобно предыдущему пункту о батниках. Про URL-файлы мы поговорим позже.
Пример:
Код:
"Firеfох.lnk" -> ["firefox.url" ] -> hxxp://virus.com/

1.6. Маскировка.
// Вырезано. Авт. - информация доступна только для членов ассоциации VirusNet //

1.7. Установка атрибутов «Скрытый / системный»
Для чего это делается доподлинно неизвестно. Возможно, с целью обхода проактивной защиты, т.к. операция удаления/переименования файлов может считается подозрительной.

Оригинальные ярлыки браузеров скрываются. А на том же месте создаются похожие на них, но зараженные.

1.8. Подмена путей расположения иконки LNK.
Есть и такой неприятный момент: для части ярлыков (причем не только браузерных) путь иконок переназначается в другую папку, где заодно создаются копии легальных EXE-файлов браузеров.

Обнаружив подозрительную папку с недавней датой создания, консультант удаляет ее. В результате этого действия ярлыки становятся «белыми» (без иконки), на что иногда возникают жалобы у пользователей.

Программа «ClearLNK by Dragokas» способна распознавать некоторые видны подмен иконок и исправлять их на иконку по-умолчанию, о чем указывается в итоговом отчете.
Код:
_____________________________ Начало лога ______________________________
[ OK ] 1  "C:\Users\Alex\Desktop\Internet Explorer.lnk"  -> [ "C:\Program Files (x86)\Internet Explorer\iexplore.exe" ]  (иконка восстановлена)

_________________________ Расположение иконок ________________________
[ OK ] "C:\Users\Alex\Desktop\Internet Explorer.lnk"  ->   [ ".", index=1 ]  <-   "C:\Users\Alex\Desktop\[B]virIcon[/B]\iexplore.exe", index=0
где ".", index=1 – означает замену на иконку по-умолчанию (ту, что находится в цели (объекте) ярлыка).

1.9. Новые техники
Следует не забывать, что злоумышленники постоянно ищут возможности глубже спрятать следы присутствия Adware. Формат LNK дает им такой шанс. Вас не всегда смогут спасти заточенные под аналитика программы проверки. Например, существует такая секция LNK, когда http-адрес сразу указывается в объекте запуска. Из всех известных мне программ анализа только Universal Virus Sniffer от Дмитрия Кузнецова и FixerBro by glax24 умеют распознавать такой ярлык. Мы работаем над данной проблемой перед выпуском 2-го поколения Check Browsers' LNK by Dragokas & regist.


2) Запуск BITCOIN-майнеров:

Майнер криптовалюты – это программа, которая запускается на стороне пользователя и служит для создания (добычи) электронной валюты (биткоинов / лайткоинов и др. форков… ), используя мощность центрального процессора и/или видеокарты для математических рассчетов.

Данная сеть чрезвычайно анонимна, так как не использует привычную адресацию.
Рассчитываются специальные блоки данных для нахождения хешей. Блоки получают от других программ-клиентов (нечто похожее на P2P), но как правило, их раздают сервера (они называются – пулами, от слова «пул») (так, награда за мощности распределяется более равномерно между участниками и можно наглядно следить за статистикой он-лайн на сайте пула).

Все, что Вам нужно о них знать, это:
- запуск майнера сопровождается, обычно*, близкой к 100% нагрузке на центральный процессор или видеокарту.
* если только процесс не запущен в режиме пониженного приоритета.
- могут работать в фоновом (скрытом) режиме;
- чаще всего запускаются через ярлык или батник, так как требуют обязательной предварительной настройки с указанием адреса сервера (пула), например:

«K7x32_liteguardian.com.lnk» -> ["H:\_BitCoin\pools\liteguardian.com\start_K7x32.cmd"] -> start "" "%~dp0x64\cudaminer.exe" --no-autotune -d 0 -i 0 -l K7x32 -C 1 -m 1 -o stratum+tcp://eu-2.liteguardian.com:3333 -O Diskretor.1:x

Где eu-2.liteguardian.com – адрес пула для майнинга.

Часто новички оставляют в такой командной строке и пароль доступа к учетке. По вышеприведенному примеру:
1) Имя пользователя: Diskretor.1
2) Пароль: x

Существуют и так называемые BURST-майнеры, которые добывают валюту через мощностя жесткого диска (например, pocminer.exe). Иными словами – Вашему винчестеру осталось меньше жить :). Но таковые особого распространения не получили (для профита нужен минимум 1 ТБ свободного места).

Под заражением BITCOIN-майнером подразумевается его установка без ведома и разрешения владельца ПК.

В целом, на данный момент число такого вида заражений можно считать несущестенным. Тем не менее, в сети все еще гуляют исполняемые файлы (дропперы) этого вида угрозы.

Причиной понижения числа заражений можно считать существенное ухудшение эффективности добычи криптовалюты за счет одиночных компьютеров (особенность механизма распространения монет) в пользу так называемых ASIC-майнеров (специальных ПК).


3) Эксплойты 0-day.

Речь идет об уязвимости CVE-2010-2568, обнаруженной в ходе изучения червя Stuxnet.

При открытии в проводнике папки с ярлыком отрисовывается его иконка. Иконка ссылается на ресурс в библиотеке DLL, путь к которой указан злоумышленником. Загрузка ресурса приводит к запуску кода инициализации этой библиотеки, где и прописаны дальнейшие вредоносные действия.

Как говорится в исследовании, сделанном год назад, эта уязвимость все еще весьма актуальна и затрагивает большинство версий ОС.

Видеодемонстрация.

Результаты VirusTotal.

Между слов, исправление уязвимости появилось только спустя 5 лет – 10.03.2015. Собственно: страница с самим исправлением.


Часть 2. Файлы PIF.
Этот формат представляет из себя ярлыки для программ MS-DOS.

В отличие от LNK, они запускаются напрямую, а не через интерфейс IShellLink.
Это позволяет делать некоторые махинации с форматами.

Так, содержимое файла PIF может быть начинено форматом исполняемого файла PE EXE (.EXE) либо (.COM).
Встречалась также подмена на формат архива.

Это легко распознать, если открыть файл в HEX-редакторе и посмотреть на первые буквы.
  • PE EXE (.EXE) файл – сигнатура MZ (0x4D5A) (Mark Zbikowski).
  • .COM файл – сигнатура бывает разная (первые 2 байта – одно из чисел перечисления MachineTypes) или вообще любое другое (для 16-битных COM), кроме MZ и ZM.
  • ZIP-архив – сигнатура PK (0x504B)

Обратите внимание, что исполняемый файл в виде .PIF не всегда означает подмену во вредоносных целях. Так, например, защищают программы от файловых вирусов, а также для обхода политик блокировки запуска исполняемых файлов. Например, полиморфная версия AVZ или AutoLogger-а (в целях безопасности, приведены ссылки на обычные версии).

Поскольку, кол-во людей, которые до сих пор работают с программами MS-DOS, можно сосчитать по пальцам (+ они не запускаются на x64-битных ОС, не учитывая эмуляторов вроде DosBox), будьте уверены, что 80% файлов .PIF, которые Вы увидите в логах, не являются ярлыками.

Часть 3. Файлы URL, WEBSITE.
Оба варианта расширений имеют идентичную структуру формата UniformResourceLocator.
Минимальный пример содержимого:

Код:
[InternetShortcut]
URL=hxxp://www.mail.ru/

При запуске этих типов файлов, как правило, открывается браузер по-умолчанию со страницей, адрес которой указан в ярлыке.

Ассоциация задана в реестре.
Значения по-умолчанию:
Код:
HKEY_CLASSES_ROOT\InternetShortcut\shell\Open\Command
"C:\Windows\System32\rundll32.exe" "C:\Windows\System32\ieframe.dll",OpenURL %l

HKEY_CLASSES_ROOT\Microsoft.Website\Shell\Open\Command
"C:\Program Files\Internet Explorer\iexplore.exe" -w "%l" %*

Пример детектирования VirusTotal - Yandex.url

Часть 4. Файлы APPREF-MS (ClickOnce).

Наиболее загадочные и наименее документированные.
Часть информации можно подчерпнуть в статье от Remko Weijnen.

Ярлыки с расширением .appref-ms создаются для приложений ClickOnce и запускаются такой командой:
Код:
rundll32.exe dfshim.dll,ShOpenVerbShortcut %1|%2

После запуска такого ярлыка происходит подключение к серверу, на котором опубликовано это приложение.

SNAGHTML87937a.png
Идет попытка обновить/установить программу. Только после этого происходит запуск.

Определить, куда установлена программа не запуская ярлык, стандартными средствами невозможно, зато можно узнать адрес ресурса, открыв ярлык обычным блокнотом:
Код:
http://github-windows.s3.amazonaws.com/GitHub.application#GitHub.application, Culture=neutral, PublicKeyToken=8f45a2159c87c850, processorArchitecture=x86

В целом, все исполняемые файлы программ ClickOnce хранятся в папке:
(XP) %userprofile%\Local Settings\Apps
(Vista и выше) %LocalAppData%\Apps

Данные о заражениях: не было или неизвестно.
____________________________

Теперь, когда Вы вооружены знаниями о видах заражения ярлыков, логи для Вас окажутся более дружелюбными :)

Надеюсь, что этот материал окажется Вам полезным.
Спасибо за внимание.
 
Последнее редактирование модератором:
Стас, просто прекрасно, что ты собрал это все в одной теме!
Для чего это делается доподлинно неизвестно.
ИМХО, может все банально...рассчитано на юзеров далеких от этих понятий, что бы найти их не смогли.
 
Одна самареклама. ) если есть ярлык с http в объекте запуска скинь.
Например, существует такая секция LNK, когда http-адрес сразу указывается в объекте запуска. Из всех известных мне программ анализа только Universal Virus Sniffer от Дмитрия Кузнецова умеет распознавать такой ярлык.
FixerBro тоже умеет распознавать такой ярлык.
 
Одна самареклама. )
С чего взял? Статья писалась не ради рекламы, а чтобы поделится опытом.

FixerBro тоже умеет распознавать такой ярлык.
Такого же вида FTP-шные не умеет. Там иная структура. На счет HTTP спасибо за замечание. Поправил в статье.
 
) не видно этого знака, это знак улыбки.
Вот тема
Аналогично в статье идет реклама своей программы.

И про саморекламу была шутка, улыбнись и не принимай все близко к сердцу.
 
Последнее редактирование модератором:
А не, ну я вообще на самом деле так много над ней в последнее время работал, что было грех не пропиарить ))
 
Windows 10 для Metro-приложений использует принципиально иной механизм запуска программ через ярлыки - используя GUID-ы и DelegateExecute.

На практике это означает, что ново-выпущенный браузер от Майкрософт Project Spartan будет не так просто эксплуатировать с помощью ярлыков, просто добавив как раньше дописку в виде аргумента с рекламным сайтом.

Посмотрим на свойства ярлыка:

Spartan properties.jpg


По виду напоминает ярлыки, созданные Microsoft Installer-ом (Скайп, например, или Adobe Reader).
Только в поле объект у них было нередактируемое название продукта, и они страдали тем, что дописку все равно можно было создать программно.

Adobe Reader.png

Adobe Reader, созданный через MSI

Взглянем на структуру:

Spartan LNK struct.png


Никаких путей и флагов. Только GUID-ы, классы, путь к папке установки Spartan:
Код:
C:\Windows\SystemApps\Spartan_cw5n1h2txyewy
и Application's UserModel ID, о котором я уже писал ранее.

Но в чем проблема создать новый ярлык вида:
Код:
C:\Windows\SystemApps\Spartan_cw5n1h2txyewy\Spartan.exe http://site.ru
?

А дело в том, что, если Вы просто запустите файл Spartan.exe таким образом, то ничего не произойдет. Браузер не запустится вообще.
А значит защита работает :)
 
Последнее редактирование:
Да. Он самый. Просто в Win10 rtm escrow переименовали. Маркетинг.
Мой тест с системы Win 10 Technical preview.
 
Да не важно, он и без параметров не работает. А у тебя ? Только из панели и работает.
 
Последнее редактирование:
Phoenix, там сложный механизм создания процесса через несколько промежуточных с массовой сверкой различных идентификаторов.
Допишу заметку в раздел по реестру, выложу почищенный лог монитора, сможешь взглянуть сам.
 
Назад
Сверху Снизу