Запрос NTFS “выборочных” точек переанализа

Вопрос или проблема

Я изучал хост Windows Server 2012 R2, который был скомпрометирован вредоносным ПО IIS SEO Campaign.

Используя Process Monitor, я заметил, что оно внедряет вредоносный DLL, когда загружает легитимный. Все DLL вплоть до этого, включая его, имеют совпадающие md5-хеши с другим Windows Server 2012 R2, который не заражен этим вирусом.

Особенность в том, что легитимный DLL отвечает на операцию CreateFile с REPARSE.

Это предполагает, что установлен точка повторного анализа для DLL жертвы, которая затем ведет к загрузке вредоносного файла.

Проблема в том, что я могу запросить файл через диалог свойств Windows, чтобы увидеть, что он подлинный и подписанный, использовать инструменты, такие как md5sum, чтобы получить некоторую контрольную сумму для сравнения в другом месте, и даже скопировать файл, скажем, в file2.dll, чтобы получить легитимный дескриптор файла и содержимое.

Единственный раз, когда, похоже, я заставляю его перенаправить на вредоносный файл – это когда программа пытается его загрузить.

Вот вывод, который я получаю от ProcMon, когда загружаю зараженный файл:

2:53:54.2321174 PM  w3wp.exe    4876    CreateFile  C:\Windows\System32\inetsrv\custerr.dll REPARSE Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Superseded
2:53:54.2344554 PM  w3wp.exe    4876    CreateFile  C:\Windows\Vss\Logs\WsmRes64.dll    SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
2:53:54.2353130 PM  w3wp.exe    4876    CreateFile  C:\Windows\System32\inetsrv\custerr.dll REPARSE Desired Access: Read Data/List Directory, Execute/Traverse, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a, OpenResult: Superseded
2:53:54.2354092 PM  w3wp.exe    4876    CreateFile  C:\Windows\Vss\Logs\WsmRes64.dll    ACCESS DENIED   Desired Access: Read Data/List Directory, Execute/Traverse, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a

Обратите внимание, что последний записанный элемент имеет ACCESS DENIED, потому что в тот момент я уже повредил вредоносный DLL, пытаясь вывести его из директории теневого копирования. Прежде чем он стал недоступным, он, естественно, дошел до шага Load Image и продолжил свои, ну, действия.

Сравните с загрузкой, если я просто бесстыдно скопирую тот самый файл custerr.dll в custerr2.dll и укажу IIS использовать этот DLL:

12:51:54.2194050 PM w3wp.exe    6804    CreateFile  C:\Windows\System32\inetsrv\custerr2.dll    SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
12:51:54.2196814 PM w3wp.exe    6804    CreateFile  C:\Windows\System32\inetsrv\custerr2.dll    SUCCESS Desired Access: Read Data/List Directory, Execute/Traverse, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a, OpenResult: Opened
12:51:54.2200149 PM w3wp.exe    6804    CreateFile  C:\Windows\System32\inetsrv\custerr2.dll    SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Write Through, Synchronous IO Non-Alert, Random Access, Attributes: SN, ShareMode: Read, AllocationSize: n/a, OpenResult: Opened
12:51:54.2202689 PM w3wp.exe    6804    CreateFile  C:\Windows\System32\inetsrv\custerr2.dll    SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Write Through, Synchronous IO Non-Alert, Random Access, Attributes: SN, ShareMode: Read, AllocationSize: n/a, OpenResult: Opened
12:51:54.2205066 PM w3wp.exe    6804    Load Image  C:\Windows\System32\inetsrv\custerr2.dll    SUCCESS Image Base: 0x7fff248a0000, Image Size: 0x10000

Нет ответа на повторный анализ и никакой замены вообще не происходит.

Значит ли это, что IIS использует только createFile, чтобы загружать модули, или есть способы построить правила повторного анализа, которые активируются только при открытии файла, скажем, определенным исполняемым файлом? В конечном итоге, как я могу запросить эти правила (и, возможно, удалить их)? Где бы я ни видел информацию о правилах повторного анализа или инструменте junction, всё касается символических ссылок, и это выглядит немного сложнее, чем просто ссылка.

Ответ или решение

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

Что такое репарационные точки NTFS?

Репарационные точки NTFS (Reparse Points) — это мощный механизм, позволяющий пользователям и программному обеспечению использовать данные, хранящиеся в файловой системе, в различных формах. Их основная функция — это переадресация файловых операций к заранее определённым целям. Они могут исполняться в виде символических ссылок, жестких ссылок или даже в виде специального функционала для программ, требующих динамической маршрутизации данных.

Как работают репарационные точки в Windows?

Когда приложение пытается открыть файл, операционная система выполняет запрос CreateFile, который может сигнализировать о наличии репарационной точки. Если файл является репарационной точкой, система обращается к записанным в ней данным и перенаправляет операцию к целевому объекту. Это может быть код, который в свою очередь загрузит другой файл или выполнит другую операцию. В вашем случае, когда IIS инициирует операцию открытия файла, ведется обращение к репарационной точке, результатом чего становится загрузка вредоносного кода.

Запрос репарационных точек

Для изучения настроенных репарационных точек используйте утилиту fsutil. Зная путь к файлу, который вызывает подозрения, выполните следующую команду:

fsutil reparsepoint query C:\Windows\System32\inetsrv\custerr.dll

Эта команда предоставит информацию о типе репарационной точки и целевом объекте, на который она ссылается. Если вам потребуется удалить репарационную точку, вы также можете сделать это с помощью fsutil командой:

fsutil reparsepoint delete C:\Windows\System32\inetsrv\custerr.dll

Разработка правил репарации

По вашему вопросу о возможности создания правил репарации, которые срабатывают только при обращении конкретного исполняемого файла, стоит отметить, что такой функционал не предусмотрен в стандартной реализации NTFS. Репарационные точки работают на уровне системного вызова, и их триггер не зависит от конкретного процесса, осуществляющего вызов.

Тем не менее, в некоторых случаях атрибуты и права доступа к файлу могут быть настроены таким образом, чтобы ограничить или изменить поведение при обращении к репарационным точкам. Это может быть достигнуто путем настройки разрешений на уровне файловой системы, что требует более глубоких знаний о том, как работает ACL (Access Control List) в Windows.

Устранение вредоносного кода

Если файл custerr.dll с установленной репарационной точкой вызывает подозрения, необходимо провести следующие шаги:

  1. Проверить файл на наличие репарационной точки.
  2. Если она существует, удалить репарационную точку и провести анализ целичности файла, включая сверку с известной безопасной версией.
  3. Если файл испорчен или отсутствует, замените его на чистую версию.
  4. Провести полное сканирование системы на вредоносный код с использованием современных антивирусных решений.
  5. Убедитесь, что все программное обеспечение и операционная система обновлены до последних версий.

Заключение

Работая с репарационными точками в Windows, важно понимать, что они представляют собой мощный инструмент, который может быть использован как для законных целей, так и злоумышленниками. Умелое управление этими функциями поможет сохранить безопасность системы и предотвратить потенциальные угрозы.

Оцените материал
Добавить комментарий

Капча загружается...