Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SwishDbgExt — Расширение для отладки в сфере реагирования на инциденты и цифровой криминалистики | Kitploit
Инструменты/GitHubGitHub/magnetforensics/swishdbgext
Криминалистика памятиОбратная инженерияОтладчикиАнализ вредоносных программЦифровая криминалистикаРеагирование на Инциденты
GitHubmagnetforensics/swishdbgext

SwishDbgExt

Расширение для отладки в сфере реагирования на инциденты и цифровой криминалистики

Репозиторий
401977 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

#SwishDbgExt

SwishDbgExt — это расширение для отладчика Microsoft WinDbg, которое расширяет набор доступных команд Microsoft WinDbg, а также исправляет и улучшает существующие команды. Это расширение было разработано Мэттом Сюишем (@msuiche) — не стесняйтесь обращаться по адресу [email protected], чтобы запросить новые функции, предложить свой вклад и/или сообщить об ошибках.

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

2016 Конкурс

Дополнительная информация: https://blog.comae.io/comae-2016-contest-swishdbgext-features-3c9a63c62209#.tnt1b9usx

Установка

Вы можете либо скопировать расширение WinDbg в соответствующую папку (x86 или x64) WinDbg, либо загрузить его вручную с помощью команды !load, как показано ниже. Обратите внимание: в полном пути к загружаемой DLL не должно быть пробелов или кавычек. !load X:\FullPath\SwishDbgExt.dll

Пример:

