Garbage Script on Goo BLOG

某SIerの"元"研究者 兼 情報Security技術者"F.Koryu"の日常の雑記置き場

(matcha445)まっちゃ445勉強会#20

2012-06-30 17:49:50 | セキュリティ(技術者向け)
(Session1:「すべらないMetasploit実演~今日からあなたもMetasploiter!」 NTTセキュアプラットフォーム研究所 川古谷裕平さん)

講師はMetaspliot本の6、11、16章を担当しています。

・Metasploitの紹介(特に本に記されている機能を中心に解説)
本は1~6章が基本編、7~12章が応用編、13章以降が上級編(要:Ruby)という構成になっています。
初心者はまずは1~6章を中心に読んで頂ける事で、Metasploitを一通り使えるようになります。7章以降は、より検査を効率的に行うための技術知識が記されています。
なおMetasploitを改造する場合、Rubyで記述する必要があるため、Rubyによるコーディングを学習して下さいとの事。
付録は特に1(ターゲットマシンの設定)がオススメとの事です。

Metasploitとその周辺ツールの関係(細かい図は書籍第2章に書いているとの事です)
「Metasploit(コアライブラリ、モジュール、I/F、ユーティリティ)」と「Metasploitを利用するツール(kama、Faast-trackなど)」「Metasploitが利用するツール(Nessus、Nmap、各種DBMSなど)」によって構成されています。

ツールは直で繋がる(Nmapなど)ケースと、Pluginやドライバを通じて繋がるケース(Nessus、各種DB)に分けられます。

なおBacktrack起動時には標準でPostgreSQLが起動するようになっています。

ディレクトリ構造
標準では/opt/framework/msf3以下にインストールされている(細かい構造は当メモ上では割愛)。

(用語)Post-Exploit→侵入が成功した後に実行される攻撃(権限昇格など)

もしMetasploitを改造する場合は、これらの構造を理解しておく必要があります(何処に何を入れるか?)。


・Metasploitのデモ
検査は「情報収集」→「Exploit(侵入する)」→「Post-Exploit(権限昇格などの更なる攻撃の実施)」の順で実施されます。

今回は仮想環境(VMware)上に作成した各種仮想サーバ(計4台)に対してアタックをかける形になります。

インテリジェンスギャザリング
NmapやNessusなどの外部ツールを利用して、攻撃対象の状況や弱点などを調査、取得する段階(フットプリンティング)。

Metasploit(msf)上から外部ツール(Nmapなど)を呼び出す→結果をDBに格納する事で、Exploit実施時に検査の一助とする。
Nmapの場合「dbnmap」コマンドで達成できる(オプションはNmapと同じ)。

Nessusの場合、Backtrack5には標準で導入されていないので、自分で導入する必要がある点に注意!!
Nessusによる調査はNessus側のI/F(GUI)を用いる→結果をDBに格納するにはレポートをダウンロード(XML形式)し、ダウンロードしたファイルを「dbimport」コマンドを用います
Nessusの結果をDBに格納すると「vulns」コマンドで脆弱性情報を確認できるようになります。

Exploit→今回はサーバサイド攻撃を行います
手順は「検索(searchコマンド)」→「モジュールの利用(useコマンド)」(→「ヘルプで確認」→「リストで確認」)→「設定(setコマンド)」→「攻撃開始(exploitコマンド)」となります。

オプションのうち、RequiredがYESになっているモノは必須になるので注意!

攻撃が成功すればセッションが確立し、失敗するとエラーが返ります。


Post-Exploit
metapreter→攻撃成功後にペイロードとして利用します
metapreterのコマンドは本の第6章などに記載されているので、そちらも併せて参照の事。

一旦乗っ取ると、(取得した権限次第ですが)アンチウイルスやFWの停止、画面のスナップショット取得、キーロガーの動作など、やりたい放題状況となります。

metasploitの本領発揮は「複数マシンの侵害」にある!(pass-the-Hash攻撃、ピボッティング、トークンの奪取など)(本の第6章に記載されています)


