スライド 1

Similar documents
04-process_thread_2.ppt

スライド 1

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

スライド 1

今週の進捗

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - Android+TPMによるセキュアブート_KDDI研_後日配布用

PowerPoint Presentation

ソフトウェアセキュリティ研究チーム ポスター・デモ紹介


PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Intel Memory Protection Extensions(Intel MPX) x86, x CPU skylake 2015 Intel Software Development Emulator 本資料に登場する Intel は Intel Corp. の登録

PowerPoint プレゼンテーション

10-vm1.ppt

ex05_2012.pptx

Monthly Research / セキュアハードウェアの登場とその分析

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

Microsoft PowerPoint - OS07.pptx

PowerPoint プレゼンテーション

TRAVENTY CG V 動作検証報告書

Microsoft PowerPoint - OS02.ppt

sg_lenovo_os.xlsx

PNopenseminar_2011_開発stack

延命セキュリティ製品 製品名お客様の想定対象 OS McAfee Embedded Control 特定の業務で利用する物理 PC 仮想 PC や Server 2003 Server 2003 ホワイトリスト型 Trend Micro Safe Lock 特定の業務で利用するスタンドアロン PC

メモリ管理

TFTP serverの実装

Microsoft PowerPoint - OS02.pptx

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

スライド 1

平成21年度実績報告

の 2 章である OSDI 2.5 章 2.6 章 2.5 Overview of processes in Minix3 Minix3 におけるプロセスの扱い方や システムとしてのプロセス Layer の分け方など概念を中心にこの章では扱っている 実際の実装については 2.6 章で扱う 2.5.1

01-introduction.ppt

bitvisor_summit.pptx

Microsoft PowerPoint - kougi7.ppt

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

05-scheduling.ppt

制御システムのセキュリティリスク軽減対策~EMET のご紹介~

スライド 1

BitVisor 2017年の主な変更点

untitled

注意 2013 年くらいに調べた話なので 変化していることもあるかもしれません 2

セキュアVMの アーキテクチャ概要

Microsoft PowerPoint - sp ppt [互換モード]

情報セキュリティ研究センター活動紹介

MMUなしプロセッサ用Linuxの共有ライブラリ機構

本論文では,32bit の Linux OS における C 言語で書かれたプログラムかつ GCC (GNU Compiler Collection) でコンパイルされた Linux ELF (Executable and Linkable Format) 形式 [6] のバイナリに焦点を絞る. 1

HP Sure Start Gen3

計算機アーキテクチャ

Microsoft PowerPoint - os ppt [互換モード]

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

2016 年度未踏 IT 人材発掘 育成事業採択案件評価書 1. 担当 PM 竹迫良範 PM( 株式会社リクルートマーケティングパートナーズ専門役員 ) 2. 採択者氏名 クリエータ ( 代表 ): 佐伯学哉 ( 東京大学大学院 ) クリエータ : 西脇友一 ( 東京大学大学院 ) 3. 委託金支払

PowerPoint プレゼンテーション

untitled


POSIXプログラミング Pthreads編

24th Embarcadero Developer Camp

Microsoft PowerPoint - No15›¼‚z‰L›¯.ppt

NetworkVantage 9

プログラムローダを用いた 関数の置換により Stack-based Buffer Overflow攻撃を 緩和する手法の提案と実装

(Microsoft PowerPoint - DSE2019_IOProfiler\203v\203\214\203[\203\223\216\221\227\277-Rev1.1)

2. 留意事項セキュリティ対策を行う場合 次のことに留意してください 不正侵入対策の設定を行う場合 お使いのソフトウェアによっては今までのように正常に動作しなくなる可能性があります 正常に動作しない場合は 必要に応じて例外処理の追加を行ってください ここで行うセキュリティ対策は 通信内容の安全性を高

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

Microsoft Word - AV-LS300シリーズ_Ver1.30_新機能説明_5版.doc

センサーデバイスへの仮想IP割り当て実験

Microsoft PowerPoint - OS03.pptx

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No03\201i\224z\225z\227p\201j.pptx)

スライド 1

Perle社 ターミナルサーバIOLAN STS8と富士通PCサーバ PRIMERGY RX2520 M1 の接続検証結果報告書(Red Hat Enterprise Linux 6.6(for Intel64)版)

KSforWindowsServerのご紹介

ET2011 SPセッション C7 08

単体テスト設計のコツ

MENU 키를 누르면 아래의 화면이 나타납니다

