Применения средств исследования реестра windows для нахождения следов активности вредоносного по

Уровень сложностиСредний

Время на прочтение28 мин

Количество просмотров16K

Всем привет! Меня зовут Сергей Кислухин, я работаю аналитиком 3 линии SOC, и мне есть чем поделиться в области реагирования на компьютерные инциденты на хостах под управлением Windows.

Введение

В своей работе, работники ИБ, особенно те, кто связаны с реагированием на инциденты, форензикой или compromise assessment, обязательно сталкиваются с необходимостью копаться в операционной системе глубже и быстрее, чем это делают остальные. Так, при реагировании на аномальное событие (или его поиске), специалисты, в подавляющих случаях, смотрят только журналы событий систем (локально или же через SIEM). И, если информации оттуда оказывается недостаточно, то прибегают к особым мерам, вроде локальных анализа дампа ОЗУ и анализа Amcache, Prefetch, MFT, AppCompatCache, UserAssist и т.д. 

К анализу реестра же прибегают, либо для ручного просмотра какой-то уникальной информации о хосте, либо для поиска событий с помощью сторонних автоматизированных утилит (Sysinternals Autoruns, PersistenceSniper, RegRipper), которые смотрят на определенный набор мест, которыми может воспользоваться злоумышленник. Этот вариант анализа реестра, а также прочие методы, в которых требуется просматривать вручную каждую ветку, я считаю неэффективными, и далее в статье я поясню почему, и покажу пример, как я решил эту проблему. 

Оглавление

  • Краткая теория

  • Проблема

  • Предложенное решение

  • Демонстрация на примерах

  • Выводы

  • Ссылки на источники

Краткая теория

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

  • В оперативной памяти — куст HKEY_LOCAL_MACHINE\Hardware;

  • %SystemRoot%\System32\Config\* — основные ветки SYSTEM, SAM, SECURITY, SOFTWARE и DEFAULT куста HKEY_LOCAL_MACHINE;

  • C:\Users\%Username%\NTUSER.DAT — файлы кустов реестра пользователей HKEY_CURRENT_USER;

  • %AppData%\Local\Microsoft\Windows\UsrClass.dat — куст HKEY_CLASSES_ROOT (типы информации из подраздела HKEY_LOCAL_MACHINE\Software\Classes);

  • %SystemRoot%\AppCompat\Programs\Amcache.hve — файл ключа Amcache (содержит информацию о всех исполняемых файлах).

Значение ключа может иметь один из типов данных: 

  • Строка (REG_SZ) — Строки с буквенно-цифровыми символами;

  • Многострочное значение (REG_MULTI_SZ) — Список значений, а не однострочный текст;

  • Расширяемое строковое значение (REG_EXPAND_SZ) — Переменные, фактическое значение которых используется операционной системой во время выполнения или при необходимости;

  • Двоичные значения (REG_BINARY);

  • Шестнадцатеричные числа (DWORD и QWORD).

Так как реестр содержит информацию, связанную с конфигурацией системы, то злоумышленники активно этим пользуются, добавляя или изменяя ветки в своих целях, что бы при определенных действиях выполнялась их злонамеренная программа или предоставлялся несанкционированный доступ к системе. Наиболее популярные ветки реестра, используемые во вредоносных целях описаны распределенно в различных техниках тактики Закрепления в матрице MITRE (Persistence, Tactic TA0003 | MITRE ATT&CK). Так, самой распространенной тактикой считается добавление ссылки на исполняемый файл в ветку реестра автозапуска системы HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run, в результате чего, указанная программа будет выполнятся каждый раз при включении операционной системы.

Для анализа реестра существует несколько утилит и способов:

  • Стандартный, встроенный в систему, для работы с реестром хоста, наживую:

    • %SystemRoot%\regedit.exe — позволяет просматривать и изменять, а также импортировать и экспортировать ветки и ключи реестра;

  • Сторонние аналоги, для работы с выгруженными файлами реестра, других хостов:

    • Registry Explorer — с графическим интерфейсом;

    • RECmd — консольный вариант;

  • Анализатор выгруженных файлов или веток реестра, по сторонним алгоритмам:

    • RegRipper;

    • Sysinternals Autoruns (требуется дополнительно выгрузка некоторых библиотек для работы);

  • Анализаторы работающей системы, по сторонним алгоритмам:

    • Sysinternals Autoruns;

    • PersistenceSniper;

  • Анализ изменений, выполняемых процессами системы в событиях безопасности (требуется дополнительная предварительная настройка):

    • События Sysmon: 12 (Создание/удаление объекта реестра), 13 (Задание значения реестра), 14 (Переименование ключа и значения реестра);

    • События Security: 4657 (Значение реестра изменено);

  • Анализ реестра из дампа оперативной памяти:

    • Volatility.

Проблема

Потратив несколько вечеров на консолидацию всей информации из матрицы MITRE и дополнительный сбор, не описанных в ней методов автозапуска ПО, можно получить подобную картину по веткам реестра, которые могут использоваться для вредоносных целей (в скобках, при возможности, указано к какой технике MITRE ATT&CK относится данная ветка реестра):

