SlideShare ist ein Scribd-Unternehmen logo
1 von 13
ASLR+PIEのbypass方法
自己紹介
● るくす(@RKX1209)
● 神戸大学 情報知能工学科 B3 20歳
● kernelが好き(pwnもkernel exploitがやりたくて
始めました)
● 最近はCTFも少し
ASLRとは
● Adress Space Layout Randomizationの略
● アドレス空間をランダム化する技術
● 攻撃者が事前にアドレスを予測する事が困難に
なりexploitの成功率が格段に下がる
● 最近のCTFでは殆どASLR環境が多い(ような気
がする)
PIEとは
● Position Independent Executableの略
● EIPを動的に取得するようなバイナリを生成(こ
れにより位置独立となる)
● libcアドレスに加え、 .text .got .pltなどのセク
ションもランダム化される
ASLR+PIE
● ASLR環境下でPIEバイナリを実行させるとほぼ全て
のセクションアドレスがランダム化される
● ASLR onlyならばbypass手法はいろいろある
が、GOTやPLTアドレスを利用しているケースが多い
● →よってGOTやPLTアドレスが予測不可能になると殆
ど使い物にならない
● 非常に厄介
● しかしその厄介さ故に攻撃手法が限られてくる
ASLR+PIE bypass手法
● ulimit -s unlimited
● Brute force
● Partial overwrite
● Information leak
● Information leak(+ ret2vuln)
ulimit -s unlimited
● ulimit -s unlimitedを実行しスタックサイズを無
限に指定する事でASLRが無効になる
● root権限は必要ない
● カーネルの実装に依存
● ターゲットのサーバーにログインできる事が前
提
Brute force
● ランダム化されたアドレスを総当りで求める力技
● 32bitアドレスなら2^32通り全て試すことも可
● 実際は全て試す必要はない(意外とエントロピーが低い)
● 例えば0xb7X??000(X=5 or 6)などかなり絞られているケー
スがある(カーネルの実装依存)
● [欠点] 64bitアドレスには使えない,サーバーに負荷をかける
ため大会では禁止されているケースが多いなど
Partial overwrite
● アドレスの一部(下位バイト)のみを書き換える手法
● リトルエンディアンの場合0x12345678はスタック上で
0x78563412と格納されている
● よってBofなどにより例えば0x78の下位2バイトのみを書
き換える事で、近いアドレスにジャンプさせる事ができ
る。
● [欠点]飛ばせる先が限られている(他の手法と組み合わせ
て使う場合が多い),リトルエンディアンでしか使えない
Information leak
● FSBやBuffer-over-Readを利用してアドレスなどの必要な情
報を得る手法
● libcやplt(got)といったアドレスの情報が動的に得られるた
め、これを利用してret2libcやROPにつなげられる
● SSPなどの情報も得られるためかなりのセキュリティ機構を
bypassできる
● さいつよ
● [欠点]情報を何度も読める必要がある。Buffer-over-Readが成
功してもその後コネクションが切られれば意味がない。1回
キリの実行バイナリには弱い
Information leakの欠点回避
● 一度キリで処理が終了してしまう場合return-to-vuln
を利用するとうまく行く事がある
● return-to-vulnという名前はinaz2さんによる物(もも
テク参照)
● 脆弱性のある関数に繰り返しreturnする事で何度も
攻撃を行うというもの
● これにより何度もinformation leakを繰り返し、必要
な情報を取得した後適切な攻撃を行う事ができる
Information leakの欠点回避(手順)
● まず脆弱性のある関数FにおいてInformation
leakを行い必要な情報を取得する
● Partial overwriteによりreturnアドレスを関数F
の先頭に上書きし、再度Fを実行する
● 上記同様Information leakを行う。これを必要な
情報が得られるまで繰り返す
● 最後にlibcなどに飛び攻撃を行う
まとめ
● Information leak+Partial overwrite+return-to-
vuln+(行いたい攻撃)が非常に強い
● Information leakが使えない場合はかなり無理
ゲー化してくる

Weitere ähnliche Inhalte

Was ist angesagt?

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
 

Was ist angesagt? (20)

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Akkaで分散システム入門
Akkaで分散システム入門Akkaで分散システム入門
Akkaで分散システム入門
 
ARPスプーフィングによる中間者攻撃
ARPスプーフィングによる中間者攻撃ARPスプーフィングによる中間者攻撃
ARPスプーフィングによる中間者攻撃
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
C# 8.0 null許容参照型
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
Wireshark入門(4)
Wireshark入門(4)Wireshark入門(4)
Wireshark入門(4)
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 

Andere mochten auch

[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
CODE BLUE
 
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
CODE BLUE
 
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
CODE BLUE
 

Andere mochten auch (9)

2016.7.6 さくらの夕べ@沖縄 さくらインターネットの「閉域網サービス」の裏側
2016.7.6 さくらの夕べ@沖縄 さくらインターネットの「閉域網サービス」の裏側2016.7.6 さくらの夕べ@沖縄 さくらインターネットの「閉域網サービス」の裏側
2016.7.6 さくらの夕べ@沖縄 さくらインターネットの「閉域網サービス」の裏側
 
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
 
さくらのIoT Platform αの裏側すべて見せます(第32回さくらの夕べ in 沖縄)
さくらのIoT Platform αの裏側すべて見せます(第32回さくらの夕べ in 沖縄)さくらのIoT Platform αの裏側すべて見せます(第32回さくらの夕べ in 沖縄)
さくらのIoT Platform αの裏側すべて見せます(第32回さくらの夕べ in 沖縄)
 
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
 
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
[CB16] CGCで使用した完全自動脆弱性検知ツールを使ったセキュリティの分析とその効果 by InHyuk Seo & Jason Park
 
第21回八子クラウド座談会資料(討議メモ付き) 20161022
第21回八子クラウド座談会資料(討議メモ付き) 20161022第21回八子クラウド座談会資料(討議メモ付き) 20161022
第21回八子クラウド座談会資料(討議メモ付き) 20161022
 
ドコモオープンイノベーションの取り組みと提供APIのIoT展開について
ドコモオープンイノベーションの取り組みと提供APIのIoT展開についてドコモオープンイノベーションの取り組みと提供APIのIoT展開について
ドコモオープンイノベーションの取り組みと提供APIのIoT展開について
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
CTFの話 - coinsLT #10
CTFの話 - coinsLT #10CTFの話 - coinsLT #10
CTFの話 - coinsLT #10
 

scryptos onsite(plaid CTF)