Tales of Verifier

テストエンジニアが自分の将来に不具合が起こらないことを確かめ合うRPG

2.3 バッファオーバーフロー攻撃〜2.5セッションハイジャック

情報処理教科書 情報セキュリティスペシャリスト 2013年版

情報処理教科書 情報セキュリティスペシャリスト 2013年版

2.3 バッファオーバーフロー攻撃

スタックBOFとヒープBOFがあるが、BOFと言ったらスタックBOFを指すことにする、そう。

バッファーオーバーフロー攻撃は、確保したメモリより大きいサイズのデータを書き込むことで、スタック内のほかの領域を書き換える。
サブルーチンの戻り先を不正なプログラムに書き換えることで、悪さをする。

悪さの例
  • ターゲットとなるサービスをシェルに置き換え
  • rootでsetuid/setgid属性をもつプログラムを実行させ、BOFを起こさせる。→root奪取
原因になるポイント

C/C++のstrcpyが例としてあげられている。
書き込み先に対して、書き込むデータのサイズをチェックしないので、バッファオーバーフローが起こりうるという。
このへんVisualStudioならビルド時に警告してくれるので、strcpy_sでも使うといいと思う。
でもstrcpy_s使えば安全ってわけじゃなく、ちゃんと返り値のチェックをしないとあんまり変わらない。
あっ!島だ! strcpy_s
晴 - Note

プログラム書くときは静的にチェックしましょうよしましょうよってば

バッファオーバーフロー起きるんじゃない?と教えてくれるものはいろいろあるわけで。
VisualStudioにはcppcheckなんて入れるといいんじゃないでしょうか。
地獄の苦しみ、メモリ破壊をCppcheckで華麗に食い止めよう! | Futurismo
Visual Studio + CppcheckでC++コードの静的解析ができる - 大人になったら肺呼吸
詳しくないので、実はもっといいのがあるかもしれない。
たぶん他の言語にも似たようなものがあると思う。

2.4 パスワードクラック

パスワードクラックとは、何通りものパスワードを繰り返し試して
OSやアプリケーションプログラムに設定されたパスワードを破るという
古典的な攻撃手法である。

研究室にいたときはサーバーに辞書攻撃きてる跡がメールで送られてきたりしてた。

パスワードクラックの種類が3つ書いてある。

推測によるパスワードクラック

誕生日とか電話番号とか

辞書ファイルを用いたパスワードクラック

sysとかrootとかtempとか、aliceとかbobとか

総当りによるパスワードクラック

ブルートフォースアタック!*1

2.5 セッションハイジャック

セッションハイジャックとは、
クライアントとサーバの正規のセッションの間に割り込んで、
そのセッションを奪い取る

正規のサーバになりすますパターン、正規のクライアントになりすますパターン、どちらにもなりすましてどちらも騙すパターン。
ネットワークにも少し詳しくなってから要復習。*2

*1:必殺技っぽく

*2:ブログ書いてるとどこに興味あってどこに興味ないかがまるわかりだ