mirror of
https://github.com/nganhkhoa/malware.git
synced 2024-06-10 21:32:07 +07:00
40 KiB
40 KiB
Tools
- DFIRやマルウェア解析,OSINT,その他の多数のツールに関するデータベース
DFIR TRAINING(TOOLS) - infographicsやツールのチートシート
DFIR TRAINING(RESOUCES-Downloads-Infographics & Cheet Sheets) - マルウェアに含まれることが多い文字列とBase64エンコードの対応表
Learning Aid - Top Base64 Encodings Table
OS/VM
- FLARE VM
FireEye社が提供するマルウェア解析, DFIR, ペネトレーションテストに特化したWindowsベースのディストリビューション
Practical Malware Analysis Labsが同梱 - REMnux
SANSが提供するリバースエンジニアリング,マルウェア解析に特化したUbuntuベースのディストリビューション - Tsurugi Linux
DFIR,マルウェア解析,OSINTに特化したUbuntuベースのディストリビューション - Ninjutsu OS
ペンテスト,red team用のWindowsベースディストリビューション,800以上のtoolsが含まれている
Static Analysis and Debug tools
※空欄は調査中(更新予定)
name | disassembler | decompiler | debugger | reference |
---|---|---|---|---|
IDA pro | 〇 | 〇(Not free) Snowman(plugin) |
〇 | |
Binary Ninja | 〇 | |||
Cutter | 〇 | r2dec,r2ghidra | native gdb windbg etc. |
INTRO TO CUTTER FOR MALWARE ANALYSIS(2019-03) megabeets.net Cutter: Presenting r2ghidra Decompiler,r2con 2019 |
Ghidra | 〇 | 〇 | Reversing WannaCry Part 2 - Diving into the malware with #Ghidra,youtube cheetsheet Scripting in Ghidra, Patching MacOS Image2Icon Intro to Reverse Engineering Intro to Reverse Engineering, Part 2 |
|
x64/x32dbg | 〇 | Snowman | 〇 | |
WinDbg | 〇 | 〇 | Memory Analysis Skillbuilder Series: Skeleton Key Deep Dive with WinDbg WinDbg — the Fun Way: Part 2 WinDbg Basics for Malware Analysis |
|
GDB | 〇 | 〇 | ||
objdump | 〇 | |||
Snowman | 〇 | |||
DbgShell | 〇 | 〇 |
name | plugin | price | platform | remarks |
---|---|---|---|---|
IDA pro | Lighthouse UEFI_RETool VT-IDA Plugin uEMU |
Not free | multi | |
Binary Ninja | Lighthouse BinDbg |
Not free | multi | |
Cutter | CutterDRcov Jupyter Plugin for Cutter x64dbgcutter etc. |
free | multi | |
Ghidra | pwndra ghidra_scripts OOAnalyzer ghidra_scripts by ghidraninja ghidra_scripts by AllsafeCyberSecurity |
free | multi | |
x64/x32dbg | DbgChild checksec idenLib xdbg ScyllaHide x64dbgpylib ClawSearch x64dbg-dark YaraGen xAnalyzer Unpacking Script |
free | windows | |
WinDbg | free | windows | Kernel mode debugging possible | |
GDB | gdbpeda pwngdb |
free | linux | onlinegdb |
objdump | free | linux | ||
Snowman | free | windows | ||
DbgShell | free | windows |
Tracer
- drltrace
- DynamoRIO based
- ライブラリトレーサ(Windows版ltrace)
- drstrace
- DynamoRIO based
- システムコールトレーサ(Windows版strace)
- memtrace
- DynamoRIO based
- メモリトレーサ
- bbbuf
- DynamoRIO based
- べーシックブロックトレーサ
- API Monitor
- GUI(Windows)
- APIコールを監視ツール
- Captain
- APIフックを行いAPIの呼び出しを監視
- yaml形式で記載されたシグネチャをもとに,DLLインジェクション,マクロ実行,lsassメモリダンプ,wmicおよびmshtaマルウェアの検出を行うことが可能
- 現在はアルファ版(2020/02/23時点)
Instrumentation
- drcov
- DynamoRIO based
- カバレッジ計測
- drrun経由で実行
> drrun.exe -t drcov -- [program name] [arguments]
- Intel PIN
Traffic Analysis tools
- Wireshark
- CLI版はTShark
- tcpdump
- Scapy
- Fiddler
- Web Proxy debugger
- EKFiddle
- URLパターン,IPなどから特定のマルウェアやEKの通信を識別することが可能
- ref:
- Burp Suite
- ローカルプロキシツール
- プラグイン
- Fake-net NG
- INetSim
- Noriben
- Parse User Agents
- User AgentをパースするWebサービス
- User Agentに含まれる情報の調査に利用したり,一般的なUser Agentが田舎の判断に利用することが可能
- 数百万のUser Agentに対応
- Packetmon
Forensic
- Windows Log
- Sysinternals
- Sysmon
- ホスト上で発生したプロセス,ファイル,レジストリ,ネットワーク,WMI関連のインベントをEventLog(.evtx)に記録する
- SysmonSearch
- Sysmonで生成されたイベントログの分析ツール,Kibana使用
- v11.0よりファイル削除(EventID:23)と削除されたファイルのコピーをアーカイブボリューム内(ボリュームごと)に保存する機能が追加された
- Sysmon
- VmdkReader
- vmdkイメージからファイルを抽出するツール
- Autopsy
- ディスク等のフォレンジックツール
- Central Storageなどを介して複数のユーザでコラボしながらフォレンジックを行うことが可能
- 3rd Party modules
- Volatility
- DFIRやマルウェア解析に焦点を当てたメモリダンプ調査フレームワーク
- プラグインが充実している
- プロファイルの指定が必要である(メモリダンプがどのシステム(OS,データ構造,シンボル)で使用したものなのかを識別するため)
- Volatility 3からは不要とのこと
- 対応しているメモリダンプのフォーマット
- Raw linear sample (dd)
- Hibernation file (from Windows 7 and earlier)
- Crash dump file
- VirtualBox ELF64 core dump
- VMware saved state and snapshot files
- EWF format (E01)
- LiME format
- Mach-O file format
- QEMU virtual machine dumps
- Firewire
- HPAK (FDPro)
- ref:
- Virtual Box上のゲストOSからメモリダンプ(VirtualBox ELF64 core dump)を取得する方法
- VBoxManageを利用してホストOSからゲストOSを起動する(VBoXManageで起動しないと原因は分からないがメモリダンプの取得でうまくいかなかった)
> .\VBoxManage.exe list vms # Virtual Boxで作成済みのゲストの名前とuuidの一覧を取得 > .\VBoxManage.exe startvm "guest name or uuid" #起動
- VboxManageでメモリダンプ(VirtualBox ELF64 core dump)を取得する
> .\VBoxManage.exe debugvm "guest name or uuid" dumpvmcore --filename output.dmp
- この他に,vboxdump.pyというメモリダンプ作成用のpythonスクリプトもある
- ref:
- Plugins
name | default | how to use | description | reference |
---|---|---|---|---|
malfind | 〇 | python vol.py -f zeus.vmem malfind -p 1724 | ||
hollowfind | - | python vol.py -f infected.vmem --profile=Win7SP0x86 hollowfind | ||
yarascan | 〇 | python vol.py -f zeus.vmem yarascan --yara-file=/path/to/rules.yar | ||
malconfscan | - | python vol.py malconfscan -f images.mem --profile=Win7SP1x64 | マルウェアのコンフィグ情報の抽出,cuckooと組み合わせることが可能 | wiki |
malstrscan | - | python vol.py malstrscan -a -f images.mem --profile=Win7SP1x64 |
- Hexinator
- バイナリエディタ
- 各種ファイルタイプの構造が定義されたgrammarと呼ばれるxmlファイルを用いて,開いたファイルの構造を認識し,ファイルヘッダやデータ内の各パラメータをバイナリエディタ上でカラーリングして表示
- パラメータの値の閲覧,編集も可能
- freeで多くのgrammerが用意されているが,ツール自体は試用期間のみ無料
- ファイルの破損部分を確認する際に有用
- バイナリの差分の確認も可能
Threat hunting
- EQL
- cheet sheet
# maldoc -> command,script process where parent_process_name in ("winword.exe", "excel.exe", "powerpnt.exe") and process_name in ("powershell.exe", "cscript.exe","wscript.exe", "cmd.exe") # Unusual Child Process process where subtype.create and ( (process_name == 'smss.exe' and not parent_process_name in ('System', 'smss.exe')) or (process_name == 'csrss.exe' and not parent_process_name in ('smss.exe', 'svchost.exe')) or (process_name == 'wininit.exe' and parent_process_name != 'smss.exe') or (process_name == 'winlogon.exe' and parent_process_name != 'smss.exe') or (process_name == 'lsass.exe' and parent_process_name != 'wininit.exe') or (process_name == 'LogonUI.exe' and not parent_process_name in ('winlogon.exe', 'wininit.exe')) or (process_name == 'services.exe' and parent_process_name != 'wininit.exe') or (process_name == 'svchost.exe' and parent_process_name != 'services.exe' and not (parent_process_path == '*\\system32\\svchost.exe' and process_path == '*\\syswow64\\svchost.exe')) or (process_name == 'spoolsv.exe' and parent_process_name != 'services.exe') or (process_name == 'taskhost.exe' and not parent_process_name in ('services.exe', 'svchost.exe')) or (process_name == 'taskhostw.exe' and not parent_process_name in ('services.exe', 'svchost.exe')) or (process_name == 'userinit.exe' and not parent_process_name in ('dwm.exe', 'winlogon.exe')) )
- cheet sheet
- ref:
.NET analysis
- dnspy
.NETデコンパイラ,C#やVBで作成された実行ファイルを高精度でデコンパイルする
Utilities
- PeBear
- PeStudio
- ResourceHacker
- PEファイルからリソースファイルの抽出,編集が可能なツール
- PEiD
- 010 Editor
- 有償(1ヶ月Trialあり)のテキストエディタ,バイナリエディタ
- Script機能による自動化
- official repoや個人サイトからダウンロード可能
- Template機能によるバイナリフォーマットのパースやSyntax Highlight機能
- ファイルの破損箇所などを確認可能
- official repoや個人サイトからダウンロード可能
- プロセスメモリの表示等も可能
- ヒストグラム,バイナリ比較,ハッシュ値計算機能
- ref:
- Process Hacker
- Mutexの確認が可能
- RegShot
- RegistryChangesView
- CyberChef
- input(ファイル,文字列,データ)に対して様々なOperation(暗号化,復号,エンコード,デコード,情報抽出,変換,置換,計算,その他多数)を適用・組み合わせて,OutputするWebサービス
- 適用・組み合わせたOperantinをレシピとしてURLで共有することができる
- Chepyと呼ばれるpython用ライブラリも開発されている
- レシピ集
- 0_CyberChef_CobaltStrike_Shellcode_Decoder_Recipe
- StringSifter
- 機械学習モデルによってファイルの含まれる文字列とマルウェアとの関連性をランク付けする
- 010 Editorに組み込むことも可能
- ref:
- exiftool
- wql
- wqlで子プロセスの検索
$procs=Start-Process "programname.exe" -PassThru
echo $procs.Id
$queryNameVersion="SELECT * FROM Win32_Process WHERE ParentProcessId=" + $procs.Id
$child_process=Get-WmiObject -Query $queryNameVersion
echo $child_process
Control Windows features
- blackbird
- Windows Firewall Control
- reclaimWindows10.ps1
- windowsにデフォルトインストールさている機能(onedrive,windows defender,skype,windows update,etc.)のon/offを切り替える
- マルウェアの通信を解析する際にノイズ通信が加わることを防止する
Online Sandbox
name | site | remarks |
---|---|---|
AMAaaS | https://amaaas.com/ | apk only |
ANYRUN | https://app.any.run/#register | |
Intezer Analyze | https://analyze.intezer.com/#/ | |
IRIS-H | https://iris-h.services/pages/dashboard | maldoc only |
CAPE Sandbox | https://cape.contextis.com/ | |
Joe Sandbox Cloud | https://www.joesandbox.com/ | |
cuckoo | https://cuckoo.cert.ee/ | |
cuckoo | https://sandbox.pikker.ee/ | |
Hybrid Analysis | https://www.hybrid-analysis.com/?lang=ja | |
ViCheck | https://www.vicheck.ca/submitfile.php | |
Triage | https://tria.ge/ | |
Yomi Sandbox | https://yomi.yoroi.company/upload | |
UnpacMe | https://www.unpac.me/#/ | online unpacker,beta, extracting embedded AutoIT Script, extracting URL from VB6 downloader(GuLoader) |
MalwareConifg | https://malwareconfig.com/ | 特定マルウェアからconfig情報を抽出 |
anlyz.io | https://sandbox.anlyz.io/dashboard |
Unpacker/Decryptor/Decoder/Extractor/Memory Scanner
- TAFOF-Unpacker
攻撃者グループTA505が利用するマルウェア(GetandGoDll, Silence, TinyMet, Azorult, KBMiner, etc.)の静的アンパッカー - Trickbot artifact decrypter
Trickbotのartifactを取得するためのdecrypter - trick_settings_decoder.py
Trickbotのartifactを取得するためのdecryter
その2 - VolatilityBot
マルウェアサンプルやメモリダンプの自動分析(コードインジェクションの抽出,プロセスダンプ,yaraスキャン,文字列の抽出) - Loki - Simple IOC Scanner
IoCスキャナー(パス・ファイル名の正規表現マッチ,ファイルとプロセスメモリのyaraスキャン,hashマッチ,c2 IoCスキャン,PE-Sieve) - flare-floss
FireEye Labsの静的解析分析技術を利用して,難読化された文字列を自動的に検知,抽出,デコード - PE-Sieve
Process Hollowing,Injectionされた特定のプロセスをダンプ - HollowsHunter
全プロセスもしくは特定の名称のプロセスのメモリをスキャンし,Process HollowingやInjectionを検知するすることが可能。Pe-Sieveのと同じ開発者によって作成されたツールであり,Pe-Sieveのdllが内部で用いられている - strings2
ファイルやプロセスメモリ内の文字列の抽出 - mnemosyne
文字列,正規表現でプロセスメモリをスキャン
- Memhunter
Injecition/Hollowingされたプロセスの自動検出
- ref:
- メモリダンプが不要で,感染環境でメモリスキャンを行う
- メモリスキャンのヒューリスティックトリガーにETWデータを利用している
- ETWのSuspicious Eventsとして以下を定義
- ref:
- Process Creattion
- Registry Operations
- Threads Operations
- Virtual Alloc Operations
- Image Load Operations
- Kernel Audit APIs usage
- etc.
- Bisonal Analysis Utils
- Bisonalに含まれる文字列のデコード,通信の復号,yaraルール
- aa-tools
- tscookieのcofingデコーダやvolatility pluginなど
- RATDecoders
- マルウェアのconfigデコーダ(複数種)
- DC3-MWCP
- マルウェアからconfigを取得するためのフレームワーク
- SDBbot Unpacker
- SDBbotのアンパッカー
- Malware Script
- Decoderやunpacker(複数種)
PDF Analysis
Docment file Analysis
- Filetype
- .doc, .xls, .ppt
- Office 2003までのファイルの形式
- .docx, .xlsx, .pptx
- Office 2007以降のマクロを含まないファイルの形式
- .docm, .xlsm, .pptm
- Office 2007以降のマクロを含むファイルの形式
- .doc, .xls, .ppt
- p-code
- マクロコードをコンパイルした中間コード
- ドキュメント内のvbaコードのバージョンとシステム上のvbaのバージョンが同じ場合,コンテンツが有効化された際に表示されるソースコードはp-codeが逆コンパイルされたもの
- ドキュメント内のvbaコードのバージョンとシステム上のvbaのバージョンが異なる場合,コンテンツが有効化された際に表示されるソースコードは圧縮されたvbaソースコードを解凍したもの
- マクロコードをコンパイルした中間コード
- VB Editor
- debuggerでstep実行が可能?
- 難読化解除の手順
- olevba等でvbaマクロコードを抽出
- 悪意のあるファイルを開いてdocx形式で保存し,閉じる
- [コンテンツを有効化]は押さない
- [編集を有効にする]は押す
- olevba等で.docxファイルにマクロが含まれないことを確認する
- .docxファイルを開く
- ActivXオブジェクトがある場合,[コンテンツを有効にする]を押す
- Alt+F11でVB Editorを開く
- 1.で抽出したVBAマクロコードのコピー
- 悪意のあるコード実行部分を出力系の関数等(MsgBox,etc.)で無害化
- VB Editorのdebuggerで難読化解除
- vbaData.xmlの削除
- 以下の状況下で有用
- p-codeが利用されている
- マクロのコンテンツを有効化しないと逆コンパイルされたvbaソースコードが表示されない
- p-codeのままではdebuggerを利用できない
- 悪意のあるコードを実行したあとにすぐ終了されるように設計されている
- p-codeが利用されている
- 方法
- 7-zip等でwordファイルを展開
- wordフォルダ配下のvbaData.xmlを削除
- 再zip
- ref:
- 以下の状況下で有用
- pcodedmp
- p-codeの逆アセンブラ
- pcode2code.py
- p-codeの逆コンパイラ
- VBA Seismograph
- VBA Stompingの検出ツール
- p-codeで利用される関数名,変数名,文字列,コメント等を出力
- pcodedmpとolevbaを利用している
- CMD Watcher
- マクロによって実行されるpowershell,cmd,wscript,rundllのコマンドがCMD Watcherに出力される
- コマンドをキャプチャした際に自動的にプロセスを終了させる
- ole tools
- ViperMonkey
- VBAマクロの分析や難読化解除を行うためのVBAエミュレーションエンジン
- Vba2Graph
- vbaのコールグラフを生成
- msoffcrypto-tool
- msoffice
- 暗号化されたOfficeファイルを暗号化/復号するためのツール
- LinuxでPS,VBの動的解析
- exiftool
- HyperLinkBabse等のプロパティにコマンド等が格納されているケースもある
- ref:
- VbsEdit
- vbsのデバッガ付きエディタ
- WSH Shell
- vbsの対話型シェルとして利用可能
- vba memo
- Using WScript.Shell
Dim wsh As New WshShell or Dim wsh As Object Set wsh = CreateObject("Wscript.Shell")
- StateMent
- Call
- dllを呼び出せる
- プロシージャを呼び出す
Call name [argumentlist]
- Call
- Function
- Command
- コマンドライン引数を取得
- ExecuteExcel4Macro
- Excel4.0のマクロを実行
- Command
JavaScript Analysis
- JS Beautify
- JavaScriptのDeobfusecator
- Online ver
- malware-jail
- JavaScriptのマルウェア分析,難読化解除,ペイロード抽出のためのサンドボックス
Other various file Analysis
lnk file
- LnkParse
- .lnkファイルのパーサ
- exiftoolでもパース可能
- [MS-SHLLINK]: Shell Link (.LNK) Binary File Format
- .lnkファイルのバイナリフォーマット
C2 Analysis
- C2MATRIX
- オープンソースのC2フレームワークとその比較表
- SpreadSheet
Emotet
- Emutet
- Emotetのc2通信部分のエミュレータ
- Emotetのc2通信部分のエミュレータ
Ursnif
- Ursnif(version 2)のc2通信の仕組みと復号ツールについて
Binary Analysis
Unpacking
- アンパックの流れ
- OEPの特定し,OEPまで実行
- pushad命令,popad命令に着目。popad命令後のjmpでOEPに遷移する可能性がある(pushadした際のスタックのアドレスにハードウェアブレークポイントを設定することで監視)
- 動的に生成された領域に着目(領域にアクセスし,実行されるかをメモリブレークポイントを設定することで監視)
- WinMainCRTStartup,WinMainとの類似性からヒューリスティックに判断
- ツールを利用
- プロセスメモリのダンプ
- 基本的にツールを用いる
- IATの再構築(展開ルーチンのIAT再構築とは別)
- IATは展開ルーチンでローダによってそのときの実際のAPIのアドレスに書き換えられているため,ロード前に戻す必要がある
- PEヘッダはパックされたコードのIATを示しているので,新たににインポートセクションを追加し,そのセクションを認識するようにPEヘッダを修正する
- 基本的にツールを用いる
- OEPの特定し,OEPまで実行
Microsoft Windows Library
- NTDLL.DLL
- Windows Native APIを提供
- Native APIはKERNEL32.DLLによってエクスポートされるKernel APIやbase APIの多くで使用されている
- Windows applicationから直接的に呼ばれることはほとんどない
- 公式ではドキュメント化されていないが,こちらからある程度確認可能
- KERNEL32.DLL
- メモリ操作,入出力,プロセスやスレッド管理,同期処理を行うWin32 base APIを提供する
- USER32.DLL
- GUIなどユーザインターフェース関連のAPIを提供
- MSVCRT.DLL
- ランタイム(CRT)ライブラリ
- MSVCコンパイラ用の標準C関数等(printf,malloc,etc.)の提供
- ref about crt:
- ランタイム(CRT)ライブラリ
- ref:
- Loading a DLL from memory
- DLLをロードする流れやメモリからロードするツールについて
- Loading a DLL from memory
Deobfuscation
- バイナリの難読化解除に関するブログ
Symbolic Execurtion
to do...
Taint Analysis
to do...
Decompiler
to do...
Perspective
- topdown
- コードの先頭から解析
- bottom-up
- 表層解析で得たキー情報(Win32API,怪しい文字列,etc.)の周辺から解析
ref:
- Intel系アーキテクチャSoftware Developer向けのマニュアル
Intel® 64 and IA-32 Architectures Software Developer Manuals - PEファイルのフォーマットについて
Inside Windows An In-Depth Look into the Win32 Portable Executable File Format, Part 1(2002)
Peering Inside the PE: A Tour of the Win32 Portable Executable File Format(1994) - Windows APIに関するMSの公式ドキュメント
Windows API Index - 内容が公開されていないWindowsの構造体のリバースエンジニアリングについて
Reversing Stories: Updating the Undocumented ESTROBJ and STROBJ Structures for Windows 10 x64 - ReverseEngineering全般について(PEB,TEB,TLS,SEHなどの記事もあり)
kblab.tistory.com(~2016)
k3y6reak.github.io(2017~)
Windows OS
- Windows Internalsを日本語で解説するプロジェクト
windows-internals-guid
Windows Command
- widows上で情報収集やフォレンジックに活用できるCommand Line CheetSheet
Training Material
- Malware-Traffic-Analysis(TRAFFIC ANALYSIS EXERCISES)
- pcap解析(マルウェア感染等のセキュリティインシデントに関わるトラフィック解析)に関するトレーニング教材
- pcap解析(マルウェア感染等のセキュリティインシデントに関わるトラフィック解析)に関するトレーニング教材
- Malware-Analysis-Training
- 初心者/中級者向けのマルウェア解析トレーニング教材
- 教材自体は2010年頃のもので2020年にオープンソース化
- 内容:
- IDA proやOllyDBG等の解析ツールについて
- アセンブリ言語について
- パッキング,耐解析機能,バイナリ差分と比較,難読化,隠ぺい技術等
- 初心者/中級者向けのマルウェア解析トレーニング教材
- Advanced Binary Deobfuscation
- バイナリの難読化解除に関するトレーニング教材
- 内容:
- 難読化技術や難読化解除技術について
- データフロー分析やシンボリック実行
- Adversary Tactics: PowerShell
- PowerShellスクリプトとセキュリティに関するトレーニング教材
- CS6038 (Spring 2020) - Malware Analysis
- CS6038/CS5138 Malware Analysis, UC
- シンシナティ大学のマルウェア解析講義(Youtube,資料)
- ExploitingBooks
- ReverseEngineering,Exploitの資料集
- Hands on Adversarial Machine Learning
- Adversarial Machine Learning(敵対的機械学習)に関する教材
- DGAなどに対する敵対的機械学習をハンズオンで取り組むことができる
- Malware Challenges@0x00sec
- 課題ベースでマルウェア解析について学習