root@kitploit:~
kd> !load E:\projects\labs\SwishDbgExt\bin\x64\SwishDbgExt.dll;
       SwishDbgExt v0.7.0 (Nov  2 2016) - Incident Response & Digital Forensics Debugging Extension
       SwishDbgExt Copyright (C) 2016 Comae Technologies FZE - http://www.comae.io
       SwishDbgExt Copyright (C) 2014-2016 Matthieu Suiche (@msuiche)

       This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
       This is free software, and you are welcome to redistribute it
       under certain conditions; type `show c' for details.

Если вы хотите обновить шаблон WinDbg на более DML-дружественный, вы можете напрямую импортировать прилагаемый файл windbg_template.reg.

TODO

  • Определить структуры
  • Определить команды
  • Объявить конкурс на функции.

Команды

!SwishDbgExt.help

Отображает информацию о доступных командах расширения.

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

!ms_callbacks

Отображает callback-функции

!ms_checkcodecave

Ищет используемые code cave

!ms_consoles

Отображает историю команд консоли

!ms_credentials

Отображает учетные данные пользователя (на основе mimikatz от gentilwiki)

!ms_drivers

Отображает список драйверов. Команда !ms_drivers выводит список драйверов, загруженных в данный момент. В этом примере показаны некоторые драйверы, загруженные в момент сбоя в этом дампе ядра: С помощью этой команды мы также можем просмотреть подробную информацию об IRP для конкретного драйвера: На изображении выше мы видим расположение стека I/O, специфичного для драйвера e1cexpress.sys в его IRP. Здесь мы видим такие коды функций, как IRP_MJ_CREATE, который открывает целевой объект устройства, указывая на его наличие и доступность для операций I/O.

!ms_dump

Сохраняет пространство памяти на диск

!ms_exqueue

Отображает очередь экспонированных рабочих (Ex queued workers).

!exqueue неправильно работает в Windows 8, поэтому необходимо реализовать рабочую версию. Как и оригинальная команда, эта отображает очередь рабочих потоков.

!ms_fixit

Сбрасывает сегментацию в WinDbg (исправляет "16.kd>")

!ms_gdt

Отображает GDT.

!ms_gdt отображает глобальную дескрипторную таблицу (GDT). Обратите внимание, что на x64 каждый селектор является плоским (от 0x0000000000000000 до 0xFFFFFFFFFFFFFFFF). Эта команда может быть особенно полезна для проверки на перехват GDT, так как попытка сделать это на x64 вызовет проверку ошибок, поскольку x64 запрещает перехват GDT.

!ms_hivelist

Отображает список кустов реестра.

ms_hivelist отображает список кустов реестра. Мы можем напрямую заглянуть в куст (\Registry\Machine\Software, например), чтобы увидеть его подразделы, значения и т.д.:

Альтернативный текст

!ms_idt

Отображает IDT.

!ms_idt отображает таблицу дескрипторов прерываний (IDT). Как и в случае с GDT, если IDT перехвачена в системе x64, это вызовет проверку ошибок. Это связано с тем, что Microsoft программно реализовала предотвращение перехвата IDT драйвером режима ядра, который обычно перехватывает вызовы к IDT и добавляет свою собственную обработку. Поэтому на изображении выше везде указано «Нет».

!ms_malscore

Анализирует пространство памяти и возвращает индекс вредоносности (MSI) — основан на работе Frank Boldewin

!ms_mbr

Сканирует главную загрузочную запись (MBR)

!ms_netstat

Отображает сетевую информацию (сокеты, соединения и т.д.)

!ms_object

Отображает список объектов

!ms_process

Отображает список процессов. !ms_process — улучшенная версия !process и !dml_proc. Одна из приятных особенностей, как видно ниже, — использование DML (Debugger Markup Language) с командами. Все подчеркнутые команды на самом деле являются ссылками на команды. Например, ниже показан вывод /vads /scan для сканирования VAD (дескрипторов виртуальных адресов). Вы можете заметить, что один столбец отображает «Malware Score Index», что может быть полезно для обнаружения shellcode или heap-spray. На скриншоте ниже видно аномально высокий показатель в нескольких VAD из-за использования heap-spray. Просто нажав на показатель, вы запустите алгоритм сканирования. Алгоритм сканирования основан на утилите Frank Boldewin’s OfficeMalScanner. И возвращает информацию о том, где находится shellcode: Опция /scan также может использоваться для экспортируемых функций, чтобы узнать, была ли изменена таблица экспорта адресов (EAT) или модифицирован пролог функции.

Аналогичные тесты доступны для SSDT (!ms_ssdt).

!ms_readkcb

Чтение блока управления ключа

!ms_readknode

Чтение узла ключа. Команда !reg в WinDbg долгое время вызывала разочарование из-за некоторых ошибок. Именно поэтому SwishDbgExt имеет собственные функции для работы с реестром, чтобы максимально упростить доступ к данным реестра.

!ms_readkvalue

Чтение значения ключа

!ms_scanndishook

Сканирование и отображение подозрительных NDIS-перехватчиков

!ms_services

Отображает список служб

!ms_ssdt

Отображает функции таблицы системных служб (SDT). !ms_ssdt отображает таблицу системных служб (System Service Dispatch Table). Эта команда чрезвычайно полезна при расследовании предполагаемых перехватов руткитами через прямую манипуляцию объектами ядра (DKOM). Если вы видите, что низкоуровневая процедура (например, nt!NtEnumerateKey) перехвачена, это может помочь в анализе возможного заражения руткитом.

!ms_store

Отображает информацию, связанную с Store Manager (ReadyBoost).

Данная команда позволяет вывести список текущего кэша ReadyBoost (требуется USB 3.0), используемого операционной системой, а также отобразить журналы страниц памяти, управляемых Store Manager. Параметр: /cache

!ms_timers

Отображает список KTIMER.

!ms_timers отображает структуру KTIMER, которая представляет собой непрозрачную структуру, содержащую различные объекты таймеров. Эта команда может помочь определить, какие драйверы создали какие объекты таймеров, какие драйверы вызывали какие процедуры и т.д.

!ms_vacbs

Отображает список кэшированных VACB

!ms_verbose

Включает/выключает подробный режим

!ms_lxss

Основано на исследовании, опубликованном Алексом Ионеску (Alex Ionescu) и доступном здесь: https://github.com/ionescu007/lxss/

Эта функция доступна в Windows 10+ как дополнительная возможность, устанавливаемая с помощью следующей команды PowerShell:

root@kitploit:~
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Вы можете узнать больше о подсистеме Windows для Linux по следующим ссылкам:

  • https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/
  • https://channel9.msdn.com/Blogs/Seth-Juarez/Windows-Subsystem-for-Linux-Architectural-Overview
  • https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
root@kitploit:~
	Windows Subsystem for Linux Overview.
	Instance 0xFFFFE704EEB8F010
	GUID: {E29032FD-35D3-4C53-AB68-6BCEBDA7176F}
	State:            (1) [STARTED]
	Creation Flags:   00000001
	GlobalData:       0xFFFFF802ED4138A0
	Root Handle:      80000834
	Temp Handle:      80000838
	Job Handle:       8000083c
	Token:            80000818
	Event Handle:     800008bc

	Map Paths (0):    0xFFFFE704EF437920
	VFS Context:      0xFFFFE704EEFC4710
	Memory Flags:     0x2

	Last PID:         35
	Thread Groups:    3
		Session 0xFFFFE704EDB79EC0
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0x0
		Foreground PID:   -1
			Process Group 0xFFFFE704EDB79AE0
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EDB79EC0
				Thread Group 0xFFFFE704EF4F8000
				Binary Path:           /init
				Thread(s):             1
				Owner Process Group:   0xFFFFE704EDB79AE0
				Flags:                 0x00000000
				Main Thread:           0xFFFFE704EF5CC010
				Arguments (006 bytes): 0x00007FFFC081D6E0
					Process 0xFFFFE704EF2F1D70
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E84EF800
					NT Process Handle:   0xFFFFFFFF80000F58
					VDSO Address:        0x00007FFFC0849000
					Stack Address:       0x00007FFFC001E000
		Session 0xFFFFE704EF5DB830
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0xFFFFE704EF32D7A0
		Foreground PID:   2
			Process Group 0xFFFFE704EF5EF970
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EF5DB830
				Thread Group 0xFFFFE704EF5EE000
				Binary Path:           /bin/bash
				Thread(s):             1
				Owner Process Group:   0xFFFFE704EF5EF970
				Flags:                 0x0000000C
				Main Thread:           0xFFFFE704EF5F8010
				Arguments (010 bytes): 0x00007FFFDF34E418
					Process 0xFFFFE704EDEF6EC0
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E84E6800
					NT Process Handle:   0xFFFFFFFF80000D9C
					VDSO Address:        0x00007FFFDF883000
					Stack Address:       0x00007FFFDEB4F000
		Session 0xFFFFE704EF0A8ED0
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0xFFFFE704EF06B9C0
		Foreground PID:   19
			Process Group 0xFFFFE704F059CBC0
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EF0A8ED0
				Thread Group 0xFFFFE704EDE51000
				Binary Path:           /bin/bash
				Thread(s):             1
				Owner Process Group:   0xFFFFE704F059CBC0
				Flags:                 0x0000000C
				Main Thread:           0xFFFFE704EDC78090
				Arguments (010 bytes): 0x00007FFFF78CFB78
					Process 0xFFFFE704F06389B0
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E618D800
					NT Process Handle:   0xFFFFFFFF80001650
					VDSO Address:        0x00007FFFF7C99000
					Stack Address:       0x00007FFFF70D0000

!ms_yarascan

Сканирование памяти процесса с помощью правил YARA.

Сканирование памяти процесса.

root@kitploit:~
!ms_yarascan /pid 0x228 /yarafile /yarafile C:\Rules.yar

Сканирование памяти всех процессов.

root@kitploit:~
!for_each_process "r? @$t0 = (nt!_EPROCESS *) @#Process; .process /r /p @$t0; !ms_yarascan /pid @@C++(@$t0->UniqueProcessId) /yarafile C:\\Rules.yar"

Классы

PEFile

MsPEImageFile содержит основную общую информацию, используемую двоичными файлами Windows (PE), и был разделен на три различных класса:

  • MsProcessObject
  • MsDllObject
  • MsDriverObject
Скачать инструмент