Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マルウェア解析におけるセマンティックギャップ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuma Kurogome
August 13, 2014
Programming
3.1k
5
Share
マルウェア解析におけるセマンティックギャップ
セキュリティ・キャンプ全国大会2014 発表資料 #seccamp #spcamp
Yuma Kurogome
August 13, 2014
More Decks by Yuma Kurogome
See All by Yuma Kurogome
The Art of De-obfuscation
ntddk
16
28k
死にゆくアンチウイルスへの祈り
ntddk
55
39k
Windows Subsystem for Linux Internals
ntddk
10
3.1k
なぜマルウェア解析は自動化できないのか
ntddk
6
4.3k
Linear Obfuscation to Drive angr Angry
ntddk
4
890
CAPTCHAとボットの共進化
ntddk
2
1.2k
マルウェアを機械学習する前に
ntddk
3
1.7k
Peeling Onions
ntddk
7
3.7k
仮想化技術を用いたマルウェア解析
ntddk
8
27k
Other Decks in Programming
See All in Programming
PHPで TLSのプロトコルを実装してみる
higaki_program
0
730
ファインチューニングせずメインコンペを解く方法
pokutuna
0
260
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
520
AIエージェントで業務改善してみた
taku271
0
270
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
240
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
170
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
150
Java 21/25 Virtual Threads 소개
debop
0
320
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
500
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
430
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
Code Review Best Practice
trishagee
74
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Designing Experiences People Love
moore
143
24k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
160
ラッコキーワード サービス紹介資料
rakko
1
2.9M
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
270
Amusing Abliteration
ianozsvald
1
150
Transcript
チュータープレゼン: マルウェア解析における セマンティックギャップ 2014/08/13 セキュリティ・キャンプ全国大会2014 @ntddk
whoami • @ntddk – #include <ntddk.h> • 慶應義塾大学 SFC 村井研/武田研
B2 – マルウェアの研究 • ゲヒルンという会社で働き始めました – スマートフォンアプリの脆弱性診断とか
whoami • #spcamp '11 ソフトウェアセキュリティクラス 参加 • #seccamp '13 セキュアなシステムをつくろうクラス
システムソフトウェアゼミ チューター • #seccamp '14 ソフトウェアセキュリティクラス チューター
whoami • EpsilonDelta – メンバーを募集しているっぽいです – 明後日のCTFでみなさんの力を見せてください
話すこと • セマンティックギャップについて紹介します – アセンブリ言語とプログラミング言語とのギャップ – 仮想マシンモニタとゲストOSとのギャップ – コンピュータと人間の認知とのギャップ
セマンティックギャップとは • Semantic Gap(語義の隔たり) • ソースコードとアセンブラと機械語 • この違いがあるため、逆コンパイルは難しい
アセンブリ言語とプログラミング言語とのギャッ プ
難読化されたマルウェア • マルウェア開発者は解析に時間をかけさせたい – コンパイラによる最適化と反対のことをする 00874389 /EB 05 JMP SHORT
sample.00874390 0087438B |43 INC EBX 0087438C |41 INC ECX 0087438D |42 INC EDX 0087438E |EB 07 JMP SHORT sample.00874397 00874390 \B8 07000000 MOV EAX,7 00874395 ^ EB F4 JMP SHORT sample.0087438B 00874397 C3 RET 003B0000 B8 07000000 MOV EAX,7 003B0005 43 INC EBX 003B0006 41 INC ECX 003B0007 42 INC EDX 003B0008 C3 RET
LLVM • 最適化を頑張ってくれるコンパイラ基盤 • ソースコードを読み込んで独自の中間コードに 変換(フロントエンド) • 最適化した上で(ミドルエンド) • コンパイルやJIT、任意の言語のソースコード
に変換(バックエンド)
LLVM • 最適化を頑張ってくれるコンパイラ基盤 • 逆アセンブルコードを読み込んで独自の中間 コードに変換 • 最適化することで難読化を除去できないか? • アセンブリ言語とLLVMの中間コードとの
ギャップが問題となってくる
LLVM • 逆アセンブルコードを中間コードに変換し、さ らにC++などのソースコードに変換することに よって、逆コンパイルを実現できないか? – C++をC++11に変換するC++11 MigratorやC++を JavaScriptに変換するEmscriptenなど参考例がある –
ただし標準関数のみサポート • プログラミング言語とLLVMの中間コードとの ギャップが問題となってくる
LLVMの中間コード • 変換してもこんなんばっか • SSA形式なので無限にレジスタが増える llvm_cbe_bb12_2e_i: llvm_cbe_tmp__64 = ((unsigned int
)(((unsigned int )llvm_cbe_j_2e_018_2e_i) + ((unsigned int )1u))); if ((llvm_cbe_tmp__64 == 64u)) { goto llvm_cbe_test_all_2e_exit; } else { llvm_cbe_j_2e_018_2e_i__PHI_TEMPORARY = llvm_cbe_tmp__64; /* for PHI node */ goto llvm_cbe_bb7_2e_i; }
• みたいな試みがあります • ぶっちゃけHex-Rays Decompilerのほうがよっ ぽどマシ
仮想マシンモニタとゲストOSとのギャップ
VMI • VM Introspectionという分野 – 仮想マシンモニタからゲストOSのメモリやデバイ スを監視する手法 – マルウェアを自動で解析するのにも使えそう –
最近はクラウドコンピューティングサービスにおい てマルウェアを検出するという方向性ばかり • VMIにもセマンティックギャップの問題がある
VMIのセマンティックギャップ • VMの内側と外側で取得できる情報が異なる – 解析したいプロセスを特定できない – カーネル内のシンボル情報を読み取れない • これを解決する研究がなされてきた
マルウェアの高度化 • ルートキット – カーネルのデータ構造を改竄し、悪意のシステム コールへ実行をリダイレクトしたり、ファイルやメ モリを隠蔽したりする • コードインジェクション –
他プロセスのメモリに自身をロードして実行状態を 移す
既存研究 TTAnalyze: A Tool for Analyzing Malware[EICAR06] – ゲストOSに挿入したmoduleから解析対象を識別す ることでセマンティックギャップを解決
ゲストOSの ユーザーモード ゲストOSの カーネルモード 仮想マシンモニタ ホストOS VM Introspectionが ゲストに影響を与える 仮想マシンモニタが 検出されてしまう
既存研究 Ether: Malware Analysis via Hardware Virtualization Extensions[ACM08] – 事前にOSを解析することでセマンティックギャッ
プを解決したが、ルートキットなどに対処できない ゲストOSの ユーザーモード ゲストOSの カーネルモード 仮想マシンモニタ ホストOS VM Introspectionが ゲストに影響を与えない 仮想マシンモニタが 検出されない
解析対象の識別方法 • VMの外部からはプロセスの情報をそのまま取 得できないので、 – コンテキストスイッチによって変化するCR3レジス タの値を監視 – 予めOSを解析してPIDやTIDが保存されている箇所 を特定
– 予めOSが用いるデータ構造体のシグネチャを作成 – etc...
既存手法の問題点 • そもそもPaaSでのマルウェア検出のみを目的 としたVMIが多い • ゲストOSを書き換えてしまうと、仮想マシン モニタがマルウェアに検出されてしまう • セマンティックギャップを解消した上、さらに セマンティックス情報を追跡しなければ、コー
ドインジェクションやルートキットに対処でき ない
提案手法 • オフレコ
• みたいな研究をしています
コンピュータと人間の認知とのギャップ
マルウェアを理解するには • いくら自動でマルウェアを解析したところで、 その動作を理解できなければ意味がない • どうすればマルウェアを直感的に理解すること ができるか? • 人間が理解できる内容とコンピュータが理解で きる内容のギャップ
None
マルウェアの可視化 • 直感的にマルウェアの構造を把握する手段 • 命令ポインタのログをgraphvizに投げてみた – さっきのはWindowsのメモ帳
None
マルウェアの可視化 • 何をもとに可視化するか – 命令ポインタ – API – ファイル –
ネットワークアクセス
マルウェアの可視化 • IDA ProのGraph Viewだって可視化 – コードブロックと条件分岐
マルウェアの可視化 • VERA http://1.bp.blogspot.com/-OHhtZ567BBs/Tzt9paOnhkI/AAAAAAAAK6Y/wA5CBLGUUnQ/s1600/NotePADUnpacked.png
マルウェアの可視化 • どのようなコードがどのように可視化されるか 覚えなければならない – 新しいセマンティックギャップが生まれてしまう • 結局のところ解析者の負担は変わらない? • 可視化によって得られるメリットは何か?
マルウェアの可視化 • どのようなコードがどのように可視化されるか 覚えなければならない – 新しいセマンティックギャップが生まれてしまう • 結局のところ解析者の負担は変わらない? – 人間が理解しやすい可視化の方式とは
• 可視化によって得られるメリットは何か? – マルウェア亜種の分類など
情報セキュリティにおける可視化 • マルウェアに限った話ではない • ネットワークの可視化 – NICTER – DAEDALUS –
NIRVANA改 http://www.nict.go.jp/info/topics/2014/02/img/seccon2013-1.png
• みたいな試みがあります
おわりに • セマンティックギャップという視点から、マル ウェア解析における3つのトピックについて紹 介しました • マルウェア解析を主に扱っているのはソフト ウェアセキュリティクラスだが、クラスに縛ら れることはない