SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
Fourteenforty Research Institute, Inc.
1
Fourteenforty Research Institute, Inc.
“FFR EXCALOC”
- コンパイラのセキュリティ機能に基づいたExploitabilityの数値化 -
Fourteenforty Research Institute, Inc.
株式会社 フォティーンフォティ技術研究所
http://www.fourteenforty.jp
シニアソフトウェアエンジニア
石山智祥
Fourteenforty Research Institute, Inc.
2
はじめに
• 最近のコンパイラには、セキュリティを強化する機能が追加されている
• しかし、市場に流通しているソフトウェアには、コンパイラのセキュリティ機能が利
用されていないケースが多い
• そのため、従来の手法でExploit可能となる脆弱性が多く発見されている
• 今回、実行ファイルを解析し適用されているセキュリティ機能を検出し、
Exploitabilityを数値化することに挑戦
Fourteenforty Research Institute, Inc.
3
Agenda
1. コンパイラ, OSの提供するセキュリティ機能と実装
2. Exploitability計算のための特徴パラメータ検出
3. FFR EXCALOCを用いたExploitabilityの数値化
4. 今後の課題
Fourteenforty Research Institute, Inc.
4
1. コンパイラ, OSの提供するセキュリティ機能と実装
Fourteenforty Research Institute, Inc.
5
Visual C++ (2005以降)
• /GSオプション
• 最適化によるセキュリティを考慮したスタックレイアウト
- Canaryを使用したローカルバッファのオーバーフロー検出
- Visual Studio .NETでは回避方法が存在したが、2005で改良された
- ポインタ変数やポインタ引数をレジスタを使用するように最適化
- これにより、ポインタを経由したメモリ上へのデータ書き込みを防ぐ
Fourteenforty Research Institute, Inc.
6
Visual C++ /GS
• 関数リターン時に、Canaryが書き換えられているか確認し、オーバーフ
ローを検出
引数
リターンアドレス
Saved EBP
ローカル変数(int a, char c)
ローカルバッファ(char buf[])
引数
リターンアドレス
Saved EBP
Canary
ローカル変数(int a, char c)
ローカルバッファ(char buf[])
スタックの成長方向
ローカルバッファの書き込み方向
書き換え!
書き換え検出!
Fourteenforty Research Institute, Inc.
7
Visual C++ /GS
int vuln(char *arg)
{
char buf[128];
strcpy(buf, arg);
printf("buf = %s¥n", buf);
return 0;
}
Canary(cookie)を確認
Canary(cookie)を設定
Fourteenforty Research Institute, Inc.
8
Visual C++ 最適化によるStack Layout
• ローカルバッファの後ろに存在するローカルポインタをレジスタを使用し、
スタック上に領域を設けない
• ポインタを渡す引数をレジスタでの引数として渡す
引数(char *arg2)
引数(int arg1)
リターンアドレス
Saved EBP
ローカル変数(int a, char c)
ローカルポインタ(char *p)
ローカルバッファ(char buf[])
引数(int arg1)
リターンアドレス
Saved EBP
ローカル変数(int a, char c)
ローカルバッファ(char buf[])
スタックの成長方向
ローカルバッファの書き込み方向
Fourteenforty Research Institute, Inc.
9
Visual C++ 最適化によるStack Layout
void vuln(char *s, int l)
{
char *a;
char buf[32];
a = buf;
while (*s != '¥0') {
*a++ = *s++ + 1;
}
printf("buf = %s¥n", buf);
return ;
}
ローカル変数をレジスタで使用
ポインタ引数がレジスタ渡し
Fourteenforty Research Institute, Inc.
10
SSP (Stack Smashing Protector)
• スタックオーバーフローを検出し、任意コードの実行を抑制
- IBM 江藤氏が考案したProPolice(*1)の再実装
- GCC 4.1より正式に組み込まれている
- Canaryを使用したオーバーフローチェック
- Ideal Stack Layoutによるポインタ変数、ポインタ引数の保護
*1 http://www.trl.ibm.com/projects/security/ssp/main.html
Fourteenforty Research Institute, Inc.
11
SSP - Canary -
void vuln(char *s, int l)
{
int len;
char buf[32];
len = strlen(s);
printf("length = %d, %d¥n",
len, l);
strcpy(buf, s);
return ;
}
Canaryを確認
Canaryを設定
Fourteenforty Research Institute, Inc.
12
SSP - Ideal Stack Layout -
• ローカルバッファの後ろにローカルポインタが存在しないようにレイアウト
• ポインタを渡す引数は、一度ローカル変数にコピーしてから使用する
引数(char *arg2)
引数(int arg1)
リターンアドレス
Saved EBP
ローカル変数(int a, char c)
ローカルポインタ(char *p)
ローカルバッファ(char buf[])
引数(char* arg2) Not use
引数(int arg1)
リターンアドレス
Saved EBP
ローカル変数(int a, char c)
ローカルバッファ(char buf[])
ローカルポインタ(char *p)
コピーした引数(char *arg2)
スタックの成長方向
ローカルバッファの書き込み方向
Fourteenforty Research Institute, Inc.
13
SSP - Ideal Stack Layout -
void vuln(char *s, int l)
{
int len;
char buf[32];
len = strlen(s);
printf("length = %d, %d¥n",
len, l);
strcpy(buf, s);
return ;
}
引数arg_0をsrcに代入
Fourteenforty Research Institute, Inc.
14
SafeSEH
• 実行可能な例外ハンドラをあらかじめテーブルに設定しておくことで、例
外ハンドラを経由した任意コードの実行を防ぐ
- Windows XP SP2から実装
- 例外が発生した際に、KiUserExceptionDispatcher(ntdll.dll)内で、例外
ハンドラテーブルをチェック
- 例外ハンドラテーブルに含まれているハンドラであれば実行
Fourteenforty Research Institute, Inc.
15
例外ハンドラテーブル(SEHandlerTable)
• 実行ファイルのLOAD_CONFIGデータディレクトリに存在
LOAD_CONFIGデータディレクトリ
0x00 0x48(サイズ)
….
0x40 SEHandlerTableへのアドレス
0x44 SEHandlerCount(エントリ数)
SEHandlerTable
0x0000XXXX
….
….
….
Fourteenforty Research Institute, Inc.
• SEHandlerTableのチェック
16
例外ハンドラテーブル(SEHandlerTable)
SEHandlerTableを確認
例外ハンドラ実行
Fourteenforty Research Institute, Inc.
17
Heap Management (Windows(HeapAlloc/HeapFree))
• Windowsの提供するHeap Manager
- HeapCreateを使用することで、Heap Managerを分けることが可能
- 実装はntdll.dll内のRtlAllocateHeap/RtlFreeHeap
- FreeListでDoubleLinkedListを使用
- Windows XP SP2以降では、バウンダリチェックやSafe Unlinkといった
セキュリティ機能が実装されている
Fourteenforty Research Institute, Inc.
18
Heap Management (Windows(HeapAlloc/HeapFree))
…
…
Segments[]
…
FreeList[]
…
HEAP
…
Signature(0xFFEEFFEE)
HEAPへのアドレス
…
FirstEntryへのアドレス
…
HEAP_SEGMENT
サイズ
前領域のサイズ
…
ユーザ使用領域
HEAP_ENTRY
Fourteenforty Research Institute, Inc.
19
Heap Management (Windows(HeapAlloc/HeapFree))
…
Signature(0xFFEEFFEE)
HEAPへのアドレス
…
FirstEntryへのアドレス
…
HEAP_SEGMENT
サイズ
前領域のサイズ
…
ユーザ使用領域
サイズ
前領域のサイズ
…
ユーザ使用領域
HEAP_ENTRY
Fourteenforty Research Institute, Inc.
20
Heap Management (Windows(HeapAlloc/HeapFree))
サイズ
前領域のサイズ
…
次のFreeBlockのアドレス
前のFreeBlockのアドレス
FreeList
…
…
Segments[]
…
FreeList[]
…
HEAP
FreeList[0] FreeBlockの先頭
FreeBlockの最後
…
FreeList[n] FreeBlockの先頭
FreeBlockの最後
FreeBlock FreeBlock
FreeBlock FreeBlock
ユーザが使用していた領域
Fourteenforty Research Institute, Inc.
21
Heap Management (Borland Compiler (malloc/free))
• Borland C++ Compiler(BCC32)でのHeap Manager
- VirtualAllocで確保した領域を独自のHeap Managerで管理
- 要求サイズが0x100000以上の場合はVirtualAllocでメモリ確保
- FreeListでDoubleLinkedListを使用
- バウンダリチェック等のセキュリティ機能は実装されていない
Fourteenforty Research Institute, Inc.
22
Heap Management (Borland Compiler (malloc/free))
Heapヘッダへのアドレス
FreeListのサイズ
FreeListのアドレス
確保領域のアドレス
未使用領域のアドレス
Heapヘッダ
FreeList
確保領域
未使用領域
HeapHeap Manager
Fourteenforty Research Institute, Inc.
23
Heap Management (Borland Compiler (malloc/free))
割り当てサイズ(4byte)
ユーザ使用領域
割り当てサイズ(4byte)
ユーザ使用領域
残割り当て可能サイズ
HeapManagerへのアドレス
HeapManagerへのアドレス
Heapヘッダ
FreeList
確保領域
未使用領域
HeapHeaderへのアドレス
FreeListのサイズ
FreeListのアドレス
確保領域のアドレス
未使用領域のアドレス
Fourteenforty Research Institute, Inc.
24
Heap Management (Borland Compiler (malloc/free))
Heapヘッダ
FreeList
確保領域
未使用領域
FreeList[0] FreeBlockの先頭
FreeBlockの最後
FreeList[1] FreeBlockの先頭
FreeBlockの最後
… …
FreeBlock FreeBlock
FreeBlock FreeBlock
割り当てサイズ(4byte)
FreeBlockのアドレス
FreeBlockのアドレス
領域サイズ
ユーザが使用していた領域
Fourteenforty Research Institute, Inc.
25
Heap Management (Borland Compiler (malloc/free))
• malloc実行時(FreeListから確保)
FreeListのつなぎ換え
Fourteenforty Research Institute, Inc.
26
Heap Management (Borland Compiler (malloc/free))
• malloc実行時(未使用領域から確保)
未使用領域から確保
Fourteenforty Research Institute, Inc.
27
Heap Management (Borland Compiler (malloc/free))
• free実行時
FreeListへの追加
Fourteenforty Research Institute, Inc.
28
Heap Management (Delphi (GetMem/FreeMem))
• Borland DelphiのGetMem, FreeMemにて使用するHeap Manager
- 要求サイズごとに確保されたメモリブロックから割り当てる
- 要求サイズごとに、メモリブロックの管理を行うHeap Headerが存在
- FreeListではSingle Linked Listを使用
- セキュリティ機能は実装されていない
Fourteenforty Research Institute, Inc.
29
Heap Management (Delphi (GetMem/FreeMem))
Heap Header[0]のオフセット
Heap Header[1]のオフセット
…
HeapHeader[0]
HeapHeader[1]
HeapHeader[2]
…
…要求サイズを元に、対応するオフセット
を取得
Heap Headerオフセットテーブル Heap Header
Fourteenforty Research Institute, Inc.
30
Heap Management (Delphi (GetMem/FreeMem))
要求サイズ
…
未使用領域のアドレス
Heap領域のアドレス
Heap領域のサイズ
…
HeapHeader[0]
HeapHeader[1]
HeapHeader[2]
…
…
HeapHeaderのアドレス
…
FreeList
確保数
ユーザ使用領域
未使用領域
HeapHeapHeader
Fourteenforty Research Institute, Inc.
31
Heap Management (Delphi (GetMem/FreeMem))
HeapHeaderのアドレス
…
FreeList
確保数
ユーザ使用領域
未使用領域
Heap
Heapの先頭アドレス
ユーザ使用領域
Heapの先頭アドレス
ユーザ使用領域
Heapの先頭アドレス
ユーザ使用領域
Fourteenforty Research Institute, Inc.
32
Heap Management (Delphi (GetMem/FreeMem))
HeapHeaderのアドレス
…
FreeList
確保数
ユーザ使用領域
未使用領域
Heap
FreeBlockへのアドレス
ユーザ使用領域
FreeBlockへのアドレス
ユーザ使用領域
0x00000000
ユーザ使用領域
Fourteenforty Research Institute, Inc.
33
Heap Management (Delphi (GetMem/FreeMem))
• GetMem実行時(FreeListから確保)
オフセットテーブルからHeapHeaderを取得
FreeListから確保メモリを取得
Fourteenforty Research Institute, Inc.
34
Heap Management (Delphi (GetMem/FreeMem))
• GetMem実行時(未使用領域から確保)
未使用領域からメモリ確保
Fourteenforty Research Institute, Inc.
35
Heap Management (Delphi (GetMem/FreeMem))
• FreeMem実行時
FreeListの先端に開放アドレスを追加
Fourteenforty Research Institute, Inc.
36
2. Exploitability計算のための特徴パラメータ検出
Fourteenforty Research Institute, Inc.
37
任意コード実行が可能となりえる要素
• ローカルバッファ(スタックオーバーフロー)
• ヒープバッファ(ヒープオーバーフロー)
- スタック上に確保されたバッファ領域がオーバーフロー
- オーバーフローにより、リターンアドレス等が書き換えられ任意コード
実行が行われる
- ヒープに確保されたバッファがオーバーフロー
- オーバーフローにより、ヒープを管理するリスト構造が破壊され任意の
アドレス上のコードが実行される
Fourteenforty Research Institute, Inc.
38
スタック上のローカル変数
• ローカル変数の特徴
- EBP経由で参照されるローカル変数は[EBP-X]というオフセットでアク
セスされる(EBPより下位の位置に配置される)
- ローカル変数を最初に使用する箇所では、ローカル変数に値を設定す
る処理が多い(Dst operandに指定される)
Fourteenforty Research Institute, Inc.
39
スタック上のローカル変数
[EBP-X]の形式でアクセス
はじめに値の設定が行われる
Fourteenforty Research Institute, Inc.
40
ローカルバッファの検出
• アセンブラコード上でのローカルバッファの特徴
- 通常の変数とは異なり、最初のアクセス時にSrc operandになっている
場合がある
- LEA命令にてスタック上のアドレスをレジスタに取得、アドレッシングア
クセスを行う
- ベースレジスタ+インデックスレジスタの組み合わせで、アドレッシング
アクセスを行う
Fourteenforty Research Institute, Inc.
41
ローカルバッファの検出
[EBP+インデックスレジスタ]の形式でアクセス
LEA命令でアドレスを取得
アドレッシングアクセス
Fourteenforty Research Institute, Inc.
42
ポインタの検出
• アセンブラコード上でのポインタの特徴
- 配列のアクセス方法と似ている
- アドレッシングアクセスを行っている
- 配列との違いは、レジスタにアドレスを設定する際にLEAではなくMOV
命令を使用している
- 特定のアドレス領域の値を設定しアクセスを行う場合がある
Fourteenforty Research Institute, Inc.
43
ポインタの検出
MOV命令でアドレスを設定
アドレッシングアクセスを行う
Fourteenforty Research Institute, Inc.
44
例外ハンドラの検出
• アセンブラコード上での例外ハンドラを使用している関数の特徴
- fs:0の読み込みと書き込みを行っている
- fs:0の値をスタックにPUSHしている
- fs:0をPUSHするひとつ前のPUSH命令のオペランドが例外ハンドラ
- コンパイラの種類や、最適化のオプションによっては例外ハンドラ設定
関数を使用している場合がある
Fourteenforty Research Institute, Inc.
45
例外ハンドラの検出
関数内で例外ハンドラの設定(VC)
fs:0の値を更新してリターン
例外ハンドラ設定関数(VC)
fs:0の値を更新してリターン
例外ハンドラ設定関数(BCC)
関数内で例外ハンドラの設定(Delphi)
fs:0をEAXに格納してからPUSH
fsのオフセット指定にレジスタを使用
Fourteenforty Research Institute, Inc.
46
Canaryの検出
• アセンブラコード上でのCanaryの特徴
- コンパイラによって実装が異なるが大きな流れは同じ
- 関数の最後のチェック処理は別関数の可能性がある
- コンパイラごとに検出処理を分ける必要もある
- 関数のはじめで、特定の値を設定している
- 関数の最後で、値のチェック処理を行っている
Fourteenforty Research Institute, Inc.
47
SafeSEHの検出
• SafeSEHが有効になっているバイナリファイルの特徴
- PEヘッダのDataDirectoryにLOAD_CONFIGディレクトリが存在する
- LOAD_CONFIGディレクトリのフォーマットが特定のフォーマットになって
いる
Fourteenforty Research Institute, Inc.
48
Heap Managerの検出
• 使用しているHeap Managerを検出
- 独自実装のHeap Managerを検出するのは困難
- Import Tableから使用しているAPIを列挙し、メモリ確保系のAPIの使用
頻度から利用しているHeap Managerを判断
Fourteenforty Research Institute, Inc.
49
使用しているコンパイラの検出
• DOSヘッダからPEヘッダへのオフセットの値
• DOSプログラムとして起動した際に実行されるコード
• これ以外にもいくつか検出方法が存在…
- DOSヘッダからPEヘッダのオフセットの値は、コンパイラによって異な
る。
- DOSヘッダからPEヘッダのオフセット値は、コンパイラが同じであれば
同じになる可能性が高い
- DOSプログラムとして起動した際に実行されるコードでは、コンパイラ
によって実行コードに違いがある
Fourteenforty Research Institute, Inc.
50
使用しているコンパイラの検出
BCC32
Delphi
Visual C++
GCC
Fourteenforty Research Institute, Inc.
51
3. FFR EXCALOCを用いたExploitabilityの数値化
Fourteenforty Research Institute, Inc.
52
FFR EXCALOC
• 動作環境
• 開発環境
- IDA Pro Version 5.2 のプラグイン
- 対象フォーマットはPEファイル
- 現時点では、静的解析のみで特徴パラメータの抽出を行う
- Windows XP SP2
- Visual Studio 2008
Fourteenforty Research Institute, Inc.
53
特徴パラメータの検出
• PEファイル全体に影響するパラメータ
• 関数単位で影響するパラメータ
- 使用しているコンパイラ
- Heap Manager
- SafeSEHの有効/無効
- 適用されているセキュリティ機能
- 関数内のローカルバッファの検出
- 関数内のポインタの検出
- 関数内の例外ハンドラの検出
Fourteenforty Research Institute, Inc.
54
特徴パラメータの抽出例 (1)
Compiler Type Visual C++
Stack Protection /GS
Safe SEH あり
Heap Manager Windows Heap Manager
• ブラウザソフトI
アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ
0x00401609 0x88 0x02 なし あり なし
0x00401887 0x14D 0x01 あり あり あり
0x00401DE4 0x2AB 0x01 あり あり なし
…
Fourteenforty Research Institute, Inc.
55
特徴パラメータの抽出例 (2)
Compiler Type Visual C++
Stack Protection なし
Safe SEH なし
Heap Manager なし
• グラフィックソフトH
アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ
0x00401000 0xDC 0x01 あり なし あり
0x004010DC 0x08 0x01 なし なし なし
0x004010F0 0x59 0x01 なし なし あり
…
Fourteenforty Research Institute, Inc.
56
特徴パラメータの抽出例 (3)
Compiler Type Borland Delphi
Stack Protection なし
Safe SEH なし
Heap Manager Delphi Heap Manager
• サーバソフトT
アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ
0x0040114D 0x1CF 0x01 あり なし なし
0x00403AEA 0x105 0x06 あり なし なし
0x00403EEC 0x62 0x03 なし なし なし
…
Fourteenforty Research Institute, Inc.
57
Exploitability計算
• 基準値(関数単位で計算)
• 抽出したパラメータを考慮した値
基準値 = 関数のサイズ × 関数の参照数
基準値 × A × B × C
A 配列の有無によるパラメータ。Canaryの有無により重み付けを変化。
(配列なし = 1, 配列ありかつCanaryあり = 1, その他 = 2)
B ポインタの有無によるパラメータ。Heap Managerの種類により重み付けを変化
(Windows = 1, Borland C++ = 2, Delphi = 2)
C 例外ハンドラの有無によるパラメータ。SafeSEHの有無により変化
(例外なし = 1, 例外ありSafeSEHあり = 1, 例外ありSafeSEHなし = 2)
Fourteenforty Research Institute, Inc.
58
Exploitability計算
• 実行ファイルのExploitability計算
Exploitability = パラメータ考慮値の和 / 基準値の和
- 関数単位に計算した値をすべて合計
- それぞれの合計値を割り算
- 数値が大きいほど、Exploitabilityが高い
Fourteenforty Research Institute, Inc.
59
Exploitability計算結果
• 先ほどの特徴パラメータを抽出したアプリケーション(+α )の計算結果
Fourteenforty Research Institute, Inc.
60
4. 今後の課題
Fourteenforty Research Institute, Inc.
61
より正確なExploitabilityを計算するために…
• より正確な要素の検出
• 動的解析を併用したExploitabilityの計算
- 配列と構造体の区別
- 関数ポインタの検出
- …
- 対象アプリケーションをデバッガで起動させ、実行コードの流れから
Exploitability計算に必要な要素を検出する
• 関数のパラメータ
• ヒープバッファ
• …
Fourteenforty Research Institute, Inc.
62
ありがとうございました
Fourteenforty Research Institute, Inc.
株式会社 フォティーンフォティ技術研究所
http://www.fourteenforty.jp
シニアソフトウェアエンジニア
石山智祥 <ishiyama@fourteenforty.jp>