Возможные места закрепления в реестре Windows

  • SOFTWARE\Classes\CLSID\* (# Event Triggered Execution: Component Object Model Hijacking T1546/015)

  • SOFTWARE\Classes\*\shell\*\command (# Event Triggered Execution: Change Default File Association T1546/001)

  • SOFTWARE\Microsoft\Active Setup\Installed Components\ (# Boot or Logon Autostart Execution: Active Setup T1547/014)

  • SOFTWARE\Microsoft\Active Setup\Installed Components\*\ShellComponent ()

  • SOFTWARE\Microsoft\Command Processor\AutoRun ()

  • SOFTWARE\Microsoft\Ctf\LangBarAddin\*\FilePath ()

  • SOFTWARE\Microsoft\Internet Explorer\Extensions\*\Exec ()

  • SOFTWARE\Microsoft\Internet Explorer\Extensions\*\Script ()

  • SOFTWARE\Microsoft\Netsh (# Event Triggered Execution: Netsh Helper DLL T1546/007)

  • SOFTWARE\Microsoft\Office\*\Word\Options\GlobalDotName (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Word\Security\Trusted Documents (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Word\Security\Trusted Locations\*\AllowSubFolders (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Word\Security\Trusted Locations\*\Path (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Word\Security\VBAWarning (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Common\General\SharedTemplates (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office\*\Common\General\UserTemplates (# Office Application Startup: Add-ins T1137/006)

  • SOFTWARE\Microsoft\Office test\Special\Perf (# Office Application Startup: Office Test T1137/002)

  • SOFTWARE\Microsoft\Windows CE Services\AutoStartOnConnect\MicrosoftActiveSync ()

  • SOFTWARE\Microsoft\Windows CE Services\AutoStartOnDisconnect\MicrosoftActiveSync ()

  • SOFTWARE\Microsoft\Windows nt\CurrentVersion\Appcompatflags\Custom (# Event Triggered Execution: Application Shimming T1546/011)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Appcompatflags\Installedsdb (# Event Triggered Execution: Application Shimming T1546/011)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options (# Event Triggered Execution: Accessibility Features T1546/008)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*\VerifierDlls ()

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot ()

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks (# Scheduled Task/Job: Scheduled Task T1053/005)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree (# Scheduled Task/Job: Scheduled Task T1053/005)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ (# Event Triggered Execution: Image File Execution Options Injection T1546/012)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\* ()

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001; # Event Triggered Execution: AppInit DLLs T1546/010)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\IconServiceLib ()

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Load (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Run (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AppSetup (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GpExtensions\*\DllName (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Taskman (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\VmApplet (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\SYSTEM\Shell (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Run (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\StartupApproved\Run (# RegRipper run.pl)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\StartupApproved\Run32 (# RegRipper run.pl)

  • Software\Microsoft\Windows\CurrentVersion\StartupApproved\StartupFolder (# RegRipper run.pl NTUSER)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Microsoft\Windows\Windows Error Reporting\Hangs\ReflectDebugger ()

  • SOFTWARE\Policies\Microsoft\Windows\Control Panel\Desktop\SCRNSAVE.EXE (# Event Triggered Execution: Screensaver T1546/002)

  • SOFTWARE\Policies\Microsoft\Windows\System\Scripts (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Logoff\Script ()

  • SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Logon\Script ()

  • SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Shutdown\Script ()

  • SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Startup\Script ()

  • SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run\ (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001)

  • SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run (# RegRipper run.pl)

  • SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ (# Event Triggered Execution: Image File Execution Options Injection T1546/012)

  • SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows (# Event Triggered Execution: AppInit DLLs T1546/010)

  • SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_Dlls ()

  • SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\ (# Boot or Logon Autostart Execution: Winlogon Helper DLL T1547/004)

  • SYSTEM\ControlSet001\Control\BootVerificationProgram\ImagePath ()

  • SYSTEM\ControlSet001\Control\Print\Environments\[Windows architecture]\Print Processors\*\Driver (# Boot or Logon Autostart Execution: Print Processors T1547/012)

  • SYSTEM\ControlSet001\Control\Lsa\Notification Packages (# Modify Authentication Process: Password Filter DLL T1556/002)

  • SYSTEM\ControlSet001\Control\Lsa\OSConfig\Security Packages (# Boot or Logon Autostart Execution: Authentication Package T1547/002; # Boot or Logon Autostart Execution: Security Support Provider T1547/005)

  • SYSTEM\ControlSet001\Control\Lsa\Security Packages (# Boot or Logon Autostart Execution: Authentication Package T1547/002; # Boot or Logon Autostart Execution: Security Support Provider T1547/005)

  • SYSTEM\ControlSet001\Control\NetworkProvider\Order (# Modify Authentication Process: Network Provider DLL T1556/008)

  • SYSTEM\ControlSet001\Control\Print\Environments\[Windows architecture]\Print Processors\[user defined]\Driver (# Boot or Logon Autostart Execution: Print Processors T1547/012)

  • SYSTEM\ControlSet001\Control\Print\Monitors (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001; # Boot or Logon Autostart Execution: Port Monitors T1547/010)

  • SYSTEM\ControlSet001\Control\SafeBoot\AlternateShell ()

  • SYSTEM\ControlSet001\Control\ServiceControlManagerExtension ()

  • SYSTEM\ControlSet001\Control\Session Manager (# Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder T1547/001; # Event Triggered Execution: AppCert DLLs T1546/009)

  • SYSTEM\ControlSet001\Control\Session Manager\AppCertDLLs\* (# Event Triggered Execution: AppCertDLLs T1546/009)

  • SYSTEM\ControlSet001\Control\Session Manager\Environment\Path (# Hijack Execution Flow: Path Interception by PATH Environment Variable T1574/007)

  • SYSTEM\ControlSet001\Control\Session Manager\BootExecute ()

  • SYSTEM\ControlSet001\Control\Session Manager\Execute ()

  • SYSTEM\ControlSet001\Control\Session Manager\S0InitialCommand ()

  • SYSTEM\ControlSet001\Control\Session Manager\SetupExecute ()

  • SYSTEM\ControlSet001\Services (# Hijack Execution Flow: Services Registry Permissions Weakness T1574/011; # Create or Modify SYSTEM Process: Windows Service T1543/003)

  • SYSTEM\ControlSet001\Services\*\NetworkProvider (# Modify Authentication Process: Network Provider DLL T1556/008)

  • SYSTEM\ControlSet001\Services\W32Time\TimeProviders\ (# Boot or Logon Autostart Execution: Time Providers T1547/003)

  • SYSTEM\ControlSet001\Services\servicename\Parameters\ServiceDll (# Hijack Execution Flow: Services Registry Permissions Weakness T1574/011)

  • SYSTEM\ControlSet001\services\TermService\Parameters\ (# Server SOFTWARE Component: Terminal Services DLL T1505/005)

  • SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\StartupPrograms ()

  • SYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp\InitialProgram ()

  • SYSTEM\Setup\CmdLine ()

  • NTUSER.DAT\Environment\UserInitMprLogonScript (# Boot or Logon Initialization Scripts: Logon Script` (Windows) T1037/001)

  • NTUSER.DAT\Control Panel\Desktop\scrnsave.exe (# Event Triggered Execution: Screensaver T1546/002)

  • NTUSER.DAT\Software\* (Все ключи выше, начинающиеся с SOFTWARE)

  • NTUSER.DAT\System\* (Все ключи выше, начинающиеся с SYSTEM)

  • COR_ENABLE_PROFILING, COR_PROFILER и COR_PROFILER_PATH (# Hijack Execution Flow: COR_PROFILER T1574/012)

Как видно мест много и есть множество способов залезть внутрь реестра для их анализа, но ни один из них (по крайне мере без дополнительных доработок) не является идеальным и универсальным, т.к.:

  • Использовать утилиты для ручного просмотра реестра — неразумно из-за больших времязатрат на анализ каждого ключа, особенно если нужно исследовать много хостов;

  • Используя анализаторы, которые автоматически парсят файлы реестра (RegRipper, Autoruns, PersistenceSniper), у Вас никогда не будет уверенности, что заложенные алгоритмы проверяют все известные Вам места закрепления, особенно учитывая частоту их обновлений (как разработчиком, так и Вами). Как пример, я добавил вручную EICAR тестовый вирус в контекстное меню изменения текстовых файлов и запустил AtomicTest для техники T1546.011, и ни один их этих приемов, Autoruns не показал:

Autoruns показывает не все

Autoruns показывает не все
  • Если полагаться на события безопасности с изменениями, то они могут либо вообще отсутствовать (например удалены злоумышленником), либо быть не настроены на определенные ветки.

Таким образом, идеальное и универсальное решение должно подчиняться следующим критериям:

  • Уметь работать с выгруженными файлами реестра (доступ к работающему хосту не всегда будет, а выгрузить файлы можно даже с выключенных систем, с помощью Live CD);

  • Автоматически парсить файлы реестра, в соответствии с легко добавляемыми правилами парсинга (на случай обнаружения новых мест закрепления, которые не были учтены в прошлой версии);

  • Уметь парсить много файлов реестра с разных хостов (как для compromise assessment, так и для массового компьютерного инцидента);

  • Иметь удобный человекочитаемый вид и не требовать много действий для обработки (чтобы не было больно работать).

Предложенное решение

В результате проб и ошибок был реализован следующий автоматизированный конвейер по обработке файлов реестра:

  1. С хоста(-ов) выгружаются файлы реестра (в моем случае с помощью KAPE, в каталог E:\temp\%имя_хоста%\);

Пример скрипта.bat, лежащего рядом с папкой с KAPE по получению реестра

set “dest_folder=E:\temp\%COMPUTERNAME%
md “%dest_folder%”
cd /d%~dp0 
KAPE\kape.exe ‑tsource C: ‑tdest%dest_folder% ‑target RegistryHivesOther,RegistryHivesSystem,RegistryHivesUser
  1. Скриптом на Python перемещаются файлы реестра в каталог: E:\temp\%имя_хоста%\Reg\, а файлы реестра NTUSER и UsrClass каждого пользователя, переименовываются на имя пользователя владельца и оказываются в каталоге: E:\temp\%имя_хоста%\NTUSER\ и E:\temp\%имя_хоста%\UsrClass\, соответственно (если хостов немного, то можно и вручную сделать).

    • В каталогах должны также лежать файлы %Реестр%.LOG1 и %Реестр%.LOG2, для корректного парсинга сырых данных.

Пример скрипта по перемещению файлов реестра

import os
import shutil
for host_dir in os.scandir(r'E:\temp'): # Обход всех папок хостов
    if host_dir.is_dir():
        # Перемещение Реестра
        src_path = host_dir.path + '\C\Windows\System32\config'
        dst_path = host_dir.path + '\Reg'
        if os.path.exists(src_path):
            os.makedirs(dst_path, exist_ok=True)
            for file in os.scandir(src_path):
                shutil.move(file.path, dst_path)
        # Перемещение NTUSER
        users_folder = host_dir.path + r'\C\Users'
        if os.path.exists(users_folder):
            for user_dir in os.scandir(users_folder):
                if user_dir.is_dir():
                    for file_name in ["NTUSER.DAT", "ntuser.dat.LOG1", "ntuser.dat.LOG2"]:
                        file_path = os.path.join(user_dir.path, file_name)
                        if os.path.exists(file_path):
                            # Перемещаем файл в \NTUSER\
                            dst_folder = host_dir.path + r'\NTUSER'
                            os.makedirs(dst_folder, exist_ok=True)
                            if file_name == "NTUSER.DAT":
                                dst_file = os.path.join(dst_folder, user_dir.name + '.' + file_name.split('.')[-1])
                            else:
                                dst_file = os.path.join(dst_folder, user_dir.name + '.' + file_name.split('.')[-2].upper() + '.' + file_name.split('.')[-1])
                            shutil.move(file_path, dst_file)
        # Перемещение UsrClass
        users_folder = host_dir.path + r'\C\Users'
        if os.path.exists(users_folder):
            for user_dir in os.scandir(users_folder):
                if user_dir.is_dir():                                   
                    for file_name in ["UsrClass.dat", "UsrClass.dat.LOG1", "UsrClass.dat.LOG2"]:
                        file_path = os.path.join(user_dir.path, 'AppData\\Local\\Microsoft\\Windows\\', file_name)
                        if os.path.exists(file_path):
                            # Перемещаем файл в \UsrClass\
                            dst_folder = host_dir.path + r'\UsrClass'
                            os.makedirs(dst_folder, exist_ok=True)
                            if file_name == "UsrClass.dat":
                                dst_file = os.path.join(dst_folder, user_dir.name + '.' + file_name.split('.')[-1])
                            else:
                                dst_file = os.path.join(dst_folder, user_dir.name + '.' + file_name.split('.')[-2].upper() + '.' + file_name.split('.')[-1])
                            shutil.move(file_path, dst_file)
  1. Далее запускается конвейер скриптов на Python:

    • Вместо сотни веток реестра, указанных выше в статье, выгружается всего несколько десятков, из-за того, что убраны многие ветки, у которых есть общая родительская. Выгружать около сотни веток оказалось довольно долгим занятием (на каждый компьютер тратилось по 20 минут), т.к. на каждую ветку приходится отдельный запуск утилиты и проверка наличия данной ветки в файле реестра.

    • В текущей реализации скриптов, на каждую систему тратится на обработку, в среднем, по 3 минуты.

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

1. Запуск RECmd для необходимых файлов реестра, который выгружает только необходимые ветки

import os
import subprocess
from pathlib import Path

# Список ключей реестра, которые нужно парсить
registry_keys_software = [
    "Classes",
    "Microsoft\\Active Setup\\Installed Components",
    "Microsoft\\Command Processor\\Autorun",
    "Microsoft\\Ctf\\LangBarAddin",
    "Microsoft\\Internet Explorer\\Extensions",
    "Microsoft\\Netsh",
    "Microsoft\\Office",
    "Microsoft\\Office test\\Special\\Perf",
    "Microsoft\\Windows CE Services\\AutoStartOnConnect\\MicrosoftActiveSync",
    "Microsoft\\Windows CE Services\\AutoStartOnDisconnect\\MicrosoftActiveSync",
    "Microsoft\\Windows NT\\CurrentVersion",
    "Microsoft\\Windows\\CurrentVersion",
    "Microsoft\\Windows\\Windows Error Reporting\\Hangs\\ReflectDebugger",
    "Policies\\Microsoft\\Windows\\Control Panel\\Desktop",
    "Policies\\Microsoft\\Windows\\System\\Scripts",
    "Wow6432Node\\Microsoft\\Windows\\CurrentVersion",
    "Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion"
]

registry_keys_system = [
    "ControlSet001\\Control\\BootVerificationProgram",
    "ControlSet001\\Control\\Lsa\\Notification Packages",
    "ControlSet001\\Control\\Lsa\\OSConfig\\Security Packages",
    "ControlSet001\\Control\\Lsa\\Security Packages",
    "ControlSet001\\Control\\NetworkProvider\\Order",
    "ControlSet001\\Control\\Print\\Environments",
    "ControlSet001\\Control\\Print\\Monitors",
    "ControlSet001\\Control\\SafeBoot\\AlternateShell",
    "ControlSet001\\Control\\ServiceControlManagerExtension",
    "ControlSet001\\Control\\Session Manager",
    "ControlSet001\\Control\\Terminal Server\\Wds\\rdpwd\\StartupPrograms",
    "ControlSet001\\Control\\Terminal Server\\WinStations\\RDP-Tcp\\InitialProgram",
    "ControlSet001\\Services",
    "Setup\\CmdLine"
]

registry_keys_ntuserdat = [
    "Software\\Microsoft",
    "Software\\Policies\\Microsoft\\Windows\\System\\Scripts",
    "Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion",
    "Software\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion",
    "System\\CurrentControlSet\\Control",
    "System\\CurrentControlSet\\Services",
    "System\\Setup\\CmdLine",
    "Environment",
    "Control Panel\\Desktop"
]

registry_keys_usrclassdat = [
    "ROOT"
]

base_dir = Path('E:/temp') # Базовая папка, где все лежит
reg_dir_name = 'Reg' # В какой папке искать кусты реестра хоста
ntuser_dir_name = 'NTUSER' # В какой папке искать кусты реестра пользователей
usrclass_dir_name = 'UsrClass'
special_regs = ['SOFTWARE', 'SYSTEM']  # Какие кусты реестра хоста парсить

# Обход поддиректорий базовой директории
for host_dir in base_dir.iterdir(): # подкаталог - имя хоста
    if host_dir.is_dir():
        host_name = host_dir.name
        reg_dir = host_dir / reg_dir_name # Поиск папки кустов реестра хоста
        ntuser_dir = host_dir / ntuser_dir_name # Поиск папки кустов реестра пользователя
        usrclass_dir = host_dir / usrclass_dir_name
        if reg_dir.exists():
            for reg_name in special_regs: # Обход software и system
                reg_file = reg_dir / reg_name 
                if reg_file.exists():
                    output_dir = base_dir / 'ToElastic' / host_name # Определение директории куда сливать результаты (закрепеление за именем хоста)
                    output_dir.mkdir(parents=True, exist_ok=True)
                    if reg_name == "SOFTWARE": # Парсинг Software
                       for key in registry_keys_software: # Только нужные ветки реестра
                            json_file_name = key.replace('\\', '%5C').replace(' ', '') # Замена плохих символов, мешающих работе

                            # Запуск команды RECmd.exe
                            cmd = (
                                f'E:/Scripts/2.Reg/RECmd.exe -f "{str(reg_file)}" --kn "{key}" --details --json "{output_dir}" --jsonf "Reg-Software%5C{str(json_file_name)}.json"'
                            )
                            with open(os.devnull, 'w') as FNULL:
                                subprocess.run(cmd, stderr=subprocess.STDOUT, stdout=FNULL)
                    if reg_name == "SYSTEM": # Аналогично Software
                        for key in registry_keys_system: # Только нужные ветки реестра
                            json_file_name = key.replace('\\', '%5C').replace(' ', '')
                            cmd = (
                                f'E:/Scripts/2.Reg/RECmd.exe -f "{str(reg_file)}" --kn "{key}" --details --json "{output_dir}" --jsonf "Reg-System%5C{str(json_file_name)}.json"'
                            )
                            with open(os.devnull, 'w') as FNULL:
                                subprocess.run(cmd, stderr=subprocess.STDOUT, stdout=FNULL)
        if ntuser_dir.exists(): # Обход кустов реестра пользователей
            for ntuser_file in ntuser_dir.iterdir():
                if ntuser_file.is_file() and not ntuser_file.name.endswith(("LOG1", "LOG2")): # Не обходить требующиеся для парсинга .dat.LOG
                    output_dir = base_dir / 'ToElastic' / host_name # Определение директории куда сливать результаты (закрепеление за именем хоста)
                    output_dir.mkdir(parents=True, exist_ok=True)
                    for key in registry_keys_ntuserdat: # Только нужные ветки реестра
                        json_file_name = f"Reg-Ntuser-{ntuser_file.stem}" # Определение имени нового файла, для сохранения имени пользователя
                        json_file_name = json_file_name.replace('.dat', '') + "%5C"
                        json_file_name += key.replace('\\', '%5C').replace(' ', '')

                        # Запуск команды RECmd.exe
                        cmd = (
                            f'E:/Scripts/2.Reg/RECmd.exe -f "{str(ntuser_file)}" --kn "{key}" --details --json "{output_dir}" --jsonf "{json_file_name}.json"'
                        )
                        with open(os.devnull, 'w') as FNULL:
                            subprocess.run(cmd, stderr=subprocess.STDOUT, stdout=FNULL)

        if usrclass_dir.exists(): # Обход кустов реестра пользователей
            for usrclass_file in usrclass_dir.iterdir():
                if usrclass_file.is_file() and not usrclass_file.name.endswith(("LOG1", "LOG2")): # Не обходить требующиеся для парсинга .dat.LOG
                    output_dir = base_dir / 'ToElastic' / host_name # Определение директории куда сливать результаты (закрепеление за именем хоста)
                    output_dir.mkdir(parents=True, exist_ok=True)
                    for key in registry_keys_usrclassdat: # Только нужные ветки реестра
                        json_file_name = f"Reg-UsrClass-{usrclass_file.stem}" # Определение имени нового файла, для сохранения имени пользователя
                        json_file_name = json_file_name.replace('.dat', '') + "%5C"
                        json_file_name += key.replace('\\', '%5C').replace(' ', '')

                        # Запуск команды RECmd.exe
                        cmd = (
                            f'E:/Scripts/2.Reg/RECmd.exe -f "{str(usrclass_file)}" --kn "{key}" --details --json "{output_dir}" --jsonf "{json_file_name}.json"'
                        )
                        with open(os.devnull, 'w') as FNULL:
                            subprocess.run(cmd, stderr=subprocess.STDOUT, stdout=FNULL)

2. Выгруженные ветки приводятся в адекватный вид (удаляются ненужные поля и значения, древовидная структура реестра приводится в ndjson вид, где на один ключ приходится одна строчка) и все файлы объединяются в один для каждого хоста

import json
import os

# Исключения по полям ValueName и ValueData, для удаления
with open("value_name_to_remove.txt", "r") as file:
    value_name_to_remove = [line.strip() for line in file.readlines()]

with open("value_data_to_remove.txt", "r") as file:
    value_data_to_remove = [line.strip() for line in file.readlines()]

def remove_fields(data): # Удаление ненужных полей "DataRaw" и "Slack", если они присутствуют
    if isinstance(data, dict):
        data.pop("DataRaw", None)
        data.pop("Slack", None)
        for key, value in data.items():
            data[key] = remove_fields(value)
    elif isinstance(data, list):
        data = [remove_fields(item) for item in data]
    return data

def remove_values(data):# Удаление ненужных значений и оставление нужных (в которых может быть путь/файл)
    value_types_to_keep = ["RegSz", "RegExpandSz", "RegMultiSz"]  # Указанные типы значения оставляем
    if "Values" in data:
        values = data["Values"]
        filtered_values = [value for value in values if ((value["ValueType"] in value_types_to_keep) and (not value["ValueName"] in value_name_to_remove) and (not value["ValueData"] in value_data_to_remove) and (not (value["ValueData"].isdigit() or not value["ValueData"]))) or value["ValueName"].endswith(".sdb")]
        data["Values"] = filtered_values
    return data

def is_empty(data):    # Удаление пустых значений "Values"
    return "Values" in data and not data["Values"]

def process_json(json_data): # Исправление многовложенности словаря
    json_data = remove_fields(json_data)
    json_data = remove_values(json_data)
    
    # Если есть SubKeys, обработаем их
    if 'SubKeys' in json_data:
        subkeys = json_data['SubKeys']
        del json_data['SubKeys']
        yield json_data

        for subkey in subkeys:
            yield from process_json(subkey)

def flatten_json(data): # Убирание словарей внутри ndjson
    if "Values" in data:
        values = data["Values"]
        if len(values) == 1:
            # Если только один набор значений в Values, вставляем его в родительский словарь
            value = values[0]
            data["ValueName"] = value["ValueName"]
            data["ValueType"] = value["ValueType"]
            data["ValueData"] = value["ValueData"]
            del data["Values"]
            yield data
        else:
            # Если несколько наборов значений в Values, дублируем родительский словарь для каждого набора
            for value in values:
                new_data = data.copy()
                new_data["ValueName"] = value["ValueName"]
                new_data["ValueType"] = value["ValueType"]
                new_data["ValueData"] = value["ValueData"]
                del new_data["Values"]
                yield new_data

def process_registry_file(input_file): # Основная функция открытия и обработки
    with open(input_file, 'r', encoding='utf-8') as file:
        data = json.load(file)

    filtered_data = [entry for entry in process_json(data) if not is_empty(entry)]
    flattened_data = [new_entry for entry in filtered_data for new_entry in flatten_json(entry)]

    return flattened_data

def main(input_directory):
    for dir_name in os.listdir(input_directory): # Перебор поддиректорий в указанной директории (Имена хостов)
        dir_path = os.path.join(input_directory, dir_name)
        if os.path.isdir(dir_path):
            registry_data = [] # Обнуление общего json фрейма

            for root, dirs, files in os.walk(dir_path): # Перебор файлов в текущей поддиректории (Файлы веток реестра)
                for file in files:
                    if file.startswith("Reg-"): # Поиск только файлов с реестром
                        registry_file = os.path.join(root, file)    
                        registry_data_temp = process_registry_file(registry_file) # json фрейм для определенного файла (для корректной замены ROOT)
                        
                        # Замена ROOT на соответствующее значение куста реестра
                        if file.startswith("Reg-Software"):
                            for entry in registry_data_temp:
                                entry["KeyPath"] = entry["KeyPath"].replace("ROOT", "Software")
                        elif file.startswith("Reg-System"):
                            for entry in registry_data_temp:
                                entry["KeyPath"] = entry["KeyPath"].replace("ROOT", "System")                        
                        elif file.startswith("Reg-Ntuser"):
                            username_start = file.find("Reg-Ntuser-") + len("Reg-Ntuser-")
                            username_end = file.find("%5C", username_start)
                            username = file[username_start:username_end]
                            for entry in registry_data_temp:
                                entry["KeyPath"] = entry["KeyPath"].replace("ROOT", f"NTUSER.DAT-{username}") 
                        elif file.startswith("Reg-UsrClass-"):
                            username_start = file.find("Reg-UsrClass-") + len("Reg-UsrClass-")
                            username_end = file.find("%5C", username_start)
                            username = file[username_start:username_end]
                            for entry in registry_data_temp:
                                entry["KeyPath"] = f"UsrClass-{username}-" + entry["KeyPath"]
                        
                        registry_data += registry_data_temp # Добавлнение скорректированного json фрейма в общий
                        os.remove(registry_file) # Удаление обработанных файлов

            output_file = os.path.join(dir_path, "Registry.json") # Создание отдельного Registry.json в директории хоста
            with open(output_file, 'w', encoding='utf-8') as out_file:
                for entry in registry_data:
                    # Запись каждого объекта JSON на новой строке
                    json.dump(entry, out_file, ensure_ascii=False, separators=(',', ':'))
                    out_file.write('\n')

if __name__ == "__main__":
    input_directory = r'E:\temp\ToElastic'  # Папка, в которой находятся файлы для обработки
    main(input_directory)

3. Переименование полей, форматирование времени

import os
import json
import jsonlines
from datetime import datetime, timedelta

def process_registry_file(file_path):
    updated_data = []
    with jsonlines.open(file_path, 'r') as reader:
        for entry in reader: # Переименование полей для выгрузки в ELK
            entry["reg.key.path"] = entry.pop("KeyPath")
            entry["reg.key.name"] = entry.pop("KeyName")
            timestamp = entry["LastWriteTimestamp"]
            timestamp = int(timestamp[6:-2]) / 1000 # Получение числа секунд из строки времени
            timestamp = datetime.fromtimestamp(timestamp) - timedelta(hours=3) # UTC-3
            entry["@timestamp"] = timestamp.strftime('%Y-%m-%dT%H:%M:%S') # Формат, понятный ELK
            entry.pop("LastWriteTimestamp")
            entry["file.name"] = entry.pop("ValueName")
            entry["file.path"] = entry.pop("ValueData")
            entry.pop("ValueType")
            updated_data.append(entry)
    return updated_data

def split_json_file(input_file, chunk_size): # Разделение на несколько json файлов
    with open(input_file, 'r', encoding='utf-8') as infile:
        data = [json.loads(line) for line in infile]
    total_records = len(data)
    num_chunks = (total_records + chunk_size - 1) // chunk_size # Определение на сколько частей разделять
    for i in range(num_chunks): # Создание ограниченных файлов json
        input_file_temp = input_file.replace('.json', '')
        output_file = f"{input_file_temp}{i + 1}.json"
        start = i * chunk_size
        end = (i + 1) * chunk_size
        chunk_data = data[start:end]
        with open(output_file, 'w', encoding='utf-8') as outfile:
            for item in chunk_data:
                outfile.write(json.dumps(item, ensure_ascii=False) + '\n')

def process_directory(directory_path, chunk_size): # Проверка необходимости разделения на блоки
    for root, dirs, files in os.walk(directory_path): # Поиск всех файлов обработанного реестра
        for filename in files:
            if filename == 'Registry.json':
                file_path = os.path.join(root, filename)
                with open(file_path, 'r', encoding='utf-8') as file:
                    line_count = sum(1 for line in file)
                if line_count > chunk_size: # Нужно ли разделять
                    split_json_file(file_path, chunk_size)
                    os.remove(file_path)

def main(input_directory, chunk_size):
    for root, dirs, files in os.walk(input_directory): # Поиск всех файлов обработанного реестра
        for file in files:
            if file == "Registry.json":
                registry_file = os.path.join(root, file)
                updated_data = process_registry_file(registry_file) # Переименование полей
                with jsonlines.open(registry_file, 'w') as writer:
                    writer.write_all(updated_data)
                process_directory(root, chunk_size) # Разделение на блоки 

if __name__ == "__main__":
    input_directory = r'E:\temp\ToElastic'
    chunk_size = 100000 # По сколько строк разделять json-файлы, для корректной выгрузки в ELK
    main(input_directory, chunk_size)
  1. В результате мы получаем существенный набор ключей реестра на анализ в следующем виде (названия полей легко меняются по Вашему желанию):

{"reg.key.path": "Software\\Classes\\.htm\\OpenWithList\\Excel.exe\\shell\\edit\\command", 
"reg.key.name": "command", 
"@timestamp": "2019-10-07T22:49:35", 
"file.name": "(default)", 
"file.path": "\"C:\\Program Files\\Microsoft Office\\Office15\\EXCEL.EXE\" /dde"}
  1. После проверки корректности обработки сырых данных в json файл, все файлы отправляются в ElasticStack (вручную, с помощью API или FileBeat) или другую, удобную Вам SIEM систему.

  2. В ElasticStack далее производится анализ:

    • C помощью фильтра по всем местам закрепления, или в котором ищется что-то конкретное (1). В реальных ситуациях можно искать в 3 захода: два захода с самыми шумными фильтрами (*Software*Classes*CLSID* (T1546/015) и *Software*Classes*shell*command (T1546/001)), и один со всем остальным. 

    • Удобный поиск проводится с помощью визуализации, в которой формируется таблица (2) по полю file.path (3), которая равна выполняемой команде / ссылке на файл (Группировка событий).

    • Отсортировав по возрастанию количества раз встречаемости (4), можно легко найти исполняемые файлы, которые не должны присутствовать на компьютере (наиболее встречаемые команды = бОльшая вероятность ее легитимности).

    • Затем, поправив фильтр, что бы найти только нужные файлы, можно перейти в список всех событий для более глубокого анализа (5).

Группировка выполняемых команд / ссылок на файлы в местах закрепления

Группировка выполняемых команд / ссылок на файлы в местах закрепления
  1. В событиях уже показывается в какой ветке реестра находится нужная ссылка/команда и когда она была добавлена, из чего можно делать выводы — легитимно это или нет. 

Найденные пути к веткам реестра, в которых закрепился вредонос

Найденные пути к веткам реестра, в которых закрепился вредонос
  1. Здесь показан лишь упрощенный поиск для примера, а то время как реальные кейсы поиска ограничены только Вашей фантазией. Кстати, фильтр для поиска не шумных мест закрепления:

Фильтр поиска закрепления в реестре

reg.key.path : (*Software*Microsoft*Active*Setup*Installed*Components
OR *Software*Microsoft*Active*Setup*Installed*Components*ShellComponent
OR *Software*Microsoft*Command*Processor*Autorun
OR *Software*Microsoft*Ctf*LangBarAddin*FilePath
OR *Software*Microsoft*Internet*Explorer*Extensions*Exec
OR *Software*Microsoft*Internet*Explorer*Extensions*Script
OR *Software*Microsoft*NetSh
OR *Software*Microsoft*Office*Word*Options*GlobalDotName
OR *Software*Microsoft*Office*Word*Security
OR *Software*Microsoft*Office*Word*Security*Trusted*Documents
OR *Software*Microsoft*Office*Word*Security*Trusted*Locations
OR *Software*Microsoft*Office*Word*Security*Trusted*Locations*
OR *Software*Microsoft*Office*Word*Security*Trusted*Locations*AllowSubFolders
OR *Software*Microsoft*Office*Word*Security*Trusted*Locations*Path
OR *Software*Microsoft*Office*Word*Security*VBAWarning
OR *Software*Microsoft*Office*Common*General*SharedTemplates
OR *Software*Microsoft*Office*Common*General*UserTemplates
OR *Software*Microsoft*Office*test*Special*Perf
OR *Software*Microsoft*Windows*Services*AutoStartOnConnect*MicrosoftActiveSync
OR *Software*Microsoft*Windows*Services*AutoStartOnDisconnect*MicrosoftActiveSync
OR *Software*Microsoft*Windows*CurrentVersion*AppCompatFlags*Custom*
OR *Software*Microsoft*Windows*CurrentVersion*AppCompatFlags*Installedsdb
OR *Software*Microsoft*Windows*CurrentVersion*Image*File*Execution*Options
OR *Software*Microsoft*Windows*CurrentVersion*Image*File*Execution*Option*VerifierDlls
OR *Software*Microsoft*Windows*CurrentVersion*IniFileMapping*system.ini*boot
OR *Software*Microsoft*Windows*CurrentVersion*Schedule*TaskCache*Tasks
OR *Software*Microsoft*Windows*CurrentVersion*Schedule*TaskCache*Tree
OR *Software*Microsoft*Windows*CurrentVersion*SilentProcessExit*
OR *Software*Microsoft*Windows*CurrentVersion*Terminal*Server*Install*
OR *Software*Microsoft*Windows*CurrentVersion*Windows*AppInit_DLLs
OR *Software*Microsoft*Windows*CurrentVersion*Windows*IconServiceLib
OR *Software*Microsoft*Windows*CurrentVersion*Windows*Load
OR *Software*Microsoft*Windows*CurrentVersion*Windows*Run
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*AppSetup
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*GpExtensions*
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*Taskman
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*VmApplet
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*Shell
OR *Software*Microsoft*Windows*CurrentVersion*Winlogon*Userinit
OR *Software*Microsoft*Windows*CurrentVersion*Explorer*Shell*Folders
OR *Software*Microsoft*Windows*CurrentVersion*Explorer*User*Shell*Folders
OR *Software*Microsoft*Windows*CurrentVersion*Policies*Explorer*Run
OR *Software*Microsoft*Windows*CurrentVersion*Policies*System*Shell
OR *Software*Microsoft*Windows*CurrentVersion*Run
OR *Software*Microsoft*Windows*CurrentVersion*RunOnce
OR *Software*Microsoft*Windows*CurrentVersion*RunOnceEx
OR *Software*Microsoft*Windows*CurrentVersion*RunServices
OR *Software*Microsoft*Windows*CurrentVersion*RunServicesOnce
OR *Software*Microsoft*Windows*CurrentVersion*ShellServiceObjectDelayLoad
OR *Software*Microsoft*Windows*CurrentVersion*policies*Explorer*Run
OR *Software*Microsoft*Windows*Windows*Error*Reporting*Hangs*ReflectDebugger
OR *Software*Policies*Microsoft*Windows*Control*Panel*Desktop*SCRNSAVE.EXE
OR *Software*Policies*Microsoft*Windows*System*Scripts
OR *Software*Policies*Microsoft*Windows*System*Scripts*Logoff*Script
OR *Software*Policies*Microsoft*Windows*System*Scripts*Logon*Script
OR *Software*Policies*Microsoft*Windows*System*Scripts*Shutdown*Script
OR *Software*Policies*Microsoft*Windows*System*Scripts*Startup*Script
OR *Software*Wow6432Node*Microsoft*Windows*CurrentVersion*Run*
OR *Software*Wow6432Node*Microsoft*Windows*CurrentVersion*Image*File*Execution*Options*
OR *Software*Wow6432Node*Microsoft*Windows*CurrentVersion*Windows
OR *Software*Wow6432Node*Microsoft*Windows*CurrentVersion*Windows*AppInit_Dlls
OR *Software*Wow6432Node*Microsoft*Windows*CurrentVersion*Winlogon*
OR *System*ControlSet001*Control*BootVerificationProgram*ImagePath
OR *System*ControlSet001*Control*Print*Environments*Print*Processors*Driver
OR *System*ControlSet001*Control*Lsa*Notification*Packages
OR *System*ControlSet001*Control*Lsa*OSConfig*Security*Packages
OR *System*ControlSet001*Control*Lsa*Security*Packages
OR *System*ControlSet001*Control*NetworkProvider*Order
OR *System*ControlSet001*Control*Print*Environments***Print*Processors***Driver
OR *System*ControlSet001*Control*Print*Monitors
OR *System*ControlSet001*Control*SafeBoot*AlternateShell
OR *System*ControlSet001*Control*ServiceControlManagerExtension
OR *System*ControlSet001*Control*Session*Manager
OR *System*ControlSet001*Control*Session*Manager*AppCertDLLs**
OR *System*ControlSet001*Control*Session*Manager*Environment*Path
OR *System*ControlSet001*Control*Session*Manager*BootExecute
OR *System*ControlSet001*Control*Session*Manager*Execute
OR *System*ControlSet001*Control*Session*Manager*KnownDLLs
OR *System*ControlSet001*Control*Session*Manager*S0InitialCommand
OR *System*ControlSet001*Control*Session*Manager*SetupExecute
OR *System*ControlSet001*Services
OR *System*ControlSet001*Services*NetworkProvider
OR *System*ControlSet001*Services*W32Time*TimeProviders*
OR *System*ControlSet001*Services*servicename*Parameters*ServiceDll
OR *System*ControlSet001*services*TermService*Parameters*
OR *System*ControlSet001*Control*Terminal*Server*Wds*rdpwd*StartupPrograms
OR *System*ControlSet001*Control*Terminal*Server*WinStations*RDP-Tcp*InitialProgram
OR *System*Setup*CmdLine
OR *Environment*UserInitMprLogonScript
OR *Control*Panel*Desktop)

Демонстрация на примерах

Пример того как в моем решении видны изменения контекстного меню — представлены выше. 

Для дальнейшей демонстрации были взяты 3 техники, применённые с помощью AtomicTests, которые не детектируются с помощью Autoruns:

  • T1546.011 (Злоупотребление подсистемой совместимости приложений), рассмотренная ранее в разделе с Проблемой;

  • T1546.002 (Манипуляция параметрами экранной заставки);

  • T1546.007 (Злоупотребление вспомогательными библиотеками DLL Netsh):

Autoruns опять показывает не все

Autoruns опять показывает не все
  1. Собрав, обработав и отправив в ElasticStack все необходимые данные, при поиске всех мест закрепления (кроме 2 самых шумящих), получаем следующее: 

Числа считаются аномальными, т.к. они фильтруются при парсинге

Числа считаются аномальными, т.к. они фильтруются при парсинге
  1. Необходимые нам пути к файлам и аномальные ключи находятся наверху списка. Совершив поиск по этим событиям, сразу находим где находятся данные значения в реестре: 

Результат

Результат
  1. Для увеличения удобства дальнейшего поиска, все легитимные значения для Вашего «золотого» образа систем Вашей организации легко добавляются в исключения

Выводы

На текущий момент существует множество утилит для анализа реестра Windows на поиск мест закрепления в нем вредоносного ПО. Наиболее удобным и эффективным является Sysinternals Autoruns, однако как было продемонстрировано, даже он не способен детектировать все, что нам нужно. 

Для решения этой проблемы был продемонстрирован автоматизированный конвейер скриптов по обработке сырых файлов реестра Windows в SIEM-понятный формат данных. Далее, в SIEM-е, при правильно настроенных исключениях, поиск вредоноса не составит большого труда.

На обратной стороне монеты же, безусловно выделяется бОльшая сложность в подготовке и дальнейшем анализе, по сравнению с тем же Autoruns. Так что если в Вашей работе, скорость анализа играет решающую роль, то предложенное решение можно рассматривать в качестве дополнения к существующим решениям, в которых можно проводить первичный анализ.

Ссылки на источники

  • Изучаем Adversarial Tactics, Techniques & Common Knowledge (ATT@CK). Enterprise Tactics. Часть 3 / Хабр

  • Windows Registry, Data Source DS0024 | MITRE ATT&CK®

  • Uncommon Registry Persistence Change | Elastic Security Solution [8.10] | Elastic

  • Analysis of Malicious Security Support Provider DLLs — PDF Free Download

  • Office Templates and GlobalDotName — A Stealthy Office Persistence Technique — 0xShukruN

  • Windows Registry: Malware Persistence

  • T1546.011 — Explore Atomic Red Team

  • T1546.002 — Explore Atomic Red Team

  • T1546.007 — Explore Atomic Red Team

Наименование образовательного учреждения

Выполнил:ФИО

Руководитель:ФИО

Содержание

Введение

Глава 1. Теоретические аспекты системного реестра Windows

1.1. Введение в системный реестр Windows1.2. Создание резервной копии системного реестра1.3. Редактирование системного реестра с использованием regedit

Глава 2. Анализ системного реестра и автоматизация процессов

2.1. Утилиты для анализа системного реестра2.2. Роль автоматизированных методов в анализе2.3. Разработка рекомендаций по анализу

Глава 3. Практическое применение и разработка решений

3.1. Создание практического руководства3.2. Разработка программных решений для автоматизации3.3. Выводы о значении исследования

Заключение

Список литературы

Введение

Текст доступен в расширенной версии

Описание темы работы, актуальности, целей, задач, новизны, тем, содержащихся внутри работы.
Контент доступен только автору оплаченного проекта

Глава 1. Теоретические аспекты системного реестра Windows

1.1. Введение в системный реестр Windows

Текст доступен в расширенной версии

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

1.2. Создание резервной копии системного реестра

Текст доступен в расширенной версии

В этом разделе будет подробно рассмотрена процедура создания резервной копии системного реестра Windows. Будет объяснено, почему создание резервной копии является критически важным шагом перед внесением изменений и предоставлена пошаговая инструкция.
Контент доступен только автору оплаченного проекта

1.3. Редактирование системного реестра с использованием regedit

Текст доступен в расширенной версии

Данный раздел будет сосредоточен на использовании редактора реестра для нахождения потенциальных следов активности вредоносного ПО. Будет представлено руководство по работе с regedit и основными функциями редактора.
Контент доступен только автору оплаченного проекта

Глава 2. Анализ системного реестра и автоматизация процессов

2.1. Утилиты для анализа системного реестра

Текст доступен в расширенной версии

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

2.2. Роль автоматизированных методов в анализе

Текст доступен в расширенной версии

Этот раздел посвящен значению автоматизированных методов в процессе анализа системного реестра на предмет наличия следов вредоносной активности. Будет объяснено, какие преимущества обеспечивают такие методы и как они способствуют более тщательному исследованию.
Контент доступен только автору оплаченного проекта

2.3. Разработка рекомендаций по анализу

Текст доступен в расширенной версии

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

Глава 3. Практическое применение и разработка решений

3.1. Создание практического руководства

Текст доступен в расширенной версии

Данный раздел включает в себя создание практического руководства по проведению анализа системного реестра на наличие следов вредоносной активности с детальным описанием процесса и примерами использования инструментов.
Контент доступен только автору оплаченного проекта

3.2. Разработка программных решений для автоматизации

Текст доступен в расширенной версии

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

3.3. Выводы о значении исследования

Текст доступен в расширенной версии

Данный заключительный раздел сосредоточен на выводах из проведенного исследования, обобщая ключевые аспекты работы по настройке системного реестра для выявления следов вредоносной активности.
Контент доступен только автору оплаченного проекта

Заключение

Текст доступен в расширенной версии

Описание результатов работы, выводов.
Контент доступен только автору оплаченного проекта

Список литературы

Текст доступен в расширенной версии

Список литературы.
Контент доступен только автору оплаченного проекта

Методики обнаружения вредоносного ПО

Введение

Утилиты для анализа ПК

   FileMon

   RegMon

   Process Explorer

   Autoruns

   Sigcheck

   HijackThis

   a-squared HiJackFree

   TDIMon

   AVZ

Специализированные утилиты для поиска RootKit

   F-Secure BackLite

   SysInternals RootkitRevealer

Полезные On-Line-сервисы

   http://www.hijackthis.de/en

   http://www.virustotal.com/

   http://virusscan.jotti.org/

   http://virusinfo.info/

   http://forum.ixbt.com/

Подготовка к анализу

Анализ

Заключение

Введение

В последнее время разработчики антивирусных и антишпионских программных продуктов не успевают оперативно вносить в свои базы сигнатуры всех разновидностей вредоносных программ. В результате любой пользователь, независимо от применяемого им антивирусного пакета, может столкнуться с тем, что на его компьютер попадет вредоносная программа, которую не сможет обнаружить и удалить антивирус. Хуже всего дело обстоит с AdWare- и SpyWare-программами — далеко не все производители антивирусов включают такие программы в свои базы. Кроме того, ожидать добавления вредоносной программы в базы антивируса можно очень долго, поскольку для этого разработчики антивируса должен быть ее образец. В результате получается замкнутый круг, выйти из которого пользователь может тремя способами: переустановить операционную систему, пригласить специалистов для консультации или попробовать самостоятельно обнаружить вредоносную программу и отправить ее разработчикам антивирусных пакетов.

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

Утилиты для анализа ПК

FileMon

(производитель — SysInternals)

Утилита позволяет осуществлять мониторинг всех файловых операций в реальном времени и к тому же распространяется бесплатно. Кроме файловых операций, FileMon обеспечивает мониторинг операций с именованными каналами (Named Pipes), каналами передачи сообщений электронной почты Mail Slot и сетевыми ресурсами. FileMon не нуждается в инсталляции и может быть запущена с компакт-диска или из сетевой папки. Необходимо учесть, что внутри исполняемого файла filemon.exe хранятся драйверы, которые извлекаются и устанавливаются в момент запуска.

FileMon

Полезной особенностью программы является возможность настраиваемой фильтрации регистрируемых событий.

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

FileMon

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

RegMon

(производитель — SysInternals)

RegMon позволяет осуществлять мониторинг всех операций с реестром в реальном времени и распространяется бесплатно. Интерфейс данной утилиты аналогичен FileMon. Исполняемый файл использует для работы драйвер, который хранится внутри исполняемого файла и устанавливается в момент запуска программы. Запись событий можно временно приостановить при помощи пункта меню File=>Capture events.

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

Process Explorer

(производитель — SysInternals)

Основной задачей Process Explorer является просмотр списка запущенных процессов. Для каждого процесса отображаются потоки, используемые им библиотеки и Handle (с расшифровкой типа Handle и отображением уточняющей информации). Помимо просмотра списка процессов программа может выполнять ряд полезных сервисных функций, в частности осуществлять поиск процесса по его окну и составлять список процессов, использующих указанную библиотеку. Для каждого процесса предусмотрен просмотр детализированной информации, в том числе данных о потоках и прослушиваемых портах TCP/UDP, параметров безопасности, переменных окружения, списка найденных в исполняемом файле (на диске и в памяти процесса) текстовых данных с возможностью поиска и сохранения найденной информации для анализа. Как показывает практика, в памяти подозрительного процесса можно обнаружить много интересных текстовых строк, например адреса в Интернете, по которым программа ведет обмен.

Process Explorer

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

Autoruns

(производитель — SysInternals)

Утилита является диспетчером автозапуска с расширенными возможностями. Она анализирует практически все способы автозапуска, применяемые вредоносными программами.

Одной из наиболее полезных функций программы является поддержка проверки цифровых подписей Microsoft с отображением ее результатов. Кроме визуального отображения результатов проверки, в настройках программы имеется переключатель Hide signed Microsoft entries, включение которого приводит к тому, что все подписанные Microsoft программы и библиотеки автоматически исключаются из списка, что существенно упрощает анализ этого списка.

Autoruns

Утилита распространяется в двух вариантах: в виде стандартной программы с диалоговым интерфейсом и в виде консольного приложения, управляемого ключами командной строки.

Утилита анализирует множество ключей реестра, управляющих автозапуском, отображает список служб, модулей расширения проводника, BHO (Browser Helper Object) и панели Internet Explorer, назначенные задания. Любая библиотека или программа может быть временно удалена из автозагрузки, что позволяет на время отключить запуск подозрительных программ и библиотек.

Sigcheck

(производитель — SysInternals)

Эта небольшая консольная утилита позволяет просматривать и проверять цифровые подписи указанного файла. Она очень полезна для идентификации системных файлов, которые имеют цифровую подпись Microsoft.

Sigcheck

Утилита поддерживает ряд ключей, однако в простейшем случае достаточно передать ей единственный параметр — полное имя проверяемого файла. В результате проверки отображается информация о найденных цифровых подписях и результатах их проверки. Следует отметить, что поле Publisher в протоколе программы необходимо читать очень внимательно: известны программы, снабженные корректной цифровой подписью от Micrsoft, Mikrosoft, Mirosoft — то есть преднамеренно выбрано очень похожее на «Microsoft» название компании в расчете на то, что пользователь не обратит внимания на небольшие различия в написании.

HijackThis

(http://www.tomcoyote.org/hjt/)

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

HijackThis

Пользователь может отметить один или несколько элементов: после нажатия кнопки Fix утилита производит их исправление или удаление. Утилита позволяет сохранять текстовые протоколы с результатами анализа; протокол достаточно легко анализировать вручную или с помощью автоматизированных анализаторов.

a-squared HiJackFree

(http://www.hijackfree.com/en/)

Данная программа представляет собой универсальный анализатор, отображающий элементы автозапуска (включая многие экзотические), модули расширения Explorer, службы и запущенные процессы, открытые порты, содержимое файла Hosts. По результатам анализа формируется XML-протокол, который может быть сохранен или передан для анализа на сайт http://www.hijackfree.com. Результаты анализа отображаются немедленно, полученный в результате анализа HTML-протокол можно сохранить. Однако следует помнить, что для формирования протокола результаты анализа компьютера передаются компании a-squared.

a-squared HiJackFree

TDIMon

(производитель — SysInternals)

Утилита TDIMon предназначена для мониторинга сетевой активности приложений. В протоколе утилиты регистрируются обмен приложений по протоколам TCP и UDP. Программа не нуждается в инсталляции и может оказаться весьма полезной для обнаружения приложений, ведущих скрытный обмен с сетью.

AVZ

(http://z-oleg.com/secur/)

Данная утилита, помимо сигнатурного сканера, содержит анализатор запущенных процессов, служб, драйверов, модулей пространства ядра, диспетчер автозапуска и расширений Internet Explorer, анализатор настроек SPI (LSP/NSP/TSP), анализатор открытых портов TCP/UDP и сетевых ресурсов. Утилита имеет встроенные средства поиска данных в реестре и файлов на диске. Все эти функции защищены встроенным антируткитом.

AVZ

Встроенное исследование системы позволяет формировать HTML-протоколы, которые можно использовать для экспресс-анализа системы. Анализ запускается из меню «Файл=>Исследование системы», протокол размещается в указанной пользователем папке. Встроенная база безопасных файлов позволяет утилите AVZ опознавать файлы, входящие в состав операционной системы, и файлы распространенных приложений. Опознанные файлы выделяются цветом и могут быть автоматически исключены из протоколов исследования системы, что в ряде случаев значительно упрощает их анализ.

Специализированные утилиты для поиска RootKit

F-Secure BackLite

(http://www.europe.f-secure.com/exclude/blacklight/)

Данная программа предназначена для поиска маскирующихся процессов, файлов и папок. Несмотря на статус beta, программа работает достаточно стабильно и в инсталляции не нуждается (хотя неявная инсталляция имеется: программа копирует на диск и устанавливает на время работы свой драйвер).

SysInternals RootkitRevealer

(http://www.sysinternals.com/Utilities/RootkitRevealer.html)

Детектор Rootkit от фирмы SysInternals работает без инсталляции. Основной задачей данной утилиты является поиск маскирующихся файлов и ключей реестра. Следует обратить внимание на то, что в случае логических ошибок на диске данная утилита может выдать ложные подозрения. Кроме того, подозрения на маскировку файлов необязательно являются признаком наличия в системе RootKit.

Полезные On-Line-сервисы

http://www.hijackthis.de/en

Автоматический анализатор протоколов утилиты HijackThis. Работает только с протоколами последней версии данной утилиты, по результатам анализа генерирует протокол с указанием, на какие позиции следует обратить внимание.

http://www.virustotal.com/

Проверка файла несколькими антивирусами. В настоящий момент проверка переданного для анализа файла проводится при помощи 19 антивирусных пакетов.

http://virusscan.jotti.org/

Проверка файла несколькими антивирусами. На этом сайте проверка файла производится при помощи 13 антивирусов, а кроме проверки антивирусами, проводится экспресс-анализ файла — вычисление его контрольной суммы, попытка определения упаковщика и оценка степени опасности файла по некоторым критериям создателей сайта.

http://virusinfo.info/

Русскоязычная конференция, полностью посвященная вирусологии, борьбе с AdWare/SpyWare-программами и защите компьютера. Для начинающего пользователя ценность представляет раздел «Помогите», в котором рассматриваются проблемы пользователей, анализируются полученные от пользователей протоколы и подозрительные файлы.

http://forum.ixbt.com/

Русскоязычная конференция, содержащая подразделы «Системное администрирование, безопасность», «Техподдержка» и «Программы: Интернет», где обсуждаются вопросы безопасности, антивирусные программы, Firewall и методы обнаружения вирусов.

Подготовка к анализу

Итак, мы перечислили основные инструменты, которые потребуются для анализа компьютера. Теперь можно приступать к анализу. Однако перед тем, как перейти к проведению стоит ответить на ряд вопросов:

  1. В чем заключается проблема с компьютером, в чем конкретно она проявляется? От точности ответа на данный вопрос зависит эффективность дальнейшего анализа — к сожалению, очень часто анализ начинается с туманной формулировки: «Компьютер вроде тормозит…». При наличии внешних проявлений вредоносной программы необходимо установить периодичность их появления и проверить, связаны ли они с наличием доступа в Интернет.
  2. Когда появилась вредоносная программа? Естественно, точно установить это затруднительно, но приблизительный срок с запасом определить необходимо.
  3. Какие действия производились перед предположительным появлением вредоносной программы? Практика показывает, что вредоносные программы, как правило, обнаруживаются после установки какого-либо программного обеспечения, после открытия подозрительных писем или посещения Интернет-сайтов.

Анализ

Поиск RootKit

Анализ компьютера нужно начинать с поиска программ, применяющих RootKit-механизмы. Это очень важный момент, поскольку многие современные вредоносные программы активно маскируют свое присутствие на компьютере. Однако большинство вышеописанных программ-анализаторов работают через стандартные API, а перехват нескольких функций делает программу невидимой за счет маскировки ее ключей реестра, файлов и процессов.

Желательно применить все рекомендованные программы (RootkitRevealer, BackLite и AVZ), так как они используют различные алгоритмы поиска RootKit.

По протоколу утилиты AVZ можно проанализировать, есть ли перехваты каких-либо функций в user-mode (на уровне пользователя) и kernel-mode (на уровне ядра операционной системы). Сам по себе перехват ни о чем не говорит, поскольку перехватчик может быть установлен антивирусом, Firewall, различными средствами мониторинга системы. Например, утилита FileMon во время работы перехватывает несколько функций KiST, отвечающих за работу с реестром. В случае подозрения на RootKit можно включить противодействие руткитам AVZ — в этом случае делается попытка нейтрализации перехватчиков. Следует учитывать, что нейтрализация перехватчиков user-mode происходит только для процесса AVZ, в то время как нейтрализация перехватчиков kernel-mode оказывает воздействие на всю систему.

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

После поиска (и уничтожения в случае обнаружения) RootKit можно продолжить анализ системы. В случае активного противодействия удалению со стороны вредоносной программы самым простым способом ее удаления является подключение HDD к безусловно чистому компьютеру и удаление файлов, обнаруженных в ходе поиска руткита.

Анализ запущенных процессов

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

Процессы, которые AVZ определяет как безопасные, можно с высокой степенью вероятности считать таковыми и снять с подозрения. Аналогично можно поступить с файлами, подписанными Microsoft (проверить подпись можно консольной программой Sigcheck).

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

Анализ автозапуска

Анализ автозагружаемых программ и библиотек очень удобно проводить при помощи утилиты Autoruns от SysInternals. Для упрощения анализа рекомендуется включить опции Verify Code Signatures и Hide Signed Microsoft Entries в меню Options. Следует учесть, что анализ элементов автозапуска может длиться несколько минут — это связано с тем, что для каждого файла идет проверка цифровых подписей.

Поиск файлов на диске

Поиск файлов на диске достаточно эффективен в том случае, если известна примерная дата появления вредоносной программы. Тогда можно осуществить поиск по маске «*.exe *.com *.sys *.pif *.com *.lnk *.chm» с фильтрацией по диапазону дат (причем поиск желательно произвести дважды: по дате создания файла и по дате модификации). Для выполнения поиска файлов удобно применять встроенную систему поиска AVZ, где можно исключить из результатов поиска файлы, опознанные по базе безопасных.

Анализ BHO и модулей расширения Internet Explorer

Анализ различных модулей расширения Internet Explorer является важной задачей, поскольку многие SpyWare- и AdWare-программы устанавливаются как BHO (Browser Helper Object). Анализ рекомендуется вести из утилиты Autoruns (закладка Internet Explorer) или из AVZ (Сервис=>Менеджер расширений IE). Все подозрительные модули расширения рекомендуется отключить, причем перед отключением необходимо в обязательном порядке закрыть все экземпляры Internet Explorer. Это связано с тем, что некоторые BHO отслеживают наличие своих ключей в реестре в момент выгрузки и восстанавливают их при необходимости, что затрудняет их удаление.

Папка Downloaded Program Files

Многие шпионские программы и программы класса Trojan-Downloader выполнены в виде библиотек ActiveX, и некоторые их компоненты можно обнаружить в папке Downloaded Program Files. Следует отметить, что просмотр данной папки при помощи проводника Windows неудобен — для просмотра файлов рекомендуется воспользоваться менеджерами файлов типа FAR или Windows Commander. Сама папка Downloaded Program Files размещается в папке Windows и у нее установлен атрибут «системный».

Анализ файла hosts

Файл hosts участвует в процессе определения IP-адреса сервера по его имени. Модификация этого файла может привести к нарушению данного процесса и подмене адреса любого сервера (этот процесс является простейшей формой DNS-спуфинга). Как правило, добавленные троянской программой в файл hosts строки имеют вид:

1.2.3.4 google.com

127.0.0.1 downloads1.kaspersky-labs.com

В первой из приведенных строк происходит подмена адреса google.com на некий адрес 1.2.3.4. Во второй строке примера показан классический способ блокирования процесса обновления антивирусных баз.

Анализ файла hosts сводится к изучению его содержимого в любом текстовом редакторе (например, в блокноте) или в специализированной утилите (например, в HiJackFree или в HijackThis). Обнаружение посторонних записей, особенно связанных с популярными поисковыми системами или антивирусными продуктами, однозначно свидетельствует о деятельности троянской программы.

Изучение папки «Избранное» Internet Explorer

У Internet Explorer есть интересная функция (о которой, правда, часто забывают) — перед открытием указанного в строке «Адрес» сайта происходит автоматический просмотр папки «Избранное» и сравнение названия ссылок этой папки с текстом в строке «Адрес». В случае совпадения введенный адрес автоматически изменяется на адрес из найденной ссылки. На первый взгляд это удобно: можно создать ссылку с названием «поиск», указывающую на www.yandex.ru и тогда указание в поле «Адрес» слова «поиск» приведет к открытию сайта www.yandex.ru. Однако возможна и обратная операция: создать в папке «Избранное» ссылку с именем www.yandex.ru и указать в ней некий посторонний адрес, в результате чего произойдет автоматическая подмена адреса. Следовательно, в ходе проверки компьютера необходимо произвести поиск и удаление подобных ссылок.

Действия в типовых ситуациях

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

  1. Периодически выводятся окна с рекламной информацией. В такой ситуации необходимо установить, какая из запущенных программ выводит данные окна. Это удобно сделать при помощи программы Process Explorer: необходимо перетащить значок с изображением прицела из панели управления Process Explorer на окно неопознанной программы, а Process Explorer определит, какой программе принадлежит данное окно. Если обнаружится, что окно принадлежит Internet Explorer, то необходимо проанализировать загруженные им библиотеки и модули расширения (BHO). Кроме того, Process Explorer показывает процессы в виде древовидного списка — стоит обратить внимание на то, какой процесс является родительским для «подозреваемого».
  2. Стартовая страница Internet Explorer периодически изменяется на некую страницу X. Настройки IE хранятся в реестре, поэтому для обнаружения изменяющего страницу вредителя целесообразно применить утилиту RegMon. После ее запуска необходимо настроить фильтр, указав в качестве образца адрес X или его фрагмент. Затем остается только восстановить стартовую страницу и дождаться ее изменения, а далее по протоколу RegMon можно установить, какой процесс выполнил данную операцию.
  3. Изменяются настройки Internet Explorer, в том числе недоступные из диалога «Свойства обозревателя». Чаще всего изменяется страница поиска или префиксы протоколов; замена стартовой страницы может рассматриваться как частный случай. Методика обнаружения ответственного за это вредоносного процесса аналогична той, что применяется при подмене стартовой страницы: в настройке фильтра RegMon в поле Include рекомендуется задать образец Microsoft=>Internet Explorer и оставить включенными опции Log Writes и Log Successes. В результате будут фиксироваться все изменения настроек с указанием, какая программа производит изменение. Для восстановления настроек можно применить кнопку «Сброс параметров» на закладке «Свойства программы» в окне «Свойства обозревателя» или использовать восстановление системы в AVZ. В обоих случаях это приведет к сбросу всех настроек на значения по умолчанию.
  4. На рабочем столе (на диске, в определенных папках) периодически появляются посторонние файлы и ярлыки. Предположим, что на рабочем столе периодически, несмотря на удаление, появляется файл dialer.exe. Воспользуемся утилитой FileMon, причем для уменьшения размеров протокола рекомендуется настроить ее фильтр. В нашем случае образец в строке Include фильтра будет dialer.exe, и из всех переключателей можно оставить включенным лишь Log Writes и Log Successes. С таким фильтром FileMon будет регистрировать только операции записи в файл с именем dialer.exe. Далее остается подождать появления файла и по протоколу FileMon установить создающее его приложение.
  5. После удаления вредоносной программы (вручную или при помощи антивируса) возникли проблемы с доступом в Интернет. Подобная ситуация, как правило, возникает в случае удаления модуля, зарегистрированного в качестве расширения Winsock. Проанализировать зарегистрированные модули расширения Winsock можно в AVZ — меню «Сервис», пункт «Менеджер Winsock SPI». Менеджер оснащен автоматическим анализатором, который способен обнаружить типовые ошибки и исправить их. Список ошибок можно посмотреть на закладке «Поиск ошибок», там же имеется кнопка «Автоматическое исправление найденных ошибок». В большинстве случаев анализатор AVZ в состоянии справиться с ошибками. Если же он не поможет (а такое бывает в случае серьезного повреждения настроек, например при полном удалении ключей реестра, хранящих настройку), рекомендуется обратиться к статьям 299357, 817571 и 811259, размещенным на сайте Microsoft (http://support.microsoft.com/kb/<номер статьи>), где подробно рассматриваются методики ручного сброса, восстановления и проверки настроек протоколов TCP/IP.
  6. Изменились обои и настройки рабочего стола, меню настройки рабочего стола недоступно. Подобные сбои все чаще регистрируется в последние месяцы, что связано с оригинальной методикой демонстрации рекламы — вместо отображения рекламной информации в отдельных окнах современные троянские программы внедряют ее в рабочий стол. В ряде случаев можно восстановить настройки вручную, однако некоторые троянских программы блокируют вызов меню настройки при помощи параметров в ключе реестра Software=>Microsoft=>Windows=>CurrentVersion=>Policies. Для разблокировки меню и сброса настроек можно применить «Восстановление системы» AVZ, где предусмотрена специальная функция «Восстановление настроек рабочего стола».
  7. Нарушилось обновление антивирусных программ, хотя доступ в Интернет работает нормально. В такой ситуации рекомендуется проверить файл Hosts: возможно, в нем появились дополнительные записи. Отследить модифицирующий файл hosts процесс довольно просто при помощи утилиты FileMon. Восстановить файл проще всего вручную — в нем должна быть единственная строка вида «127.0.0.1 localhost». Для редактирования файла Hosts можно воспользоваться программами HiJackFree или HijackThis.

Заключение

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

На нашем CD-ROM вы найдете утилиты для обнаружения вредоносного ПО.

КомпьютерПресс 9’2005

1. Криминалистический анализ реестра операционной системы Windows.

2. РЕЕСТР ОС Windows

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

3.

• Регистрационная база данных (Registration
Database) Windows, в первую очередь
является базой данных параметров
операционной системы, приложений и
драйверов оборудования. Реестр содержит
огромный объем информации, начиная с
параметров учетных записей пользователя
и заканчивая цветами рабочего стола.

4.

• До создания Реестра Microsoft использовала
обычные текстовые файлы для управления
системой. В MS-DOS конфигурация системы
контролировалась двумя следующими
файлами:
• Config.sys содержал конфигурационную
информацию, необходимую для функционирования
MS-DOS. В основном, это были общие параметры
оборудования, используемого различными
приложениями, например работа верхней и нижней
памяти.
• Autoexec.bat был пакетным файлом, служившим
для выполнения процедур автозагрузки.

5. Реестр выполняет следующие основные функции:

Отслеживает все системные устройства и их установки,
включая такие ресурсы, как запросы на прерывания (IRQ) и
номера каналов прямого доступа памяти (DMA).
Работает как база данных, которая унифицирует
функционирование приложений.
Проверяет наличие необходимых драйверов для
инсталируемого оборудования. При добавлении нового
переферийного устройства Диспетчер конфигурации
(Configuration manager) операционной системы помещает
конфигурационные данные устройства в реестр.
Предоставляет системные сервисы, которые необходимы для
работы многих приложений.
Обеспечивает запуск необходимого приложения при щелчке
мышью.
Сохраняет информацию относящуюся к системным правилам,
профилям пользователей и средствам администрирования.

6.

Приложения
MS-DOS
самостоятельно
регулировали все свои параметры и
совместное с другими приложениями
использование таких устройств, как принтер и
звуковая карта.
Параметры хранились в текстовых файлах,
называемых файлами инициализации (.INI).

7.

• Program.ini — содержал параметры Менеджера
программ Windows (Windows Program Manager),
обеспечивающего графический интерфейс
пользователя (graphical user interface — GUI), для
работы в Windows.
• Control.ini — содержал множество
пользовательских настроек Windows, включая
параметры рабочего стола, звука и принтера.
• Win.ini -этот файл содержал информацию о
визуальном оформлении Windows и параметры
установленных приложений.
• System.ini — содержал параметры конфигурации
оборудования и определял, как Windows будет с
ним взаимодействовать.

8.

• С появлением Windows NT на свет появился
новый Реестр. 64 кб ограничение было
снято, и теперь Реестр мог занимать
столько места, сколько ему было необходимо.
• Один файл был заменен несколькими, но
при этом сохранилась единая иерархическая структура, объединяющая вместе
все записи.
• С момента появления Windows NT Реестр
практически не изменился.

9. РЕЕСТР ОС Windows

Реестр Windows 2000, XP, 7, 8 хранится в
следующих файлах:
DEFAULT,
SAM,
(находятся по адресу
SECURITY,
С:\WINDOWS
SOFTWARE,
\System32\Config)
SYSTEM
NTUSER.DAT
(по адресу C:\Documents
andSettings\[Профиль пользователя])

10. Ключи реестра

11. HKEY_CLASSES_ROOT

В основном, HKEY_CLASSES_ROOT (HKCR) обеспечивает совместимость с 16разрядными приложениями Windows. HKCR содержит информацию об
ассоциациях файлов -т.е. какие приложения открывают определенные типы
файлов. Более важным для многих людей является то, что HKCR содержит
определения всех объектов среды Windows ХР. Ключи, контролирующие эти
определения, контролируют информацию о внешнем интерфейсе объекта,
как, например, команды, доступные в контекстном меню данного объекта.
32-битные приложения обращаются к этим данным через их копию в
подключе Software\Classess подкаталога HKEY_LOCAL_MACHINE. На самом
деле — это не совсем копии, а просто информация, хранящаяся в одном кусте,
но рассматриваемая как бы с двух разных точек. Если изменить параметр в
одном месте, то он изменится и в другом.
• В HKCR преобладают два следующих типа ключей:
Ключи расширений файлов названы так же, как и представляемые ими
расширения (.doc, .txt и так далее). Параметры этих ключей определяют,
какие приложения открывают файлы с соответствующим расширением. Эти
ключи могут содержать и подключи, контролирующие дополнительные
функции, такие как список программ меню Открыть с помощью (Open With).
Ключи определения класса содержат информацию об объектах,
соответствующих Общей модели объектов (Component Object Model — COM) модели, позволяющей программистам разрабатывать объекты, доступные
всем СОМ — совместимым приложениям. Технологии Внедрения и связывания
объектов (Object Linking and Embedding — OLE) и ActiveX основаны на COM.

12. HKEY_USERS

Содержит
информацию,
определяемую
пользователем
(например,
пользовательские
настройки рабочего стола): установки по
умолчанию (HKEY_USERS\.DEFAULT) для рабочего
стола, меню Пуск (Start), приложений и т. д.
Когда новый пользователь входит в систему,
установки по умолчанию копируются в отдельный
подраздел, название которого совпадает с именем
пользователя.
Все
изменения,
которые
пользователь в дальнейшем произведёт с этими
установками сохраняются в этом подразделе.

13. HKEY_CURRENT_USER

Пользовательские настройки из HKEY_USERS вступают в силу в процессе входа
пользователя в систему. При этом содержимое подраздела
HKEY_USERS\name, где name — имя текущего пользователя, или подраздела
HKEY_USERS\.DEFAULT копируется в раздел HKEY_CURRENT_USER.
Раздел HKEY_CURRENT_USER содержит несколько подразделов:
AppEvents — содержит пути звуковых файлов, используемых для озвучивания
системных событий.
Control Panel — содержит различные данные, которые могут быть изменены в
панели управления.
Display — содержит пользовательские установки экрана для текущего
пользователя (этот подраздел доступен, только если
разрешены пользовательские профили (user profiles)).
InstallLocationsMRU — содержит пути, использованные в процессе последней
инсталляции.
keyboard layout — содержит информацию о раскладке клавиатуры. Текущая
раскладка клавиатуры устанавливается с использованием пункта Клавиатура
(Keyboard)панели управления.
Network — содержит подразделы, описывающие постоянные и недавно
установленные сетевые соединения, а также состояние сети.
RemoteAccess — необязательный подраздел, доступный только в случае, если
установлен сервис удалённого доступа.
SOFTWARE — содержит пользовательские настройки приложений. Этот раздел
ссылается на раздел HKEY_LOCAL_MACHINE, в которой также хранятся
настройки приложений.

14. HKEY_LOCAL_MACHINE

Этот раздел определяет всю информацию, относящуюся к
локальному компьютеру, такую как драйверы, установленное
программное обеспечение, наименование портов и
конфигураций программного обеспечения. Эта информация
верна для всех пользователей, подключённых к системе.
Состоит из нескольких подразделов:
• Config — хранит конфигурацию компьютера. Содержимое
данного подраздела обновляется в процессе установки и
запуска Windows.
• Enum — Windows использует так называемую шинную
нумерацию (bus enumeration) для учёта всех установленных
компонента оборудования. Данные для этих компонентов
хранятся в этом подразделе и используются для построения
«дерева оборудования» на вкладке Устройства
(Drevices) диалога Система(System), вызываемого из панели
управления.

15. HKEY_LOCAL_MACHINE

• Hardware — содержит установки для последовательных портов
доступных на локальном компьютере. Подраздел Description
содержит записи для устройств в системе.
• Network — когда Windows работает в сети, этот подраздел
содержит регистрационную информацию пользователя (т.е.
имя пользователя, сетевого провайдера, подтверждения
регистрации и т.д.)
• Security — доступен для сетевых машин и содержит информацию
о провайдере безопасности.
• Software — вся информация о программах, установленных на
компьютере. Подраздел \Classes этого раздела используется
для построения раздела HKEY_CLASSES_ROOT.
• System — содержит всю необходимую информацию для запуска
Windows. Здесь содержится подраздел CurrentControlSet, в
котором содержатся подразделы Control и Servicer. Подраздел
Control содержит такую информацию, как имя компьютера,
параметры файловой системы и т.д.

16. HKEY_CURRENT_CONFIG

• Этот ключ отвечает за устройство Plug&Play
и содержит информацию о текущей
конфигурации компьютера с переменным
составом аппаратных средств. Установки
этого раздела, соответствуют
конфигурационным установкам,
хранящимся в разделе
HKEY_LOCAL_MACHINE\Config

17.

• Hardware — соответствует подключу
HKLM\Hardware. Данный параметр не имеет
своего значения, так как информация об
оборудовании не хранится на диске.
• SAM-соответствует подключу HKLM\SAM.
• Security — соответствует подключу HKLM\SECURITY.
• Software — соответствует подключу
HKLM\Software.
• System — соответствует подключу HKLM\System.
• Default — соответствует подключу HKU\Default.

18.

Таблица 1 Ключи
Реестра и файлы
хранения.
Куст реестра
Файлы
HKEY_LOCAL_MA
CHI N E\SAM
Sam, Sam.log, Sam.sav
HKEY_LOCAL_MA
CH!NE\Security
Security, Security.log, Security.sav
HKEY_LOCAL_MA
CHINE\Software
Software, Software.log, Software.sav
HKEY_LOCAL_MA
CHINE\System
System, System.alt, System.log, System.sav
HKEY_CURRENT_C
ONFIG
System, System.alt, System.log, System.sav
HKEY_CURRENT_
USER
Ntuser.dat, Ntuser.dat.log
HKEY_USERS\.
DEFAULT
Default, Default.log, Default.sav

19. Работа с реестром

• при обычной работе
программа REGEDIT
• при исследовании отдельного накопителя
программа MiTEC Windows
Registry Recovery

20. MiTEC Windows Registry Recovery

21. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders

данные реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders

22. Изменения в реестре

Монитор реестра (RegMon)

23. Криминалистически значимые области реестра

1. Блокировка/разблокировка записи
через порты USB

24.

Если раздела StorageDevicePolicies в
резделе Control нет, то его необходимо
создать.
Далее создаём параметр WriteProtect,
тип dword
При значении параметра WriteProtect :
1 — режим чтения (readonly)
0 — режим записи

25. 2. Запрет на использование USB накопителя

При значении параметра Start :
4 — блокировка USB накопителя
3 — стандартный режим (без блокировок)

26. 3. Подключенные через USB накопители

27. 4. Устройства USB

Сведения об устройстве по VID и PID на сайтах:
— flashboot.ru
— driverslab.ru

28. driverslab.ru

29. 5. ВременнЫе метки

• Все ключи реестра содержат временную метку
(timestamp, last write value), аналогично дате
последнего изменения для файлов.
• Это значение хранится в структуре FILETIME и
показывает дату и время того, когда ключ реестра
был изменен. Это значение обновляется, когда
ключ был создан, изменен или удален.
Временная метка есть только у ключей реестра,
значения реестра такого поля не содержат.

30. Обнаружение метки

31. Экспорт

Экспортируем ключ реестра
в файл формата *.txt

32. 6. Иные сведения

Параметр
Путь к ключу
Название ключа
Имя компьютера
\ControlSet00X\Control\Co
mputerName\Computer
Name
LENOVO-PC
Время последнего
выключения компьютера
\ControlSet00X\Control\
Windows
ShutdownTime
Сетевые шары
\ControlSet00X\Services\
LanmanServer\Shares
Сетевые адаптеры, и их
параметры
\ControlSet00X\Services\Tc
pip\Parameters\Interfaces
Разрешение входящих
подключений по
протоколу RDP
\ControlSet00X\Control\Ter
minal Server

33.

Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM
Настройки времени (текущий часовой пояс)
\ControlSet00X\Control\TimeZoneInformation
33

34.

Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM
Запрет на входящие подключения по протоколу RDP
\ControlSet00X\Control\Terminal Server
34

35.

Раздел реестра HKEY_LOCAL_MACHINE\SYSTEM
Сетевые настройки
\ControlSet00X\Services\Tcpip\Parameters\Interfaces
35

36.

Раздел HKEY_LOCAL_MACHINE\SOFTWARE
Полный путь к ключу
Название ключа
Сведения об установленном ПО
\Microsoft\Windows NT\CurrentVersion\Uninstall

Сведения об установленной ОС
\Microsoft\Windows NT\CurrentVersion
36

37.

Сведения об установленной ОС
\Microsoft\Windows NT\CurrentVersion

38.

Сведения об установленной ОС
\Microsoft\Windows NT\CurrentVersion

39.

Сведения об установленном ПО
Раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE
\Microsoft\Windows NT\CurrentVersion\Uninstall
39

40.

Сведения о об учетных записях в ОС
Раздел реестра HKEY_LOCAL_MACHINE\SAM
40

41.

Сведения о об учетных записях в ОС
Раздел реестра HKEY_LOCAL_MACHINE\SAM

42.

HKEY_CURRENT_USER\Software\Microsoft\
Windows\CurrentVersion\Explorer\RunMRU
Содержит до 26 записей
командной строки

ОРГАНИЗАЦИОННЫЕ И ОБЩЕТЕОРЕТИЧЕСКИЕ ВОПРОСЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ

УДК 351:340.6

НЕКОТОРЫЕ ОСОБЕННОСТИ СУДЕБНО-ЭКСПЕРТНОГО ИССЛЕДОВАНИЯ РЕЕСТРА WINDOWS

SOME ASPECTS OF FORENSIC ANALYSIS OF THE WINDOWS REGISTRY

Гортинский Алексей Владимирович

Gortinsky Alexey Vladimirovich

кандидат юридических наук, доцент кафедры ТОКБиК, Саратовский государственный университет им. Н.Г. Чернышевского, Саратов

Cand.Sc.(Law), associate professor of the department of theory of computer security and cryptography, Saratov State University, Saratov

e-mail: [email protected]

Мордвинкин Михаил Михайлович

Mordvinkin Mikhail Mikhailovich

выпускник кафедры ТОКБиК Саратовского государственного университета им. Н.Г. Чернышевского, Саратов

graduate student of the department of theory of computer security and cryptography, Saratov State University, Saratov

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

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

The authors analyze the structure of the Windows Registry and consider its various aspects such as recovery of deleted records, reading timestamps for some iorensically important registry keys, obtaining relevant information

about events contained in various branches of the registry. A brief description of a specialized program designed for forensic analysis of the Windows Registry is given.

Keywords: forensic computer analysis, registry, recovery of deleted information, establishing the circumstances of event, timestamp.

Совершение правонарушений с использованием современных информационных технологий в наше время стало достаточно распространенным явлением. Компьютер — одно из самых распространенных средств совершения опасных и латентных преступлений. Как известно, механизм совершения преступлений, использующих компьютерные технологии, предполагает внесение изменений в информационную среду компьютерных систем. Данные изменения и являются следами совершения преступлений [и]. Однако в силу своей специфичности следы в информационной среде могут быть исследованы только специалистом, экспертом в области компьютерных информационных технологий.

Изучение следов в компьютерных устройствах связано с получением служебной информации, которая указывает на обстоятельства совершения преступлений [ю]. К такого рода информации относятся данные, хранящиеся в системном реестре Windows. Как показывает экспертная практика, системный реестр часто используется для решения таких задач, как определение факта использования зарегистрированным пользователем какой-либо программы, устройства внешней памяти и его содержимого, средств сетевой связи, времени инициализации и длительности этих событий. Без исследования реестра исследование информационной среды компьютера нельзя считать полным и объективным, поскольку значительная часть других областей следообразования имеет достаточно простую структуру и могут подвергаться корректировке со стороны злоумышленника.

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

с целью получения объективной информации о событиях в системе.

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

Краткое описание структуры реестра

Физически Windows организует реестр в виде кустов или ульев («hive» — англ.), хранящихся в двоичных файлах. Кроме того, для каждого улья ОС создает дополнительные файлы, которые содержат резервные копии улья.

Физически ульи существуют только в двух корневых ключах: HKLM и HKU. Остальные являются ссылками на подключи этих двух корневых ключей.

Список загруженных ульев находится в раз-делереестраНКЬМ\8У8ТЕМ\Сиггеп1:Соп1:го18еД Control\hivelist. Можно заметить, что в этом ключе записаны значения с названиями двух видов: \REGISTRY\MACHINE\* и \REGISTRY\ USER\». Первая группа относится к ульям HKLM, а вторая — к ульям HKU. Значения обеих групп имеют строковый тип и содержат путь до файла улья вида \Device\HarddiskVolumeN\*, где \Device\HarddiskVolumeN обозначает логический раздел диска.

Ульи HKLM содержатся в файлах вида %SystemRoot%\System32\config\*. Расположение файлов улья HKLM можно наглядно увидеть в табл. 1. [12].

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

Таблица 1

Название Файл

\REGISTRY\MACHINE\HARDWARE

\REGISTRY\MACHINE\SAM 96SystemRoot96\System32\config\sam

\REGISTRY\MACHINE\SECURITY 96SystemRoot96\System32\config\security

\REGISTRY\MACHINE\SOFTWARE % SystemRoot96 \Systen13 2 \config\software

\REGISTRY\MACHINE\SYSTEM % SystemRoot96 \Systen13 2 \config\system

при запуске операционной системы и не сохраняется после выключения. Сама конфигурация оборудования (профили) хранится в другом месте, а именно в одном из ключей HKLM\ SYSTEM\CurrentControlNNN\Enum.

SAM и SECURITY содержат базу данных локальной безопасности, в первом ключе хранятся локальные пользователи и группы, во втором — прочие установки безопасности.

SOFTWARE содержит настройки прикладных приложений (и некоторые системные). Чаще всего данные хранятся в ключах с путем следующего вида: HKLM\SOFTWARE\ VendorName\ ProgramName\Version.

В SYSTEM хранятся системные настройки, в ключах вида HKLM\SYSTEM\ControlSetNNN хранятся настройки различных конфигураций. Чаще всего в системах присутствуют 2 конфигурации (текущая и последняя успешная), однако всего может быть до четырех конфигураций. HKLM\SYSTEM\CurrentControlSet является ссылкой на один из профилей, а содержимое ключа HKLM\SYSTEM\Select указывает на то, какой из профилей является текущим.

Ульи HKU хранятся в файлах ntuser.dat и UsrClass.dat, расположенных в разных местах. Стоит заметить, что расположение файлов различное в разных версиях Windows. В табл. 2 находится информация для системы Windows [12].

.DEFAULT содержит настройки пользователя, которые Windows применяет еще до входа какого-либо пользователя в систему.

S-1-5-19 (20) являются SID для учетных записей LocalService и NetworkService, нужны для запуска служб с правами данных учетных записей.

SID содержит различные пользовательские настройки, a SID_Classes регистрацию классов и ассоциацию файлов.

Логическая структура реестра похожа на структуру файловой системы. Реестр состоит из «ключей» (аналоги каталогов в файловых системах), при этом ключи могут быть вложены друг в друга. В ключах находятся «значения» (аналоги файлов), каждое из которых обладает следующими параметрами: именем (до 512 символов ANSI или до 256 символов UNICODE, за исключением символов (\),

(?), («‘)), типом (например, числовой тип «REG_DWORD»; типы данных будут описаны позже) и содержащимися в значении данными.

В «корне» реестра находятся несколько корневых ключей, некоторые из которых являются ссылками на другие места в реестре.

Корневые ключи реестра:

— HKEY_CLASSES_ROOT (HKCR) содержит информацию о всех расширениях файлов, зарегистрированных в системе, и о классах объектов СОМ. Является объединением ключей HKLM\Software\Classes и HKCU\Software\Classes, причем более высокий приоритет имеет значение, записанное в последнем ключе (то есть если в обоих ключах есть одинаковые значения, то в HKCR записывается значение из HKCU\Software\Classes) [5];

— HKEY_CURRENT_USER (HKCU) содержит параметры принтеров, ПО, раскладок клавиатуры и других настроек для пользователя, вошедшего в систему. Является ссылкой на HKU\ SID вошедшего пользователя;

— HKEY_LOCAL_MACHINE (HKLM) содержит настройки компьютера, общие для всех пользователей: настройки аппаратного и программного обеспечения, настройки безопасности, настройки системы;

— HKEY_USERS (HKU) содержит настройки пользователей. В данном ключе содержится минимум 5 подключей: настройки до входа под какой-то учетной записью (.DEFAULT), учетная запись LocalSystem (S-1-5-18), LocalService (S-1-5-19), NetworkService (S-1-5-20) и Administrator;

— HKEY_CURRENT_CONFIG (HKCC) является ссылкой на ключ HKLM\SYSTEM\ CurrentControlSet\Hardware Profiles\Current. Содержит конфигурационные данные текущего профиля оборудования.

Каждое значение в реестре имеет свой тип данных. Наиболее часто используемые типы данных описаны ниже (полный список дан в приложении А):

— REG_BINARY — двоичные данные, чаще всего отображаемые в шестнадцатеричном виде (пример: «0x40 75 13»);

— REG_DWORD — 32-х разрядное целое число. Этот тип может использоваться в качестве логических флагов (пример: «OXI52DADBF»);

Таблица 2

Название Файл

\REGISTRY\USER\.DEFAULT 96SystemRoot96\System32\config\default

\REGISTRY\USER\S-l-5-i9 96SystemRoot96\ServiceProfiles\LocalService\ntuser.dat

\REGISTRY\USER\S-l-5-20 96SystemRoot96\ServiceProfiles\NetworkService\ntuser.dat

\REGISTRY\USER\SID 96UserProfile96\ntuser.dat

\REGISTRY\USER\SID_Classes 96UserProfile96\AppData\Local\Microsoft\Wmdows\UsrClass.dat

— REG_SZ — строковый параметр (пример: «C:\ProgramData»);

— REG_MULTI_SZ — мультистроковый параметр;

— REG_EXPAND_SZ — расширяемый строковый параметр. Может включать переменные окружения вроде %WINDIR%.

Формат хранения данных реестра в файлах реестра.

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

Внутри блока находятся ячейки, или соты (cell). Ячейка состоит из четырехбайтного заголовка и имеет длину, кратную 8 байтам. Ячейки могут быть различных типов: ячейка раздела (NK), значения (VK), списка значений, списка подразделов и ячейка дескриптора защиты (SK). Полный список типов ячеек указан в табл. 3.

Как видно из рис. 1, в улье есть базовый ключ (Root). Root ссылается на ячейку списка значений и ячейку списка подключей. Список значений содержит ссылки на значения Vail и Val2, а список содержит ссылку на ключ SubKey. Стоит учесть, что на рисунке не показаны ячейки дескриптора защиты.

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

Удаление и восстановление записей в реестре

Удаление записей

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

При удалении ключа указатели на листы подключей и дескриптор безопасности затирается (перезаписывается значением oxFFFFFFFF)

Таблица 3

Типы ячеек

Тип ячейки Описание

Ячейка раздела (key cell) — NK Включает временную метку последнего обновления, сигнатуру (кп -ключ, И — ссылка), название, индекс родительской ячейки, индекс ячейки списка подразделов и значений, индекс ячейки дескриптора защиты

Ячейка значения (value cell) -VK Включает сигнатуру (к\), тип значения, название и индекс ячейки, содержащей данные

Ячейка списка подразделов (subkey-list cell) Состоит из списка индексов для ячеек разделов, являющихся подразделами данного раздела

Ячейка списка значений (subvalue-list cell) Состоит из списка индексов ячеек значений, находящихся в данном разделе

Ячейка дескриптора защиты (security-descriptor cell) — SK Включает сигнатуру (кэ) и счетчик ссылок, регистрирующий число узлов разделов, использующих этот дескриптор

Границы блока

1

Базовый блок

Пустой приемник

Root

Vail

Sub Key

Vat 2

V

Приемник 1

□ Ячейка ключа Приемник 2

I 1 Ячейка значения □ Ячейка списка подключен

Н Ячейчка списка значений □ Свободное пространство

Рис. 1. Пример улья, состоящего из 1 ключа, 1 подключа и двух значений

и количество подключен устанавливается равным нулю. Сами ячейки подключей не перезаписываются и не повреждаются.

При удалении подключа его индекс удаляется из списка подключей родителя, и список перезаписывается в соответствующую ячейку. Размер ячейки со списком подключей при этом не меняет свой размер. Пусть у нас есть 4 подключа А, В, С, Б, и мы удаляем последовательно ключи В, Б, А. Тогда удаление подключей в списке будет происходить образом, показанным на рис. 2.

А Б с D

А С D D

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

А С D D

С С D D

Исходное состояние

После удаления В

После удаления D

После удаления А

Рис. 2. Процесс удаления указателей из ячейки списка подключей

Значение удаляется аналогично: из ячейки, содержащей список значений, удаляется соответствующий индекс, и в ячейку помещается получившийся список.

Что самое важное, в большинстве случаев ячейка значений и связанная с ней ячейка данных не изменяются при удалении, за исключением Windows 2000, где первые 4 байта этих ячеек заменяются на oxFFFFFFFF; это делает невозможным чтение названия и сигнатуры. Подобное поведение замечено лишь в Windows 2000, что можно списать на ошибку в этой ОС.

Ячейка дескриптора защиты удаляется, только если все ссылающиеся на нее ячейки удалены или перенаправлены на другие дескрипторы защиты.

В результате операций с ячейками возникает ситуация, схожая с фрагментацией диска: пустые приемники находятся вперемешку с непустыми. Если встречается два пустых приемника подряд, то Диспетчер объединяет их в один как можно большего размера. Если пустые преемники находятся в конце, то Диспетчер уплотняет улей [3].

Алгоритм чтения удаленной информации следует составлять с учетом особенностей удаления информации в реестре.

Восстановление записи ключа

Создаем временную запись ключа, содержащую смещение.

Добавляем в улей запись из п. 1.

Пытаемся считать параметры ключа. Ячейка ключа не содержит контрольной суммы, так

что невозможно точно сказать, повреждена ячейка или нет; некоторые приемы проверки описаны в разделе 2.2.3.

Рекурсивно считываем родительскую запись ключа. Необходимо выйти из рекурсии, если:

• достигнут ключ, который не является удаленным (дальше по иерархии передвигаться смысла нет, так как по общей логике программы до запуска отображения удаленных данных запускается считывание активных данных);

• запись-предок не является ключом. Рекурсивно считываем подключи и значения.

Если выполнение было завершено с ошибкой, то удаляем из улья добавленную в п. 2 запись, иначе добавляем в ключ-предок запись о том, что текущий ключ является под ключом.

Восстановление записи знамения

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

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

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

Исследование данных реестра

Использование временных меток ключей

Все ключи реестра содержат временную метку (timestamp, last write value), похожую на дату последнего изменения для файлов. Это значение хранится в структуре FILETIME и показывает дату и время того, когда ключ реестра был изменен. Это значение обновляется, когда ключ был создан, изменен или удален. Временная метка есть только у ключей реестра, значения реестра такого поля не содержат.

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

В большинстве случаев временные метки являются единственным указателем на дату и время какого-либо события, например, подключения USB-носителя. Кроме этого, временные метки ключей позволяют построить временную линию событий путем анализа временных меток в различных разделах реестра. Информация о системе В значениях ключа «SOFTWARE\Microsoft\ Windows NT\CurrentVersion» хранятся различные параметры операционной системы: версия, издание, номер сборки, информация о сервис-паке и так далее. Кроме того, в этом разделе хранится регистрационная информация, что может быть полезно при анализе случаев нелицензионного использования ПО.

Получение информации о подключаемых USB-устройствах

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

Когда съемное USB-устройство (например, флэш-накопитель) подключается к ПК, информация о нем будет сохранена в разделе HKLM > System > ControlSetoox > ENUM > USBSTOR.

В этой ветке реестра создаются ключи, каждый из которых представляет свой класс устройств. Имя ключа задается в следующем формате [l]:

Type&Ven_{vendor}&Prod_{product}&Rev_ {rev}.

В этих ключах создаются подключи, представляющие экземпляр устройства. В качестве имени подключа используется серийный номер устройства.

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

Особенности получения временных меток После получения базовой информации об устройстве необходимо определить дату и время первого и последнего подключения устройства. Реестр не хранит информацию о первом подключении (она хранится в файле C:\Windows\inf\setupapi.dev.log).

Информацию о последнем подключении устройства нельзя брать из временной метки соответствующей устройству записи ключа,

так как временные метки всех ключей из раздела «SYSTEM\ControlSetoox\ENUM\USBSTOR» периодически обновляются текущей датой (это происходит из-за существования нескольких конфигураций — текущей, последней удачной — и их синхронизации).

Для получения времени последнего подключения USB-устройства следует взять временную метку одного из подключей ключа SYSTEM\ControlSetoox \Control\DeviceClasses\ {53f56307-b6bf-iido-94f2-ooaoc9iefb8b}\.

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

Установлено, что система хранит полный список USB-устройств, когда-либо подключавшихся к системе.

Получение информации о подключавшихся сетевых картах

Результат анализа списка сетевых карт может использоваться экспертом как доказательство использования внешней сетевой карты (или устройства, исполняющего роль внешней сетевой карты) или доказательство использования виртуальных машин.

При подключении новой сетевой карты система сохраняет данные в раздел SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Network Cards.

Внутри этого раздела находятся подключи, каждый из которых хранит информацию по отдельной сетевой карте. Эти ключи не обновляются, соответственно, можно воспользоваться их временной меткой для выяснения даты установки сетевой карты [2].

Дополнительная информация может быть найдена в следующем ключе улья SYSTEM: SYSTEM\ Control Set о ox\Control\Class\ {4D36E972-E325-nCE-BFCi-08002bEi03i8}\ {oonn}, где {oonn} — имя соответствующего ключа из прошлого раздела.

Установлено, что система хранит полный список сетевых карт, когда-либо используемых системой.

Информация о сетевом окружении

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

Это установленные сетевые карты, сети, к которым подключалась машина, и, что самое важное, список беспроводных сетей. Известно много случаев использования анонимных беспроводных сетей для совершения противоправных действий.

Информация о сетевых интерфейсах хранится в следующем разделе реестра: SYSTEM\

ControlSetoox\Services\Tcpip\Parameters\ Interfaces.

Данный раздел содержит ключи, в качестве имени ключа используется GUID. В ключе содержится множество значений, описывающих параметры сетевого интерфейса: параметры DHCP, IP адрес, шлюз по умолчанию и так далее.

По GUID можно получить имя сети из раздела SYSTEM\ControlSetoox\Control\Network\ {4D36E972-E325-nCE-BFCi-08002BEi03i8}\ {GUID}.

Беспроводные сета

Для любой беспроводной сети, к которой было произведено подключение, создается запись в разделе SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Wireless.

Этот ключ лишь содержит список идентификаторов беспроводных сетей [9]; подробная информация может быть получена путем связывания этих идентификаторов с сигнатурами из раздела SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\ Unmanaged.

После этого необходимо связать сигнатуру и профилем, находящиеся в записи значения ProfileGuid. Для этого необходимо выбрать данные из записи ключа SOFTWARE\ MicrosoftYWindows NT\CurrentVersion\

NetworkList\Profiles\{ProfileGuid}.

Итоговые данные содержат следующую важную информацию:

• дата создания;

• дата последнего подключения;

• имя профиля;

• MAC шлюза по умолчанию (default gateway).

ОС хранит полный список беспроводных сетей, сигнатур и профилей (если пользователь не удаляет данные вручную).

Интранет-сети

Анализ интранет-сетей во многом похож на анализ беспроводных сетей. Для анализа интранет-сетей необходимо обратиться к разделу SOFTWARE\Microsoft\Windows NT\ CurrentVersion\NetworkList\Nla\Cache\ Intranet.

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

Информация о пользовательской активности

Microsoft сохраняет списки пользовательской активности именно в реестре.

Такие списки пользовательской активности получили название «Списки недавно используемых элементов» (Most Recently Used lists -в дальнейшем MRU списки). MRU списки

играют в расследовании инцидентов важную роль, и могут предоставить эксперту косвенное доказательство действий возможного злоумышленника или дать направление дальнейшего анализа.

В реестре Windows большинство пользовательских действий сохраняются в ульях NTUDSER.dat, для каждого пользователя создается свой улей.

Информация о запуске GUI-приложений через проводник Windows хранится в разделе [7] NTUSER.dat\Software\Microsoft\Windows\ CurrentVersion\Explorer\UserAssist\{GUID}\ Count.

Для ОС Windows 7/8 значение {GUID} может быть одним из двух:

• в разделе {CEBFF5CD-ACE2-4F4F-9178-992ôF4i749EA}\Count содержится информация по исполняемым приложениям;

• в разделе {F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count содержится информация по открываемым ярлыкам.

Для каждого запускаемого приложения / открываемого ярлыка создается запись значения, имя которого кодируется алгоритмом ROT-13 [6], а данные представляют собой двоичные данные размера 72 байта.

Информация о недавно открытых документах хранится в разделе реестра HKCU\Software\ Microsoft\Windows\CurrentVersion\Explorer\ RecentDoc.

Данный раздел реестра содержит подключи с именем, эквивалентным расширению открытого файла (например, .doc, .gif; также есть специальный ключ с именем Folder, в котором хранится информация о каталогах) [2]. Внутри каждого ключа хранится до десяти (это значение по умолчанию, оно может быть изменено [4]) значений с именем, равным числу от о до 9.

Кроме этого, до 150 записей значений (которые описывают последние открытые документы без группировки по расширению, далее «общий список») хранятся внутри коревого ключа HKCU\Software\Microsoft\Windows\ CurrentVersion\Explorer\RecentDoc.

Данные ячейки значения представляют собой строки, закодированные в двоичном формате. Сначала идет имя открытого файла в кодировке Unicode, затем имя открытого файла в кодировке UTF-8, затем опять имя файла в кодировке Unicode с небольшими изменениями в имени файла (добавляется .Ink в конце). К сожалению, каталог, в котором хранится файл, не сохраняется.

Особенности восстановления временной метки

Известно, что ячейки значения не хранят в себе временную метку, значит для каждого

расширения можно узнать лишь время открытия последнего файла с данным расширением. Это ограничение можно обойти, воспользовавшись «общим списком».

Расставим «контрольные точки», взяв первые объекты из «общего списка» с еще не встречавшимся расширением. Сопоставим этим объектам временные метки, взятые из записи ключа с именем, равным расширению объекта.

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

Приложение операционной системы «Выполнить» сохраняет до 26 выполненных команд в ключе [2] HKCU\Software\Microsoft\ Windows\CurrentVersion\Explorer\RunMRU.

В данном ключе хранится до 26 значений с названиями от ‘а’ до ‘z’ и одно значение с названием MRUList. Все значения ‘а’ … ‘z’ имеют строковый тип (REG_SZ) и в качестве значения содержат последнюю выполненную команду.

MRUList является строкой-перестановкой букв английского алфавита и задает порядок, в котором будет отображен список последних выполненных команд (и, соответственно, порядок их выполнения пользователем).

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

Большинство приложений хранит отдельные MRU списки для разных пользователей, следовательно, для первичного поиска можно использовать следующий шаблон: NTUSER. dat\Software\{vendor}\{application}\{version}.

Пакет Microsoft Office

Исследования показали, что Microsoft Office 2013 хранит до 50-и последних открытых файлов в значениях ключа HKCU\ Software\Microsoft\Office\{version}\{product}\ File MRU.

Из-за особенностей структуры хранения получение данных из удаленных структур невозможно.

Acrobat Reader

Приложение Acrobat Reader хранит список последних открытых файлов в подключах раздела NTUSER.dat\Software\Adobe\Acrobat Reader\{version} \AVGeneral\cRecentFiles. Значения внутри этих подключей описывают последний открытый документ.

В некоторых случаях исследователю может понадобится информация об удаленных компьютерах, к которым подключалась исследуемая система через протокол Remote Desktop Protocol. Приложение Remote Desktop Connection (mstsc.exe) хранит полный список серверов, к которым производилось подключение, в разделе NTUSER.dat\Software\ Microsoft\Terminal Server Client\Servers.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Однако эта информация не является списком последних используемых объектов как таковым; для получения этой информации (ю последних подключений) нужно воспользоваться разделом [2] NTUSER.dat\Software\ Microsoft\Terminal Server Client\Default.

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

К сожалению, этой информации недостаточно для того, чтобы определить время первого или последнего подключения, а также длительность или количество подключений.

Запущенные приложения сохраняются в кэше многоязычного пользовательского интерфейса (Multilingual User Interface Cache) -технологии Microsoft, которая позволяет приложениям использовать различные языки интерфейса в одной системе.

Необходимая информация хранится в значениях ключа [8] USRCLASS.dat\Local Settings\ Software\Microsoft\Windows\Shell\MuiCache.

Использование данных, полученных из реестра Windows, при расследовании событий

На кафедре ТОКБиК факультета КНиИТ Саратовского государственного университета им. Н.Г. Чернышевского в качестве дипломного

Terminal Server Client Default LocalDevices Servers

109.73,41,90 192.168.50.168 dev-ext

Name *b (Default)

M RUO ab M RUI

Type REG_SZ REG_SZ REG_SZ REG_SZ REG»

Рис. 3. Сопоставление списка серверов К1 )Р и списка последних подключений

Data

(value not set) devpc2.tui,local srv_pr¡ce7.tu¡. local EPRUSARW0701 109.73.41,90:4373

проекта (выпускной квалификационной работы) разработана программа, позволяющая интегрировать различные данные, получаемые из реестра Windows и восстанавливать информацию о некоторых утраченных структурах ОС и файловой системы.

Список когда-либо запущенных программ можно получить из нескольких источников, проведя предварительную обработку данных и объединив результаты.

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

В табл. 4 показано соответствие возможной информации об исполняемых файлах и источников данных. Можно заметить, что информация во многих источниках дублируется; подобная избыточность полезна при исследовании в случаях намеренного редактирования данных в реестре с целью сокрытия следов.

При объединении результатов в качестве ключа имеет смысл взять имя исполняемого файла и в дальнейшем заполнять различные параметры этого исполняемого файла, такие как время последнего запуска, путь и так далее.

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

Из табл. 4 видно, что в списках автозагрузки, кэше MUI, списке выполненных команд, а также ряде других источников содержится информация о пути до запущенного исполняемого файла.

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

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

Данная программ позволяет получить и исходную, часто трудно доступную, информацию из реестра:

— об удаленных данных;

— о подключаемых устройствах;

— об использовании приложений и файлов данных;

Таблица 4

Источники данных для получения списка программ

UserAssist Список автозагрузки Кэш MUI Выполненные команды Установленные приложения Кэш совместимости приложений Shellbags MRU список диалоговых окон

Название приложения X X

Имя файла X X X X X X

Путь до файла X X X X/- X/- X X X

Время фокуса на приложении X

Время последнего запуска X

Присутствие в списке автозагрузки X

Параметры запуска X X

Версия X

Дата установки X X

— о сетевой активности;

— об использовании диалоговых окон;

— об удаленных подключениях;

— о совместимых программах. В том числе и информацию о месте и времени событий, зафиксированных в реестре.

Библиографический список (References)

1. Jones A. Forensic Analysis of the Windows 7 Registry / A. Jones, K. Alghafli, T. Martin. URL: http://ro.ecu. edu.au/cgi/viewcontent.cgi?article=l07l&context=adf (date of access 13 ЛО.2014).

2. Carvey H. (2011) Windows Registry Forensics: Advanced digital forensic analysis of the Windows Registry // Elsevier. 206 p.

3. Inside the registry // Microsoft TechNet. URL: http://technet.microsoft.com/en-us/hbrary/cc750583.aspx (date of access 17.09.2014).

4. Maximum number of recent documents // Microsoft Technet. URL: http://teclmet.microsoft.com/en-us/ library/cc975956.aspx (date of access 20.10.2014).

5. Predefined Keys // MSDN. URL: http://msdn.microsoft.com/en-us/hbrary/ms724836.aspx (date of access 11.09.2014).

6. ROT13 // Wikipedia. URL: http://en.wikipedia.0rg/wiki/ROTi3 (date of access 10.09.2014).

7. SANS Forensic Artifact 6: UserAssist // SANS Digital Forensics and Incident Response. URL: http://sploited. blogspot.ru/20i2/i2/sans-forensic-artifact-6-userassist.html (date of access 13.10.2014).

8. Windows Artifact Analysis: Evidence of… // SANS Digital Forensics and Incident Response. URL: https:// blogs.sans.org/computer-forensics/files/20i2/06/SANS-Digital-Forensics-and-Incident-Response-Poster-20i2.pdf (date of access 20.10.2014).

9. Wireless Networks and the Windows Registry — Just where has your computer been? // SANS Institute. URL: http://www.sans.org/reading-room/whitepapers/forensics/wireless-networks-windows-registry-computer-been-33659 (date of access 27.09.2014).

10. Гортинский A.B. О природе следов в информационной среде компьютерных систем // Проблемы системных исследований в криминалистике и судебной экспертизе : конф. 4-5.12.06 МГУ им. Ломоносова : сб. тезисов. М.: МАКС Пресс, 2006.

Gortiiiskiy A.V. (2006) О prirode sledov v informatsionnoy srede komp’yuternykh sistem [On the nature of information trails in computer systems]// Problemy sistenmykh issledovaniy v kriminalistike i sudebnoy ekspertize [Problems of System Research in Criminology and Forensic Studies] : konf. 4-5.12.06 MGU im. Lomonosova : sb. tezisov. Moscow: MAKS Press.

11. Гортинский A.B. Общие вопросы следообразования в информационных компонентах компьютерных систем // Противодействие современной преступности: оценка эффективности уголовной политики и качества уголовного закона : сб. науч. трудов / под ред. Н.А. Лопашенко. Саратов : Саратовский центр по исследованию проблем организованной преступности и коррупции : Сателлит, 2010.

Gortiiiskiy A.V. (2010) Obshchiye voprosy sledoobrazovaniya v informatsionnykh komponentakh komp’yuternykh sistem [General issues of tracing evidence in informational components of computer systems]// Protivodeystviye sovremennoy prestupnosti: otsenka effektivnosti ugolovnoy politiki i kachestva ugolovnogo zakona : cb. nauch. trudov / pod red. N.A. Lopashenko [Countering modern crime: Assessing the effectiveness of criminal policy and quality of criminal law: Collection of papers ed. by O.N. Lopashenko]. Saratov : Saratovskiy tsentr po issledovaniyu problem organizovannoy prestupnosti i korruptsii: Satellit.

12. Руссинович M., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000. Мастер-класс / пер. с англ. 4-е изд. М.: Русская редакция ; СПб.: Питер, 2005. 992 с.

Russiiiovich М., Solomon D. (2005) Vnutrenneye ustroystvo Microsoft Windows: Windows Server 2003, Windows XP i Windows 2000. Master-klass / per. s angl. 4-ye izd [Microsoft Windows Internals: Windows Server 2003, Windows XP and Windows 2000]. Moscow: Russkaya redaktsiya; St Petersburg: Piter, 992 p.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Net err cert date invalid windows xp
  • Как активировать локального администратора windows 10
  • Nokia lumia 520 driver windows
  • Ошибка 1719 windows installer service could not be accessed
  • Исключить папку из окон защитник сканирования windows 10