,…I…y…„†[…e…B…fi…O…V…X…e…•‡Ì…J†[…l…‰fi®“ì‡Ì›Â”‰›»pdfauthor

SOC Report

McAfee Application Control ご紹介

OS

プラットフォーム評価報告書 PFA-C04NM17S(W)

SOC Report

Microsoft IISのWebDAV認証回避の脆弱性に関する検証レポート

Microsoft PowerPoint - dev1.ppt

7th CodeGear Developer Camp

OS

SOC Report

— intra-martで運用する場合のセキュリティの考え方    

Microsoft PowerPoint - sp ppt [互換モード]

BitVisor Updates in 2016

PowerPoint プレゼンテーション

ESMPRO/JMSS Ver6.0

Windows GPO のスクリプトと Cisco NAC 相互運用性

クラウド時代のセキュリティ運用課題 従来 主流であったオンサイト作業は 少なくなり インターネット経由 VPN 経由によるリモート運用が中心となってきています オンプレミス プライベートクラウド パブリッククラウド A 社システム部門運用代行業者システム開発ベンダ 作業立会いができない 無断作業 D

proventia_site_protector_sp8_sysreq

PowerPoint Presentation

赤堀蒼磨, 納堂博史, 鈴木秀和, 内藤克浩, 渡邊晃 名城大学理工学部 愛知工業大学情報科学部

CheckPoint Endpoint Security メトロリリース製品について 株式会社メトロ 2018 年 07 月 25 日

CodeRecorderでカバレッジ

VG シリーズ用ローカルファームアップ / 自動ファームウェア更新設定手順書 VG400aⅡ ローカルファームアップ / 自動ファームウェア更新設定手順書

インストールの前に

Transcription:

1 システムコールフックを使用した攻撃検出 株式会社フォティーンフォティー技術研究所 http://www.fourteenforty.jp 取締役技術担当金居良治

2 お題目 System Call について System Call Protection System Call Hook 考察

3 System Call とは? ユーザアプリケーションからカーネルのサービスルーチンを呼び出す Disk I/O Network I/O Etc User App User App Kernel

4 System Call 実装方法 (i386) INT (Linux, FreeBSD, Windows 2000) 割り込み SYSENTER (Linux?, Windows XP) 高速システムコール

INT による System Call の実装概略図 INT = 割り込み 感覚的には関数 ( ホントはもっといろいろやってます ) CPU EAX: EBX: IDTR:???? Interrupt Descriptor Table(IDT) 番号 アドレス 0x00 0x80 syscall INT 0x80 syscall: IRET User Kernel 5

INT による System Call の特徴 IDT というメモリ領域に割り込みハンドラのアドレスがある Windows でも 2000 以前は INT を使用 trap gate(freebsd), interrupt gate(linux) という 2 種類のバリエーションがある 6

7 SYSENTER の動作概略図 System Call 用に特化 高速化してある ( ホントはもっといろいろやってます ) CPU EAX: SYSENTER*MSR:???? SYSENTER*MSR:???? SYSENTER*MSR:???? SYSENTER syscall: SYSEXIT User Kernel

SYSENTER による System Call の特徴 INT のような冗長なチェックが無く メモリアクセスも無いので高速 Pentium II で登場した命令 Windows XP 以降 (Linux も?) はこっち ここら辺の挙動が詳しく知りたい人は Intel のページへ 8

System Call で遊んでみよう! 以外と簡単 System Call Protection というのを考案 FreeBSD でカーネルモジュールとして実装 アーキテクチャは i386 に限定 9

攻撃に System Call が利用される例 例として スタックベースのバッファオーバーフローについて検討 だいたいシェルコード内でシステムコールを使用する これが禁止できれば シェルコードが実行できても被害は最小に OpenBSD の W^X みたいなやつ overwrite Stack Return Address Local Buffer Shell Code... INT 0x80 10

スタック上でのコード実行は禁止できるか 一部の例外を除いてスタック上でコードを実行するようなコードは不要 OpenBSD は出来てる i386 では出来ない OS が多い (Windows とか ) FreeBSD i386 も出来ない 11

System Call Protection 書き込み属性のあるメモリ領域から System Call の呼び出しを禁止 呼び出し元のアドレスはスタック上にあるので これを調べる メモリの属性チェック Shell Code... INT 0x80 User コード領域に書き込み属性が設定されていない事を利用 スタック / ヒープベースのオーバーフローが発生しても 悪用が困難に Int0x80_syscall... Check called addr Kernel 12

13 メモリの属性 ( パーミッション ) FreeBSD では ports の pmap を使用して メモリの属性をチェックできる

14 System Call Hook の方法 CPU EAX: EBX: IDTR:???? Interrupt Descriptor Table(IDT) 番号 アドレス 0x00 0x80 syscall INT 0x80 syscall: IRET User Kernel

15 System Call Hook の方法 IDTR 変更 割り込みハンドラの書き換え CPU EAX: EBX: IDTR:???? Interrupt Descriptor Table(IDT) 番号 アドレス 0x00 0x80 syscall INT 0x80 syscall: IRET User Kernel コード書き換え

割り込みハンドラのアドレスを書き換える カーネルモジュールとしての実装が可能 簡単 (setidt() を呼ぶだけ ) setidt(idt_syscall, &IDTVEC(my_int0x80_syscall), SDT_SYS386TGT, SEL_UPL, GSEL(GCODE_SEL, SEL_KPL)); ユーザ側からすれば カーネルの再ビルドが不要なので 手軽に試すことが出来る コンセプトコードに最適! 16

17 実行した様子 System Call Protection Off System Call Protection On スタック / ヒープ上で System Call が呼べない!

パフォーマンス その 1 10 秒間に何回 getpid() を呼べるか計測 System Call によるオーバーヘッドを計測 7.7% のパフォーマンス低下 System Call Protect 無効 有効 パフォーマンス 24,059,220 22,195,394 92.3% 18

パフォーマンス その 2 ab(apache benchmark) で 1 秒あたりに処理できるリクエスト数を計測 ab -n 10000 c 5 http://target:80/ 3.1% のパフォーマンス低下 System Call Protect 無効有効パフォーマンス 873.7 847.0 96.9% 19

パフォーマンスまとめ 実際のアプリケーションでは 3~7% 程度のパフォーマンス低下が予想される ターゲットを vmware 上で動かしたので 値は不正確かも connect() や exec() 等の危険な System Call が呼ばれた時のみチェックをするようにすれば 比較的 安全なまま高速化が可能 20

考察 OpenBSD W^X を実装すれば済む話 ただし mips 等では実装が不可能 そういった環境では役に立つかも バイパスする方法があるが ASLR 等の他のセキュリティ機能と組み合わせる事で防御できる いろいろ応用が可能 21

ありがとうございました 株式会社フォティーンフォティー技術研究所 http://www.fourteenforty.jp 取締役技術担当金居良治 kanai@fourteenforty.jp 22