Weitere ähnliche Inhalte

Ähnlich wie FFR EXCALOC

Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)FFRI, Inc.
 
Mr201303 trust zone
Mr201303 trust zoneMr201303 trust zone
Mr201303 trust zoneFFRI, Inc.
 
Mr201209 windows8 exploit_mitigation
Mr201209 windows8 exploit_mitigationMr201209 windows8 exploit_mitigation
Mr201209 windows8 exploit_mitigationFFRI, Inc.
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出FFRI, Inc.
 
Android: 設計上の技術的な問題点
Android: 設計上の技術的な問題点Android: 設計上の技術的な問題点
Android: 設計上の技術的な問題点FFRI, Inc.
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話ssuser551c92
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Yoshikazu Kawashima
 
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹Insight Technology, Inc.
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門l_b__
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipelineMasatomo Ito
 
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10KatsutakaMurakoshi
 
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leapSony Network Communications Inc.
 
Speech Framework
Speech FrameworkSpeech Framework
Speech FrameworkGaprot
 
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~IIJ
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2Computational Materials Science Initiative
 
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話Hibino Hisashi
 

Ähnlich wie FFR EXCALOC (20)

Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)
 
Mr201303 trust zone
Mr201303 trust zoneMr201303 trust zone
Mr201303 trust zone
 
