de:code 2019 CM10
ハードコア デバッギング : サポート直伝!
Windows カーネルモード デバッグ活用編!!
日本マイクロソフト
太田 卓也
日本マイクロソフト
Jesse Swearengin
日本マイクロソフト
冷 春亮
ここでいうデバッギングとは?
問題発生時のメモリ上のデータをデバッガーで解析
OS の知識
CPU の知識
関連ツール
プログラミング
本日お持ち帰りいただきたい知識
ジェシー
デバッグ歴 5 年
カーネル モード
デバッグの知識
レン
JavaScript
を利用した
デバッグの効率化
デバッグ歴 20 年
de:code 2019 CM10
カーネル モード デバッグの力を知ろう!
日本マイクロソフト カスタマー サービス & サポート
サポート エンジニア
Jesse Swearengin (ジェシー)
これまでのシナリオ
アプリでエラーが発生!
ダンプ解析
ユーザーモード
デバッグ
Time Travel
Debugging
トレース解析
問題解決!
アプリ
これまでのシナリオ
反応すらしない・・・
アプリ
どうやって調べれば・・・?
アプリ サービス
ユーザーモード
カーネルモード
ハードウェア
カーネル モジュールなど
「カーネルモードデバッグ」 なら可能です!
アプリ
カーネル モード デバッグの力を知ろう!
1. こんなときこそカーネルモードデバッグ!
2. デバッグ環境を作ってみよう!
3. 問題解決をしてみよう!
こんなときこそカーネルモードデバッグ!
アプリ
他のアプリ・プロセスに処理を依頼し、
その処理の中で発生した問題カーネル別アプリ
パターン
③
そもそも対象のアプリ・プロセスを
デバッグできないような状態アプリ
パターン
①
アプリ カーネル
Windows カーネルに処理が
行き渡った中で発生した問題
パターン
②
カーネル モード デバッグの力を知ろう!
1. こんなときこそカーネルモードデバッグ!
2. デバッグ環境を作ってみよう!
3. 問題解決をしてみよう!
カーネルモードデバッグの接続
ホスト ターゲット
デバッグケーブル
(シリアル、USB、1394)
カーネルモードデバッグの接続
ホスト ターゲット
仮想マシン
ネットワーク接続
(KDNET)
Hyper-V 環境
作成
ターゲットに
KDNET.exe を
コピー&実行
ターゲット
再起動
WinDbg
接続
カーネルモードデバッグのセットアップ (KDNET)
カーネル モード デバッグの力を知ろう!
1. こんなときこそカーネルモードデバッグ!
2. デバッグ環境を作ってみよう!
3. 問題解決をしてみよう!
カーネルモードデバッグ実践
環境情報ログアプリのハングを突き止めろ!
カーネルモードデバッグ実践 : 今回の構成
ホスト
WinDBG
仮想マシン
ContosoApp
ネットワーク接続
(KDNET)
カーネルモードデバッグ実践 – 概要図
ContosoApp svchost.exe
(WMI ホスト)
WmiPrvSE.exe
(WMI プロバイダ)
ユーザーモード
ALPC ALPC
FLTMGR.SYS
カーネルモード
ContosoDrv.sys
登録関数
呼び出し
I/O 要求
知っていると良いコマンド
最低限知っておくべき
ドライバー関連
カーネル オブジェクト関連
メモリ利用状況関連
検証関連
※ Mex も Kernel Debug 用のコマンドあります!
!mex.tl, !mex.obj, !mex.fep, …
リファレンス
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/debugger/setting-up-kernel-mode-debugging-in-windbg--cdb--or-ntsd
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kernel-mode-extensions
https://blogs.msdn.microsoft.com/ntdebugging/
https://blogs.msdn.microsoft.com/jpwdkblog/
https://blogs.technet.microsoft.com/askcorejp/2018/01/19/デスクトップ-ヒープの枯渇/
https://www.codemachine.com/article_x64deepdive.html
https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/writing-preoperation-callback-routines
Call to Action !
Step 1
Prepare
Step 2
Learn
Step 3
Apply
de:code 2019 CM10
JavaScript でデバッグ作業を自動化
日本マイクロソフト カスタマー サービス & サポート
シニア エスカレーション エンジニア
冷 春亮
デバッガ エクステンションを作れば良いが・・・
※ デバッガ エクステンションとは
拡張コマンドが含まれているモジュール
複数の複雑なコマンドや、たくさんのオブジェクトに対して実行する場合に利用
Visual Studio
Debugger SDK
ちょっと作るのにハードル高い・・・
そこで・・・
JavaScript
ビルド不要!ドキュメント多数!サンプル豊富!
※ 私は JavaScript 得意ではありません・・・
Demo : ウォーミングアップ
CPU 使用率 Top 5 を調べよう!
こんな感じで作ってみます!
① 名前空間を調べる
デバッガーのコマンド
② デバッガ API を調べる
Host APIs for
JavaScript Extensions
③ スクリプトを書く
Docs のサイト
JavaScript のドキュメント
GitHubのサンプル
※ 後ほど資料で共有します
kd> dx Debugger
デバッガの API の例
host.getModuleSymbolAddress(“module”, “GlobalVariableName”);
グローバル変数のアドレスを取得
host.diagnostics.debugLog(“Hello World”);
デバッグログを出力
host.namespace.Debugger.Utility.Control.ExecuteCommand(“vertarget”);
デバッガ コマンドを実行
host.currentSession.Processes[PID].Threads[TID].SwitchTo();
特定のプロセス・スレッド・フレームのコンテキストに切り替え
不正な実装をもつドライバーが存在する可能性
From alert to driver vulnerability: Microsoft Defender ATP investigation unearths privilege escalation flaw
https://www.microsoft.com/security/blog/2019/03/25/from-alert-to-driver-vulnerability-microsoft-defender-atp-investigation-unearths-privilege-escalation-flaw/
マルウェアでよく使われるコード インジェクション
Kernel lsass.exe
ZwAllocateVirtualMemory
Victim Thread
memcpy
KeInsertQueueApc
Userland
shellcode
RWX
ミッション: 以下の 2 つの JavaScript を作って自動実行!
◼ ZwAllocateVirtualMemory
◼ KeInsertQueueApc
上記スクリプトをダンプに自動実行する!CMD
SearchImports.js のおさらい
host.currentSession.Processes[4].Modules;
system プロセスのすべてのモジュールを取得
ExecuteCommand("!dh " + strModBaseAddr);
個々のモジュールに対して !dh コマンドを実行
search("Import Address Table Directory");
出力結果からImport Address Table の場所を探す
ExecuteCommand(“dps ” + IAT開始アドレス + IAT 終了アドレス);
dps コマンドでImport Address Tableをダンプ
search(“nt!KeInsertQueueApc”);
search("nt!ZwAllocateVirtualMemory");
ダンプの結果に関数名の文字列を探す
ミッション: 以下の 2 つの JavaScript を作って自動実行!
◼ ZwAllocateVirtualMemory
◼ KeInsertQueueApc
上記スクリプトをダンプに自動実行する!CMD
.scriptrun SearchImports.js
.scriptrun CreateProcessCallback.js
q
TXT
C:¥> Autodebug.cmd C:¥data¥memory.dmpCMD
kd.exe -z %1 -c "$$><C:¥js¥myscript.txt" > %1.myscript_result.txt
BAT
ダンプ解析の自動実行
ミッション: 以下の 2 つの JavaScript を作って自動実行!
◼ ZwAllocateVirtualMemory
◼ KeInsertQueueApc
上記スクリプトをダンプに自動実行する!CMD
まとめ - JavaScript 利用のメリット
開発が簡単!
デバッガが用意したデータにアクセス可能!
API 以外にも既存のコマンドを活用!
de:code 2019 CM10
ハードコア デバッギング : サポート直伝!
Windows カーネルモード デバッグ活用編!!
1. 事務連絡
2. 本セッション情報まとめ
本日の資料
http://aka.ms/cm10
✓使用したスライド
✓デモで使用したファイル
✓デモ動画
✓過去のセッションのリンク
Information
de:code 2019
本セッションの資料!- フライング公開!!
デバッグ作業での
繰り返し処理の自動化
ユーザーモードデバッグのみで
解決できない時の場合
カーネル モードデバッグの知識
JavaScript での効率化
本日の資料
http://aka.ms/cm10
本セッションのまとめ
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
© 2019 Microsoft Corporation. All rights reserved.
本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。

