SC4Y ('20#4) Ghidra ハンズオン ワークショップ

Malware Analysis and Detection Eng. with Ghidra
1
0yu(おゆ) @yud0uhu

stackstring 文字列をcharの配列としてスタック上に確保することで、解析ツールにぱっと見文字列と識別させないようにする難読化手法 #SC4Y

2021-02-28 13:19:31
筒天@【卒業】団体一名様 @tututen

Macでやると当たり前だけどDLLファイルが [not found] になる #SC4Y

2021-02-28 13:26:47
Gacha @Gachal29

マルウェア解析のためにアセンブリを理解しておく必要があるのかぁ #SC4Y

2021-02-28 13:35:10
らびさん(ravicot) @ravicot

Defined Stringsで表示される名称の情報から表層解析のヒントを得たりすることができることがある #SC4Y

2021-02-28 13:41:36
らびさん(ravicot) @ravicot

IDAはアセンブリしかなかったことで敷居が高かったがGhidraは比較的きれいなC言語まで戻るので、アセンブラと比較しながらリバースエンジニアリングの学習に向いているかもしれない #SC4Y

2021-02-28 13:44:22
らびさん(ravicot) @ravicot

Symbol Tree>Functions>entryを選択するとDecompile画面にC言語表記される #SC4Y

2021-02-28 13:46:18
らびさん(ravicot) @ravicot

アセンブリの基本的なところも講習でカバーいただけていて大変ありがたい。 プログラムはエントリポイントと呼ばれるアドレスから実行される。 Symbol Tree>Exports>entry #SC4Y

2021-02-28 13:47:59
らびさん(ravicot) @ravicot

CreateMutexWの引数にあるプレフィクス u_ の意味:utfの16進数の数値を渡されている #SC4Y

2021-02-28 13:51:04
らびさん(ravicot) @ravicot

CreateMutexWなどのAPIを調べるときは極力1次情報(Microsoft Docs)を見るべし #SC4Ydocs.microsoft.com/en-us/windows/…

2021-02-28 13:52:50
らびさん(ravicot) @ravicot

今回はどういうMutex名で作成されるかを調べたいのでCreateMutexW の第三引数 LPCWSTR に注目する。#SC4Y

2021-02-28 13:54:52
らびさん(ravicot) @ravicot

今回のサンプルではCreateMutexWに対して下記の値を引数として渡していることがわかる。 Decompleの画面がら引数をクリックするとListing画面で該当のアドレスにジャンプする昨日が便利。 LPSECURITY_ATTRIBUTES : 0x0 BOOL : 0 LPCWSTR : u_411S4F3_00403034 #SC4Y

2021-02-28 13:58:37
筒天@【卒業】団体一名様 @tututen

正直「MacでWindowsの静的解析とかやれないやろ」って思ってたのに、普通にハンズオンについていけててびっくりしてる。 #SC4Y

2021-02-28 14:05:55
らびさん(ravicot) @ravicot

エントリポイントから順にたどって、どのようなwindowsAPIが呼ばれているかを調べて、そのAPIリファレンスを読みながら、分析していくという、まさにリバースエンジニアリングな作業 #SC4Y

2021-02-28 14:09:36
らびさん(ravicot) @ravicot

アセンブリ素人だけどDecompile画面の高級言語っぽい表記があるおかげでどんなプログラムなのか解析しやすくなっていて目から鱗。 > GetLocalTime if ((((local_14.wDayOfWeek == 0) || (5 < local_14.wDayOfWeek)) || (local_14.wHour < 9)) || (0x11 < local_14.wHour)) { #SC4Y

2021-02-28 14:15:18
らびさん(ravicot) @ravicot

Decompile画面で変数の名前をリネーム(リファクタリング)できて、さらに可読性を上げることができる。Ghidraすげえ。 #SC4Y

2021-02-28 14:18:51
らびさん(ravicot) @ravicot

Ghidraはリバースエンジニアリング用の高機能なメモ帳 #SC4Y

2021-02-28 14:24:58
らびさん(ravicot) @ravicot

GhidraでWindowsAPIの調査に慣れておくと、サンドボックス(動的解析)の実行ログで呼ばれるWindowsAPIを調べるときにも有効だったりする。 #SC4Y

2021-02-28 14:28:22
らびさん(ravicot) @ravicot

GhidraのDecompileではlocal_15cという変数名になっているがURLDownloadToFileAの引数をみるとfile_pathであることがわかる。 #SC4Y

2021-02-28 14:33:43