Your SlideShare is downloading. ×
scryptos onsite(plaid CTF)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

scryptos onsite(plaid CTF)

149
views

Published on

scryptosオンサイト勉強会のスライドです

scryptosオンサイト勉強会のスライドです

Published in: Software

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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