More Related Content

PPTX
20201023 Builders Box 2nd Enterprise Architect
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PPTX
SCCM を用いた OS 展開
PDF
Linux女子部 systemd徹底入門
PDF
Azureを頑張る理由と頑張り方(Cloud Skills Challenge 2022 winter 発表資料)
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PPTX
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
Kotlin/Native 「使ってみた」の一歩先へ
20201023 Builders Box 2nd Enterprise Architect
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
SCCM を用いた OS 展開
Linux女子部 systemd徹底入門
Azureを頑張る理由と頑張り方(Cloud Skills Challenge 2022 winter 発表資料)
今改めて学ぶ Microsoft Azure 基礎知識
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Kotlin/Native 「使ってみた」の一歩先へ

What's hot (20)

PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
正しいものを正しく作る塾-設計コース
PPTX
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
PPTX
新登場! Windows Defender Application Guard 解説 ~ Microsoft Edge がセキュア ブラウザーに!?~
PDF
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
PDF
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender ATP
PDF
IT エンジニアのための 流し読み Windows - Microsoft Defender Exploit Guard
ODP
MVC の Model を考える
PPTX
Microsoft Endpoint Configuration Manager 新機能のおさらい
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PDF
Azure Monitor Logで実現するモダンな管理手法
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
PPTX
Python開発は仮想化しろ
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
PPTX
DeviceOwnerのお話
PDF
Google Cloud のネットワークとロードバランサ
PPTX
(本当に)一般的なご自宅向けのNutanix CE
PPTX
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
正しいものを正しく作る塾-設計コース
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
新登場! Windows Defender Application Guard 解説 ~ Microsoft Edge がセキュア ブラウザーに!?~
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender ATP
IT エンジニアのための 流し読み Windows - Microsoft Defender Exploit Guard
MVC の Model を考える
Microsoft Endpoint Configuration Manager 新機能のおさらい
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
Azure Monitor Logで実現するモダンな管理手法
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
Python開発は仮想化しろ
強いて言えば「集約どう実装するのかな、を考える」な話
DeviceOwnerのお話
Google Cloud のネットワークとロードバランサ
(本当に)一般的なご自宅向けのNutanix CE
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
Ad

