「Windowsメモリダンプ解析サービス」のご案内
豊田孝の「IT談話館」 Windowsメモリダンプ解析を依頼する




本記事は、書籍 「インサイド Microsoft Windows」 程度の基礎知識をお持ちの方を想定しています。

講演申し込み



Windowsシステム分析(1/4)


 WindowsはSaaSとして提供される時代に入り、その内部は頻繁に更新されています。更新内容の多くは、いろいろな事情と理由から、公にされることはほとんどありません。
 Windows 10の短周期の内部更新は、性能向上と互換性維持に加え、ML/DL/AI時代への対応と位置付けられています。簡単に表現すれば、Windows 10はCloudサービスと連携しながらBig Dataを収集・蓄積する「ソフトウェアセンサー」、という役割を担っています。本「IT談話館」は、そのソフトウェアセンサーのユーザー空間とカーネル空間を独自の解析コードで詳しく解析する技術を保有し、「Windowsメモリダンプ解析サービス」を提供しています。
 メモリダンプを解析すると、システム内の「異様な動き」を検出・解析することができます。「異様な動き」の中には、システムパフォーマンスの低下、既存アプリの動作異常、あるいは、セキュリティー脅威なども含まれます。本館サービスをご利用の際には、所属チーム内でご協議の上、「ご連絡」ください。

 セキュリティーの視点からWindows10ソフトウェアセンサーを見た場合、本「IT談話館」の確認範囲では、次のような保護メカニズム階層が考案・実装されています。下記リンクはすべて本館記事を指しています。
  1. Silo/Server Silo
  2. Job
  3. Session
  4. Protected Process
  5. Mandatory Integrity Control(MIC)
  6. Windows API(+CPU)
  7. CPU

 本稿では、次のような視点から、ソフトウェアセンサー機能が搭載されているWindowsシステムの内部分析を取り上げます。  Windowsシステム分析作業にはツールが必要になりますが、本「IT談話館」は、米Microsoftから無料で提供されているWinDbgを採用しています。WinDbgはかつてはVisual Stadio(VS)の補完ツールのように表現されたことがありました。つまり、デバッグ作業の90%はVS環境で行い、それでも手に負えない場合にだけWinDbg環境で行う、という開発現場の雰囲気が主流でした(本館主筆豊田孝の監訳書籍を参照)。つまり、WinDbgはこれまで「強力」だが「敷居の高い」カーネルデバッガー、という位置付けでした。WindowsがSaaSとして提供されている現在、この現場雰囲気は変質し、世界的に活動するWindows先端技術者はほぼ例外なくWinDbgを起動し、内部解析を行っています。

 本「IT談話館」は、10年以上前から、WinDbgを単なるデバッガーではなく、新旧のWindowsシステムを構成するユーザー空間とカーネル空間を徹底解析する、高度なシステム分析ツールと位置付けています。本館のこれまでの経験を振り返ると、Windowsカーネル内部はすでにBig Dataの世界であり、データ収集技術に加え、作業目的に合致した分析視点を設定する能力と、Big Dataを絞り切り、その絞り切ったDataを分析する(データサイエンス)能力が要求されています。「絞り切り+分析」(データサイエンス)工程では諸現象に潜む現象固有の「パターン」が見えてきます。

 WinDbgを起動し、Windowsシステム分析を行うと、次のような今日的な課題と問題を検出・解決することができます。

Windowsメモリダンプ解析依頼申し込み
解析内容

  • パフォーマンス低下因子
  • システムクラッシュ発生原因
  • アプリケーション性能評価
  • 長期潜伏型マルウェアの検出と分析
  • メモリフォレンジックス

 Windowsシステムコード自体がインターネット越しに随時更新されている現在、豊富な経験を誇るベテラン技術者でも、不意を打たれたように、なぜ?、とつぶやく回数が増えています。現在の「私たち」に必要とされるのは、目の前の問題に対処できる一過性のハウツー知識に加え、予想外の局面に含まれる、不明な要素を自力で解明するシステム分析能力です。ここでの「私たち」の中には米Microsoft社の上級エンジニアーも含まれます(別稿参照)。短周期で繰り返される内部変更に関する情報は、今後も外部には公開されることはないでしょう。また、更新範囲が多岐に渡るため、掌握も困難を極めます。Windowsの信頼できる最新情報を入手するカギは、実は、メモリ内に埋まっています。次の初歩的なWinDbgコマンドライン操作は、WinDbgがC++とMASMの2種類の発想をサポートし、高度な内部解析とメモリフォレンジックを可能としていることを明確に示しています。
0: kd> r? $t0 = @@c++((nt!_kthread*)@$thread)
0: kd> r? $t1 = @@c++((nt!_eprocess*)@$t0->Process)
0: kd> r $t2 = @@c++(&@$t1->ImageFileName)
0: kd> .printf "%ma\r\n", @$t2
Idle
0: kd> r? $t0 = @@c++((nt!_kthread*)@$thread)
0: kd> r? $t1 = @@c++((nt!_eprocess*)@$t0->Process)
0: kd> r $t2 = @@masm(@$t1+0x438)
0: kd> .printf "%ma\r\n", @$t2
Idle
 このコードは、一つのアドレスが分かれば、それを頼りにメモリ内部を解析できることを示しています。また、WinDbgは解析の起点となるアドレスを提供する機能を備えていることも同時に示しています。本「IT談話館」はこの強力な機能を活用し、たとえば、Google社のProjectZeroチームが公開する 「このようなブログ」を一種の仕様書と見立て、独自の解析コードを開発し、ブログ内容の賞味期限とともに、日々繰り返されるWindowsシステムの内部変遷を次のように確認しています。今の時代、この作業は避けて通れません。

次へ




「Windowsメモリダンプ解析サービス」のご案内

講演申し込み




本「IT談話館」は書籍 「インサイド Microsoft Windows」 程度の基礎知識をお持ちの方々を想定しています。
プロ向けのWindowsメモリ内部解析技術資料

Copyright©豊田孝 2004- 2020
本日は2020-04-07です。