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
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.2k
なぜマルウェア解析は自動化できないのか
ntddk
6
4.4k
Linear Obfuscation to Drive angr Angry
ntddk
4
910
CAPTCHAとボットの共進化
ntddk
2
1.2k
マルウェアを機械学習する前に
ntddk
3
1.7k
Peeling Onions
ntddk
7
3.8k
仮想化技術を用いたマルウェア解析
ntddk
8
27k
Other Decks in Programming
See All in Programming
AIとRubyの静的型付け
ukin0k0
0
530
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
440
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
260
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
100
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.2k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
240
エージェンティックRAGにAWSで入門しよう!
har1101
7
700
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
Lessons from Spec-Driven Development
simas
PRO
0
140
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Un-Boring Meetings
codingconduct
0
310
The Curious Case for Waylosing
cassininazir
1
370
Faster Mobile Websites
deanohume
310
31k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
The Invisible Side of Design
smashingmag
302
52k
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つのトピックについて紹 介しました • マルウェア解析を主に扱っているのはソフト ウェアセキュリティクラスだが、クラスに縛ら れることはない