Similar to ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!! (20)

PDF
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
PPTX
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
PPTX
デスクトップアプリを『一歩前へ』進める方法
PDF
Effective web performance tuning for smartphone
PPTX
ハードコア デバッギング : サポート直伝!運用中 Windows アプリケーション バグバスター!!
PDF
【サイボウズ インターンシップ2025】Webアプリケーション開発(kintone)コース説明資料
PDF
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
PPTX
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
PPTX
コードレビューをより良くする Danger x Android
PDF
LightSwitch で遊んでみた Rev. 2
PDF
アプリリリース後に後悔しないための20のこと
PDF
半透明は飾りです 偉い人にはそれがわからんのですよ
PDF
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
PDF
Redmine Applied for Large Scale
PDF
Windowsフォームで大丈夫か?一番良いのを頼む。
PPTX
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
PDF
Kobe sec#7 summary
PDF
OpenCVをAndroidで動かしてみた
PPTX
01 idea table3.1(up)
PDF
HTML5な今日この頃に贈る、Webデザイナーこれからの生きる道
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
デスクトップアプリを『一歩前へ』進める方法
Effective web performance tuning for smartphone
ハードコア デバッギング : サポート直伝!運用中 Windows アプリケーション バグバスター!!
【サイボウズ インターンシップ2025】Webアプリケーション開発(kintone)コース説明資料
ゲーム開発環境、もっと楽にできるよ♬ マインクラフトでも実践している DevOpsでゲーム開発を効率化しよう!
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
コードレビューをより良くする Danger x Android
LightSwitch で遊んでみた Rev. 2
アプリリリース後に後悔しないための20のこと
半透明は飾りです 偉い人にはそれがわからんのですよ
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
Redmine Applied for Large Scale
Windowsフォームで大丈夫か?一番良いのを頼む。
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Kobe sec#7 summary
OpenCVをAndroidで動かしてみた
01 idea table3.1(up)
HTML5な今日この頃に贈る、Webデザイナーこれからの生きる道
Ad

More from TAKUYA OHTA (20)

PDF
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
PDF
IT エンジニアのための 流し読み M365 - Microsoft Defender for Endpoint 概要
PDF
IT エンジニアのための 流し読み Windows - Microsoft Defender ウイルス対策
PDF
IT エンジニアのための 流し読み Windows - Windows のライセンス認証 & サブスクリプションのライセンス認証
PDF
IT エンジニアのための 流し読み Windows - Windows 11 SE アプリケーションの管理
PDF
IT エンジニアのための 流し読み Windows - Windows 11 SE おさえておきたい 8 のポイント
PDF
IT エンジニアのための 流し読み Windows - Windows 11 のクリーン インストール
PDF
IT エンジニアのための 流し読み Windows - Windows 11 へのアップグレード
PDF
Microsoft デスクトップ仮想化ソリューション比較
PDF
IT エンジニアのための 流し読み Windows - Windows 365 ってどんな感じ? - せっかちなあなたへ編 -
PDF
IT エンジニアのための 流し読み Windows 10 - IE11 のサポート終了と Microsoft Edge について
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
PDF
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
PDF
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
PDF
IT エンジニアのための 流し読み Windows 10 - Windows サンドボックス
PDF
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
PDF
IT エンジニアのための 流し読み Windows 10 - Windows 10 サブスクリプションのライセンス認証
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
PDF
IT エンジニアのための 流し読み Windows 10 - 入門!Windows Server Update Services (WSUS)
PDF
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
IT エンジニアのための 流し読み M365 - Microsoft Defender for Endpoint 概要
IT エンジニアのための 流し読み Windows - Microsoft Defender ウイルス対策
IT エンジニアのための 流し読み Windows - Windows のライセンス認証 & サブスクリプションのライセンス認証
IT エンジニアのための 流し読み Windows - Windows 11 SE アプリケーションの管理
IT エンジニアのための 流し読み Windows - Windows 11 SE おさえておきたい 8 のポイント
IT エンジニアのための 流し読み Windows - Windows 11 のクリーン インストール
IT エンジニアのための 流し読み Windows - Windows 11 へのアップグレード
Microsoft デスクトップ仮想化ソリューション比較
IT エンジニアのための 流し読み Windows - Windows 365 ってどんな感じ? - せっかちなあなたへ編 -
IT エンジニアのための 流し読み Windows 10 - IE11 のサポート終了と Microsoft Edge について
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
IT エンジニアのための 流し読み Windows 10 - Windows サンドボックス
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
IT エンジニアのための 流し読み Windows 10 - Windows 10 サブスクリプションのライセンス認証
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IT エンジニアのための 流し読み Windows 10 - 入門!Windows Server Update Services (WSUS)
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager

ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!