はじめに
セキュリティ担当者やセキュリティに興味を持っている方向けの記事です。
セキュリティ担当者として、不審なファイルを解析するときに様々な解析を
行う場面があるかと思います。
そういったファイルを解析する際に何をもって安心と判断するかの一助として
記事を書きます。
基本的な内容なのですでにSOCアナリストなどとして活躍されている方には
物足りない記事になるかと思います。
表層解析メイン
動的解析と静的解析は方法を解説と勉強法を軽く紹介
本記事のスクリーンショットに出てくる接続先に接続すると
マルウェア感染の可能性があります。
自己責任にてよろしくお願いいたします。
また、マルウェアの保有などは法令により罰せられる場合があるため、
サイバーセキュリティ関連法規に関する理解がない場合は安易に検体を
入手しないようにして下さい。
マルウェア解析の種類
表層解析
一番簡単な解析手法
動的解析や静的解析までいかないファイルの特徴をもとに検索する
ハッシュ値、ファイル名、ファイルパス、証明書、Yaraルールなどの
ファイルの特徴からOSINTツールや検索エンジンを使って評価する
ほかの解析前に必ず実施する
必要な能力
検索エンジンやOSINTツールを使う能力
※公開されている蓄積された情報を効率よく検索や分析を行うために必要
動的解析
OSINTツールのサンドボックス環境や独自の隔離された環境を使って
動作を確認する手法
表層解析で全く類似ファイルがなく、未知のファイルであり、
悪意のあるファイルかを判定できない場合、
悪意の判定だけではなく動作を確認したい場合に使える
また、ファイルレス攻撃の解析起点となる場合もある
※そのファイル自体は悪意がないが、悪意のあるサーバと通信して
ファイルを保存せずに攻撃を実行させるような場合
必要な能力
マルウェアの挙動に関する理解が必要
※結果を読み取る能力
静的解析
静的解析専用ツールを使って、実行ファイルの動作を読み取っていく手法
動的解析の回避が行われており、サンドボックス環境にて解析ができない
場合や詳細な解析(マルウェアのファミリを特定するなど)を行いたい
場合に効果的
必要な能力
暗号や難読化の解読
C言語やアセンブリに関する理解
マルウェアの挙動に関する理解が必要
解析方法の違いなどまとめ
全く何の前提知識もない場合の難しさは下記の通り。
難易度と業務上の需要
- 表層解析
- 動的解析
- 静的解析
業務上必要になるスキルも上記と同じ順番
流れも時間がかからないところから始めて、目的が達成できるところまで
実施する
表層解析 → 動的解析 → 静的解析
イメージとしては
■ファイルの悪意判定
インシデントレスポンスでは 表層解析 が適している
公開された情報は比較的簡単に入手できるため迅速な対応ができる
ただし、未知のファイルの場合には機能しない場合がある
その場合は、入手元をヒアリング、または動的解析まで実施する場合もある
■ファイルの挙動確認
表層解析によりセキュリティブログなどから挙動を確認するか
動的解析で実際の挙動をみることが効率的
ただし、業務用ファイルなどの場合は、内部に解析用の環境を作る必要がある
■ファイルの挙動や悪意判定以上の詳細な解析
静的解析が適している
基本的には未知のファイルでセキュリティブログなども出されていない
ようなマルウェアの特徴や目的、意図しているものなど調査したい
場合に実施する
マルウェアの表層解析
基本的にはハッシュ値をもとに検索する
EDR製品などが入っている場合は基本的に専用のフィールドが用意されている
1 ハッシュ値とOSINTツールでファイル評価
手順
# Windows コマンドプロンプトの場合(MD5はSHA256などでもOK)
certutil -hashfile <ファイル名> MD5
# Windows PowerShellの場合
Get-FileHash <ファイル名> -Algorithm MD5
# Linuxの場合
md5sum <ファイル名>
上記で出力された値をOSINTツールに入力する
(↓)VirusTotal
一番使われているイメージ
(↓) HybridAnalysis
Yaraルールが検索できたりするのが特にうれしい
解析例
今回は abuse.ch の malware breezer に比較的最近登録された
マルウェアを VirusTotalで確認
下記をVirusTotalで検索する
598f99c870529c864b369aff4b27fc20
結果は下記のようになる
Popular threat trojan.gen3 となっている
よくあるものとして PUP(Potentialy Unwanted Program) などはよく見る
今回だと
trojan(トロイの木馬:有用なプログラムの振りをする)
downloader(ダウンローダー:悪意のあるファイルをダウンロードする)
有用なプログラムの振りをしてマルウェアに感染させるファイルだと推測される
参考までにその他情報として
DETAILS
ファイルの特徴等がわかる
(↓)確認されているファイル名
(ファイル名はハッシュ値に影響しない)
今回のファイルの場合はないが、署名から会社名やツール名がわかる場合もある
BEHAVIOR
ファイルの挙動やサンドボックス解析結果などがわかる
(↓)Sigmaルールの検知から検知した挙動確認(右の眼のマーク)
上記を押すと下記のルールが出てくる(読み方省略)
title: New RUN Key Pointing to Suspicious Folder
id: 02ee49e2-e294-4d0f-9278-f5b3212fc588
status: experimental
description: Detects suspicious new RUN key element pointing to an executable in a suspicious folder
references:
- https://www.fireeye.com/blog/threat-research/2018/08/fin7-pursuing-an-enigmatic-and-evasive-global-criminal-operation.html
author: Florian Roth (Nextron Systems), Markus Neis, Sander Wiebing
date: 2018/08/25
modified: 2024/03/18
tags:
- attack.persistence
- attack.t1547.001
logsource:
category: registry_set
product: windows
detection:
selection_target:
TargetObject|contains:
- '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\'
- '\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\'
selection_details:
- Details|contains:
- ':\$Recycle.bin\'
- ':\Temp\'
- ':\Users\Default\'
- ':\Users\Desktop\'
- ':\Users\Public\'
- ':\Windows\Temp\'
- '\AppData\Local\Temp\'
- '%temp%\'
- '%tmp%\'
- Details|startswith:
- '%Public%\'
- 'wscript'
- 'cscript'
filter_main_windows_update:
Image|startswith: 'C:\Windows\SoftwareDistribution\Download\'
Details|contains|all:
- 'rundll32.exe C:\WINDOWS\system32\advpack.dll,DelNodeRunDLL32'
- 'C:\Windows\Temp\'
condition: all of selection_* and not 1 of filter_main_*
falsepositives:
- Software using weird folders for updates
level: high
(↓)下にスクロールしていくともう少しわかりやすい
ファイルの書き込みやレジストリキーの変更など(例はファイル書き込み)
COMMUNITY
コメントが見れる
ファイルの情報や他のOSINTツールの解析結果のURLなど記載されていることがある
参考 URLの評価
VirusTotalはURLも評価できる
参考までにRELATIONSに記載がある通信先を評価してみる
接続先の調査は abuse.ch の urlhaus などほかのサイトが個人的に使いやすい
(↓) URL Haus
サイトのハッシュ値など確認できる
(↓) urlcan.io
サイトの画面を接続せずに確認できる
2 ファイル名やファイルパス、ハッシュ値を検索
グーグル検索は様々なオプションがある
"" で検索したい文字を囲むと完全一致検索になる(今回だと1件)
上記のようにファイル名やファイルパス、ハッシュ値を完全一致で検索すると
セキュリティブログやOSINTツールの検索結果が出てくることがある
正規のツールの場合も、ハッシュ値から正規サイトが見つかることもある
動的解析(参考)
解析結果を読める知識が必要
参考までに マルウェアの教科書 が読みやすい
(最後の列にリンク)
OSINT解析環境による解析
VirusTotalにハッシュ値ではなくファイルを直接アップロードすると解析できる
その他、anyrunやjoesandboxなどがある
どちらも検索すると出てくるため省略
解析結果の見方はマルウェアの挙動に関する理解が必要
自作サンドボックス環境による解析
こちらはCuckoo Sandboxが一番やりやすい
検索したらたくさん出てくるので省略
その他のツール
サンドボックスの製品ではなく、隔離した環境でツールとマルウェアを動かす
例
OWASP ZAP
Process Monitor
Process Hacker
RegShot
下記のNISCが出している記事が個人的にいろいろなツールが(動的解析以外もある)
静的解析(参考)
シェルスクリプトの場合は解析はエディタやCyberChefによる難読化解除
実行可能形式ファイルの場合は Ghidraや IDA Proなどが人気
個人的にはGhidraを使っている
Ghidraの勉強方法は Ghidra実践ガイド がおすすめ
その他、アンパッキングツールやCyberChefによる復号化も使えるとよい
暗号などのアルゴリズムに関する理解もあったほうが
いいがChatGPTなどを使って、C言語を読ませるとある程度
挙動を説明してくれたりするので必須ではない
マルウェア解析のためのおすすめ書籍
表層解析以上の解析を行いたい場合下記書籍を推奨
マルウェアの挙動を理解したい場合
マルウェアの教科書
静的解析ツールを勉強したい場合
Ghidra 実践ガイド
静的解析のためプログラミングを覚えたい場合
Windows カーネルドライバプログラミング
本を読まなくてもいけるのであれば TryHackMe でも解析系の問題もあるので調べてみるとよい
(個人的にはツール名などで調べてみることが多い)
おわりに
マルウェアの解析は奥が深く、初学者には難しいことが多いと思います。
少しでも本記事がサイバーセキュリティの解析スキルのアップにつながればありがたいです。
また、マルウェアは大変危険な物なので、取扱には各法令や規制を理解した上で取り扱い、
第3者への被害がないように万全の注意を払ってください。