Во время криминалистического анализа системы Windows часто важно понять, когда и как был запущен конкретный процесс.
Чтобы идентифицировать это действие, мы можем извлечь из целевой системы набор артефактов, полезных для сбора доказательств выполнения программы.
UserAssist
В системе Windows все программы на основе графического интерфейса, запускаемые с рабочего стола, отслеживаются в следующем разделе реестра:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count
Записи содержат два подраздела GUID ( Выполнение исполняемого файла CEBFF5CD, Выполнение файла ярлыка F4E57C4B ): каждый подраздел поддерживает список системных объектов, таких как программы, ярлыки и апплеты панели управления, к которым обратился пользователь.
Значения реестра в этих подразделах зашифрованы с использованием алгоритма ROT-13, который в основном заменяет символ с позицией другого символа 13 от него в таблице ASCII.
Все значения имеют кодировку ROT-13, например:
.exe = .RKR
.lnk = .YAX
Background Activity Moderator (BAM)
BAM — это служба Windows, которая контролирует активность фоновых приложений.
Этот сервис появился в Windows 10 только после обновления Fall Creators — версия 1709
Он предоставляет полный путь к исполняемому файлу, который был запущен в системе, а также дату / время последнего выполнения и расположен в этом пути реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bam\State\UserSettings\{SID}
Ветки содержат список путей и исполняемых файлов, а значением каждого из них является время последнего выполнения в формате Filetime (64-битный метод с прямым порядком байтов) в UTC:
RecentApps
!Актуально до версии Windows 10 сборки 1803 (не включительно)
Выполнение программы, запущенной в системе Win10, отслеживается в ключе RecentApps:
HKCU\Software\Microsoft\Windows\CurrentVersion\Search\RecentApps
Каждый ключ GUID указывает на недавно запущенное приложение:
AppID = Имя приложения
LastAccessTime = Время последнего выполнения в UTC.
LaunchCount = Количество запусков
ShimCache
База данных совместимости приложений Windows используется для выявления возможных проблем совместимости приложений с исполняемыми файлами и отслеживает имя файла исполняемого файла, размер файла, время последнего изменения.
Записи о последних 1024 выполненных программ в ОС хранятся в параметре CacheMainSdb:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\AppCompatCache
Вы можете использовать этот ключ для идентификации систем, на которых было запущено определенное вредоносное ПО, с помощью специального инструмента, такого как ShimCacheParser.py , от Mandiant (https://github.com/mandiant/ShimCacheParser)
Заметки по параметру CacheMainSdb
- Для Windows 7/8/10 параметр содержит не более 1024 записей
- LastUpdateTime не существует в системах Win 7/ 8/10
Amcache
ProgramDataUpdater (задача, связанная со службой Application Experience) использует файл Amcache.hve для хранения данных о первом выполнении программы (даже портабельной со съемного носителя). Файл расположен:
c:\Windows\appcompat\Programs\Amcache.hve
Файл можно проанализировать с помощью плагина amcache для программы RegRipper (https://github.com/keydet89/RegRipper2.8)
Для получения дополнительной информации об Amcache и Shimcache в криминалистическом анализе, пожалуйста, обратитесь к этой статье: Amcache и Shimcache в криминалистическом анализе
Jump Lists (список прыжков)
Панель задач Windows 7-10 (список переходов) разработана для того, чтобы пользователи могли «переходить» или получать доступ к элементам, которые они часто или недавно использовали.
Данные находятся в папке:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
Каждая запись это уникальный файл с добавлением AppID соответствующего приложения.
Файлы списков переходов AutomaticDestinations представляют собой OLE Compound Files, содержащие несколько потоков, из которых:
- шестнадцатеричный номер, например, «1а»
- список
Каждый из шестнадцатеричных пронумерованных файлов содержит данные, аналогичные данным ярлыка Windows.
Данные могут быть извлечены и проанализированы с помощью синтаксического анализатора LNK, например lnk-parse (https://github.com/lcorbasson/lnk-parse).
Prefetch
Файлы предварительной загрузки Windows предназначены для ускорения процесса запуска приложения. Файлы Prefetch хранятся в папке
%windir%\Prefetch
и содержит имя исполняемого файла, список Unicode библиотек DLL, используемых этим исполняемым файлом, счетчик количества выполнений исполняемого файла и отметку времени, указывающую время последнего запуска программы.
В этой папке хранятся данные о последних 128 исполняемых файлах на Win7 и последних 1024 на Win8-10.
Файл предварительной выборки можно анализировать и анализировать с помощью таких инструментов, как PeCMD (https://github.com/EricZimmerman/PECmd).
https://www.andreafortuna.org/2018/05/23/forensic-artifacts-evidences-of-program-execution-on-windows-systems/
Во время проведения компьютерно-криминалистической экспертизы операционной системы Windows важно понять, когда и каким образом был запущен определенный процесс. Чтобы идентифицировать эту деятельность, мы можем извлечь из целевой системы набор артефактов, полезных для сбора доказательств выполнения определенной программы.
Мы уже рассказывали как узнать какие программы запускались на компьютере. В той статье мы касались истории запуска программ в реестре Windows, но акцент больше ставили на программах. В сегодняшней статье я расскажу про ветки и ключи реестра в которых сохраняется история запуска программ и процессов Windows.
UserAssist
Каждая запущенная GUI-программа Windows оставляет историю в ключе реестра:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count |
Этот ключ содержит два подраздела GUID (запуск исполняемого файла CEBFF5CD, запуск файла ярлыков F4E57C4B): каждый подраздел поддерживает список системных объектов, таких как программы, ярлыки и апплеты панели управления, к которым пользователь обратился.
Значения реестра в этих подразделах зашифрованы не лучшим образом. Используется шифрование ROT-13, которое заменяет один символ другим, расположенным в 13 позиции от него в таблице ASCII.
Все значения кодируются ROT-13:
- .exe = .RKR
- .lnk = .YAX
BAM
BAM — это служба Windows, которая контролирует активность фоновых приложений. Эта служба существует только в новых версиях в Windows 10 начиная с обновления Fall Creators 1709.
Служба сохраняет историю запуска исполняемых файлов. Среди которой: полный путь к исполняемому файлу, который был запущен в системе, дату (время последнего исполнения), и его расположение. История запуска исполняемых файлов находится здесь:
HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID} |
RecentApps
Запуск последних программ отслеживается и сохраняется в ключе RecentApps:
HKCU\Software\Microsoft\Windows\Current Version\Search\RecentApps |
Каждый ключ GUID — это запущенное ранее приложение.
- AppID — название запущенного приложения.
- LastAccessTime — время запуска в UTC.
- LaunchCount — количество запуска программы.
ShimCache
База данных совместимости приложений Windows используется операционной системой для определения возможных проблем совместимости приложений с исполняемыми файлами и отслеживает имя файла исполняемого файла, размер файла, время последнего изменения.
Последние 1024 программы, выполненные в операционной системе Windows, можно найти в этом ключе:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache |
Для более подробного анализа ShimCache вы можете использовать инструмент ShimCacheParser.py.
Примечание:
- В Windows 7/8/10 содержится не более 1024 записей
- LastUpdateTime не существует в системах Win7/8/10
Списки переходов
Панель задач Windows 7-10 (список переходов) спроектирована таким образом, чтобы пользователи могли быстро получить доступ к элементам, которые они часто или недавно использовали.
Данные, хранящиеся в папке:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations |
где каждый будет иметь уникальный файл, добавленный с AppID связанного приложения.
Файлы списков переходов AutomaticDestinations представляют собой OLE Compound Files, содержащие несколько потоков, из которых:
- Шестнадцатеричное число, например. «1a»
- DestList
Каждый из шестнадцатеричных нумерованных потоков содержит данные, аналогичные данным Windows Shortcut: данные могут быть извлечены и проанализированы с помощью анализатора LNK, например lnk-parse.
Prefetch
Файлы предварительной выборки Windows предназначены для ускорения процесса запуска приложения. Файлы Prefetch хранятся здесь»
и содержит имя исполняемого файла, список DLL Unicode, используемый этим исполняемым файлом, количество попыток выполнения исполняемого файла и временную метку, указывающую на последний запуск программы.
В этой папке хранится информация для последних 128 исполняемых файлов на Win7 и 1024 на Windows8 и Windows 10.
Файл предварительной выборки может анализироваться и анализироваться с использованием таких инструментов, как PeCMD
Еще по теме: Создание дампа памяти всех процессов Windows
Как удалить/просмотреть следы активности, запускаемых на компьютере программ
Немногие пользователя операционной системы Windows знают, что в реестре хранится зашифрованная информация о запускаемых приложениях, количестве запусков, точной дате и времени. Как удалить следы программ из реестра для обеспечения конфиденциальности? Как просмотреть записи при необходимости? Поможет простая бесплатная утилита.
UserAssistView — как пользоваться?
- Открываем встроенное средство Виндовс — regedit, нажав на клавиатуре сочетание Win + R , прописав в форме соответствующий запрос:
- Идем по пути:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
- Видим несколько классов (ClassID) с непонятными названиями и таким же содержанием. Именно здесь хранятся все записи о приложениях (файлах, ярлыках), открываемых конкретным пользователем ПК:
И что дальше? Без специального программного расшифровать ЭТО никак не получится. Да и зачем? — спросите Вы. Причины могут быть разными. Вот лишь некоторые из них:
- Очевидно, что такие данные отправляются в Microsoft для анализа. Может не стоит афишировать свою активность?;
- Во-вторых, подобные лазейки нередко используются злоумышленниками (хакерами), чтобы узнать больше о своих потенциальных жертвах;
- Если Вы работаете в офисе с жёсткими правилами, то лучше сделать так, чтобы начальство не узнало о запускаемых Вами программах «нерабочего характера»;
- Или же Вы сами являетесь руководителем и хотели бы осуществлять мониторинг, видеть — чем занимаются Ваши сотрудники.
Ну а теперь переходим от теории к практике!
- Скачать UserAssistView с официального сайта можно, нажав на кнопку ниже:
UserAssistView
- Загруженный архив распаковываем любым известным Вам способом. Внутри будет папка с файлами, которую реально записать на флешку и носить с собой, подключать к любому компьютеру;
- Запускаем программу и видим следующий интерфейс:
- Modified Time — отображается дата и время последнего запуска приложения;
- Count — общее количество раз;
- Item Name — название элемента. Оно может состоять из набора непонятных символов, но зачастую в конце строки указывается путь к файлу, ярлыку. К примеру, «Google Chrome.lnk» — это браузер Хром. Microsoft.Windows.Notepad — встроенный Блокнот.
Зажав Ctrl и кликая по пунктам, можно выбирать их в произвольном порядке. При использовании Shift — выделяются целые диапазоны. Затем щелкаем правой кнопкой и можем формировать отчет в формате HTML, удалять объекты, копировать в буфер обмена или сохранять в файл:
Доступен поиск, вызываемый комбинацией Ctrl + F . Это полезно, если необходимо отыскать следы определенного софта для просмотра и/или последующей очистки.
Хотя утилита на английском языке, но сложностей в использовании возникнуть не должно после нашей видео инструкции:
Уверены, что каждый найдет применение данному ПО — кто-то для контроля активности, другие — для очистки истории открытия приложений. А что Вы думаете по этому поводу?
- Как добавить значок «Компьютер» на рабочий стол Виндовс 10
- Что за папка SoftwareDistribution и можно ли её удалить?
- Как отключить рекомендуемые приложения Windows 10
- Как разделить диск C на два диска на Windows 10
Вам помогло? Поделитесь с друзьями — помогите и нам!
My team runs a performance lab where we run continuous integration tests of our software on Windows 10. We noticed that explorer.exe
occasionally starts to use a full core’s worth of CPU for long periods of time. By using Process Monitor, I found that explorer.exe
was frequently accessing a specific registry key: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}
.
This registry key apparently helps UserAssist maintain «a list of applications, files, links, and other objects that have been accessed» (source).
When I open the UserAssist\CEBFF5CD-...
key in regedit and click on the «Count» subfield, regedit freezes.
When I delete the entire UserAssist\CEBFF5CD-...
key, I immediately see explorer.exe
‘s CPU usage drop from a full core to <1%.
I want to disable UserAssist to prevent it from interfering with performance tests, but am having trouble doing so. So far I’ve tried:
- This website’s suggestion of creating a
UserAssist\Settings
key with a DWORD value namedNoLog
under it with value1
, then restartingexplorer.exe
. - This website’s suggestion to disable both «Privacy» options when under the start menu settings. (I had to alter these instructions slightly for Windows 10.) I also restarted
explorer.exe
after this.
I continued to see accesses to this registry key and high CPU use of explorer.exe
after each of these attempted fixes.
How can I disable UserAssist on Windows 10 to stop UserAssist from affecting my performance tests?
The UserAssist utility displays a table of programs executed on a Windows machine, complete with running count and last execution date and time.
Windows Explorer maintains this information in the UserAssist registry entries. My program allows you to display and manipulate these entries.
I posted my program (source code and binaries) here. Download the ZIP file, you’ll have to extract UserAssist\UserAssist\bin\Release\UserAssist.exe to get my program. There is no setup, it’s just one executable. You’ll need the .NET Framework 2.0 runtime to run my program (download it only if you have a problem running my program, if you have an up-to-date version of Windows XP, the .NET 2.0 Framework will already be installed).
I also maintain a Windows Live CD plugin for my UserAssist utility.
Program features and operation is described in the About box:
The program UserAssist displays a list of the programs run by a user on Windows. Windows Explorer displays frequently used programs on the left side of the standard XP Start menu. The data about frequently used programs is kept in the registry under this key: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssist This program decrypts and displays the data found in the registry under the UserAssist key. When started, the program retrieves the data for the current user and displays it. The display is not refreshed automatically when Windows Explorer updates the registry entries. To refresh the display, execute the 'Load from local registry' command. Columns in the listview: Key: this value is {5E6AB780-7743-11CF-A12B-00AA004AE837} or {75048700-EF1F-11D0-9888-006097DEACF9} those are the keys found under the UserAssist key, and are included in the list view to distinguish the entries. Index: a running counter, indicating the sequence of values in the registry At first, the entries are listed in the sequence they appear in the registry. You can sort columns by clicking on the header. To revert to the original sequence, sort the column Index and then the column Key Name: The name of the value registry entry. This references the program that was run. This key is ROT13 encrypted, the displayed name is decrypted. There is a registry setting to prevent encryption of the log, but this program does not support this setting. Unknown: a 4 byte integer, meaning unknown. It appears to be present only for session entries (UEME_CTLSESSION). Session: This is the ID of the session (a 4 byte integer). Counter: This is the number of times the program was ran (a 4 byte integer). Last: This is the last time the program was ran (a 8 byte datetime). The value is displayed with the timezone of the machine running this UserAssist tool. Watch out for time zone differences when importing a REG file from a system with different regional settings. Last UTC: This is the last time the program was ran (a 8 byte datetime) in UTC. Commands: 'Load from local registry' Displays the data for the current user. 'Load from REG file' Loads a REG file and imports the UserAssist key. This command doesn't check the full path of the UserAssist key, thus allowing the analysis of NTUSER.DAT hives loaded and exported with another path. Use this command if you cannot run the program on the machine you want to analyze. Loading the data from a REG file disables editing commands. 'Load from DAT file' Loads a registry hive file (a DAT file like NTUSER.DAT) and imports the UserAssist key. The DAT file is temporarily loaded in the registry under the USERSLoadedHive key. Be sure to have the local admin rights to access the file and load it. Use this command if you cannot run the program on the machine you want to analyze. Loading the data from a DAT file disables editing commands. 'Highlight' Allows you to type in a search string (a regular expression is accepted), each entry matching this string will be highlighted in red. The highlighting stays active during reloads. Type an empty string to disable the highlighting. 'Save' This saves the data as a CSV file or a HTML file (choose file type).
'Clear All' This deletes the {5E6AB780-7743-11CF-A12B-00AA004AE837} and {75048700-EF1F-11D0-9888-006097DEACF9} keys. All data is lost, and no new data is recorded until Windows Explorer is restarted. This will impact the frequently run program list on your Start Menu, and maybe other things. I had no other side-effects on my test machines. This command is disabled when a REG file is loaded. 'Logging Disabled' Enabling the 'Logging Disabled' toggle allows you to permanently disable the logging of user activity in the UserAssist keys by creating a value HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssistSettingsNoLog equal to 1. Disabling the 'Logging Disabled' removes the NoLog value (apparently, setting it to 0 doesn't prevent logging). This setting is only effective after Windows Explorer is restarted. This command is disabled when a REG file is loaded. Right-clicking an entry will display a menu: 'Clear' will delete the selected entries. The index field of the remaining entries is not changed, they only change after reloading the registry. This command is disabled when a REG file is loaded.
'Explain' will analyse the contents of the name field and try to explain its meaning (based on empirical data).
This program has been tested on Windows XP SP1, SP2, Windows 2003 and Windows Vista.
Microsoft doesn't publish official documentation for UserAssist data. I've found info on the WWW (google for UserAssist) and I discovered the meaning of the binary data through trial-end-error testing. In other words: use this program at your own risk. Ways to restart Windows Explorer: 1) Task Manager: kill the explorer.exe process and start a New Task explorer.exe 2) logoff / logon 3) reboot
Download:
UserAssist_V2_6_0.zip (https)
MD5: 04107FE15FC676B7A701760C9C6D2F81
SHA256: F6F73F4E00905A7727ED4136DE875DD1FBCF4B90FFEE4B93D4A46E58C0314D45