サイバー攻撃の侵入分析がつよつよになってきた気がするので箇条書きでまとめてみました。
現在すでにサイバー攻撃の調査を業務上行っているジュニア向けに書いています。
スキルの向上に困っている場合に参照してみてください。
感染拡大防止、修復作業、再発防止などについては深く言及しません。
上記はMITER D3FENDが参考になります。
なお、実際に使えるツールなどは面白いものがあればいくつか検証して載せてみます。
いったんわからない解析手法などがあればLLMのRAGなどを利用して調べてみてください。
サイバー攻撃を防ぐためには
一般的な内容や自論を含みますが、
- 攻撃者は防御の穴を突いてくる。防御をする側としては網羅的に穴をふさぐ必要がある。
特にセキュリティ人材としては網羅的な知識を持っていることが好ましい。 - 一人ですべてを網羅することは難しいため、チームとして広い知識があるとよい。
IT分野におけるバックグラウンドの多様性が攻撃を防ぐことにつながる。
必要な考え方
- セキュリティに完全はない
一つに依存せず多層防御的な観点 - リスクを0にすることは難しい
リスクマネジメントにより、低減、受容等のバランスをとる - ビジネスのメインはセキュリティではない(ことがおおい)
セキュリティとビジネスのバランスが必要 - その他 対応品質の考え方
サービスマネジメント や プロジェクト管理
ITシステムの知識
攻撃を知るには通常を知る必要があるため、下記のような知識があれば望ましい。
(記載されているものだけではないが)
- 設計、エンジニアリング、運用、トラブルシューティングの知識
- エンドポイントの動作
- ネットワークの動作
- プログラミングの基礎(WEBアプリ、デスクトップアプリ、組み込み型を問わない)
攻撃の知識
攻撃であるかどうかは決まった情報だけでは判断が難しい。
特に攻撃の流れ(TTP)は不審さを見極めるのに重要な指標。
デジタル領域とフィジカル領域、ソーシャルエンジニアリング領域など様々なところから攻撃される可能性がある。
特に、外部攻撃領域からの攻撃やフィッシング関連の攻撃は知っておいたほうがいい。
- 攻撃の流れ Unified Kill Chain
- 攻撃技術 MITER ATT&CK
- ソーシャルエンジニアリング/詐欺 メールなどにより不正送金をさせた事例など
- ホスト、ポート、脆弱性スキャン などの一般的な調査から侵入への知識など
- マルウェアの特徴 エントロピー、RWX、Imports, Exports, etc..
防御の知識
省略、わからないものがあれば調べてみてください。
- 防御の流れ PICERL
- 証拠保全 証拠保全ガイドライン(IDF)
- 感染拡大防止 MITER D3FEND
- 解析 (今回のメイン)
- 復旧 MITER D3FEND
- 再発防止 MITER CAPEC/ATT&CK/D3FEND etc.
ビジネスに関する知識
ITシステムのユーザの一般的な振る舞いを知ることは重要。
*偏見にならないように気を付けないといけないが。
たとえば、
- 新入社員 アカウントの登録、PCの設定関連を行いやすい(かもしれない)
- 開発者やシステム管理者がよく使うツール =>攻撃者も使う便利なツールを使っている可能性もある
- 各種業界による業務の違い、現場作業が多くPCを持ち運ぶ、リモートワークが多いなど
アナリストの成熟度
個人的な意見ですが、SOCアナリスト的な立場であれば下記のような成熟度で考えています。
分析全般の成熟度
攻撃かどうかだけではなく、発生原因の特定までできたら再発防止などの対策ができる。
攻撃の場合には脆弱性、業務に関する検知の場合にはビジネス上の意図などが推測できるとよい。
右に行けば行くほど良いのではないかと考えています。
分析全般
- 評判による判断 < 攻撃との類似性による判断 < 文脈による判断
- 少ないソース(アーティファクト)による判断 < 複数ソース(アーティファクト)による判断
- 事実だけの提供 < 解釈の提供
攻撃/誤検知の判断
- 攻撃の可能性を判断できる < 攻撃の発生経路を追跡できる < 攻撃の発生原因を特定できる
- 業務の可能性を判断できる < ユーザの意図を推測できる < ビジネス上の必要性を推測できる
文脈による分析のすすめ
評判の事実だけではなく、なぜかまで考えて検証すべき、特に新規の攻撃は評判だけでは判断できない。
時系列なども重要です。
マルウェアに類似しているだけで評判が悪い正規のファイルや、逆に評判が悪くないインフラだが攻撃の場合もあります。
文脈
- 攻撃者専用のインフラなのか
攻撃者も正規のユーザも利用するインフラなのか - 攻撃者専用のツールなのか
攻撃者も正規のユーザも利用するツールなのか
時系列
- 正規のサイトが改ざんされたことがあるため評判が悪い
改ざんされたのち時間が経過している etc. - 評判は悪くない
一方で最近作成されたばかり etc.
解析するアーティファクトの違い
形式が決まっている読み取りやすいアーティファクトなどは解析がしやすい。
若干重複するところもあるが、、、個人的な解析しやすさは下記の順番。
- インテリジェンス系 (特にオープンソースはだれでも利用しやすい)
- ファストフォレンジック + ネットワークフォレンジックなど (比較的フォーマットが統一的)
- ライブフォレンジックなど (自由度が高いが専用のコマンドが用意されている場合がおおい)
- ディスクフォレンジック + メモリフォレンジック (仕様の不明なアーティファクトを調査する場合もある)
解析技術
インテリジェンス
各種調査で見つかった情報(IoCなど)を補足するために情報の収集と分析を行う。
利点
- 汎用性が高い
- コンテキストの確認につよい
懸念点
- 情報が正確だとは限らない
解析イメージ
- Googleによる情報収集など GoogleHacking
- OSINTツールによる各種IoCの評判等の確認 OSINT Framework
- ディープ/ダークウェブによる情報収集
- 収集した情報の分析 論理的誤謬、バイアス、ヒューリスティック
勉強方法
- 論理的誤謬をまずは知る
- 分析における精度の上げ方を知る 複数ソース、バイアス排除、etc.
- 情報の収集方法のバラエティを上げる 完全一致検索、各プラットフォームの検索クエリ
ファストフォレンジック
環境を横断的に解析をする場合には、ログ解析によるファストフォレンジックが向いている。
利点
- 環境を横断的に解析ができる
懸念点
- 保存期間の問題
- 可視性が完璧だとは限らない
- ログの仕様による
- アーティファクトは概要レベルの情報 ハッシュ値など
製品例
- SIEM ElasticSearch / EQL
- EDRやIT資産ツールログ解析機能など
解析イメージ
- ネットワーク・ポート・アドレス変換などの追跡
- ポート番号とプロセスの紐づけ
- プロセスの追跡 COM object/サービス/RPC/スケジュールなど
- ファイルの追跡 書き込みプロセス、実行プロセス
- アカウントの追跡 作成時、認証失敗、成功、ログオンタイプなど
- 環境全体の通常時と異常時の比較など
- 複数ログのjoinやstatsの確認
アーティファクトのイメージ
- 各種製品のログ
- sysmon
- snmp syslog
勉強方法
- sysmonでログを取得して、ElasticSearchで解析を推奨
- いろんな操作をしてログ上どのように見えるか見てみると面白い
ライブフォレンジック
ファストフォレンジック上取得できなかったログの補完などに向いている。
特定のホストなどの環境に接続して解析する、アーティファクトの取得して次の解析につなぐことができる。
利点
- アーティファクトの取得ができる
- プロセスやファイルが存在していたら様々な情報が取得できる
懸念点
- すでに削除されたアーティファクトなどの情報は限定的にしか取得できない
- リモート接続のためネットワークに影響を受ける(サイズの大きいアーティファクト)
- スキャンなどの網羅的な調査もできるが時間がかかる
製品例
- EDRやIT資産ツールのリモート操作機能
- デフォルトのRDP、WMIなど(認証情報がメモリに残る懸念)
解析イメージ
- Wmi/Ciminstance PowerShellやcmd
- 永続化の情報取得 regやschtasks、scなど
- アカウントの情報取得 net系
- コマンド実行履歴 .bash_historyなど
- プロセスやセッションの確認
- ファイルシステム関連
- プロセスダンプの取得 => メモリフォレンジック
- ファイルの取得 => ディスクフォレンジック/マルウェア解析
勉強方法
- などで様々な情報を取得してみる。
- 個人的にはトラブルシューティングができれば調査もある程度できると思う。
- 各種プラットフォーム上のアーティファクトを知る。(ディスクフォレンジックなど)
ディスクフォレンジック
ディスクアーティファクトの解析を行う。
解析の速さでいうと個人的には下記の順番になる(開始するまでの準備時間も含める)
- ファストフォレンジック>ライブフォレンジック>ディスクフォレンジック
利点
- 製品やログの事前設定がなくても解析できる。
- ファイルシステム全体のスキャンなどが行いやすい。
- ライブフォレンジックと比較して、解析時に排他制御などを気にしなくていい
懸念点
- 攻撃の調査やシステム運用のために残るような情報とは異なるため、少々特殊な場合が多い。
- 仕様になっていない情報を解析に使うため、バージョン差異などの影響を受けやすい。
解析イメージ
- MFTのメタ情報からファイルの作成や削除履歴
- レジストリ値から各種アプリのインストールなど...
- ブラウザのSQLite DBからアクセス履歴 ...
- FTK Imager, Autopsy, ErickZemmerman-Tools etc..
勉強方法
- 自分のパソコンの操作をフォレンジックの記事などを参考に解析してみると理解が深まる
メモリフォレンジック
メモリダンプはプロセスツリーなどの各種情報が復元できる可能性が高い。
プロセスダンプ(メモリ上のマルウェア解析)は検知回避や解析回避手法に関係なく調査がしやすい。
利点
- プロセス関係などが取得できる。
- 検知回避手法や、解析回避手法の影響を受けずに実際のメモリがみれる。
懸念点
- 揮発性(攻撃の情報の残りにくさ)が比較的高い
- プロセスダンプの分解などはちょっと難しい(情報が少ない)
解析イメージ
- メモリダンプによるプロセス関係やネットワークの振る舞いなど volatility
- プロセスダンプによる実行されているプロセスの詳細解析 WinDBG (難しい)
- Strigns、Yaraなどのブラックボックス解析は比較的簡単
勉強方法
- 最初はVolatilityからやっていったほうがよさそう
- WinDBGは奥が深そうだがまだ勉強中
ネットワークフォレンジック
ブラックボックス的ではあるが、攻撃ターゲットの情報より改ざん可能性などが低い可能性。
情報により解像度が異なる可能性がある。
利点
- 改ざん難易度が高い(リモートで保管されているなど)
- ネットワーク監視などシステム運用目的で情報が残りやすい。
懸念点
- 暗号化されている通信の内容などはミラーリング等ではキャプチャできない。
- 生のパケットをすべてキャプチャするのは現実的に難しい。
解析イメージ
- 監視ログなど SNMP、SYSLOG
- パケット WireShark
- アプリケーション関連ログなど HTTPヘッダ情報/メールのメタ情報
勉強方法
- ネットワークプロトコルのヘッダや設計を知っていたら勉強しなくてもできる気がする。
- もししたいなら、ネット上でアーティファクトを拾って解析をやってみてもいい
マルウェアやインフラ解析
TTP全体としてそこまで重要ではない場合もおおく、OSINT情報などがある場合に常に必要だとは限らない。
特にマルウェアのファイルやメモリ、通信先の解析をする利点は新規の攻撃などにおいてよいときもある。
目的に応じてどこまで解析するかは考慮すべきであり、動的解析はマルウェアの感染拡大やアトリビュート漏洩に注意すべき。
利点
- 不審性のたかいファイルなどの最終的な判断に使える。
懸念点
- 解析回避が利用されているマルウェアは解析が難しい。
- 種類によって解析に使うツールや手法が大きく変わる。
解析イメージ
- 検索 OSINT
- 動的解析 通信先へ接続、マルウェアを実行して振る舞いの確認 サンドボックス、mraptor(ole) etc.
- 静的解析(ブラックボックス) PEStudio, DIE, capa, floss
- 静的解析(ホワイトボックス) DnSpy, IDA, Ghidra, OLE, Exe(python)からソースコード変換など
- 解析回避手法の無効化 書き換えや命令の変換
勉強方法
- 動的解析は感染拡大には注意
- いくつか本を読んでみて試行錯誤してみるとよい
- 個人的には スクリプト系 => Office/PDFファイル => .Netバイナリ => etc... がいい気がする。
- ブラックボックスの静的解析あたりからがよいかもしれない
- マルウェアの取り扱いにも注意が必要(不正指令電磁的記録に関する罪)
おわり
サイバー攻撃の解析についてはどうやるべきかは賛否両論だとは思います。
個人的な分析スキルに関する考え方を文章化してみました。
少しでも参考になれば幸いです。
その他記事