Карантин Microsoft Defender¶
Що містить карантин¶
Карантин Microsoft Defender зберігає метадані про виявлення та зашифрований вміст
ресурсів, поміщених у карантин. Juntei пов'язує записи Entries, ResourceData і Resources, щоб повідомити
назву загрози, час поміщення в карантин, початкові логічні та фізичні шляхи, метадані файлу, власника,
Zone.Identifier з джерелом завантаження, хеші та проблеми цілісності.
Цей артефакт може пережити журнали подій, які спочатку зафіксували виявлення/усунення загрози. Він також може зберігати точні підозрілі байти для ізольованого зворотного аналізу (reverse engineering).
Найобґрунтованіший висновок: Defender створив запис карантину для названої загрози/ресурсу в записаний час. Назва від продукту не є незалежним доказом шкідливого ПЗ, а сам лише карантин не доводить попереднього виконання.
Розташування та збирання¶
C:\ProgramData\Microsoft\Windows Defender\Quarantine\
Entries\{GUID}
ResourceData\<prefix>\<SHA-1>
Resources\<prefix>\<SHA-1>
Збирайте весь каталог Quarantine. Запис без відповідних файлів вмісту/записів усе одно містить
корисні метадані, але з нього неможливо отримати байти файлу або обчислені хеші.
Безпека та застереження для аналітика¶
- Видобутий вміст, імовірно, шкідливий. Використовуйте ізольовану систему для аналізу й ніколи його не запускайте.
ThreatName— це сигнатура/класифікація Defender на той момент. Можливі хибні спрацьовування та пізніша перекласифікація.- Час карантину — це час усунення загрози/поміщення в карантин, а не обов'язково час завантаження, створення чи виконання.
- Файл у карантині міг бути виявлений до виконання або після запуску.
- Початковий шлях і Zone.Identifier цінні, але можуть бути відсутні або контрольовані зловмисником.
- Записи-сироти можуть виникати через політику зберігання/очищення, неповне збирання або пошкодження.
- Juntei перевіряє розміри, CRC, ідентифікатори та хеші; перш ніж довіряти відновленим байтам, перегляньте
Problems.
Аналіз за допомогою Juntei¶
Usage: juntei parse-file defender-quarantine <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find quarantine folders
-f, --file <FILE> Parse one Entries\{GUID} file
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
--extract <DIR> Extract dangerous content with a .quarantined extension
-C, --clobber Overwrite confirmed output targets
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv
juntei parse-file defender-quarantine -d evidence/ -t jsonl \
| jq '{QuarantineTime, ThreatName, Path, SHA256: .Content.SHA256, Problems}'
# Only in an isolated malware-analysis environment
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv --extract extracted/
Наприклад, tool.exe стає tool.exe.quarantined. Допоміжні потоки містять свій тип у
назві, як-от tool.exe.Zone.Identifier.quarantined. Juntei також знімає дозвіл на виконання.
Розширення та дозволи зменшують ризик випадкового виконання, але відновлені байти все одно слід
розглядати як шкідливе ПЗ.
Поля виводу¶
| Поле | Інтерпретація |
|---|---|
Record |
resource, запис без ресурсів, orphan-content або orphan-record. Сироти вказують на неповний зв'язок/збирання. |
QuarantineTime |
Час поміщення в карантин/усунення загрози Defender в UTC, а не час виконання. |
ThreatName, ThreatID |
Класифікація Defender і числовий ідентифікатор. Розглядайте як вердикт/контекст постачальника. |
ResourceType |
Файл, ключ реєстру, служба, елемент автозапуску, заплановане завдання або інша категорія ресурсу. |
Path, PhysicalPath |
Початкове логічне/фізичне розташування. Основна точка переходу для зіставлення; зберігайте точне написання. |
FileSize |
Розмір, записаний у метаданих ресурсу. Порівнюйте з ContentSize і MFT. |
CreationTime, LastAccessTime, LastWriteTime |
Метадані, зафіксовані для ресурсу в карантині; відокремлені від часу карантину й уразливі до підробки часових позначок (timestomping). |
Attr |
Записані атрибути файлу. Ознаки hidden/system можуть бути корисним контекстом. |
Owner |
SID з відновленого дескриптора безпеки; власник не обов'язково є користувачем, який виконував файл. |
ZoneID, ReferrerURL, HostURL |
Зона завантаження та URL-адреси з Zone.Identifier. За наявності — вагомі зачіпки щодо джерела; ADS може бути відсутнім/видаленим. |
ContentSize |
Фактичний розмір відновленого основного вмісту. Порівнюйте із записаним FileSize. |
MD5, SHA1, SHA256 |
Обчислюються з відновлених байтів. Для сучасної ідентифікації вмісту використовуйте SHA-256; зберігайте всі для сумісності. |
Streams |
Види/назви/розміри відновлених потоків; можуть включати ADS, дані безпеки або кущ реєстру. |
ResourceID |
Ідентифікатор, що пов'язує метадані ресурсу та записи вмісту. |
EntryID |
GUID запису карантину; також пов'язує з історією Defender/доказами з подій. |
ScanID |
Ідентифікатор сканування Defender для групування ресурсів/дій. |
QuarantineFolder |
Коренева папка-джерело / розмежування хостів. |
EntryFile, ContentFile, ResourceRecordFile |
Точні вихідні файли, використані для побудови рядка. Необхідні для перевірки. |
ExtractedFile |
Основний файл із карантину, записаний за допомогою --extract; порожнє, якщо основне видобування не відбулося. Допоміжні потоки записуються поруч із ним. auto-parse -x подає його відносно свого каталогу виводу (./HOST1/SecurityProducts/DefenderQuarantined/…). |
Problems |
Невідповідність цілісності, відсутній вміст, розбіжність ідентифікаторів, пошкодження або контекст сироти. Не приховуйте. |
JSON/JSONL зберігають структурований ресурс, список потоків, записи та всі подробиці зв'язків, а не об'єднаний текст CSV.
Поведінка під час видобування¶
Juntei використовує початкове ім'я файлу з кінцевим розширенням .quarantined, якщо запис карантину
його містить. Для ресурсів-сиріт або ресурсів, що не є файлами, використовується ідентифікатор вмісту, а для усунення конфліктів
імен файлів додається ідентифікатор. Символи, неприпустимі в іменах файлів Windows, замінюються. Потоки
безпеки та альтернативні потоки записуються поруч з основним файлом. Для кожного потоку безпеки також створюється зрозумілий
текстовий звіт. Juntei знімає дозвіл на виконання;
наявний відмінний вміст не перезаписується без -C. Ці засоби контролю зменшують ризик випадковостей, але не
роблять байти безпечними.
Читання відновленого дескриптора безпеки¶
Файл .security.quarantined містить двійкові метадані безпеки Windows, тому його неможливо прочитати в
текстовому редакторі. Це окремий резервний потік, а не ще одна копія виконуваного файлу. Juntei автоматично
декодує його під час видобування за допомогою parse-file defender-quarantine --extract або auto-parse -x:
tool.exe.quarantined Original file content; treat as malware
tool.exe.security.quarantined Original binary security descriptor, preserved unchanged
tool.exe.security_descriptor.txt Readable ownership and permission report
Ім'я текстового файлу відповідає фактичному імені двійкового файлу, включно з ідентифікатором конфлікту, якщо він є. Згенерований текст є звичайним UTF-8 і має ті самі засоби захисту від перезапису, що й інші видобуті файли. Він містить ім'я двійкового файлу, кількість байтів і SHA-256, щоб звіт можна було зіставити з його джерелом.
| Поле звіту | Як його інтерпретувати |
|---|---|
| Власник і основна група | SID, записані в дескрипторі. Добре відомі SID отримують назви, як-от BUILTIN\Administrators або NT AUTHORITY\SYSTEM. Інші SID залишаються невизначеними; одного лише знайомого RID недостатньо, щоб назвати локальний/доменний обліковий запис. Власник не доводить, хто створив або запустив файл. |
| Прапорці керування | Вихідні числові прапорці та їхні назви, зокрема наявність ACL, успадкування та захист. |
| DACL | Упорядковані записи керування доступом (ACE): тип дозволу/заборони, SID облікового запису, маска дозволів, права та прапорці успадкування. Це записані елементи, а не обчислення фактичного доступу для маркера користувача. |
| SACL | Записані елементи аудиту або обов'язкової цілісності. Прапорці аудиту успіху/невдачі описують конфігурацію, а не історію доступу. Відсутність SACL не означає, що весь аудит було вимкнено. |
| GUID об'єктів | Необов'язкові GUID для ACE, специфічних для об'єктів; права, специфічні для об'єктів, зберігаються в числовому вигляді, а не позначаються помилково як права на файли. |
| SDDL | Представлення власника, групи та підтримуваних записів ACL мовою Security Descriptor Definition Language. Прапорці керування перевіряйте окремо. Juntei не виводить частковий рядок SDDL, якщо будь-який компонент пошкоджено або не підтримується. |
| Стан декодування та проблеми | complete або incomplete із зазначенням причин. Непідтримувані ACE зберігають у звіті свої необроблені шістнадцяткові дані. Вихідний двійковий файл завжди зберігається, якщо видобування успішне. Проблеми декодування також з'являються в полі Problems запису карантину. |
Відсутній DACL, NULL DACL і порожній DACL повідомляються окремо. Відсутній або NULL DACL не забезпечує жодного дискреційного обмеження доступу; порожній DACL не має ACE, які надають доступ. Інші перевірки доступу та привілеї Windows усе одно мають значення. Успадковані ACE та ACE лише для успадкування залишаються явно позначеними.
Наприклад, запис, який надає адміністраторам успадкований повний доступ, може виглядати так:
Entry 1: ALLOW (type 0x00)
Flags: 0x10 (INHERITED_ACE)
Account: S-1-5-32-544 (BUILTIN\Administrators)
Access mask: 0x001F01FF
Rights: Full control (FILE_ALL_ACCESS)
Декодер працює офлайн у Windows, macOS і Linux без API Windows, Python або пошуку облікових записів. Він декодує базові ACE дозволу/заборони/аудиту/тривоги, ACE об'єктів і мітки обов'язкової цілісності. Умовні, callback-, resource-attribute- та інші непідтримувані ACE явно ідентифікуються та зберігаються в необробленому вигляді; їхні умови доступу не обчислюються. Пошкоджений дескриптор не зупиняє видобування інших потоків.
Стратегія розслідування¶
- Почніть із
ThreatName,Path,QuarantineTime,EntryIdі хешів. - Перевірте
Problemsі порівняйте записаний розмір із відновленим вмістом. - Використовуйте SHA-256 як точку переходу до інших хостів, EDR, пісочниці та даних розвідки загроз.
- Зіставляйте початковий шлях/час із
$MFT, журналом USN, Prefetch, Amcache і журналами подій. - Використовуйте поля URL/зони для дослідження початкового доступу, але перевіряйте їх доказами з браузера/проксі/DNS.