Recommended
PDF
PDF
PDF
機械学習によるハイスループット 第一原理計算の代替の可能性_日本化学会_20230323
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PDF
PDF
PDF
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
PDF
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
PDF
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
PDF
PPTX
アプリケーション開発者のためのAzure Databricks入門
PPTX
PDF
PDF
「さくらのクラウド」におけるVyattaの活用事例
PPTX
スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話
PPTX
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
PDF
PDF
import dpkt したよ #ssmjp 2014/02/28
PPTX
PDF
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
PDF
PDF
素材産業のDxに貢献する 『Matlantis』のご紹介_nano tech2022_2022/1/28
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
PDF
Building the Game Server both API and Realtime via c#
PDF
PPTX
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
KEY
Algebraic DP: 動的計画法を書きやすく
PDF
More Related Content
PDF
PDF
PDF
機械学習によるハイスループット 第一原理計算の代替の可能性_日本化学会_20230323
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
PDF
PDF
PDF
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
PDF
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
What's hot
PDF
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
PDF
PPTX
アプリケーション開発者のためのAzure Databricks入門
PPTX
PDF
PDF
「さくらのクラウド」におけるVyattaの活用事例
PPTX
スケジュール遅延が当たり前な状況を少し良くしたいチームがその未来のためにScrumに”再”挑戦した話
PPTX
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
PDF
PDF
import dpkt したよ #ssmjp 2014/02/28
PPTX
PDF
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
PDF
PDF
素材産業のDxに貢献する 『Matlantis』のご紹介_nano tech2022_2022/1/28
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
PDF
Building the Game Server both API and Realtime via c#
PDF
PPTX
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
Similar to 文字列曖昧検索によるマルウェアバイナリ解析
KEY
Algebraic DP: 動的計画法を書きやすく
PDF
PDF
PDF
Ruby科学データ処理ツールの開発 NArrayとPwrake
PPT
PDF
PDF
NArray and scientific computing with Ruby - RubyKaigi2010
PPT
PDF
PPTX
PDF
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
PDF
programming camp 2008, introduction of programming, algorithm
PDF
PDF
PPTX
PDF
PDF
PFI Christmas seminar 2009
PDF
PDF
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
PDF
Introduction to programming competition [revised][PDF]
More from Preferred Networks
PDF
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
PDF
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PDF
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PPTX
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
PDF
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
Recently uploaded
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
PDF
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
PPTX
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
文字列曖昧検索によるマルウェアバイナリ解析 1. 2. 発表者⾃自⼰己紹介
l まるまる / @marugorithm l 柏原秀蔵 / @suma90h
l 研究開発エンジニア l ソフトウェアエンジニア
l アルゴリズム l 分散システムなど
l ⽂文字列列処理理が好物 l バイナリエディタ完成してない
l 職業リバースエンジニアではない
2
3. 70,000,000
60,000,000
50,000,000
背景
40,000,000
30,000,000
20,000,000
10,000,000
0
l 新しいマルウェアは相変わらず増えている(うんざりしてくる
JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN
2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012
l それらを解析の必要性がある(最近は、ウェブ・モバイルも多い)
New Malware
10,000,000
8,000,000
6,000,000
4,000,000
2,000,000
0
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2
2009 2009 2009 2009 2010 2010 2010 2010 2011 2011 2011 2011 2012 2012
Source: McAfee Threats Report: Second Quarter 2012
3
McAfee Threats Report: Second Quarter 2012
4. 背景:Reverse Code Engineering 技術・ツールの進化
l 解析⼿手法はそれぞれ
l 動的・静的
l ブラックボックス・ホワイトボックス
l ツール
By Ma-games.de(GNU-FDL)
l 逆アセンブラ、デバッガ、アンパッカー
l サンドボックス、命令令トレーサ
l バイナリエディタ(with ⽬目grep)
l 解析技術の進化
l 動的解析・サンドボックスの研究、OSS化は2006年年頃から多い
l リバースコードエンジニアリングに利利⽤用する逆アセンブラといっ
たツールの進化、静的解析の進化は少なく⾒見見える
l Pythonスクリプトなどによる拡張性は上昇?
4
(注:アウトサイダーの視点)
5. 背景:動的解析 vs 静的解析
l 動的解析・サンドボックス(仮想化技術の進歩と共に)
l サンドボックス・⾃自動アンパックに注⼒力力した研究・ツール
l ブラックボックス・ホワイトボックスの両⽅方のアプローチが可能
l ⽋欠点
l 実⾏行行時間が⻑⾧長い・実⾏行行してない部分は解析できない
l 静的解析
l デファクトスタンダード:IDA Pro
l 逆アセンブルし、API Callなどを⽤用いて意味を推論論する研究
l 静的解析と動的解析のハイブリッド型の研究:PolyUnpack
l ⽋欠点
l パッキング・難読化への対処が困難である
l 最終的に、解明できる範囲は⼈人間の処理理能⼒力力に依存する
5
6. モチベーション
l マルウェアに対してしかけていきたい
l 攻撃者・作者へ反撃するのは困難
l リバースコードエンジニアリングの効率率率をあげたい
l 静的解析 (RCE)に⽂文字列列検索索でアプローチしたい
l サンドボックスによる解析範囲は限られている
l 逆アセンブルしたとき、⼈人間が調べる範囲を集中させたい
l 既存マルウェア、よく知られるコードをフィルタできるとよい
l 収集済みのマルウェア活⽤用は可能だろうか?
l データベース化して解析に役⽴立立てたい
l ⽂文字列列検索索、マシンパワーに頼るのは現実的だろうか?
6
7. コンセプト:⽂文字列列検索索による解析⽀支援
l 曖昧検索索技術を使って、解析対象と⼀一致するバイナリを既存ファ
イルから探す
l ⼈人が読むべき部分を注⼒力力させたい
l デバッグシンボルと同じような情報を提供したい
マル
ウェア
OSS
既存
コード ファイル1の
関数A
ファイル2の
コードX 関数B
⼊入⼒力力 検索索ツール 出⼒力力
バイナリY 7
8. 似たツール:IDAScope
l IDAscope plugin (Hex-Rays 2012 Contest Results)
l コードブロックからシンボルなし関数を⾃自動補完
l コードブロックから暗号アルゴリズムを⾃自動補完
l IDA Proユーザは、これを使うと良良さそう
l 曖昧検索索は必要ないのでは?
l 共通点:
l ⽬目指すところは同じ:マルウェア解析を容易易にすること
l ユースケースとして似たような使い⽅方を想定している
l 今回の発表主旨
l ⽂文字列列ベースの曖昧検索索技術の能⼒力力を実験し、
現実的であるか紹介すること
8
9. 検索索アルゴリズムの⽬目的
55 8b ec 56 8b 75 08 57 8b 3d
38 10 41 00 6a 1f 56 6a 07 68
l 共通モジュール抽出の問題点 00 04 00 00 ff d7 f7 d8 1b c0
l 全く同じ物を検索索してもダメ。
c6 46 03 00 f7 d8 89 45 08 74
16 68 cc 30 41 00 56 e8 e2 b3
l 例例)アドレスが異異なる。 00 00 59 85 c0 59 74 05 6a 01
58 eb 16 6a 1f 56 6a 07 68 00
l マルウェアだと開始位置が 08 00 00 ff d7 f7 d8 1b c0 f7
わからない場合がある d8 80 66 03 00 5f 5e 5d c3
l 曖昧検索索による⽅方法 55 8b ec 56 8b 75 08 57 8b 3d
38 20 41 00 6a 1f 56 6a 07 68
l 似ている部分を探す。 00 04 00 00 ff d7 f7 d8 1b c0
l 似ている尺度度は?⼿手法は?
c6 46 03 00 f7 d8 89 45 08 74
16 68 08 41 41 00 56 e8 56 b9
00 00 59 85 c0 59 74 05 6a 01
58 eb 16 6a 1f 56 6a 07 68 00
08 00 00 ff d7 f7 d8 1b c0 f7
d8 80 66 03 00 5f 5e 5d c3
10. 編集距離離計算
l 2つの⽂文字列列間の編集距離離 d (S, R)
ACGTGATC
置換
削除
d (ACGTGATC, ACTAATC) = 3
ACTA ATC
l 挿⼊入・削除・置換をコスト1とする。
l ⽂文字列列データに対する曖昧検索索の基本テク。
l 様々なアルゴリズムが存在。
11. 編集距離離計算アルゴリズム
l 動的計画法による⽂文字列列S, R間の編集距離離計算
l ⽂文字の挿⼊入・削除・置換のコストを1とする
l (|S|+1) × (|R|+1) の表 Dを⽤用意する
s u r g e r y
0 1 2 3 4 5 6 7
s 1
u 2
r 3
v 4
e 5
y 6
12. 編集距離離計算アルゴリズム
l 動的計画法による⽂文字列列間の編集距離離計算
l 以下の計算式に従って表を埋める
if S[i] = R[ j], D[i, j] ← D[i −1, j −1],
else D[i, j] ← min(D[i −1, j], D[i, j −1], D[i −1, j −1]) +1.
s u r g e r y
0 1 2 3 4 5 6 7
s 1 0 1 2 3 4 5 6
u 2 1 0 1 2 3 4 5
r 3 2 1 0 1 2 3 4
v 4 3 2 1 1 2 3 4 d(S, R)
e 5 4 3 2 2 1 2 3
y 6 5 4 3 3 2 2 2
13. アルゴリズムの概要
l 我々のやりたいこと
l 2つの⽂文字列列間の編集距離離計算ではない
l バイナリのバイト列列の中からクエリとなるモジュールに
似ている部分のみを抜き出したい
l ⼿手法
l DNAアライメント等で使われる部分的な近似照合アルゴリズム
(Smith-Watermanアルゴリズム)を改良良したものを利利⽤用した
l 結果からモジュールの開始位置を⾒見見つけられるようなヒューリ
スティック
l 重複する検出のフィルタリング
14. ⽂文字列列アルゴリズムの概要
l 動的計画法による部分⼀一致ベースの曖昧検索索
l 1⾏行行⽬目のスコアを全て0とする
バイナリのバイト列
fd 2d 4f 3d fd 2d 53 3d
0 0 0 0 0 0 0 0 0
fd 1
(
検
索 2d 2
4f 3
3d 4
ー )
15. ⽂文字列列アルゴリズムの概要
l 動的計画法による部分⼀一致ベースの曖昧検索索
l あとは表を埋めるだけ
バイナリのバイト列
fd 2d 4f 3d fd 2d 53 3d
0 0 0 0 0 0 0 0 0
fd 1 0 1 1 1 0 1 1 1
(
検
索 2d 2 1 0 1 2 1 0 1 2
4f 3 2 1 0 1 2 1 1 2
3d 4 3 2 1 0 1 2 2 1
ー )
16. ⽂文字列列アルゴリズムの概要
l 動的計画法による部分⼀一致ベースの曖昧検索索
l ⼀一番下の⾏行行の値に着⽬目
l 予め決めておいた閾値(この例例では1とする)以下のマスに着⽬目
バイナリのバイト列
fd 2d 4f 3d fd 2d 53 3d
0 0 0 0 0 0 0 0 0
fd 1 0 1 1 1 0 1 1 1
(
検
索 2d 2 1 0 1 2 1 0 1 2
4f 3 2 1 0 1 2 1 1 2
3d 4 3 2 1 0 1 2 2 1
ー )
17. ⽂文字列列アルゴリズムの概要
l 動的計画法による部分⼀一致ベースの曖昧検索索
l そこからバックトラックを⾏行行い、類似部分の開始位置を求める
バイナリのバイト列
fd 2d 4f 3d fd 2d 53 3d
0 0 0 0 0 0 0 0 0
fd 1 0 1 1 1 0 1 1 1
(
検
索 2d 2 1 0 1 2 1 0 1 2
4f 3 2 1 0 1 2 1 1 2
3d 4 3 2 1 0 1 2 2 1
ー )
18. ⽂文字列列アルゴリズムの概要
l 動的計画法による部分⼀一致ベースの曖昧検索索
l 重複するような出現は最⼩小のスコアを選ぶようにフィルタする
l この例例では “fd 2d 4f 3d”と”fd 2d 53 3d“が抽出される
バイナリのバイト列
fd 2d 4f 3d fd 2d 53 3d
0 0 0 0 0 0 0 0 0
fd 1 0 1 1 1 0 1 1 1
(
検
索 2d 2 1 0 1 2 1 0 1 2
4f 3 2 1 0 1 2 1 1 2
3d 4 3 2 1 0 1 2 2 1
ー )
19. より⾼高速な曖昧検索索アルゴリズム
l Factor Filter [2000, JDA], Suffix Filter [2007, ALENEX]
l 索索引を利利⽤用した⾼高速な曖昧検索索アルゴリズム
l クエリの⼀一部を索索引で検索索を⾏行行い、ヒットした周辺のみを曖昧検
索索でチェック。
l 楠本アルゴリズム[2012, PFI夏のインターンの成果]
l 楠本、丸⼭山、岡野原で開発.
l 2012年年PFI夏のサマーインターンの成果。
l 移動付き編集距離離に基づく曖昧検索索の近似アルゴリズム。
l ストリームに対して省省メモリ領領域で⾼高速に検索索可能。
l 1万クエリくらいを同時に検索索可能。
19
20. プログラムの仕様
l ⼊入⼒力力 l 出⼒力力 対象バイナリパス
l ファイル /home/maruyama/data/malware/dump/
1a1f6496107b1063313aba6af99fce8e.GUnPacker.dump
l 検索索クエリ(コード) hit: id = 14
バイナリID
hit: distance = 28
編集距離
query: name = sub_401000
hit: beg_pos = 4096
開始位置からの 開始位置からの
query: beg_pos = 4096
hit: length = 266
offset
offset
query: length = 266
query: threshold = 53
モジュール長
55 8b ec 81 ec 60 02 00 00 53
モジュール長
33 db 39 1d 00 30 41 00 89 5d
許容誤差
55 8b ec 81 ec 60 02 00 00 53
f4 0f 84 e9 00 00 00 56 b8 00
33 db 39 1d 00 20 41 00 89 5d
30 41 00 57 8b 3d 08 20 41 00
f4 0f 84 e9 00 00 00 56 b8 00
89 45 e8 be 04 01 00 00 ff 30
20 41 00 57 8b 3d 08 10 41 00
8d 45 a8 50 e8 7d 04 01 00 8d
89 45 e8 be 04 01 00 00 ff 30
45 a8 50 e8 9d a5 00 00 83 c4
8d 45 a8 50 e8 e5 f7 00 00 8d
0c 8d 45 f8 50 6a 03 8d 45 a8
45 a8 50 e8 0a 9c 00 00 83 c4
検出モジュール
53 50 ff 75 08 e8 a6 ef 0a 01
0c 8d 45 f8 50 6a 03 8d 45 a8
69 8d 45 fc 89 5d f0 50 8d 85
53 50 ff 75 08 ff 15 00 10 41
クエリモジュール
a4 fe ff ff 50 8d 45 e4 50 8d
00 8d 45 fc 89 5d f0 50 8d 85
45 ec 53 50 8d 85 a0 fd ff ff
a4 fe ff ff 50 8d 45 e4 50 8d
89 75 ec 50 89 75 fc 53 ff 75
45 ec 53 50 8d 85 a0 fd ff ff
f8 ff d7 85 c0 75 5f 83 7d e4
89 75 ec 50 89 75 fc 53 ff 75 01 75 30 ff 75 0c 8d 85 a4 fe
ff ff ff 75 fc 50 e8 6c 49 00
20
21. 実験
l 実験に使ったマルウェア
l 2007年年に捕獲
l 141ファイル(全てアンパック済み)
l 総ファイルサイズ:50,515,632バイト
l 検索索クエリ例例
l “PoeBot.C”のルーチン“FlashFXP password stealer”の⼀一部分を検索索
l 実験結果例例
l 実⾏行行時間(Core i5, 16GB RAM)
l 1分41秒
l 結果例例
l 14件検出
l 完全⼀一致:8件、60バイト差で⼀一致:6件
21
22. プログラム実⾏行行の流流れ
l アンパック済みファイル集合を⽤用意する
l 1個のファイルを取り出し、IDAを使い関数を取得
l 抽出した関数をクエリとして、検索索を⾏行行う
22
23. 24. 曖昧検索索とRCEを組み合わせた特徴
l 利利点
l 似ているバイナリデータの列列挙、⼀一致位置を検索索できる
l 逆アセンブルなしで⼀一致部分を発⾒見見できる
l 検索索クエリはコードに限定しない
l どんなバイナリでも検索索できる
l 解析時の⽋欠点
l 検索索結果から意味を解釈するには、登録するバイナリファイルに
注釈を加える必要がある
l 対象が多いほど実⾏行行時間が増加:実⾏行行時間=クエリ×検索索対象
l 曖昧検索索に関すること
l 存在しないものは検索索できない
l コードの難読化などに⾮非対応
24
25. 結論論
l 現時点では実⽤用化は厳しい、が…
l 誤差を考慮した⽂文字列列検索索
l 編集距離離ベースの検索索でも⼗十分な精度度が得られる
l バイナリなら何でも対応可能
l 今後の展望
l 索索引⽅方式を採⽤用して速度度の⾼高速化に対応
l 他のツールとの連携に対応
l パッキングは対象外とした
l 専⾨門家に任せたい
l 圧縮、暗号化、難読化したコードから元コードの復復元や、動的解
析時の意味解析に関する研究は存在している
25
26. 既存の数が多過ぎるとき、対処できるか?
l 検索索時間はどうなのか?
l 検索索クエリの⻑⾧長さ、検索索対象の数に⽐比例例する
l 索索引⽅方式の曖昧検索索を利利⽤用することで⾼高速化
l 検索索⾃自体を分割・並列列化
l 検索索ヒット結果が多すぎる事例例
l 共通モジュールを前処理理で束ねておくことで対応
l 実験例例:printf, sprintf などCPU命令令の重複は多い
l ストップワード的な扱いで対応する
26
27. 曖昧検索索の応⽤用例例
l 今回はx86逆アセンブラの拡張を想定していた
l IDA Proなどの拡張を想像してもらうのがシンプル
l 実験していないが、JavaやCLIといったバイトコードへの可能性
l サンドボックス/プログラムトレーサーとの結合
l サンドボックスでの解析時、パターンマッチの検出を組み合わせ
て利利⽤用するのが想像しやすい
l コードのパターンマッチング
l マルウェアのモジュール間類似度度計算
l ソフトウェアの検査、クローン検出の応⽤用
l コードにOSSが汚染していないか?
l 古い脆弱性の含むライブラリを利利⽤用していないか?
27