なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu5.04だと簡単にhackできた

 ASLRやnon-executable 等のプロテクションがうるさいので、Ubuntu5.04で脆弱性攻撃の実験をすることにした。攻撃方法はバッファオーバーフローによりスタックをあふれさせ、リターンアドレスをNOPスレッドに乗るようにし、そこからシェルコードを実行してしまうようにする、ポピュラーではあるがなかなか現在のOSに対しては使えない攻撃方法。
 この方法、以前Ubuntu8.04とMacOSXに対して実験し見事に失敗したことがある。
 しかし。Ubuntu5.04は違った。この攻撃方法でいとも簡単にシェルが起動した!

 このことを踏まえ、Ubuntu8.04でもプロテクションをオフにすればこの攻撃方法が通じるのではないかと思い、root権限で echo 0 > /proc/sys/kernel/randomize_va_space を行いASLRを無効化した。
(0だと無効、1は有効)
 本当にASLRが無効になったかは cat /proc/self/maps を何回か実行しライブラリやスタックが毎回同じアドレスであるかどうか調べて確認すればいい。

 これでASLRをOFFにした。しかしスタックのランダム化をOFFにしただけではUbuntu8.04で例の攻撃を成功させることはできない。さらに新しいgccがデフォルトで行う-fstack-protection も無効にしなければならない。これを無効にするのは簡単で、古いgcc たとえばgcc-3.4等で脆弱性をわざと持たせたターゲットのコードをコンパイルすればいい。
 以上で準備が完了した。実際にこれで攻撃を行ってみるとUbuntu8.04でも簡単なhackを行えることが分かる。
 
 今回の実験で気になったのはubuntu8.04のnon-executableプロテクションについてで、gccのバージョンを下げてコンパイルするだけでスタックのshellcodeが実行できたので、Ubuntu8.04に関するデフォルトで稼働しているプロテクションはASLRとgccの-fstack-protectionくらいなのか?
 
今回実験に使ったnopスレッドによるシェルコードを実行するコードはshellcodeについて触れている文献にはたいてい載っているものなのでここでは記載しない。あと、実験で無効化したASLRはセキュリティのためきちんと有効化することを忘れずに!!
スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/19-2e506509

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。