Всем привет, Хабровчане!
Думаю ни у кого не возникает сомнений в важности грамотной работы специалистов ИБ и ИТ служб, учитывая события недавних дней с ТК СДЭК, а также другие крупные взломы/утечки, которых было немало за последние пару, тройку лет. Обеспечение грамотной работы включает в себя обычно комплекс мероприятий, да и в целом в работе служб ИБ есть множество направлений, где одним из интереснейших направлений, без которого, на мой взгляд, трудно обойтись, является компьютерная криминалистика (Forensic или форенсика).
Если говорить простым языком, то форенсика позволяет понять кто/что делал/делало в определённое время в компьютерной системе, а её методы можно применять как на этапе расследования уже случившегося инцидента, так и для целей мониторинга, предотвращения будущих инцидентов. Внутри направление форенсики тоже делится на отдельные поднаправления в зависимости от того, что мы исследуем. Можно выделить форенсику настольных ОС, мобильных ОС, форенсику компьютерных сетей и форенсику умных устройств IOT.
Мой интерес и выбор когда-то пал на семейство настольных ОС Windows поскольку в корпоративных инфраструктурах эта система очень распространена. Поэтому в данной статье хочу поделиться некоторыми наработками, связанными с форенсикой реестра ОС Windows 8-11 и показать какие сведения из него полезны для ИБ служб при мониторинге или расследовании, а также где в нём их искать.
Прежде чем перейти к рассмотрению полезных сведений из реестра давайте чуть-чуть поговорим о том, что представляет из себя сам реестр непосредственно.
Структурно реестр Windows это иерархическая организация, в которой размещены для хранения параметры системы/программ/железа, но здесь также можно найти много интересного и для ИБшника. В этой иерархии можно выделить следующие части:
Разделы/они же Ветки реестра (Hives).
Ключи реестра (Keys).
Вложенные ключи реестра (Sub-Keys).
Параметры ключей и их значения (Values).
Кроме того Hives (ветки) реестра делятся на несколько групп и хранятся в виде файлов на системном диске (в основном в директории %systemdrive%\Windows\System32\config) вместе с ними находятся файлы транзакций .log (.log1, .log2 и т.д.) и файлы .sav для сохранения копий веток (здесь я просто упоминаю эти файлы, но на самом деле они достойны отдельной статьи и их разбора):
Ветка реестра |
Связанные файлы на диске |
HKEY_CLASSES_ROOT он же HKCR |
System, System.alt, System.log, System.sav |
HKEY_CURRENT_USER он же HKCU |
Ntuser.dat, Ntuser.dat.log (эти файлы лежат в папке пользователя), UsrClass.dat (находится в папке AppData\Local\Microsoft\Windows, которая внутри юзерской папки) |
HKEY_LOCAL_MACHINE он же HKLM |
Security, Security.log, Security.sav, Software, Software.log, Software.sav, System, System.alt, System.log, System.sav |
HKEY_USERS он же HKU |
Default, Default.log, Default.sav |
Для работы с реестром можно использовать стандартные средства самой системы. Это графическое приложение - %systemdrive%\Windows\regedit.exe или консольная утилита %systemdrive%\Windows\System32\reg.exe. Однако, это может быть не так уж удобно если требуется быстро интерпретировать данные, поэтому для более удобной работы могу порекомендовать использовать программу Eric’a Zimmerman’a - «Registry Explorer».
Теперь имея общие представления о реестре перейдём к рассмотрению артефактов, т.е. интересных нам данных, их полезных значений, а также «пути» до них в реестре, где их можно достать «руками». Дополнительно следует учитывать, что у каждого ключа реестра есть штамп времени, когда крайний раз был изменен один из его параметров. Сами параметры, к сожалению, штампов времени не имеют (если они сами напрямую не содержат их в качестве значения), однако значения времени модификации ключей уже позволяют хотя бы на уровне гипотезы сузить временной разброс, когда происходило то или иное с набором параметров ключа. Штамп времени для ключа можно получить, например, после его экспорта в текстовый файл средствами regedit или через PowerShell.
Артефакт Last Visited MRU представляет из себя параметры вложенного ключа HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU и LastVisitedPidlMRULegacy. Эти значения описывают приложения, которые использовали стандартный диалог Windows для открытия, либо сохранения файлов. Если нажать правой кнопкой мыши по файлу в проводнике и выбрать «Открыть с помощью…», то предположительно для этой опции создаётся параметр со значением "OpenWith.exe". Если в приложении сохранение файла осуществляется в обход стандартного диалога Windows, то параметр в ключе реестра создан не будет. Этот артефакт позволяет узнать следующее:
На хосте точно запускалась та или иная программа определённым пользователем.
С помощью программы, возможно, по сети могли получить и сохранить файл, если у программы есть подобный функционал.
По какому конкретно пути был открыт файл (возможно для модификации) или сохранён. Название файла, к сожалению, получить нельзя.
Артефакт User Assist располагается в параметрах вложенного ключа реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist. В нём нас будет интересовать ещё два вложенных ключа:
{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count
{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count
Они содержат информацию об открывавшихся пользователем программах и ярлыках. Параметры записаны с помощью сдвига ROT-13 (каждая буква алфавита сдвинута на 13 символов вправо от изначальной позиции в алфавите), которое не работает для кириллицы, она отображается как есть. Это позволяет узнать следующее:
Конкретный пользователь на хосте запускал ту или иную программу.
Путь до запускавшегося исполняемого файла, при чём часть этого пути может быть задана как GUID значение в фугируных скобках, это отображение «известных» директорий, список у Microsoft опубликован здесь.
В операционных системах Windows 10 (до версии 1803), есть аналогичный UserAssist ключ в реестре, показывающий, что пользователь открывал определённые программы. Этот ключ называется RecentApps, он расположен в: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search\RecentApps. Различие с UserAssist в большей полноте предоставляемых данных, для RecentApps кроме имени самого приложения ещё можно получить время, когда последний раз выполнялось это приложение в формате UTC, и количество запусков этого приложения (соответственно это будут значения параметров AppID, LastAccessTime, LaunchCount).
Артефакты использования офисного пакета MS Office могут быть полезны чтобы понять какие документы офиса мог открывать пользователь. Это пригодится например, если произошёл иницидент с заражением ВПО, т.к. документы могли содержать вредоносное активное содержимое, которое и могло выполниться при открытии. Сведения о последних открывавшихся документах можно получить из вложенного ключа реестра, который зависит от версии Office, ниже таблица для некоторых версий.
Версия офисного пакета |
Ключ реестра |
MS Office 2013 |
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\User MRU\<LiveId>\File MRU |
MS Office 2016 |
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\User MRU\\<LiveId>\File MRU |
MS Office 2010 |
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\User MRU\\<LiveId>\File MRU |
MS Office 2019 / Office 365 |
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\User MRU\\<LiveId>\File MRU |
Артефакты использования USB дают понять какое внешнее оборудование могло подключаться. Можно выяснить имя устройства в системе, серийный номер, vendor ID, для определения производителя устройства (есть бесплатные сервисы, например этот), время последнего и первого подключения.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB (любые устройства кроме принтеров и накопителей).
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBPRINT (подключавшиеся принтера).
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR (подключавшиеся накопители информации).
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices (любые устройства кроме принтеров и накопителей).
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices (подключавшиеся накопители информации).
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 (подключавшиеся накопители информации).
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\KnownDevices (относится к опции AutoPlay, которая задаёт действия по умолчанию при подключении USB устройства. Параметр ContainerID относится скорее всего к вот этому, а параметр Label обычно даёт понять модель или производителя устройства).
Артефакты реестра называемые ShellBag дают понять какие папки открывались пользователем наиболее часто. Это полезно для анализа поведения пользователей при их работе в системе. ShellBag лежат во вложенном ключе реестра: HKEY_CURRENT_USER\Software\Classes\LocalSettings\Software\Microsoft\Windows\Shell\BagMRU или HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Bags.
Информацию связанная с историей выполнявшихся команд Win+R (Run) в ключе: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU может пригодится, например, при анализе нарушений политики ИБ пользователями, хотя простым пользователям лучше бы вообще обладать минимально необходимыми привилегиями и не иметь возможности выполнять лишних команд.
Сведения об открывавшихся определённым пользователем файлах по их расширениям можно найти во вложенном ключе реестра: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
Полезными для анализа могут также быть следы, которая система сохраняет о взаимодействии пользователя с Проводником Windows. Можно узнать вводимые вручную пути и историю пользовательского поиска. За это отвечают следующие ключи:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery (история поисковых запросов Проводника).
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths (вводившиеся вручную пути).
Продолжение следует...
Комментарии (7)
m1kr1k
04.06.2024 14:03Штамп времени для ключа можно получить, например, после его экспорта в текстовый файл средствами regedit или через PowerShell.
Странно что не упомянут самый удобный вариант - плагины к FAR для работы с реестром всегда умели показывать время модификации ключей реестра, при этом доступна сортировка по времени, что в плане разбора инцидентов особенно ценно.
slavius
04.06.2024 14:03На NirSoft это собирали в exe
https://www.nirsoft.net/utils/recent_files_view.html
https://www.nirsoft.net/utils/computer_activity_view.html
https://www.nirsoft.net/utils/usb_devices_view.html
Ну и прочего. Но да, там просто работает, а тут понятно как, и как это очистить.
MiyuHogosha
04.06.2024 14:03Ну и у меня всегда подозрения к такой фривари - кода то не видно а оно лезет в самые интимные места
MiyuHogosha
04.06.2024 14:03Вроде были десятки книг по этому поводу... а тут - новость...
Кстати, любое существовавшее в системе устройство остается в реестре. И в регеедит лезть не надо - поставить переменную DEVMGR_SHOW_NONPRESENT_DEVICES в 1 и запустить менеджер устройств с включенным показом скрытых.
Тут можео увидеть и если флэшки подключались или модемы и виртуальные дрова , если вирус прикилывался таковыми.
jackcrane
настроить аудит процессов и отсылать на централизованный сервер логов уже не модно ?
e11ite
Ситуация:
Вы централизованно собираете логи. Глубина хранения - n месяцев.
Вы выявляете инцидент ИБ, в процессе расследования Вам потребовались логи с хоста Х за n+1 месяцев.
Ваши действия?
jackcrane
сколько ? срок давности по гражданским делам в РФ - 3 года.
сроки давности по средней уголовщине - от 5 лет, но надо уточнять у юристов.
прогресс в технологиях хранения - позволяет вообще не стирать логи,
если вовремя обновлять железо.
предлагаю вам исходить из этих предпосылок, а не из "n+1".
спасибо за внимание.