セスペ:攻撃方法[1] 確認問題
・検知されやすいポートスキャンと検知されにくいポートスキャンの違いは?
・検知されにくいポートスキャンへの対策はなにか?
・スタック領域のデータ構造上の特徴を挙げよ
・メモリのスタック領域とヒープ領域の用途について述べよ
・C/C++の言語のどのような特徴がBOF攻撃を成立させているか
・BOF攻撃によって、なぜ管理者権限を奪われてしまうか
・setuid/setgid属性とは何か?なぜ必要か?
・setuid/setgid属性をもつプログラムの危険性は?
・市販ソフトウェアに対するBOF攻撃の有効な対策は?
・ソフトウェア開発者としてとるべきBOF対策は?
・setuid/setgid属性を悪用したBOF攻撃の対策として何が有効か
--------------
答え
-------------
・ログに残るTCPコネクトポートスキャンは検知されやすい
ログが残らないTCPハーフスキャンやUDPポートスキャンは検知されにくい。
・検知されてにくいポートスキャンへの対策は、
- ファイアウォールで不要ポートへのアクセスを遮断する
- IPS,IDSの導入
- 不要なポートを閉じる
・スタック領域はメモリの高位アドレスから使用される。
・スタックには関数からの戻り位置やサブルーチン内の変数が格納される。
ヒープは動的確保された変数のバッファなどが格納される。
・C/C++のstrcpyなどの関数が変数の確保されたサイズを遥かに超えるサイズのメモリをコピーできること。
・管理者権限をもったBOF脆弱性があるプログラム中のサブルーチンの戻り位置を悪意あるプログラムに差し替える事で、管理者権限のまま悪意あるプログラムを実行できるため。
・Unix系において、そのプログラムの所有者の権限で実行できるようにするためのフラグ。管理者権限を必要とする処理を一般ユーザが実行するために必要。
・所有者がrootであるsetuid属性を設定されたファイルにBOF脆弱性がある場合、
攻撃されるとroot権限を乗っ取られる。
・市販ソフトウェアは常に最新のものを使用し、パッチを当てる。
・開発者としては、
- 変数のレングスチェックを必ず行う。
- strcpyなどの危険な関数を使用しない。
- BOF防止機能があるライブラリを使用する。
・setuid属性を悪用されないために、
- setuid属性を持つ不要なサービスは削除する。
- 不要なsetuid属性は削除する。