Mr201209 windows8 exploit_mitigation
Mr201209 windows8 exploit_mitigationMr201209 windows8 exploit_mitigation
Mr201209 windows8 exploit_mitigation
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出
 
Android: 設計上の技術的な問題点
Android: 設計上の技術的な問題点Android: 設計上の技術的な問題点
Android: 設計上の技術的な問題点
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話
 
TeamFileご提案資料
TeamFileご提案資料TeamFileご提案資料
TeamFileご提案資料
 
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10
【GOJAS Meetup-08】Splunk Insights for Infrastructure 2018-07-10
 
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap
 
Speech Framework
Speech FrameworkSpeech Framework
Speech Framework
 
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
DLL読み込みの問題を読み解く
DLL読み込みの問題を読み解くDLL読み込みの問題を読み解く
DLL読み込みの問題を読み解く
 
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 2
 
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
【DeepSecurityUserNight】我が家の箱入り娘を世間に晒すのは危険なのでDeepSecurityに見守ってもらった話
 

Mehr von FFRI, Inc.

Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMAppearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMFFRI, Inc.
 
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMAppearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMFFRI, Inc.
 
TrustZone use case and trend (FFRI Monthly Research Mar 2017)
TrustZone use case and trend (FFRI Monthly Research Mar 2017) TrustZone use case and trend (FFRI Monthly Research Mar 2017)
TrustZone use case and trend (FFRI Monthly Research Mar 2017) FFRI, Inc.
 
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...FFRI, Inc.
 
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017)
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017) An Overview of the Android Things Security (FFRI Monthly Research Jan 2017)
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017) FFRI, Inc.
 
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016)
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016) Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016)
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016) FFRI, Inc.
 
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)FFRI, Inc.
 
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...FFRI, Inc.
 
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)FFRI, Inc.
 
Black Hat USA 2016 Survey Report (FFRI Monthly Research 2016.8)
Black Hat USA 2016  Survey Report (FFRI Monthly Research 2016.8)Black Hat USA 2016  Survey Report (FFRI Monthly Research 2016.8)
Black Hat USA 2016 Survey Report (FFRI Monthly Research 2016.8)FFRI, Inc.
 
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7) About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7) FFRI, Inc.
 
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)FFRI, Inc.
 
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)FFRI, Inc.
 
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...FFRI, Inc.
 
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)FFRI, Inc.
 
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...FFRI, Inc.
 
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)FFRI, Inc.
 
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)FFRI, Inc.
 
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)Security of Windows 10 IoT Core(FFRI Monthly Research 201506)
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)FFRI, Inc.
 
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...FFRI, Inc.
 

Mehr von FFRI, Inc. (20)

Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMAppearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
 
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARMAppearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
Appearances are deceiving: Novel offensive techniques in Windows 10/11 on ARM
 
TrustZone use case and trend (FFRI Monthly Research Mar 2017)
TrustZone use case and trend (FFRI Monthly Research Mar 2017) TrustZone use case and trend (FFRI Monthly Research Mar 2017)
TrustZone use case and trend (FFRI Monthly Research Mar 2017)
 
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...
Android Things Security Research in Developer Preview 2 (FFRI Monthly Researc...
 
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017)
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017) An Overview of the Android Things Security (FFRI Monthly Research Jan 2017)
An Overview of the Android Things Security (FFRI Monthly Research Jan 2017)
 
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016)
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016) Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016)
Black Hat Europe 2016 Survey Report (FFRI Monthly Research Dec 2016)
 
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)
An Example of use the Threat Modeling Tool (FFRI Monthly Research Nov 2016)
 
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...
STRIDE Variants and Security Requirements-based Threat Analysis (FFRI Monthly...
 
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)
Introduction of Threat Analysis Methods(FFRI Monthly Research 2016.9)
 
Black Hat USA 2016 Survey Report (FFRI Monthly Research 2016.8)
Black Hat USA 2016  Survey Report (FFRI Monthly Research 2016.8)Black Hat USA 2016  Survey Report (FFRI Monthly Research 2016.8)
Black Hat USA 2016 Survey Report (FFRI Monthly Research 2016.8)
 
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7) About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
 
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)
Black Hat USA 2016 Pre-Survey (FFRI Monthly Research 2016.6)
 
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)
Black Hat Asia 2016 Survey Report (FFRI Monthly Research 2016.4)
 
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...
ARMv8-M TrustZone: A New Security Feature for Embedded Systems (FFRI Monthly ...
 
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)
CODE BLUE 2015 Report (FFRI Monthly Research 2015.11)
 
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...
Latest Security Reports of Automobile and Vulnerability Assessment by CVSS v3...
 
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
Black Hat USA 2015 Survey Report (FFRI Monthly Research 201508)
 
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)
A Survey of Threats in OS X and iOS(FFRI Monthly Research 201507)
 
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)Security of Windows 10 IoT Core(FFRI Monthly Research 201506)
Security of Windows 10 IoT Core(FFRI Monthly Research 201506)
 
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
 

Kürzlich hochgeladen

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Kürzlich hochgeladen (7)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

FFR EXCALOC

  • 1. Fourteenforty Research Institute, Inc. 1 Fourteenforty Research Institute, Inc. “FFR EXCALOC” - コンパイラのセキュリティ機能に基づいたExploitabilityの数値化 - Fourteenforty Research Institute, Inc. 株式会社 フォティーンフォティ技術研究所 http://www.fourteenforty.jp シニアソフトウェアエンジニア 石山智祥
  • 2. Fourteenforty Research Institute, Inc. 2 はじめに • 最近のコンパイラには、セキュリティを強化する機能が追加されている • しかし、市場に流通しているソフトウェアには、コンパイラのセキュリティ機能が利 用されていないケースが多い • そのため、従来の手法でExploit可能となる脆弱性が多く発見されている • 今回、実行ファイルを解析し適用されているセキュリティ機能を検出し、 Exploitabilityを数値化することに挑戦
  • 3. Fourteenforty Research Institute, Inc. 3 Agenda 1. コンパイラ, OSの提供するセキュリティ機能と実装 2. Exploitability計算のための特徴パラメータ検出 3. FFR EXCALOCを用いたExploitabilityの数値化 4. 今後の課題
  • 4. Fourteenforty Research Institute, Inc. 4 1. コンパイラ, OSの提供するセキュリティ機能と実装
  • 5. Fourteenforty Research Institute, Inc. 5 Visual C++ (2005以降) • /GSオプション • 最適化によるセキュリティを考慮したスタックレイアウト - Canaryを使用したローカルバッファのオーバーフロー検出 - Visual Studio .NETでは回避方法が存在したが、2005で改良された - ポインタ変数やポインタ引数をレジスタを使用するように最適化 - これにより、ポインタを経由したメモリ上へのデータ書き込みを防ぐ
  • 6. Fourteenforty Research Institute, Inc. 6 Visual C++ /GS • 関数リターン時に、Canaryが書き換えられているか確認し、オーバーフ ローを検出 引数 リターンアドレス Saved EBP ローカル変数(int a, char c) ローカルバッファ(char buf[]) 引数 リターンアドレス Saved EBP Canary ローカル変数(int a, char c) ローカルバッファ(char buf[]) スタックの成長方向 ローカルバッファの書き込み方向 書き換え! 書き換え検出!
  • 7. Fourteenforty Research Institute, Inc. 7 Visual C++ /GS int vuln(char *arg) { char buf[128]; strcpy(buf, arg); printf("buf = %s¥n", buf); return 0; } Canary(cookie)を確認 Canary(cookie)を設定
  • 8. Fourteenforty Research Institute, Inc. 8 Visual C++ 最適化によるStack Layout • ローカルバッファの後ろに存在するローカルポインタをレジスタを使用し、 スタック上に領域を設けない • ポインタを渡す引数をレジスタでの引数として渡す 引数(char *arg2) 引数(int arg1) リターンアドレス Saved EBP ローカル変数(int a, char c) ローカルポインタ(char *p) ローカルバッファ(char buf[]) 引数(int arg1) リターンアドレス Saved EBP ローカル変数(int a, char c) ローカルバッファ(char buf[]) スタックの成長方向 ローカルバッファの書き込み方向
  • 9. Fourteenforty Research Institute, Inc. 9 Visual C++ 最適化によるStack Layout void vuln(char *s, int l) { char *a; char buf[32]; a = buf; while (*s != '¥0') { *a++ = *s++ + 1; } printf("buf = %s¥n", buf); return ; } ローカル変数をレジスタで使用 ポインタ引数がレジスタ渡し
  • 10. Fourteenforty Research Institute, Inc. 10 SSP (Stack Smashing Protector) • スタックオーバーフローを検出し、任意コードの実行を抑制 - IBM 江藤氏が考案したProPolice(*1)の再実装 - GCC 4.1より正式に組み込まれている - Canaryを使用したオーバーフローチェック - Ideal Stack Layoutによるポインタ変数、ポインタ引数の保護 *1 http://www.trl.ibm.com/projects/security/ssp/main.html
  • 11. Fourteenforty Research Institute, Inc. 11 SSP - Canary - void vuln(char *s, int l) { int len; char buf[32]; len = strlen(s); printf("length = %d, %d¥n", len, l); strcpy(buf, s); return ; } Canaryを確認 Canaryを設定
  • 12. Fourteenforty Research Institute, Inc. 12 SSP - Ideal Stack Layout - • ローカルバッファの後ろにローカルポインタが存在しないようにレイアウト • ポインタを渡す引数は、一度ローカル変数にコピーしてから使用する 引数(char *arg2) 引数(int arg1) リターンアドレス Saved EBP ローカル変数(int a, char c) ローカルポインタ(char *p) ローカルバッファ(char buf[]) 引数(char* arg2) Not use 引数(int arg1) リターンアドレス Saved EBP ローカル変数(int a, char c) ローカルバッファ(char buf[]) ローカルポインタ(char *p) コピーした引数(char *arg2) スタックの成長方向 ローカルバッファの書き込み方向
  • 13. Fourteenforty Research Institute, Inc. 13 SSP - Ideal Stack Layout - void vuln(char *s, int l) { int len; char buf[32]; len = strlen(s); printf("length = %d, %d¥n", len, l); strcpy(buf, s); return ; } 引数arg_0をsrcに代入
  • 14. Fourteenforty Research Institute, Inc. 14 SafeSEH • 実行可能な例外ハンドラをあらかじめテーブルに設定しておくことで、例 外ハンドラを経由した任意コードの実行を防ぐ - Windows XP SP2から実装 - 例外が発生した際に、KiUserExceptionDispatcher(ntdll.dll)内で、例外 ハンドラテーブルをチェック - 例外ハンドラテーブルに含まれているハンドラであれば実行
  • 15. Fourteenforty Research Institute, Inc. 15 例外ハンドラテーブル(SEHandlerTable) • 実行ファイルのLOAD_CONFIGデータディレクトリに存在 LOAD_CONFIGデータディレクトリ 0x00 0x48(サイズ) …. 0x40 SEHandlerTableへのアドレス 0x44 SEHandlerCount(エントリ数) SEHandlerTable 0x0000XXXX …. …. ….
  • 16. Fourteenforty Research Institute, Inc. • SEHandlerTableのチェック 16 例外ハンドラテーブル(SEHandlerTable) SEHandlerTableを確認 例外ハンドラ実行
  • 17. Fourteenforty Research Institute, Inc. 17 Heap Management (Windows(HeapAlloc/HeapFree)) • Windowsの提供するHeap Manager - HeapCreateを使用することで、Heap Managerを分けることが可能 - 実装はntdll.dll内のRtlAllocateHeap/RtlFreeHeap - FreeListでDoubleLinkedListを使用 - Windows XP SP2以降では、バウンダリチェックやSafe Unlinkといった セキュリティ機能が実装されている
  • 18. Fourteenforty Research Institute, Inc. 18 Heap Management (Windows(HeapAlloc/HeapFree)) … … Segments[] … FreeList[] … HEAP … Signature(0xFFEEFFEE) HEAPへのアドレス … FirstEntryへのアドレス … HEAP_SEGMENT サイズ 前領域のサイズ … ユーザ使用領域 HEAP_ENTRY
  • 19. Fourteenforty Research Institute, Inc. 19 Heap Management (Windows(HeapAlloc/HeapFree)) … Signature(0xFFEEFFEE) HEAPへのアドレス … FirstEntryへのアドレス … HEAP_SEGMENT サイズ 前領域のサイズ … ユーザ使用領域 サイズ 前領域のサイズ … ユーザ使用領域 HEAP_ENTRY
  • 20. Fourteenforty Research Institute, Inc. 20 Heap Management (Windows(HeapAlloc/HeapFree)) サイズ 前領域のサイズ … 次のFreeBlockのアドレス 前のFreeBlockのアドレス FreeList … … Segments[] … FreeList[] … HEAP FreeList[0] FreeBlockの先頭 FreeBlockの最後 … FreeList[n] FreeBlockの先頭 FreeBlockの最後 FreeBlock FreeBlock FreeBlock FreeBlock ユーザが使用していた領域
  • 21. Fourteenforty Research Institute, Inc. 21 Heap Management (Borland Compiler (malloc/free)) • Borland C++ Compiler(BCC32)でのHeap Manager - VirtualAllocで確保した領域を独自のHeap Managerで管理 - 要求サイズが0x100000以上の場合はVirtualAllocでメモリ確保 - FreeListでDoubleLinkedListを使用 - バウンダリチェック等のセキュリティ機能は実装されていない
  • 22. Fourteenforty Research Institute, Inc. 22 Heap Management (Borland Compiler (malloc/free)) Heapヘッダへのアドレス FreeListのサイズ FreeListのアドレス 確保領域のアドレス 未使用領域のアドレス Heapヘッダ FreeList 確保領域 未使用領域 HeapHeap Manager
  • 23. Fourteenforty Research Institute, Inc. 23 Heap Management (Borland Compiler (malloc/free)) 割り当てサイズ(4byte) ユーザ使用領域 割り当てサイズ(4byte) ユーザ使用領域 残割り当て可能サイズ HeapManagerへのアドレス HeapManagerへのアドレス Heapヘッダ FreeList 確保領域 未使用領域 HeapHeaderへのアドレス FreeListのサイズ FreeListのアドレス 確保領域のアドレス 未使用領域のアドレス
  • 24. Fourteenforty Research Institute, Inc. 24 Heap Management (Borland Compiler (malloc/free)) Heapヘッダ FreeList 確保領域 未使用領域 FreeList[0] FreeBlockの先頭 FreeBlockの最後 FreeList[1] FreeBlockの先頭 FreeBlockの最後 … … FreeBlock FreeBlock FreeBlock FreeBlock 割り当てサイズ(4byte) FreeBlockのアドレス FreeBlockのアドレス 領域サイズ ユーザが使用していた領域
  • 25. Fourteenforty Research Institute, Inc. 25 Heap Management (Borland Compiler (malloc/free)) • malloc実行時(FreeListから確保) FreeListのつなぎ換え
  • 26. Fourteenforty Research Institute, Inc. 26 Heap Management (Borland Compiler (malloc/free)) • malloc実行時(未使用領域から確保) 未使用領域から確保
  • 27. Fourteenforty Research Institute, Inc. 27 Heap Management (Borland Compiler (malloc/free)) • free実行時 FreeListへの追加
  • 28. Fourteenforty Research Institute, Inc. 28 Heap Management (Delphi (GetMem/FreeMem)) • Borland DelphiのGetMem, FreeMemにて使用するHeap Manager - 要求サイズごとに確保されたメモリブロックから割り当てる - 要求サイズごとに、メモリブロックの管理を行うHeap Headerが存在 - FreeListではSingle Linked Listを使用 - セキュリティ機能は実装されていない
  • 29. Fourteenforty Research Institute, Inc. 29 Heap Management (Delphi (GetMem/FreeMem)) Heap Header[0]のオフセット Heap Header[1]のオフセット … HeapHeader[0] HeapHeader[1] HeapHeader[2] … …要求サイズを元に、対応するオフセット を取得 Heap Headerオフセットテーブル Heap Header
  • 30. Fourteenforty Research Institute, Inc. 30 Heap Management (Delphi (GetMem/FreeMem)) 要求サイズ … 未使用領域のアドレス Heap領域のアドレス Heap領域のサイズ … HeapHeader[0] HeapHeader[1] HeapHeader[2] … … HeapHeaderのアドレス … FreeList 確保数 ユーザ使用領域 未使用領域 HeapHeapHeader
  • 31. Fourteenforty Research Institute, Inc. 31 Heap Management (Delphi (GetMem/FreeMem)) HeapHeaderのアドレス … FreeList 確保数 ユーザ使用領域 未使用領域 Heap Heapの先頭アドレス ユーザ使用領域 Heapの先頭アドレス ユーザ使用領域 Heapの先頭アドレス ユーザ使用領域
  • 32. Fourteenforty Research Institute, Inc. 32 Heap Management (Delphi (GetMem/FreeMem)) HeapHeaderのアドレス … FreeList 確保数 ユーザ使用領域 未使用領域 Heap FreeBlockへのアドレス ユーザ使用領域 FreeBlockへのアドレス ユーザ使用領域 0x00000000 ユーザ使用領域
  • 33. Fourteenforty Research Institute, Inc. 33 Heap Management (Delphi (GetMem/FreeMem)) • GetMem実行時(FreeListから確保) オフセットテーブルからHeapHeaderを取得 FreeListから確保メモリを取得
  • 34. Fourteenforty Research Institute, Inc. 34 Heap Management (Delphi (GetMem/FreeMem)) • GetMem実行時(未使用領域から確保) 未使用領域からメモリ確保
  • 35. Fourteenforty Research Institute, Inc. 35 Heap Management (Delphi (GetMem/FreeMem)) • FreeMem実行時 FreeListの先端に開放アドレスを追加
  • 36. Fourteenforty Research Institute, Inc. 36 2. Exploitability計算のための特徴パラメータ検出
  • 37. Fourteenforty Research Institute, Inc. 37 任意コード実行が可能となりえる要素 • ローカルバッファ(スタックオーバーフロー) • ヒープバッファ(ヒープオーバーフロー) - スタック上に確保されたバッファ領域がオーバーフロー - オーバーフローにより、リターンアドレス等が書き換えられ任意コード 実行が行われる - ヒープに確保されたバッファがオーバーフロー - オーバーフローにより、ヒープを管理するリスト構造が破壊され任意の アドレス上のコードが実行される
  • 38. Fourteenforty Research Institute, Inc. 38 スタック上のローカル変数 • ローカル変数の特徴 - EBP経由で参照されるローカル変数は[EBP-X]というオフセットでアク セスされる(EBPより下位の位置に配置される) - ローカル変数を最初に使用する箇所では、ローカル変数に値を設定す る処理が多い(Dst operandに指定される)
  • 39. Fourteenforty Research Institute, Inc. 39 スタック上のローカル変数 [EBP-X]の形式でアクセス はじめに値の設定が行われる
  • 40. Fourteenforty Research Institute, Inc. 40 ローカルバッファの検出 • アセンブラコード上でのローカルバッファの特徴 - 通常の変数とは異なり、最初のアクセス時にSrc operandになっている 場合がある - LEA命令にてスタック上のアドレスをレジスタに取得、アドレッシングア クセスを行う - ベースレジスタ+インデックスレジスタの組み合わせで、アドレッシング アクセスを行う
  • 41. Fourteenforty Research Institute, Inc. 41 ローカルバッファの検出 [EBP+インデックスレジスタ]の形式でアクセス LEA命令でアドレスを取得 アドレッシングアクセス
  • 42. Fourteenforty Research Institute, Inc. 42 ポインタの検出 • アセンブラコード上でのポインタの特徴 - 配列のアクセス方法と似ている - アドレッシングアクセスを行っている - 配列との違いは、レジスタにアドレスを設定する際にLEAではなくMOV 命令を使用している - 特定のアドレス領域の値を設定しアクセスを行う場合がある
  • 43. Fourteenforty Research Institute, Inc. 43 ポインタの検出 MOV命令でアドレスを設定 アドレッシングアクセスを行う
  • 44. Fourteenforty Research Institute, Inc. 44 例外ハンドラの検出 • アセンブラコード上での例外ハンドラを使用している関数の特徴 - fs:0の読み込みと書き込みを行っている - fs:0の値をスタックにPUSHしている - fs:0をPUSHするひとつ前のPUSH命令のオペランドが例外ハンドラ - コンパイラの種類や、最適化のオプションによっては例外ハンドラ設定 関数を使用している場合がある
  • 45. Fourteenforty Research Institute, Inc. 45 例外ハンドラの検出 関数内で例外ハンドラの設定(VC) fs:0の値を更新してリターン 例外ハンドラ設定関数(VC) fs:0の値を更新してリターン 例外ハンドラ設定関数(BCC) 関数内で例外ハンドラの設定(Delphi) fs:0をEAXに格納してからPUSH fsのオフセット指定にレジスタを使用
  • 46. Fourteenforty Research Institute, Inc. 46 Canaryの検出 • アセンブラコード上でのCanaryの特徴 - コンパイラによって実装が異なるが大きな流れは同じ - 関数の最後のチェック処理は別関数の可能性がある - コンパイラごとに検出処理を分ける必要もある - 関数のはじめで、特定の値を設定している - 関数の最後で、値のチェック処理を行っている
  • 47. Fourteenforty Research Institute, Inc. 47 SafeSEHの検出 • SafeSEHが有効になっているバイナリファイルの特徴 - PEヘッダのDataDirectoryにLOAD_CONFIGディレクトリが存在する - LOAD_CONFIGディレクトリのフォーマットが特定のフォーマットになって いる
  • 48. Fourteenforty Research Institute, Inc. 48 Heap Managerの検出 • 使用しているHeap Managerを検出 - 独自実装のHeap Managerを検出するのは困難 - Import Tableから使用しているAPIを列挙し、メモリ確保系のAPIの使用 頻度から利用しているHeap Managerを判断
  • 49. Fourteenforty Research Institute, Inc. 49 使用しているコンパイラの検出 • DOSヘッダからPEヘッダへのオフセットの値 • DOSプログラムとして起動した際に実行されるコード • これ以外にもいくつか検出方法が存在… - DOSヘッダからPEヘッダのオフセットの値は、コンパイラによって異な る。 - DOSヘッダからPEヘッダのオフセット値は、コンパイラが同じであれば 同じになる可能性が高い - DOSプログラムとして起動した際に実行されるコードでは、コンパイラ によって実行コードに違いがある
  • 50. Fourteenforty Research Institute, Inc. 50 使用しているコンパイラの検出 BCC32 Delphi Visual C++ GCC
  • 51. Fourteenforty Research Institute, Inc. 51 3. FFR EXCALOCを用いたExploitabilityの数値化
  • 52. Fourteenforty Research Institute, Inc. 52 FFR EXCALOC • 動作環境 • 開発環境 - IDA Pro Version 5.2 のプラグイン - 対象フォーマットはPEファイル - 現時点では、静的解析のみで特徴パラメータの抽出を行う - Windows XP SP2 - Visual Studio 2008
  • 53. Fourteenforty Research Institute, Inc. 53 特徴パラメータの検出 • PEファイル全体に影響するパラメータ • 関数単位で影響するパラメータ - 使用しているコンパイラ - Heap Manager - SafeSEHの有効/無効 - 適用されているセキュリティ機能 - 関数内のローカルバッファの検出 - 関数内のポインタの検出 - 関数内の例外ハンドラの検出
  • 54. Fourteenforty Research Institute, Inc. 54 特徴パラメータの抽出例 (1) Compiler Type Visual C++ Stack Protection /GS Safe SEH あり Heap Manager Windows Heap Manager • ブラウザソフトI アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ 0x00401609 0x88 0x02 なし あり なし 0x00401887 0x14D 0x01 あり あり あり 0x00401DE4 0x2AB 0x01 あり あり なし …
  • 55. Fourteenforty Research Institute, Inc. 55 特徴パラメータの抽出例 (2) Compiler Type Visual C++ Stack Protection なし Safe SEH なし Heap Manager なし • グラフィックソフトH アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ 0x00401000 0xDC 0x01 あり なし あり 0x004010DC 0x08 0x01 なし なし なし 0x004010F0 0x59 0x01 なし なし あり …
  • 56. Fourteenforty Research Institute, Inc. 56 特徴パラメータの抽出例 (3) Compiler Type Borland Delphi Stack Protection なし Safe SEH なし Heap Manager Delphi Heap Manager • サーバソフトT アドレス サイズ 参照数 配列 ポインタ 例外ハンドラ 0x0040114D 0x1CF 0x01 あり なし なし 0x00403AEA 0x105 0x06 あり なし なし 0x00403EEC 0x62 0x03 なし なし なし …
  • 57. Fourteenforty Research Institute, Inc. 57 Exploitability計算 • 基準値(関数単位で計算) • 抽出したパラメータを考慮した値 基準値 = 関数のサイズ × 関数の参照数 基準値 × A × B × C A 配列の有無によるパラメータ。Canaryの有無により重み付けを変化。 (配列なし = 1, 配列ありかつCanaryあり = 1, その他 = 2) B ポインタの有無によるパラメータ。Heap Managerの種類により重み付けを変化 (Windows = 1, Borland C++ = 2, Delphi = 2) C 例外ハンドラの有無によるパラメータ。SafeSEHの有無により変化 (例外なし = 1, 例外ありSafeSEHあり = 1, 例外ありSafeSEHなし = 2)
  • 58. Fourteenforty Research Institute, Inc. 58 Exploitability計算 • 実行ファイルのExploitability計算 Exploitability = パラメータ考慮値の和 / 基準値の和 - 関数単位に計算した値をすべて合計 - それぞれの合計値を割り算 - 数値が大きいほど、Exploitabilityが高い
  • 59. Fourteenforty Research Institute, Inc. 59 Exploitability計算結果 • 先ほどの特徴パラメータを抽出したアプリケーション(+α )の計算結果
  • 60. Fourteenforty Research Institute, Inc. 60 4. 今後の課題
  • 61. Fourteenforty Research Institute, Inc. 61 より正確なExploitabilityを計算するために… • より正確な要素の検出 • 動的解析を併用したExploitabilityの計算 - 配列と構造体の区別 - 関数ポインタの検出 - … - 対象アプリケーションをデバッガで起動させ、実行コードの流れから Exploitability計算に必要な要素を検出する • 関数のパラメータ • ヒープバッファ • …
  • 62. Fourteenforty Research Institute, Inc. 62 ありがとうございました Fourteenforty Research Institute, Inc. 株式会社 フォティーンフォティ技術研究所 http://www.fourteenforty.jp シニアソフトウェアエンジニア 石山智祥 <ishiyama@fourteenforty.jp>