The document summarizes various techniques for automated software testing using fuzzing, including coverage-based fuzzing (AFL), directed greybox fuzzing (AflGO), and neural network-based approaches (FuzzGuard). It discusses how genetic algorithms and simulated annealing are used in AFL and AflGO respectively to guide test case mutation towards new code areas. It also provides examples of vulnerabilities found using these fuzzing tools.
The document summarizes various techniques for automated software testing using fuzzing, including coverage-based fuzzing (AFL), directed greybox fuzzing (AflGO), and neural network-based approaches (FuzzGuard). It discusses how genetic algorithms and simulated annealing are used in AFL and AflGO respectively to guide test case mutation towards new code areas. It also provides examples of vulnerabilities found using these fuzzing tools.
「C言語のポインタ(型の変数)は、可変長配列を扱うために使う」という点に絞って、50分間程度の解説をしています。
最終的に下記の12行のプログラムを47分間使って解説します。
(7行目、11行目の”<”は除いています)
1: int size = N;
2: int x[size];
3: int *p;
4:
5: p = x;
6:
7: for ( int = 0; i size; i++)
8: p[i] = i;
9:
10: int y = 0
11: for ( int i = 0; i size; i++)
12: y = y + p[i];
https://www.youtube.com/watch?v=KLFlk1dohKQ&t=1496s
1. The model is a polynomial regression model that fits a polynomial function to the training data.
2. The loss function used is the sum of squares of the differences between the predicted and actual target values.
3. The optimizer used is GradientDescentOptimizer which minimizes the loss function to fit the model parameters.
「C言語のポインタ(型の変数)は、可変長配列を扱うために使う」という点に絞って、50分間程度の解説をしています。
最終的に下記の12行のプログラムを47分間使って解説します。
(7行目、11行目の”<”は除いています)
1: int size = N;
2: int x[size];
3: int *p;
4:
5: p = x;
6:
7: for ( int = 0; i size; i++)
8: p[i] = i;
9:
10: int y = 0
11: for ( int i = 0; i size; i++)
12: y = y + p[i];
https://www.youtube.com/watch?v=KLFlk1dohKQ&t=1496s
1. The model is a polynomial regression model that fits a polynomial function to the training data.
2. The loss function used is the sum of squares of the differences between the predicted and actual target values.
3. The optimizer used is GradientDescentOptimizer which minimizes the loss function to fit the model parameters.
5. 関連研究
• アンドロイドのアプリケーションのセ
キュリティ属性(パーミッションの可視
化)
David Barrera, Hilmi Günes Kayacik, Paul
C. van Oorschot, Anil Somayaji: A
methodology for empirical analysis of
permission-based security models and
its application to android. AC M
Conference on Computer and
Communications Security 2010: 73-84
6. 関連研究
• スパムメールのデータマイニング
Guofei Gu, Roberto Perdisci, Junjie Zhang,
Wenke Lee: BotMiner: Clustering Analysis
of
Network Traffic for Protocol- and StructureIndependent Botnet Detection. USENIX
Security Symposium 2008: 139-154
7. 処理対象のログ種別
■ 静的ログ
Windows OS の1時点でのスナップ
ショット
リソース所有、トラフィックログ
の状況
メモリダンプ
■ 動的ログ
Windows OS のリソースアクセス
ソケット・ファイル・レジストリ
前処理困
難度
情報量
分類処理結
果
静的ログ
プロセスのリソースロ
グ
易
少
×
静的ログ
メモリダンプ
難
多
?
動的ログ
レジストリアクセス
中
中
〇
10. Memory behavior clustering and anomaly detection
正常時の状態のクラスタリングによるグループ(プロファイル)の作成→
プロファイル群から感染状態からの距離を算出し、異常を検出する。
10
11. 仮想マシンモニタ観測例
Logger/detector
DATA
Windows OS
(virtualized)
DATA
Virtual machine monitor
(hypervisor)
# ./vkimono xp3 0x8055a220 save
Domains xp3: ID: 1, CPUs: 1
このようなスパイクを検出するために
Trying to read in SDT from 8055a220
クラスタリング(異常検知)
SSDT.ServiceTableBase = 804e26a8
アルゴリズムを用いる。
SSDT.NumberOfServices = 11c
Reading 0x11c syscalls from SSDT at 804e26a8
Writing SDT data to sddt.dat
22. 提案手法
(シーケンス図 :XEN Hypervisor )
XEN
ハイパーバイザーがホスト OS
Linux の下で稼動
手順①
仮想 Windows OS 内の DLL ・
フィルタドライバ内で
構築したログ情報・ハッシュ値
を仮想 CPU のコンテキストに
格納。その後、
Hypercall を発行
手順②
XEN 内の HYPECALL
ハンドラで仮想 CPU の
コンテキストから通知を捕捉・
ログ情報を取得。
23. 動的ログ:レジストリアクセスログ
Windows OS as huge state machine
Registry access table
SDT
・・・
・・・
ZwCreateKey
ZwDeleteKey
ZwDeleteValueKe
y
ZwEnumerateKey
ZwEnumerateVal
ueKey
ZwQueryKey
ZwQueryValueKe
Registry value
Represents state
of Windows OS