Уроки форензики. Большой гид по артефактам Windows

Содержание статьи

  • Получаем побитовую копию диска
  • Монтируем образ
  • Сканируем файловую систему
  • Получаем основную информацию о системе
  • Ищем закрепление в системе
  • WMI Persistence (Т1546.003)
  • Ключи запуска в реестре и папка автозагрузки (T1547.001)
  • Сценарий входа в систему Windows (T1037.001)
  • Службы Windows (T1574.011)
  • Планировщик задач (T1053.005)
  • Задания BITS (T1197)
  • Собираем информацию об исполняемых программах
  • Prefetch
  • Amcache
  • Shimcache
  • UserAssist
  • Извлекаем временные метки и делаем таймлайн событий
  • Анализируем события Windows
  • Действия пользователей
  • Выводы

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

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

Я буду исполь­зовать сле­дующие средс­тва:

  • R-Studio — ути­лита для вос­ста­нов­ления дан­ных.
  • FTK Imager — инс­тру­мент для ана­лиза и получе­ния обра­зов дис­ка.
  • Ути­литы NirSoft для Windows.
  • Ути­литы Eric Zimmerman для ана­лиза арте­фак­тов Windows.
  •  

    Получаем побитовую копию диска

    По­лучить дамп дис­ка прос­то: заг­ружа­емся с Live-обра­за Kali Linux в режиме Forensics и исполь­зуем ути­литу dd. Либо мож­но вытащить диск из сис­темни­ка, под­клю­чить к ап­парат­ному бло­кира­тору и снять образ с помощью инс­тру­мен­тов R-Studio, FTK Imager, Encase или им подоб­ных. Иног­да дос­таточ­но на живой сис­теме запус­тить пор­табель­ные ути­литы и получить образ дис­ка либо исполь­зовать сбор­щики Kape или FastIR Collector, которые соберут арте­фак­ты в авто­мати­чес­ком режиме.

    В R-Studio получе­ние обра­за будет выг­лядеть так. Запус­каем ути­литу, выбира­ем диск и перехо­дим на вклад­ку «Соз­дать образ».

    Соз­дание обра­за дис­ка

    Сжа­тый образ ска­ниру­ет толь­ко занятые учас­тки памяти и копиру­ет их, а если выб­рать нес­жатый образ — получит­ся пол­ная копия дис­ка. При вос­ста­нов­лении уда­лен­ных фай­лов луч­ше исполь­зовать нес­жатый образ.

     

    Монтируем образ

    Пер­вым делом мон­тиру­ем образ дис­ка. Для это­го хороша ути­лита Mount Image Pro, либо можешь гля­нуть FTK Imager.

    Мон­тирова­ние в FTK

    На­жима­ем на зна­чок Image Mounting, ука­зыва­ем путь к фай­лу обра­за, в Mount Method выбира­ем мон­тирова­ние на запись.

    Мон­тирова­ние обра­за

    Да­лее нажима­ем Mount, и диск появит­ся в фай­ловой сис­теме.

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

    Со­дер­жимое R-Studio 

    Сканируем файловую систему

    Преж­де чем ана­лизи­ровать арте­фак­ты, полез­но про­верить, нет ли в фай­ловой сис­теме подоз­ритель­ных фай­лов. Ска­ниро­вать мож­но ути­литой Loki Scanner, которая уме­ет опре­делять мно­гие инди­като­ры ком­про­мета­ции. Она ищет по име­нам фай­лов, хеш‑сум­мам, а в слу­чае надоб­ности в ход идут и пра­вила Yara.

    .loki.exe -p D: -l log

    Бан­нер Loki Scanner

    Еще мож­но вос­поль­зовать­ся пор­табель­ными анти­вирус­ными ути­лита­ми. Нап­ример:

    • KVRT — средс­тво Kaspersky для поис­ка вре­донос­ных фай­лов;
    • CureIt — ана­лог, соз­данный в Dr.Web;
    • Spyre — ска­нер инди­като­ров ком­про­мета­ции по пра­вилам Yara.

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

     

    Получаем основную информацию о системе

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

    • SYSTEM: ControlSet001ControlTimeZoneInformation — информа­ция об уста­нов­ленной вре­мен­ной зоне;
    • SYSTEM: ControlSet001ControlComputerNameComputerName — име­на компь­юте­ра;
    • SYSTEM: ControlSet001ServicesTcpipParametersInterfaces — информа­ция об иден­тифика­торах сетевых интерфей­сов, в которых ука­зыва­ются сетевые нас­трой­ки, а в клю­че ControlSet001ServicesTcpipParameters мож­но обна­ружить имя домена;
    • SOFTWARE: MicrosoftWindows NTCurrentVersion — информа­ция об опе­раци­онной сис­теме: вер­сия, сбор­ка и дру­гое;
    • SOFTWARE: MicrosoftWindowsCurrentVersionUninstall — спи­сок уста­нов­ленных прог­рамм;
    • SAM: SAMDomainsAccountUsers — информа­ция о локаль­ных поль­зовате­лях сис­темы.

    Что­бы авто­мати­зиро­вать про­цесс, доб­рые люди уже написа­ли полез­ный скрип­тик на Python — python-registry. В катало­ге samples ты най­дешь скрипт system_info.py, который ана­лизи­рует перечис­ленные клю­чи. Нуж­но будет толь­ко нем­ного его под­редак­тировать: добавить код, который перед каж­дым дос­тупом к клю­чу будет счи­тывать выг­ружен­ные тобой вет­ки.

     

    Ищем закрепление в системе

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

    Для это­го пред­назна­чена ути­лита Autoruns. Запус­кай, откры­вай вклад­ку File → Analyze Offline System и выбирай путь к сис­темно­му дис­ку (который мы при­мон­тирова­ли рань­ше). Так­же нуж­но задать путь до кон­крет­ного поль­зовате­ля.

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

    Сис­темные кус­ты реес­тра хра­нят­ся в катало­ге C:WindowsSystem32config, поль­зователь­ские NTUSER.DAT — в катало­ге C:Users<User>AppData.

     

    WMI Persistence (Т1546.003)

    WMI (Windows Management Instrumentation) — набор инс­тру­мен­тов, пред­назна­чен­ных для управле­ния сис­темами Windows. WMI популя­рен сре­ди зло­умыш­ленни­ков, пос­коль­ку поз­воля­ет выпол­нять раз­ведку в сети, обна­ружи­вать анти­виру­сы и вир­туаль­ные машины, выпол­нять про­изволь­ный код, сох­ранять свое при­сутс­твие в сис­теме, а так­же переме­щать­ся по кор­поратив­ной сети.

    В опре­деле­ниях WMI дей­ствия называ­ются пот­ребите­лями (Consumers), а события — филь­тра­ми (Filters). Сущес­тву­ет так­же тре­тий ком­понент, который свя­зыва­ет их вмес­те, — при­вяз­ка (Binding). Зло­умыш­ленник соз­дает три клас­са:

    • __EventFilter — некий филь­тр дей­ствий в сис­теме, к при­меру вход поль­зовате­ля или соз­дание про­цес­са;
    • __EventConsumer — дей­ствие, которое выпол­няет зло­умыш­ленник, к при­меру запуск полез­ной наг­рузки;
    • __FilterToConsumerBinding — объ­ект, который свя­зыва­ет эти два клас­са.

    Что­бы зак­репить­ся этим методом, зло­умыш­ленни­ки исполь­зуют ути­литу, которая уме­ет вза­имо­дей­ство­вать с WMI (wmic.exe). Что­бы понять, про­исхо­дило ли что‑то такое, нам нуж­но про­ана­лизи­ровать сле­дующий файл:

    C:WindowsSystem32wbemRepositoryOBJECTS.DATA

    На­ша цель — най­ти клас­сы __FilterToConsumerBinding, а затем по име­ни __EventConsumer най­ти все дей­ствия. Сде­лать это мож­но в любом дво­ичном редак­торе. Вби­вай в поис­ке класс свя­зыва­ния филь­тра и дей­ствия — __FilterToConsumerBinding. Есть и готовый инс­тру­мент, который сде­лает всю работу за тебя, он называ­ется PyWMIPersistenceFinder.py. Я уже показы­вал, как с его помощью обна­ружи­вать зак­репле­ние, ког­да раз­бирал лабора­торию CyberCorpCase 1.

     

    Ключи запуска в реестре и папка автозагрузки (T1547.001)

    Что­бы задетек­тить эту тех­нику зак­репле­ния, нам с тобой нуж­но про­ана­лизи­ровать кус­ты реес­тра SOFTWARE и NTUSER.DAT.

    В кус­те SOFTWARE смот­рим сле­дующие клю­чи, отве­чающие за при­сутс­твие в ОС от име­ни сис­темы или адми­на:

    • MicrosoftWindowsCurrentVersionRun;
    • MicrosoftWindowsCurrentVersionRunOnce;
    • MicrosoftWindowsCurrentVersionRunServices;
    • MicrosoftWindowsCurrentVersionRunServicesOnce;
    • MicrosoftWindows NTCurrentVersionWinlogonUserinit;
    • MicrosoftWindows NTCurrentVersionWinlogonShell;
    • MicrosoftWindowsCurrentVersionExplorerShell Folders.

    Не забыва­ем гля­нуть те же клю­чи в кус­те реес­тра NTUSER.DAT:SOFTWARE — что­бы понять, не было ли зак­репле­ния с пра­вами поль­зовате­ля.

    Ко­пать­ся в реес­тре я рекомен­дую с помощью RegistryExplorer. Обра­ти вни­мание на путь к исполня­емо­му фай­лу и на вре­мен­ные мет­ки клю­ча реес­тра.

    А вот сюда сто­ит заг­лянуть в поис­ках вре­донос­ных исполня­емых фай­лов:

    C:Users<User>AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

    Вре­доно­сы, лежащие в такой пап­ке, будут стар­товать авто­мати­чес­ки и при­нимать­ся пакос­тить сра­зу пос­ле заг­рузки. Так­же обра­щай вни­мание на фай­лы .lnk, в них иног­да пря­чут­ся коман­ды PowerShell или CMD.

     

    Сценарий входа в систему Windows (T1037.001)

    За авто­мати­чес­кое выпол­нение скрип­тов при вхо­де в сис­тему отве­чает куст реес­тра NTUSER.DAT, точ­нее, ключ EnvironmentUserInitMprLogonScript, где перечис­ляют­ся исполня­емые фай­лы. К при­меру, APT-груп­па XDSpy записы­вала сюда адрес вре­донос­ного фай­ла, сох­ранен­ного в AppDataLocalTemp.

    Зак­репле­ние вре­донос­ного исполня­емо­го фай­ла 

    Службы Windows (T1574.011)

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

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *