読者です 読者をやめる 読者になる 読者になる

アンタイ・フォレンジック伝道者の独り言

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

フォレンジッカー向けの資格?

そもそも資格必要なの?という点は素朴な疑問としてあるのですが、資格取るなら何が良いのでしょうかね?

デジタル・フォレンジック関連の資格・試験には様々なものがあるようです。コンピュータ・フォレンジックという観点では、下記記事では 6種類ほど比較がされていますが、トータルの数値を見ると GCFA が一番ポイントが高いようですね。

Best Computer Forensics Certifications For 2017
http://www.tomsitpro.com/articles/computer-forensics-certifications,2-650.html

まずは GCFA を取得しておくと良いのかもしれませんが、私はベンダー(ガイダンスソフトウェア社)の EnCE しか持っていません(笑)(そういえば昔、eDiscovery用のプラットホームを扱うのにベンダの試験を受けて認定された気がしますが、世間では役立たないんですっかり失念していました)
これは解析用のソフトウェアとして EnCase を利用する前提であれば EnCE はよいかもしれませんが、ベンダーニュートラルという点では GIAC GCFA などの方が良いのではないでしょうか。

とはいえ、自分は GCFA 持ってないので、持っている方に聞いてみていただくのが一番よいと思います。多分、(超個人的には)名刺に GCFA と GREM 両方のロゴが入っていると結構カッコいいのではないでしょうか?、維持費用大変かもですが(笑)

EnCE Certification Program
https://www.guidancesoftware.com/training/certifications?cmpid=nav_r#EnCE

EnCEの場合、現在は 3年に一度の更新になっていますが、その期間内に一定のポイントを貯めておく必要があります。この辺りの資格維持の期間や仕組みは GCFA なども同じような仕組みになっていたかと思います。
Directory of Certified Professionals で公開している EnCE 取得者の名前を確認できますが、本日時点では 2,564名が公開で登録されているようです。ただ、Japan の登録に絞ってを見ると転職後にメールアドレス変更されてない方とかもいらっしゃるようですね(笑)

ちなみに、自分がなぜ EnCEを更新しているのか?という点では、官公庁の入札案件で講師の条件としてEnCEが GCFA などと一緒に書いてある事があるからという点と、それ以外に資格は持ってないからですね。

最近はEnCase使ってないので、GCFAとかのほうが良いのかもしれませんが、新たに英語で試験を受けるのが嫌なのでポイント貯めてEnCEを更新しています。

 

上記は主に Computer Forensics 関連だと思いますので、GIAC であれば他にもメモリ・フォレンジック、モバイル・フォレンジック、マルウェア解析などについては更に別の試験や資格なども用意されているようです。(商用製品については、その製品に関する試験や資格が用意されている事も多いと思います)

いずれにしても、試験で要求される技術的な内容は、スキルセットを考える上では参考になると思いますし、自分が弱いところが何処なのか?も把握できるのではないでしょうか。

どんなところからスタートすれば良いのか?という点もあるかもしれませんが、下記Blogは結構参考になるのではないかと個人的には思います。

Forensics – Where to start and What to know
https://fl0x2208.wordpress.com/2016/10/03/forensics-where-to-start-and-what-to-know/

フォレンジッカーの先は?という観点では、最近は Threat Hunting などが分野?として出てきているのではないでしょうか?、DFの延長線上にある分野?と言えるかは分かりませんが、最近 DFIR MLでRob Leeさんが公開されていた下記資料は興味深く眺めておりました。

Threat-Hunting-Courses.pdf
https://www.dropbox.com/s/8p9kefn2i9yx5fz/Threat-Hunting-Courses.pdf

その他、下記資料では2014年から2024年までに 27% の成長と出ていますが、実際にどうなるかは今後のサイバー犯罪次第なのかもしれません。というかそんなに成長はしないってことでしょうかね(笑)

When Computer Forensics Grows Up: Digital Forensics Explained – Infographic by Maryville University
https://eforensicsmag.com/computer_forens/

 

フォレンジッカーって何するの?

スキルマップなどを眺めていると、フォレンジッカーって何するの?という疑問が出てきます。

NICCS:Workforce Development ❯ Cybersecurity Workforce Framework ❯ Digital ForensicsのTasksに記載されている項目を参照すると、色々と興味深い項目が多くあります。

https://niccs.us-cert.gov/workforce-development/cyber-security-workforce-framework/digital-forensics

例えば上記URLでは、タスクの一つとして下記項目が出てきます。

Collect and analyze intrusion artifacts (e.g., source code, malware, and trojans) and use discovered data to enable mitigation of potential Computer Network Defense incidents within the enterprise

ネットワーク侵入に関する痕跡(アーティファクト)を収集・解析し、発見した結果をネットワーク防御にも役立てるという趣旨かもしれませんが、実務として考慮した場合にはかなり幅広い内容に分解される気がします。

痕跡の収集についても、例としてマルウェアやトロイの木馬が挙げられていますが、それらに関する収集という点では、インシデント発生前に組織外のオープンな情報に基づく場合もあるでしょうし、インシデント発生後に組織内ネットワークにおいてアーティファクトを発見するという観点もあるように思えます。
ネットワーク侵入に対しては、フォレンジッカーはデジタルデータの取得・解析(マルウェア解析含む)・対策を行う事が求められるという事になりそうですが、これは主に民間でのお話でしょうか?、Tasksの項目には法執行機関に関連すると考えられる項目もありますので、それらは求められる内容も異なるので分けて考えた方がよいかもしれませんね。

タスクの項目として典型的なハードディスクやファイルシステムに関しては下記が項目として出ていますが、この辺りは伝統的な手法ですね。流石にこの辺りは基本的な作業内容なので、例えばマルウェアを解析するにも検体を発見できない、という事になりかねませんね。(見落とすとか自分のスキル不足を痛感する点は別途ありますが...)

NICCS:Workforce Development ❯ Cybersecurity Workforce Framework ❯ Digital Forensics より引用

  • Perform file signature analysis
  • Perform file system forensic analysis
  • Perform hash comparison against established database
  • Perform timeline analysis
  • Perform static analysis to mount an \image\" of a drive (without necessarily having the original drive)"
  • Perform live forensic analysis (e.g., using Helix in conjunction with LiveView)
  • Use data carving techniques (e.g., FTK-Foremost) to extract data for further analysis

項目が混じっているのですが、マルウェア解析系の項目は下記あたりでしょうか。

NICCS:Workforce Development ❯ Cybersecurity Workforce Framework ❯ Digital Forensics より引用

  • Perform static malware analysis
  • Perform tier 1, 2, and 3 malware analysis
  • Perform virus scanning on digital media
  • Use network monitoring tools to capture and analyze network traffic associated with malicious activity

更にその他にも項目としては、サイバー犯罪や訴訟に関連した項目が出てきますが、この辺りは日本のスキルセット項目や実施項目としてはあまり記載されているのを見かけない内容ですね。

タスク内容を見ていると、インシデント発生時には何かと作業しないといけない人達というイメージになりそうですが、日本のスキルマップでは、デジタルデータのコピーを取得する人達というイメージなのでしょうか。

もちろん、例示されているタスクを一人ですべて可能とするのは大変な気がしますので、分業する箇所もあると思われますが、もしかして普通は一人で全部出来ちゃうもんなんでしょうかね。

 <2016/11/20追記>

海外(米国 ベンチュラ郡)での求人(Salary $60,614.86 - $85,017.89 Annually)が偶々 11/10 に DFIR ML で流れていましたが、ここで求められている内容は知識やスキルを確認する点でも参考になりますね。

Sheriff's Computer Forensics Examiner
https://www.governmentjobs.com/careers/ventura/jobs/1564057/sheriffs-computer-forensics-examiner

NECESSARY SPECIAL REQUIREMENTS としては下記が挙げられています。コンピュータ系と、モバイル系の取得・解析ツールについての経験が必要なようですね。

上記 Sheriff's Computer Forensics Examiner のページより引用:

  • Forensic examinations of computers and related peripherals
  • Various software used for investigative computer forensics, (i.e. EnCase, FTK)
  • Various hardware used for the extraction of information from cellular devices (i.e., Celle-Brite, Lantern, XRY)
  • Report writing
  • Product evaluation and procurement

更に知識としては上記のベースとなる項目が書かれている印象です。マルウェアなどに関する知識も求められていますね。わざわざレジストリは項目として記載しているのが興味深いところです。

上記 Sheriff's Computer Forensics Examiner のページより引用:
Knowledge, Skills, and Abilities:

  • Knowledge of information technology including computers and related peripherals. 
  • Knowledge of the principles and procedures used for investigative computer forensics.
  • Knowledge of and the ability to use a variety of software and hardware products used in computer forensics examinations and to extract information from cellular devices.
  • Knowledge of IT security, computer viruses, Trojan horses and malware.
  • Knowledge of and the ability to work with the systems registry.
  • Ability to tolerate exposure to images of a graphic and/or pornographic nature.
  • Must possess good interpersonal skills and have the ability to develop and maintain effective working relations with others.
  • Ability to effectively communicate in written form, specifically report writing.
  • Ability to communicate effectively in an oral manner.

日本の求人においては、この様な形で詳しく要件やKSAが書かれているのは少ないのではないでしょうか。

国内の民間企業における求人情報を検索してみると、なぜかコンサルタント経験などを求めている事が多い気がするのですが、気のせいでしょうか。会計監査法人などは更に簿記なども書かれていますので、業界により求められる知識などが異なりますね。

ちなみに、eDiscovery はまったく上記と異なるスキルセットが必要になってくる部分があり、そちらを希望される方は業界が異なるので注意が必要ですね。

 

フォレンジッカーに必要な知識?

NICCSのDigital ForensicsにおけるKSA(Knowledge, Skills, and Abilities)では、ナレッジとして約30個の項目が列挙されています。

ABC順に並んでいるようで、最初に出てくるのが「Knowledge of anti-forensics tactics, techniques, and procedures」とアンチ・フォレンジックに関する技術に関する知識となっており、やや全体が把握しにくいようにも感じます。

かなり大雑把な整理になりますが、大きくは以下のような項目になるのではないでしょうか?

  

(1)手続きに関する知識

項目としては技術的な内容以外に、法律や手続きといった部分もよく出てきます。例えば「産業横断サイバーセキュリティ人材育成検討会 最終報告」では、「フォレンジックス」については保全(複製の取得)を行う人員を想定しているようですので、関連する知識が必要になると思われます。

米国と日本では法律の違いなどもありますので、日本という点ではデジタル・フォレンジック研究会の証拠保全ガイドラインが参考資料になると思われます。(参照される場合には最新版を確認してください)

デジタル・フォレンジック研究会 証拠保全ガイドライン 第5版

https://digitalforensic.jp/home/act/products/df-guidline-5th/

 また、書籍であれば、下記があります。 

デジタル証拠の法律実務Q&A

デジタル証拠の法律実務Q&A

  • 作者: 高橋郁夫,梶谷篤,吉峯耕平,荒木哲郎,岡徹哉,永井徳人
  • 出版社/メーカー: 日本加除出版
  • 発売日: 2015/09/16
  • メディア: 単行本
  • この商品を含むブログを見る
 

 法律や証拠としての扱いなどは、技術的なトレーニングでなんとかなる分野ではないと思いますので、文献や専門家などが頼りになる分野でしょうか。

 

国内のスキルセットに関する資料では、この部分についての知識を求めている項目が見受けられない気がするのですが、気のせいでしょうか?
デジタルデータの保全、複製の取得を目的としている場合には、ケース(事案)によってはこの分野の知識が求められる事になります。例えばeDiscoveryなどでデジタルデータの複製が必要になるケースなどもあります。

 

(2)コンピュータやネットワークに関する知識

基本的なコンピュータの構成については、複製を取得する段階においても必要になる知識でしょうか。BIOSやHDD、各種インターフェイスやケーブルの接続方法などについての知識が必要になりますが、最近ではクラウドやモバイルデバイスに関する知識も必要になってきていますね。

一般的に利用されているWindowsやUNIX系OSに関する基本的な知識、TCP/IPなど基本的な知識という事になると、それぞれの分野における書籍を参照する事になりそうです。

Windowsについては内部的な理解も必要になるので、やはりインサイド Windowsやリソースキットといった書籍でしょうか。 

インサイドWindows 第6版 上

インサイドWindows 第6版 上

 

 技術的なお話でなければ、闘うプログラマー[新装版] ビル・ゲイツの野望を担った男達が個人的には好みだったりします。

ネットワークに関しては、TCP/IP関連書籍は多数出ていますが、技術的にはWireSharkの使い方も一緒に覚えると良いかもしれませんね。KSAsにも「Knowledge of common forensics tool configuration and support applications (e.g., VMWare, WIRESHARK)」とフォレンジック・ツールを補助するアプリケーションとしてWireSharkが登場しています。

仮想環境については、検証でも使いますし、マルウェアの動的解析などでも使う事になる部分でしょうか。

 

求められている スキルが、デジタルデータの保全、デジタルデータの複製であり、解析のスキルを必要としない場合もありえます。その場合、コンピュータやハードディスクなどの構造やインターフェイスなどについての知識が必要になります。最近ではクラウドからのデータ取得も発生しますので、その点ではネットワークを含めた知識も必要です。しかし、Windows内部構造の詳細、例えばレジストリに関する知識などはそれほど必要ないかもしれません。保全(複製取得)だけなのか、解析まで実施するのかにより、求められる深さや範囲が異なります。

 

(3)セキュリティに関する知識

基本的な攻撃手法・防御手法、インシデント・ハンドリングに関する知識などが列挙されています。

攻撃手法については、いわゆるペネトレーション的な分野もあると思いますが、セキュリティ関連企業が出しているレポートなどで、攻撃者の手口(TTPs)についての知識が必要になる部分も多いのではないでしょうか。

 

「産業横断サイバーセキュリティ人材育成検討会 最終報告」と「CSIRT 人材の定義と確保 Ver.1.0」では、この分野の知識について要求されていないように見えます。前提知識という扱いかもしれませんが、「CSIRT 人材の定義と確保 Ver.1.0」においても解析を前提としていないのであれば、どちらも複製の取得が主な内容になりますので、記載していないのかもしれません。

インシデント・ハンドラーが指定した機器を保全・複製の取得を行うだけであれば、セキュリティに関する知識という観点では、セキュアブートやアクセス権など、システム管理者よりの知識が必要になると思われます。

 

(4)デジタル・フォレンジックに関する知識

技術的な項目としては下記がポイントでしょうか。マルウェア解析は別枠で考えた方がよいかもしれませんが、大きくはファイルシステム・ファイルタイプ・カービングというのがありますね。メモリは?とか思うわけですが、その辺りはSkill項目に書かれているようです。

NICCS Digital Forensicsより引用

Knowledge of data carving tools and techniques (e.g., Foremost)
Knowledge of file system implementations (e.g., NTFS, FAT, EXT)
Knowledge of how different file types can be used for anomalous behavior
Knowledge of malware analysis tools (e.g., Oily Debug, Ida Pro)
Knowledge of types of digital forensics data and how to recognize them

 

興味深いのは「産業横断サイバーセキュリティ人材育成検討会 最終報告」のスキルセットを参照すると、この辺りの知識は求められていないように見えます。

「CSIRT 人材の定義と確保 Ver.1.0」では、上記(3)、(4)、に関連すると考えられる項目が記載されています。ただし、先に書きましたが「CSIRT 人材の定義と確保 Ver.1.0」が、「産業横断サイバーセキュリティ人材育成検討会 最終報告」と同じく複製の取得を目的・範囲としているのであれば、フォレンジック用ツールに関する知識として記載されているのは、複製の取得に利用するツールの知識だけを想定しているかもしれません。

<2016/11/19追記>

「CSIRT 人材の定義と確保 Ver.1.0」の追加資料として下記が公開されており、その中12ページにはもう少し技術的な項目が書いてありますね。

http://www.nca.gr.jp/2016/pr-seminar/files/20160223recruit-hr-appendix.pdf より引用
任用前提スキル
 OS、コマンド、システムファイル、プログラミング
言語の構造とロジックに関する知識
 脆弱性診断に関する知識
追加教育スキル
 デジタルフォレンジックに関する知識
 メモリダンプ解析能力
 マルウェア解析能力
 リバースエンジニアリングの能力
 バイナリ解析ツールを利用できる能力
 セキュリティイベントの相関分析を行える能力

前提スキルと追加教育スキルで、ややマルウェア解析よりの内容を求めている印象を受けますが、スライドの中にマルウェア解析者の区分がないので、ここに含められているという事なのかもしれません。

<追記ここまで>

 

ざっくりとした印象としては、国内で求められている知識やスキルは、デジタルデータを保全、つまり複製する事を想定としており、解析する事は考慮されていないという事なのでしょうか?

フォレンジッカーのスキルセット?

日本国内においても、デジタル・フォレンジック(以降DFと省略)の人材育成に関するスキルセットとして幾つか資料が出てきています。しかし、それらを比較してみると、求められている内容にはかなり違いがあるようです。

 

(1) 

産業横断サイバーセキュリティ人材育成検討会 最終報告 (平成28年9月14日公開)
http://cyber-risk.or.jp/sansanren/index.html

上記URLでは、A2.産業横断 人材定義リファレンス~機能と業務に基づくセキュリティ人材定義~(要求知識)では、CSIRTの項目として「フォレンジックス」がありますが、内容としては“機器の保全、被害拡大抑止、証跡保全活動”という項目が挙げられています。

対象者としてはかなり広い範囲で知識が求められる事になっていますが、それぞれのポジションにおいて、どの深さまでの知識が必要なのかについての定義は見当たりません。

この資料をベースとした場合、まずはデジタルデータの保全(つまり複製の取得)が出来る事を求めているように読めます。そうした場合、知識として保全があるという事を知っていれば良い人と、実際に複製の取得を行う担当者では求められる技術レベルが異なってきます。

 個人的には被害拡大抑止は、インシデント・ハンドリングやトリアージに関連した項目ではないかという印象も受けます。

 

(2)

CSIRT 人材の定義と確保 Ver.1.0
http://www.nca.gr.jp/activity/training-hr.html

インシデント対応の項目として「フォレンジックス」が登場し、内容としては“証拠保全、システム的な鑑識、足跡追跡。マルウェア解析”が記載されています。

一部の保全関連については産業横断サイバーセキュリティ人材育のスキルセットに近いですが、マルウェア解析、が新たな項目として出てきます。
PDFファイル 34ページでは、役割として①フォレンジック責任者、②業務推進者、③分析者、と定義されており、それぞれについてスキルが列挙されています。ただ、スキルについては役割が何であれ求められている内容としては下記になっています。

ページ34 役割と必要となるスキル(1/3)より引用
・情報セキュリティ監査能力
・マネジメント能力
・OS/ファイルシステム/アプリケーション/プロトコル/攻撃手法等に関する知識
・フォレンジック用ツールに関する知識

興味深いのは、産業横断サイバーセキュリティ人材育のスキルセットよりも幅広く定義されている点でしょうか。

ページ37には「役割毎のキャリアパス」が記載されていますが、前提条件として「セキュリティ技術基礎知識」が定義されています。キャリアパスの注目点としては2年で技術を習得し、3年目からはマネジメント能力の向上とだけ記載されている点でしょうか。

ページ34で求められるスキルセットが、キャリアパスでは1年ないし2年で身に付く事になっているのか分かりませんが、個人的にはかなり短期間で育成が行われる前提に見えます。

 (3)

セキュリティ知識分野(SecBoK)人材スキルマップ2016年版
http://www.jnsa.org/result/2016/skillmap/

NICE Cybersecurity Workforce Framework に原則として準拠と書かれています。
Exceシートに詳細が記載されていますが、手元のPCにExcel入ってないので。。。

 

(4)

NICCS
Workforce Development ❯ Cybersecurity Workforce Framework ❯ Digital Forensics
https://niccs.us-cert.gov/workforce-development/cyber-security-workforce-framework/digital-forensics

KSAsとTaskについてかなり詳細に記載があります。具体的な技術的な項目として何が必要とされるのか?という観点ではこちらのURLの方が参考になる点が多いかと思います。Related Job Titlesとしては、Computer Forensic Analyst、Computer Network Defense Forensic Analyst、Digital Forensic Examiner、Digital Media Collector、Forensic Analyst、Forensic Analyst (Cryptologic)、Forensic Technician、Network Forensic Examinerといった肩書で呼ばれる人たちですね。
KSA(Knowledge, Skills, and Abilities)としては下記が記載されています。実際の作業内容として求められる項目については Tasks に記載されていますが、どちらも実務という観点ではしっくりくる項目が多いですね。


NICCSのページより引用

 

  • Experts in this Specialty Area have the following Knowledge, Skills, and Abilities:
  • Ability to decrypt digital data collections
  • Knowledge of anti-forensics tactics, techniques, and procedures
  • Knowledge of applicable laws (e.g., Electronic Communications Privacy Act, Foreign Intelligence Surveillance Act, Protect America Act, search and seizure laws, civil liberties and privacy laws, etc.), statutes (e.g., in Titles 10, 18, 32, 50 in U.S. ...
  • Knowledge of basic concepts and practices of processing digital forensic data
  • Knowledge of basic physical computer components and architectures, including the functions of various components and peripherals (e.g., CPUs, Network Interface Cards, data storage)
  • Knowledge of basic system administration, network, and operating system hardening techniques
  • Knowledge of common forensics tool configuration and support applications (e.g., VMWare, WIRESHARK)
  • Knowledge of data carving tools and techniques (e.g., Foremost)
  • Knowledge of debugging procedures and tools
  • Knowledge of deployable forensics
  • Knowledge of electronic evidence law
  • Knowledge of encryption algorithms (e.g., IPSEC, AES, GRE, IKE, MD5, SHA, 3DES)
  • Knowledge of file system implementations (e.g., NTFS, FAT, EXT)
  • Knowledge of hacking methodologies in Windows or Unix/Linux environment
  • Knowledge of how different file types can be used for anomalous behavior
  • Knowledge of incident response and handling methodologies
  • Knowledge of investigative implications of hardware, Operating Systems, and network technologies
  • Knowledge of legal governance related to admissibility (Federal Rules of Evidence)
  • Knowledge of legal rules of evidence and court procedure
  • Knowledge of malware analysis tools (e.g., Oily Debug, Ida Pro)
  • Knowledge of processes for collecting, packaging, transporting, and storing electronic evidence to avoid alteration, loss, physical damage, or destruction of data
  • Knowledge of reverse engineering concepts
  • Knowledge of security event correlation tools
  • Knowledge of seizing and preserving digital evidence (e.g., chain of custody)
  • Knowledge of server and client operating systems
  • Knowledge of server diagnostic tools and fault identification techniques
  • Knowledge of the common networking protocols (e.g., TCP/IP), services (e.g., web, mail, Domain Name Server), and how they interact to provide network communications
  • Knowledge of types and collection of persistent data
  • Knowledge of types of digital forensics data and how to recognize them
  • Knowledge of virtual machine aware malware, debugger aware malware, and packing
  • Knowledge of web mail collection, searching/analyzing techniques, tools, and cookies
  • Knowledge of which system files (e.g., log files, registry files, configuration files) contain relevant information and where to find those system files
  • Skill in analyzing anomalous code as malicious or benign
  • Skill in analyzing memory dumps to extract information
  • Skill in analyzing volatile data
  • Skill in collecting, processing, packaging, transporting, and storing electronic evidence to avoid alteration, loss, physical damage, or destruction of data
  • Skill in conducting forensic analyses in multiple operating system environments (e.g., mobile device systems)
  • Skill in deep analysis of captured malicious code (malware forensics)
  • Skill in developing, testing, and implementing network infrastructure contingency and recovery plans
  • Skill in identifying and extracting data of forensic interest in diverse media (media forensics)
  • Skill in identifying obfuscation techniques
  • Skill in identifying, modifying, and manipulating applicable system components (Windows and/or Unix/Linux) (e.g., passwords, user accounts, files)
  • Skill in interpreting results of debugger to ascertain tactics, techniques, and procedures
  • Skill in one way hash functions (e.g., Sha, MDS)
  • Skill in performing packet-level analysis (e.g., Wireshark, tcpdump, etc.)
  • Skill in physically disassembling PCs
  • Skill in preserving evidence integrity according to standard operating procedures or national standards
  • Skill in setting up a forensic workstation
  • Skill in using binary analysis tools (e.g., Hexedit, xxd, hexdump)
  • Skill in using forensic tool suites (e.g., EnCase, Sleuthkit, FTK)
  • Skill in using virtual machines

 

 

トレーニングにおける質問の有無

雑談(無駄話)

先日、FaceBookのタイムラインに下記記事が流れてきて、興味深く読ませていただきました。(元の論文までは読んでないのですが)

自分自身、講師を担当している時に「何か質問はありますか?」という事を言ってしまいますが、受講者が質問をどう考え・受け取っているか?というのは興味深い観点ですね。

 

さて、個人的にこの記事を読んで衝撃を受けたのは、仮に受講者が質問しない理由が、内容を理解できていないのだとすれば、講師がしゃべっていた時間&受講者が聴いていた時間は、“まったく無駄”だったという事になるのか?という点です。

質問の仕方を変えるという案もあるとは思いますが、最終的には受講者が理解している事が必要であって、質問の仕方を変えたとしても意味がないですし、『生徒が学んでいないのは、先生が教えていないから』という人材開発の帯に書かれている言葉を思い出すわけです。 

トヨタ経営大全1人材開発 下

トヨタ経営大全1人材開発 下

  • 作者: ジェフリー・K・ライカー,デイビッド・P・マイヤー,稲垣公夫
  • 出版社/メーカー: 日経BP社
  • 発売日: 2007/12/28
  • メディア: 単行本
  • クリック: 6回
  • この商品を含むブログ (7件) を見る
 

 

さて、この部分について人材開発(下)のP195には下記が書かれていますので、引用したいと思います。

質問を奨励する

新人は、質問するのに尻込みする傾向がある。彼らは自分たちが仕事の知識がないと見られたくないのだ。トレーナーが「何か質問はありますか?」と聞いても、彼らはすぐに「いいえ」という。トレーナーは質問を奨励して、より理解することはいいことだという雰囲気を作らなければならない。これは「ボブ、今でも後でも質問があったら自由に聞いてね。あなたの疑問には全部答えられるようにしたいの」というような言葉でやるのが一番良い。その後で、トレーナーはキーポイントに関する理解を探る質問をするべきだ。「シール剤をみて、正しく塗布されているかどうかわかりますか?」などである。

 講師(トレーナー)側からの質問としては、キーポイントの理解度を探るという観点については、キーポイントをしっかり整理しそれを伝えている必要があるので、質問を考慮する上でも参考になります。

とはいえ、受講者からの質問というのは、個人的にはハラハラする部分でもあります。自分が答えられない難しい質問を受ける場合もありますし、説明した事が全然伝わっていない(正しく伝えられていないわけですが)事が分かる質問を受ける場合もあります。

ただ、いずれにしても上記にあるように、質問を奨励する環境を積極的に作り出す必要があるという点で、引き続きの改善に取り組みたいと思う今日この頃です。

 

 

 

Plaso Winjob パーサでタイムスタンプが+9時間ズレる件

Plaso 1.4.0 ベースの Log2timeline の winjob パーサですが、タイムゾーンの指定を正しく行わない場合、ジョブのスケジュールと実行日時が実際の時刻より +9 時間ズレて表示されます。

以下、Windows 10 環境上で、Plaso 1.4 ベースを実行しています。

log2timeline.exe --parsers winjob c:\case\winjob.db c:\Windows\Tasks

psort.exe -z Japan -w c:\case\winjob.csv -o L2tcsv c:\case\winjob.db

 上記コマンドの実行により、下記結果が得られましたが、ジョブのスケジュール日時は16時06分となっています。

02/05/2016,16:06:00,Japan,....,JOB,Windows Scheduled Task Job,Scheduled To Start,WORKGROUP\EXAMPLE$,-,Application: C:\Program Files (x86)\Google\Update\GoogleUpdate.exe /ua /insta...,Application: C:\Program Files (x86)\Google\Update\GoogleUpdate.exe /ua /installsource scheduler Scheduled by: WORKGROUP\EXAMPLE$ Run Iteration: DAILY,2,OS:c:\Windows\Tasks\GoogleUpdateTaskMachineUA.job,-,-,winjob,comment: Google ソフトウェアを常に最新の状態に維持します。このタスクを無効にするか停止すると、Google ソフトウェアは最新の状態に維持されなくなります。その場合、セキュリティの脆弱性が見つかっても修正できなかったり、機能が動作しなかったりする可能性があります。このタスクを使用する Google ソフトウェアがなくなると、タスクは自動的にアンインストールされます。 sha256_hash: 3022735948b1c774412bb361838fe5439eb7bad32d3c05c66225f41f27c452ac 

タスクスケジューラで確認すると、タスクは日本時間で 7時6分に設定されているので、9時間プラスされた値が出力されている事になります。

f:id:hideakii:20160319102959p:plain

Windows Job File Format の記述に従い JOB ファイルの内容を確認してみると、Trigerの項目として開始時刻などが入っていますが、ローカル時刻が登録されている為、これを +9 して出力している為でしょうか。

f:id:hideakii:20160319104433p:plain

次に、log2timelineの処理段階で -z オプションでタイムゾーンとして Japan を指定して処理します。

log2timeline.exe -z Japan --parsers winjob c:\case\winjobTZ9.db c:\Windows\Tasks

psort.exe -w c:\case\winjob9.csv -o L2tcsv c:\case\winjobTZ9.db

psortコマンドによるCSV出力時には -z を指定していない状態になりますので、ストレージ内に保存されているタイムスタンプ情報になります。

02/04/2016,22:06:00,UTC,....,JOB,Windows Scheduled Task Job,Scheduled To Start(以降省略)

ローカル時刻をUTC換算した値が保存されています。

psortにおいても-z Japanを指定して出力します。

02/05/2016,07:06:00,Japan,....,JOB,Windows Scheduled Task Job,Scheduled To Start(以降省略)

この場合は、日本時間として正しく出力されています。

  Winjobパーサなど、ローカル時刻を保存しているアーティファクトを処理する場合、タイムゾーン指定に注意が必要という事ですね。

 

 脱線した話題になりますが、タスクスケジューラのジョブファイルはカービングという観点ではどうなのでしょうか?

ファイルフォーマットによると、ファイル先頭部分にあるプロダクトバージョンとファイルフォーマットだけではノイズが多くなってしまいそうです。ただ、トリガー日時などが分かっているケースにおいては、そのパターンで探してみるというのも一つの案でしょうか。

 

 

 

 

Plaso Filestatパーサでタイムスタンプがズレる件

Plaso 1.4.0 ベースの Log2timeline ですが、Windows 7 環境上で実行すると、ファイルのタイムスタンプ情報が数秒ズレるという事象に悩んでいます。

具体的にはWindows 7 64bit環境で 32bit版の Plaso 1.4 を使い、filestat パーサでタイムスタンを作成した場合、該当ファイルやフォルダが持っているタイムスタンプから数秒ズレた値が結果として出力されます。(64bit版はなぜか手元でエラーになった為検証は未実施)

 

しかし、Windows 10環境上で同じく Plaso 1.4 ベースで filestat パーサを利用しても時刻ズレは発生しません。

log2timeline.exe --parsers filestat c:\case\filesta.db c:\Temp\example

psort.exe -z Japan -w c:\case\filestat.csv -o L2tcsv c:\case\filesta.db

 実行環境のOSによる差異が起きる原因が不明ですが、Windows 10環境上では問題が再現しないという事は確認できました。

 

ファイルシステムのタイムラインを作成する場合、Plaso の filestat では削除ファイルが含まれない、$FILE_NAME 属性のタイムスタンプが含まれない、という点もあり fls ベースでタイムラインを生成する方がメリットがある場合もあります。

速度的にも fls ベースでタイムラインを作成した方が早いという点がありますね。

 

flsで作成した body ファイルを Plaso の mactime パーサで処理するという案もありますが、日本語ファイル名が含まれる場合は文字化けが発生しますので、この点はやや課題でしょうか。

 

コピー手順におけるミスやトラブルからキーポイントを考える

フォレンジック

デジタル・データの(正しい)コピー手順とキーポイントを考える際に、過去の失敗から何か学ぶ事ができるのか?と思い整理してみています。

小ネタとしてお話するには良いかもしれませんが、こういった事に注意してください!!と手順書に書いたところで意味がなさそうですね。

ちなみに、自分がやらかした事例も中にはありますが、呑み会などでネタとしてお話されていたものを含みます。

 

  1. 対象と異なる機器の複製を取得した。(つまり別のパソコンだった)
  2. カートリッジに入ったDVD-RAMメディア、A面とB面があるのにA面だけコピーしてB面を取り忘れた。
  3. 電源ケーブルを抜く時、間違えて作業中機器の電源ケーブルを抜いてしまいコピー処理中の機器が落ちた。
  4. ノートパソコンで電源ケーブルが正しく接続されておらず、バッテリ駆動のままだったので途中で電源が落ちた。
  5. コピー途中で省電力モードに入ってしまった。
  6. コピー途中でスクリーンセイバーにより画面がロックされてしまった。(パスワードが分からないので解除できない)
  7. HDDパスワードが設定されているがパスワードが分からない。(つまりアクセスできない)
  8. ノートパソコンにPCMCIAタイプのLANカードを接続してコピー中、カード部分が高熱になりコピー途中で熱暴走が発生。
  9. 外付けUSB-HDDケースが2Tを超えるサイズのHDDに対応しておらず、正しくディスク全体が認識されない。(同様のパターンは複製装置・ライトブロッカーにおいても発生する)
  10. 複製装置の時刻が正しい時刻でなく、ずれていた。(時刻の設定忘れ)
  11. 複製装置のケーブル類を忘れた。
  12. 複製装置でコピーを取得したら、DDイメージファイルがまったく出来ていなかった。(複製装置の不具合)
  13. 複製装置でエラーセクタが大量にあるHDDのコピーを取得したところ、DDイメージファイルがまったく出来ていなかった。(装置の不具合)
  14. HPA・DCO領域があるHDDをコピーしようとして、複製装置でエラーが発生した。(装置の利用者がHPA・DCOを知らなかった)
  15. 複製装置のHDDチェック機能を利用して、コピー先ディスクのファイルシステムが消えた。
  16. IDEハードディスクのピンを曲げた、(IDEケーブルの向きを間違えて差し込んで)折ってしまった。
  17. IDEハードディスクのジャンパーをマスターに変更するのを忘れた。(昔はそういった手順が必要なことがあった)
  18. 2Tを超えるボリュームをツールからマウントし、ファイルを取得したら、Non-Residentのファイルの中身が全てゼロだった。(Residentのデータだけ取れていた)
  19. ネットワーク経由のコピー中に、ネットワーク機器(HUB)が再起動された。
  20. 夜間を利用してのコピー中にバックアップ処理が開始されてしまい、コピーに影響が出た。
  21. ファイルが自動的にアーカイブサーバに退避される仕組みが導入されており、コピーしたファイルがリンクだけで実体ファイルが取れていなかった。
  22. デスクトップPCのケース取り外しの際に、ケースのピンが折れた。
  23. HDDの取り外し作業中、外したネジが足りない、または戻したはずなのに余る。
  24. 取得対象のディスクの選択を間違え、(ライトブロッカーの先にあるHDDを対象とすべきところ)作業PCに内蔵されているディスクのイメージを取得した。
  25. 複製先のHDDをライトブロックした状態でイメージを出力した。(イメージの書き込みは全てブロックされる)
  26. Liveでイメージ取得している最中にWindowsがブルースクリーンになった。(エラーセクタが大量にあるHDDだった)
  27. イメージファイルを取得するコマンドラインで、オプション項目の指定を間違えていた。
  28. イメージファイルを取得する際に入力する項目で、タイプミスしていた。(綴り間違い、Notesメッセージの記入ミス等)
  29. イメージファイルの出力先を間違えた。
  30. イメージファイルの保存先がFAT32なのに、4GB以上のファイルを出力しようとした。
  31. 取得したイメージファイルの中身が全てゼロだった。
  32. 取得したイメージファイルが壊れていた。
  33. 取得したイメージファイルが自動的に暗号化されていた(つまり読めない)。
  34. Liveでのイメージ取得において、対象環境のOSが古すぎるため、最近のツールはエラーになり起動できない。
  35. Liveでのメモリイメージ取得中に、OSがブルースクリーンになった。
  36. Liveでのメモリイメージ取得中に、PCがリセットされた。(ブルースクリーンにならず強制的にハードウェアがリセット)
  37. 論理取得の対象ファイルのアクセス権が無かった。(つまりコピーできない)
  38. 論理取得の対象ファイルがオープンされていた。(つまりロック状態でコピーできない)
  39. BIOS設定画面に入る必要があるのに、BIOSの呼び出しに失敗しWindowsを起動してしまった。(Windowsに限らず、OSを起動してしまうケース)
  40. BIOS設定(起動順序)を変更する必要があるのに、BIOSのパスワードが分からず変更できない。
  41. BIOS設定を元に戻す作業を忘れた。
  42. 変更前のBIOS設定を記録に残すのを忘れた。(元の設定に戻せない)
  43. Secure Boot環境に気が付かず、CD/DVDで起動しようとして起動に失敗した。
  44. 古いMacのフロッピーディスクをWindows用のFDドライブで読み込もうとした。(つまり読めない)
  45. ハードディスクの空気穴がある部分にラベルを貼っていた。
  46. シンクライアントになっている環境で、ローカルのディスク内容だけコピーしたので必要なデータが取れていなかった。
  47. 仮想環境でスナップショットが複数あり、古いスナップショットのデータを取得していた。(最新の情報が取得出来ていない)
  48. DDイメージファイルの順番を間違えて連結しマウントした。(データに不整合が発生する)
  49. DDイメージファイルの名前が全部同じ為、DDイメージを取り違えた。
  50. 取得したイメージファイルを間違えて削除した。

 <10/4追記>

その後、Facebookで他にも、コピー開始後に機器を動かして接触不良になった、HDD取り外し時にネジ穴がすでにつぶれていた、なども教えていただきました。

恐らく、他にも色々な事例があると思うのですが、それらに対して「作業時には注意してください!!」といっても無理があると思いますので、過去の事例を参考にしつつ、正しい手順を組み、ミスが起きないように手順化する必要がありますね。

 

プログラムの通信履歴を残す

フォレンジック

皆さんの組織では、マルウェア感染したWindows PCが(組織内の)何処と通信したか?、を追跡できるログを取っていますでしょうか?

先日のプログラム実行履歴についてTwitterで呟いたところ「次のトピックはSysmonですねw」と Haruyama さんから突っ込みをいただいたので、Sysmon を利用したプログラムの通信履歴保存についてです(笑)

プログラムの実行履歴はWindowsの監査機能を利用する事でセキュリティログに記録する事ができますが、プログラムが何処と通信したかは記録されていません。

いわゆる標的型攻撃、APT攻撃と呼ばれる攻撃では、マルウェア感染した機器を踏み台として、組織内の広い範囲への侵入や情報の搾取が行われます。

この為、被害範囲が広がっているのかを確認するには、マルウェア感染した端末が、何処と通信を行っていたのか?が重要な手がかりになります。

プログラムが何処と通信したかがログに記録されていれば、被害範囲を特定する時間やコストを小さくする事が出来るはずです。(被害範囲を迅速に特定できれば、復旧にかかる時間を短くする事ができ、全体コストを抑えられます)

プログラムの通信履歴を残す方法は幾つか案があるかと思われますが、マイクロソフト社が提供しているSysmon を利用すると比較的簡単にイベントログに通信履歴を残す事ができます。

Sysmon v3.0
https://technet.microsoft.com/ja-jp/sysinternals/dn798348

Sysmon を利用すると、プロセスの実行履歴、ドライバのロード時にデジタル署名とハッシュ値を記録する、ネットワーク通信の記録などが可能になります。

プロセスの実行履歴、ファイル作成日時の変更、ドライバロードに関する記録なども残せますが、これら全てを記録していくとログが膨大になり、正直ノイズだらけになります。

 ノイズが多いログは、調査時に“時間とコスト増加”の原因になります。不要なログは取得しないのが一番です。断捨離が必要になりますので、Sysmonの設定ファイルを利用して、ネットワークの通信履歴以外は取得しないようにフィルタします。

まずは、Sysmonのインストールを行います。コマンドラインから操作する必要がありますが、以下のコマンドを実行します。

Sysmon.exe -i -n

ライセンスの確認ダイアログが表示されますので、確認してください。

インストール時に -n オプションを指定することで、ネットワークのログも取られるようになります。(後から設定ファイルでも変更できます)

現在の状況を確認するには、以下のコマンドを実行します。「Network connection: enabled」となっていることを確認できます。

>Sysmon.exe -c

Sysinternals Sysmon v3.00 - System activity monitor
Copyright (C) 2014-2015 Mark Russinovich and Thomas Garnier
Sysinternals - www.sysinternals.com

Current configuration:
- Service name: Sysmon
- Driver name: SysmonDrv
- HashingAlgorithms: SHA1
- Network connection: enabled
- Image loading: disabled

No rules installed

 

この状態でどの様なログが出力されるかは、イベントビューアで確認する事ができます。

イベントビューアを起動し、「アプリケーションとサービス ログ」を開きます。新たな項目として、Microsoft⇒Windows⇒Sysmon があるはずです。

 

次に、設定ファイルを作成します。例えば、ネットワークの履歴だけ取得する場合には以下のような設定ファイルを作成します。(Hostnameの部分はインストールするコンピュータのホスト名を記入しておきます)

<Sysmon schemaversion="2.0">
<HashAlgorithms>md5</HashAlgorithms>
<EventFiltering>
<ProcessCreate onmatch="include" />
<ProcessTerminate onmatch="include" />
<FileCreateTime onmatch="include" />
<ImageLoad onmatch="include" />
<CreateRemoteThread onmatch="include" />
<DriverLoad onmatch="include" />
<NetworkConnect onmatch="include">
<SourceHostname>Hostname</SourceHostname>
<DestinationHostname>Hostname</DestinationHostname>
</NetworkConnect>
</EventFiltering>
</Sysmon>

この設定ファイルを作成しておき、-c オプションの引数として指定します。(インデントがうまくいけてないのと、Webから貼り付けるとうまくいかないケースがあるかもしれません)

>Sysmon.exe -c sysmon_conf.xml

Sysinternals Sysmon v3.00 - System activity monitor
Copyright (C) 2014-2015 Mark Russinovich and Thomas Garnier
Sysinternals - www.sysinternals.com

Loading configuration file with schema version 2.00
Configuration file successfully applied
Configuration updated.

 設定ファイルが有効になっているかは以下のコマンドで確認できます。

>Sysmon.exe -c

Sysinternals Sysmon v3.00 - System activity monitor
Copyright (C) 2014-2015 Mark Russinovich and Thomas Garnier
Sysinternals - www.sysinternals.com

Current configuration:
- Service name: Sysmon
- Driver name: SysmonDrv
- HashingAlgorithms: MD5
- Network connection: enabled
- Image loading: disabled

Rule configuration (version 1.00):
- ProcessCreate onmnatch: include
- ProcessTerminate onmnatch: include
- FileCreateTime onmnatch: include
- ImageLoad onmnatch: include
- CreateRemoteThread onmnatch: include
- DriverLoad onmnatch: include
- NetworkConnect onmnatch: include
SourceHostname filter: is value: 'Hostname'
DestinationHostname filter: is value: 'Hostname'

 この設定ファイルの例では、ネットワークの項目で Include を指定し、SourceHostname か DestinationHostname のいずれかが自分宛てである場合にログを残すようにしています。

ただ、これでもまだノイズとなるレコードは出ると思いますので、更にフィルタできると良いのですが、Include で IS NOT を併用しても手元ではうまくフィルタできませんでした。

この例では Include をデフォルト指定にしていますが、Exclude をデフォルトにして、ノイズを落とすような条件を設定する方が結果的には良い場合もあるかと思います。

特に定期的に127.0.0.1 宛ての通信が出るなど、無駄なレコードがある場合には Exclude として条件を構築した方がすっきりする印象があります。

最後に忘れずに、sysmon のログサイズを増やしてください。デフォルトでは 65536 KB になっているかと思いますが、環境によっては全然足りないかと思います。

手元のPCでは、5MB/day という感じですので、 一ヶ月約150MB、3カ月程度は遡れるようにしたいとすれば450MB~500MBにサイズを増やしておく必要があります。

クライアントPCであれば500MB程度を消費してもそれほど空き領域を圧迫するということは無いと思われます。

逆にサーバで通信の履歴を取得するのはかなり困難が予想されますので、事前にテストしてから判断いただく必要があると思われます。

サーバ側では、ファイルへのアクセス履歴などを検討した方が標的型攻撃による被害を想定した場合には現実的かもしれません。プロセスの通信履歴を残したとしても、その通信でどのファイルをC&Cへ送ったのか?という事は追跡できませんので、どの様なファイルにアクセスしたか、流出した可能性があるのか?を追跡するには、別途ファイルアクセスの履歴が残されている必要があります。

 

<お願い>

皆さんのご協力があって、目標金額に達したようです!!ありがとうございました!!

 

プログラムの実行履歴を残す

フォレンジック

皆さん、プログラムの実行履歴って取られてますか?

Windows が標準で搭載している監査機能を利用すると、プログラムの実行をセキュリティログに残す事ができます。

具体的にはローカルセキュリティポリシーなどで、「プロセス作成の監査」を有効にすればイベントID 4688 ”新しいプロセスが作成されました。” がセキュリティログへ記録されるようになります。*1

プログラムを起動するたびにレコードが記録されます。ノイズとなる部分もありますが、標的型攻撃などを受けてマルウェアが実行されたか?を確認する際にはログがあれば簡単に特定しやすくなります。

デジタル・フォレンジック的には、プログラムの実行痕跡を確認するという方法もありますが、プリフェッチやらレジストリやらを各種ツールで確認するよりも、イベントビューアで ID 4688 をフィルタして確認した方が早く確実ではないでしょうか?*2

 

イベントビューアならリモートからエンドポイントへ接続してログを確認する事も可能でしょうし、イベントログをSyslogで飛ばしておいてそちらで確認するという方法でも良いかもしれません。*3

 

残念ながらこの監査設定はデフォルトでは有効になっていませんので、別途有効にする必要があります。*4

Audit Process Creation

https://technet.microsoft.com/ja-jp/library/dd941613(v=WS.10).aspx

事故を想定した仕組みを構築する際は、ぜひこの設定を有効にする事を検討いただけると、インシデント対応時により迅速に影響範囲の確認が取れるかと思います。

例えば電子メールにマルウェアが添付されており、PCの利用者が誤って実行したか特定したいケースや、実行した後にどの様なプログラムが実行されたかをログからすぐに確認が出来るはずです。

注意点として、このログはセキュリティログに記録されますので、セキュリティログのサイズをデフォルトよりも大きくしておかないと、ローテーションされてしまう可能性があるという事です。

どの程度のサイズまで増やしておけば良いのか?というのは、実際にログを取得し、どの程度の期間までを残せるかテストした上で決めていただく必要があると思います。例えばざっくり200MB程度に増やしたとしても、最近のPCであればHDDの空き容量としては余裕ではないでしょうか。

 

Windowsの標準機能でもプログラムの実行履歴を残す事が可能ですが、もし資産管理ツールなどが導入されており、そちらでプログラムの実行履歴を残る事ができるのであれば、そちらを使う方法でも良いと思います。低コストで実現できるのであれば、その手段を取るのが一番よいと思います。一部機能的な制限があるとしても、何も取ってないよりは良いと思います。

問題はログのサイズと運用管理という点になると思われますが、一度取得しているログが本当に役立つのか棚卸しを行い、不要なログは削除するなり、取得を止めるなど、セキュリティについても断捨離を行うと追加コストを抑えて改善していける可能性があります。

 

 記録してあると助かる「プロセス作成の監査」ですが、実はこのログだけでは解決できない大きな問題があります。どの様なプロセスが起動したかを確認できますが、そのプロセスが何処と通信したのか?はログに残りません。

標的型攻撃ではマルウェアがPCへ侵入した後、C&Cとの通信を行う、組織内の別のPCや機器へ接続する、などの行動を攻撃者が行いますが、それを追跡するのがプロセスの実行履歴だけでは困難という事です。

起動したマルウェアプロセスが何処と通信していたのか、それが特定できると更に便利だと思いませんか?

 

 

 

*1:Windows vista および Windows Server 2008 のセキュリティ イベントの説明 https://support.microsoft.com/ja-jp/kb/947226/ja

*2:プリフェッチファイルを確認した方が、セキュリティログでポイントを絞る事もできますので、どちらも簡単に把握できるスキルがあると良いとは思います

*3:WinSyslogとEventReporterの組み合わせで簡単に実現できますね

*4:更に詳細にコマンドライン記録を設定する事も最近は可能です