Rubyによるスクリプトを用意する事で、攻撃の自動化も可能。面倒な検査手順もテンプレート化する事で、検査に掛かる負荷を抑える事も可能です。
(この辺りはRubyによるコーディング知識も必要となるため、Rubyのお勉強も併せて実施して下さい。)


-----
(Session2:「できるシェルコード解析~シェルコードを見るだけの簡単なお仕事」 NTTセキュアプラットフォーム研究所 岩村誠さん)

原書に無い付録Cに関するお話となります。

@ITの連載記事(リバースエンジニアリング入門)も併せてどうぞ。

Metasploitには多くのシェルコードが存在している
その多くは機械語
未知のシェルコードに遭遇した時に備える(Metasploitのシェルコードは良い教材です、サイズも小さいし、何より色々なCPU、OSに対するモノが揃っていますので)

題材:Linuxで動くx86シェルコード
覚える事は最低限
・記憶領域は3つ
・機械語命令は10個
・Linuxのシステムコールは3つのみ

記憶領域
レジスタとメモリ……この辺はmasmを知っている人はご存知ですよね(なので割愛)

機械語命令(覚えるのは10個)
データ転送系(4個:MOV,XCHG,PUSH/POP)
演算系(4個:INC/DEC,MUL,XOR)
分岐系(2個:JNS,INT)

Linuxのシステムコール
INT 0x80でシステムコールを呼び出せる(EAXにシステムコールのIDを、EBX,ECX...にシステムコールに対するパラメタをセットして呼び出します)
sys_socketcall(通信ソケット、コネクト等に関するシステムコール)
sys_dup2(デュプリケートに関するシステムコール)
sys_execve(プログラムの起動に関するシステムコール)

実際にMetasploitに収録されているシェルコード(/linx/x86/shell_reverse_tcp)を基に解説
コードを読むのは「気合」でw


-----
(Session3:「Metasploit監訳陣によるパネルディスカッション」)
コーディネーター:殿(本の監訳統括担当です)
パネラー:今回の講師陣(川古谷さん、岩村さん)、辻さん、川島さん、青木さん

2011/7末頃から監訳活動の準備がスタート
当初は監訳者が3名を想定→気が付いたら7名に膨れ上がった

2011年
7月、監訳メンバー集め、原書の確認
11月、役割分担

2012年
1月 監訳開始
3月 監訳完了

