SlideShare a Scribd company logo
1 of 28
Автоматизация отладки в
windbg
windbg scripts, использование python и расширение pykd, и многое
другое
Задачи автоматизированной отладки
• Визуализация данных
• Обработка аварийных дампов
• Динамическое управление отладкой
• Диагностика при автоматизированном тестировании
WinDBG – универсальный отладчик для
Windows
• Поддерживает все типы отладки: локальная ( usermode/kernel
mode), удаленная отладка ядра ( COM/1394/USB/NET ), отладка по
сети ( клиент/сервер ), анализ дампов
• Все Windows платформы x86/x64
• Поддержка native и managed
• Распространяется как часть Windows Kits
Архитектура Windbg
Local Debugging Remote Debugging Remote Kernel Mode
Debugging
Dump Analysis
Debug Engine (dbgeng.dll )
DbgHelp (dbghelp.dll)
SymSrv SrcSrv DIA
Extensions
WinDBG scripts
Основные команды и конструкции
• Комментарии
$$ это комментарий
• Форматированный вывод
.printf “hello world %x”, 2
• Циклы и ветвления
.if ( condition )
{}
.else
{}
.while( condition )
{
.break
.continue
}
.for ( loop init; loop condition; loop increment)
{}
• Контроль ошибок
.catch
{
.leave
}
• Алиасы
установка as, aS
удаление ad
перечислить al
${ } - интерпретатор алиасов
• Предустановленные алиасы
$ntsym и др.
• Псевдорегистры
r $t1 = @$t2
• Автоматические псевдо регистры
$ea $ip и др.
• Интерпретаторы
@@C++() @@masm()
• Операторы MASM
not, hi, low, poi и др
$iment, $spat, $vvalid
• Запуск скрпита
$$>< $$>a< аргументы: ${$argn}
Использование информации о типах
• Проверить настройку символов: .sympath !sym noisy !chksym
• dt – display type
• r? Присвоение значение псевдорегистру с использованием
информации о типе
• Используем ?? и @@C++
C++ макросы:
#CONTAINING_RECORD
#FIELD_OFFSET
#RTL_CONTAINS_FIELD
Полезные инструменты
• !list -t [Module!]Type.Field -x "Commands" -a “Arguments“ StartAddress
• !for_each_module "Commands"
алисаы: @#Base, @#LoadedImageName и др
• !for_each_frame
• !for_each_local
• !for_each_process
• !for_each_thread
• .foreach
Условные брейкпойнты
• bp Address ".if (Condition) {OptionalCommands} .else {gc}«
• Использование скриптов
bp Address"$$><script_file“
• Пример: логер API ф
NTSTATUS NtCreateFile(
PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes, // x64 - r8, x86 – [esp + 0xC]
PIO_STATUS_BLOCK IoStatusBlock,
PLARGE_INTEGER AllocationSize,
ULONG FileAttributes,
ULONG ShareAccess,
ULONG CreateDisposition,
ULONG CreateOptions,
PVOID EaBuffer,
ULONG EaLength );
+/- использования встроенных скриптов
Плюсы
• Работают «из коробки»
• Относительно просты в
использовании
• «Заточены» на использование
в windbg
Минусы
• Бедные инструментальные
средства
• Отсутствуют какие-либо
библиотеки
• Неудобно отлаживать
• Скорость (???)
Дополнительные материалы
• Using Debugger Command Programs:
https://msdn.microsoft.com/en-
us/library/windows/hardware/ff560096(v=vs.85).aspx
• Debugging toolbox
http://blogs.msdn.com/b/debuggingtoolbox/
• Kernel Debugger Antirootkit:
http://kdar.codeplex.com
Pykd
Python extension for windbg
Устройство pykd
• Pykd это модуль для CPython
• Pykd это WinDBG extension
• Pykd использует Boost.Python
• Pykd использует kdlibcpp ( http://kdlibcpp.codeplex.com )
Инсталляция и использование pykd в
WinDBG
• Ручная установка
• Установка через PyPI:
pip install pykd
pip install –upgrade pykd
• Загрузка расширения:
.load pykd
• Pykd bootstrapper
!pykd.install
• !pykd.py - основная команда ( или просто !py )
Основные возможности pykd
• Доступ к регистрам: reg(name), cpu().regname
• Доступ к памяти: ptrByte, ptrWord … loadBytes, loadWords, ….
• Работа с модулями: class module()
• Работа с типами: class typeInfo()
• Типизированные переменные: class typedVar()
Пример: таблица экспортов
IMAGE_DOS_HEADER
e_lfanew
IMAGE_NT_HEADERS64
OptionalHeader
DataDirectory[16]
IMAGE_EXPORT_DIRECTORY
….
+0x014 NumberOfFucntions
+0x018 NumberOfNames
+0x01C AddressOfFunctions
+0x020 AddressOfNames
+0x024 AddressOfNamesOrdinals
Динамическая отладка
• Условные точки остановки
setBp( offset, callback )
• Монитор отладочных событий
class eventHandler
onBreakpoint
onLoadModule/onUnloadModule
onException
onExecutionStatusChanged
onThreadStart/onThreadStop
Определение типов
• Производные типы
typeInfo.ptrTo() typeInfo.deref(), typeInfo.arrayOf()
• Базовые типы:
baseTypes
• Определение новых структур
createStruct, createUnion
Подводные камни при работе с pykd
• Нормализованные адреса
использование ф. addr64()
• Глобальный и локальный интерпретатор ( --global и –local )
• Ограничения на длину вывода
Прикладное использование
pykd
Стандартные скрипты pykd
https://pykd.svn.codeplex.com/svn/branch/0.3.x/snippets
• просмотр справки help.py
• экспорты и импорты ( export.py, iat.py )
• регистры CR ( cr0.py, cr4.py )
• для разработчиков драйверов: ctlcode.py, findtag.py
• для разработчиков сетевых драйверов: nbl.py
Pykd без windbg
• pykd.initialize()
• pykd.startProcess()
• pykd.loadDump()
• pykd.killProcess()
• pykd.closeDump()
Отладка скриптов
• pdb - стандартный консольный отладчик
h(elp), s(tep), c(ontinue), r(return), p(rint), b(reak), w(here)
• IDLE, Eclipse, PyTools, ….
• karmadbg ( karmadbg.codeplex.com )
IPython
• Сайт проекта: http://ipython.org
• Инсталляция: pip intsall ipython[notebook]
• Запуск web сервера: ipython notebook [--ip=0.0.0.0]
Mona.py
Exploit Development Swiss Army Knife
• https://github.com/corelanc0d3r
• https://www.corelan.be/
Volatility
An advanced memory forensics framework
• https://github.com/volatilityfoundation
Заключение
Всем спасибо!
Наши координаты:
• http://pykd.codeplex.com
• http://karmadbg.codeplex.com
• Twitter: @pykd_dev
• E-mail: pykd.codeplex@hotmail.com

More Related Content

What's hot

КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
Alexander Akbashev
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
Ontico
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010
 
Prometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоPrometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий Левченко
Ontico
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
Alex Chistyakov
 

What's hot (20)

КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
КРИ-2013. "Нагрузочное тестирование или Боты - санитары сервера"
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Use Grunt Luke
Use Grunt LukeUse Grunt Luke
Use Grunt Luke
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Автоматизация нагрузочного тестирования — Григорий Липин
Автоматизация нагрузочного тестирования — Григорий ЛипинАвтоматизация нагрузочного тестирования — Григорий Липин
Автоматизация нагрузочного тестирования — Григорий Липин
 
Prometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоPrometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий Левченко
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 

Similar to Автоматизация отладки в windbg

доклад про Llvm
доклад про Llvmдоклад про Llvm
доклад про Llvm
Vadim Evard
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
Ivan Mosiev
 
WinRT: интеграция с С++
WinRT: интеграция с С++WinRT: интеграция с С++
WinRT: интеграция с С++
Mykhail Galushko
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
Ovadiah Myrgorod
 

Similar to Автоматизация отладки в windbg (20)

Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
 
Опыт внедрения Docker .
 Опыт внедрения Docker .  Опыт внедрения Docker .
Опыт внедрения Docker .
 
доклад про Llvm
доклад про Llvmдоклад про Llvm
доклад про Llvm
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
WinRT: интеграция с С++
WinRT: интеграция с С++WinRT: интеграция с С++
WinRT: интеграция с С++
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Презентация проекта "Виртуальное частное облако инструмент снижения TCO"
Презентация проекта "Виртуальное частное облако инструмент снижения TCO"Презентация проекта "Виртуальное частное облако инструмент снижения TCO"
Презентация проекта "Виртуальное частное облако инструмент снижения TCO"
 
Async Python
Async PythonAsync Python
Async Python
 

More from Positive Hack Days

Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
Positive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
Positive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Positive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
Positive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Recently uploaded

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Recently uploaded (9)

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 

Автоматизация отладки в windbg

  • 1. Автоматизация отладки в windbg windbg scripts, использование python и расширение pykd, и многое другое
  • 2. Задачи автоматизированной отладки • Визуализация данных • Обработка аварийных дампов • Динамическое управление отладкой • Диагностика при автоматизированном тестировании
  • 3. WinDBG – универсальный отладчик для Windows • Поддерживает все типы отладки: локальная ( usermode/kernel mode), удаленная отладка ядра ( COM/1394/USB/NET ), отладка по сети ( клиент/сервер ), анализ дампов • Все Windows платформы x86/x64 • Поддержка native и managed • Распространяется как часть Windows Kits
  • 4. Архитектура Windbg Local Debugging Remote Debugging Remote Kernel Mode Debugging Dump Analysis Debug Engine (dbgeng.dll ) DbgHelp (dbghelp.dll) SymSrv SrcSrv DIA Extensions
  • 6. Основные команды и конструкции • Комментарии $$ это комментарий • Форматированный вывод .printf “hello world %x”, 2 • Циклы и ветвления .if ( condition ) {} .else {} .while( condition ) { .break .continue } .for ( loop init; loop condition; loop increment) {} • Контроль ошибок .catch { .leave } • Алиасы установка as, aS удаление ad перечислить al ${ } - интерпретатор алиасов • Предустановленные алиасы $ntsym и др. • Псевдорегистры r $t1 = @$t2 • Автоматические псевдо регистры $ea $ip и др. • Интерпретаторы @@C++() @@masm() • Операторы MASM not, hi, low, poi и др $iment, $spat, $vvalid • Запуск скрпита $$>< $$>a< аргументы: ${$argn}
  • 7. Использование информации о типах • Проверить настройку символов: .sympath !sym noisy !chksym • dt – display type • r? Присвоение значение псевдорегистру с использованием информации о типе • Используем ?? и @@C++ C++ макросы: #CONTAINING_RECORD #FIELD_OFFSET #RTL_CONTAINS_FIELD
  • 8. Полезные инструменты • !list -t [Module!]Type.Field -x "Commands" -a “Arguments“ StartAddress • !for_each_module "Commands" алисаы: @#Base, @#LoadedImageName и др • !for_each_frame • !for_each_local • !for_each_process • !for_each_thread • .foreach
  • 9. Условные брейкпойнты • bp Address ".if (Condition) {OptionalCommands} .else {gc}« • Использование скриптов bp Address"$$><script_file“ • Пример: логер API ф NTSTATUS NtCreateFile( PHANDLE FileHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, // x64 - r8, x86 – [esp + 0xC] PIO_STATUS_BLOCK IoStatusBlock, PLARGE_INTEGER AllocationSize, ULONG FileAttributes, ULONG ShareAccess, ULONG CreateDisposition, ULONG CreateOptions, PVOID EaBuffer, ULONG EaLength );
  • 10. +/- использования встроенных скриптов Плюсы • Работают «из коробки» • Относительно просты в использовании • «Заточены» на использование в windbg Минусы • Бедные инструментальные средства • Отсутствуют какие-либо библиотеки • Неудобно отлаживать • Скорость (???)
  • 11. Дополнительные материалы • Using Debugger Command Programs: https://msdn.microsoft.com/en- us/library/windows/hardware/ff560096(v=vs.85).aspx • Debugging toolbox http://blogs.msdn.com/b/debuggingtoolbox/ • Kernel Debugger Antirootkit: http://kdar.codeplex.com
  • 13. Устройство pykd • Pykd это модуль для CPython • Pykd это WinDBG extension • Pykd использует Boost.Python • Pykd использует kdlibcpp ( http://kdlibcpp.codeplex.com )
  • 14. Инсталляция и использование pykd в WinDBG • Ручная установка • Установка через PyPI: pip install pykd pip install –upgrade pykd • Загрузка расширения: .load pykd • Pykd bootstrapper !pykd.install • !pykd.py - основная команда ( или просто !py )
  • 15. Основные возможности pykd • Доступ к регистрам: reg(name), cpu().regname • Доступ к памяти: ptrByte, ptrWord … loadBytes, loadWords, …. • Работа с модулями: class module() • Работа с типами: class typeInfo() • Типизированные переменные: class typedVar()
  • 16. Пример: таблица экспортов IMAGE_DOS_HEADER e_lfanew IMAGE_NT_HEADERS64 OptionalHeader DataDirectory[16] IMAGE_EXPORT_DIRECTORY …. +0x014 NumberOfFucntions +0x018 NumberOfNames +0x01C AddressOfFunctions +0x020 AddressOfNames +0x024 AddressOfNamesOrdinals
  • 17. Динамическая отладка • Условные точки остановки setBp( offset, callback ) • Монитор отладочных событий class eventHandler onBreakpoint onLoadModule/onUnloadModule onException onExecutionStatusChanged onThreadStart/onThreadStop
  • 18. Определение типов • Производные типы typeInfo.ptrTo() typeInfo.deref(), typeInfo.arrayOf() • Базовые типы: baseTypes • Определение новых структур createStruct, createUnion
  • 19. Подводные камни при работе с pykd • Нормализованные адреса использование ф. addr64() • Глобальный и локальный интерпретатор ( --global и –local ) • Ограничения на длину вывода
  • 21. Стандартные скрипты pykd https://pykd.svn.codeplex.com/svn/branch/0.3.x/snippets • просмотр справки help.py • экспорты и импорты ( export.py, iat.py ) • регистры CR ( cr0.py, cr4.py ) • для разработчиков драйверов: ctlcode.py, findtag.py • для разработчиков сетевых драйверов: nbl.py
  • 22. Pykd без windbg • pykd.initialize() • pykd.startProcess() • pykd.loadDump() • pykd.killProcess() • pykd.closeDump()
  • 23. Отладка скриптов • pdb - стандартный консольный отладчик h(elp), s(tep), c(ontinue), r(return), p(rint), b(reak), w(here) • IDLE, Eclipse, PyTools, …. • karmadbg ( karmadbg.codeplex.com )
  • 24. IPython • Сайт проекта: http://ipython.org • Инсталляция: pip intsall ipython[notebook] • Запуск web сервера: ipython notebook [--ip=0.0.0.0]
  • 25. Mona.py Exploit Development Swiss Army Knife • https://github.com/corelanc0d3r • https://www.corelan.be/
  • 26. Volatility An advanced memory forensics framework • https://github.com/volatilityfoundation
  • 28. Наши координаты: • http://pykd.codeplex.com • http://karmadbg.codeplex.com • Twitter: @pykd_dev • E-mail: pykd.codeplex@hotmail.com