(Q1)Metasploitを用いる上で注意する点は?、またMetasploitを使っていて便利な事は?
・アンチウイルスに引っかかるので、導入する環境に要注意(特にお仕事で使う場合、情シスに睨まれないように注意して下さい)
・ダウンロードする時点でも引っかかる場合があります
・お仕事で使う場合は、情シスに事前にネゴ取りしましょう
・アンチウイルスに引っかかって情シスにアラートが飛ぶ導入先のフォルダ名に「管理してます」を入れて対応した(ヲ
・完璧なツールではないので、その辺は信頼し過ぎるのはダメですよ
・自動化ツールは便利ですが、ありったけの攻撃を力いっぱい送り、サーバ側のメモリ不足で本来動くはずのExploitが動かなかったという事もあるので注意して下さい。

(Q2)エロイって本当ですか?w
・(回答者名は秘しますが)エロイですw

(Q3)クライアントタイプ(標的型メール攻撃)の作成例とかも紹介して頂けると有難いです
・モジュールの中にWeb経由での攻撃用モジュールが含まれているので、それを利用すれば良い
・ソーシャルエンジニアリングキットがあるので、それを用いれば良い(標的型メールのメール部分は自分で作成した方が良い)
・添付ファイルはアンチウイルスで引っかかる可能性があるので、リンクの方が良いかと(更に短縮URLを併用するとか)
・最新のExploitコードがMetasploitに収録されている事があるので、防御する側もウォッチしておくと良いです

(Q4)学生です、本を購入する予定ではいますが、現在資金が無いため未購入です。購入した時に楽しめるように参加させて頂きたいです
・研究室で買ってもらえるなら、買ってもらうとか、共同で購入するとか
・欲しい本は自分で書こう(ヲ by 殿

(Q5)1週間で、どのくらいの時間をセキュリティの研究・学習に当てていらっしゃいますか?、また皆様にとって「セキュリティ」とは何ですか?
・全部(プライベートの時間を除く)!!、好きな事なので気にならない
・波がある(殆どやらない時もあるし、延々とやり続ける事もある)
・あまり意識はしていない(生活と切り離して考えていない)
・気が付けば起きている時間は(セキュリティの事を)考えているかも
・最近仕事の内容が変わって、仕事であまりタッチできなくなった & 家族の関係でプライベートでも減ってるけど、空いている時間を当てていたりします
・同じく波があります、セキュリティ以外のテーマでも、攻撃者の視点で考える場合が多いです、トータルで見ると週で2日くらい

・セキュリティが何かって普段あまり意識していないが、パズル的に考えている(攻撃者の視点⇔防衛者の視点で相互に考える)
・特殊な感じ、何かしらに付帯するキーワード(○○のセキュリティ)、幅広い技術、知識が必要になるし、攻撃者の意図・視点といった、人に掛かる部分もある、「終わらないもの」
・個人的には「大嫌い」、考えなくて済むならその方が良い、セキュリティ畑で集まるのは避けた方が良い(幅広い分野での付き合いが必要ではないか?)
・単体では成立しない、総合的な技術・知識が要求される。相手がいて「いたちごっこ」にならざるを得ないため、どれだけ先に進められるものなのか?
・技術的な好奇心を満たすための分野
・単体では成立しない、「舞台」みたいなモノ(役者は様々な技術、要素)

(Q6)MSFconsoleでdbがうまく動きませんでした(backtrack32bit、DBは動いているとの事です、ステータスも取れますが、調査結果をDBに書き込めない)
・パスワードやユーザ名はちゃんと設定しました?
・接続すらできないなら、dbconnectを確認する必要がある
・手動でDBに接続し書き込めるか確認しましょう
・dbドライバが対応するDBMSに対応するように設定されていない

(Q7)本の監訳で一番きつかった事
・監訳期間中に出張が多かったため、色々な人にお願いせざるを得なかった事
・コマンドが想定したとおりに動かなかった事(原書に書いてあったコマンドが無いなんて事もあった)、ソースレベルで確認した結果、脚注でフォローしたケースも多かった
・コマンドが動かない事が多数、Rubyを知らなかったため、Rubyを改めて勉強した事、日本語対応していないケースが多く、それを直した事
・書いた後ですが、細かい誤植が多数出てきた事(今が一番辛いです)
・スケジュールがタイトだった事、Rubyを大急ぎで学習した事(コーディング規約に適しているかという事で気を使いました)
・動かした時の結果マチマチ、Wikiからのコピペがそのまま残っておりしかも動かなかった事、原書のリビジョンが明示されていなかった事

(Q8)「監訳」と「翻訳」の違いって?
・翻訳とは、日本語以外の言葉を日本語に変換する事(翻訳する人は、その内容の専門家でなくても良い)
・監訳とは、翻訳した結果を、その内容の専門家がチェックし修正する事

(Q9)学習・解析等で心が折れそうなポイントって?
・例外を起こして分岐する命令で、事前に例外判定をセットしているようなケース、これは解析が大変(既存のデバッグツールで追うのが難しいから)
・マルウェアの解析時に、難読化されたコードを複合する際に独自の中間コードに落とす & その中間コードでないと動かないインタプリタがセットされたケース

(Q10)Metasploitにはモジュールが沢山ありますが、入れるルールってありますか?
・正式なルールはよく知らないけど、「面白いのがあったら送ってくれ」と書いてあるので、開発者側が判断するのでは?
・(補足)13章に書き方のルールがあるので、それを読んで下さい。
・正直滅茶苦茶な位、統一感が取れていない(寄せ集め感が強い)


最新の画像もっと見る