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章に書き方のルールがあるので、それを読んで下さい。
・正直滅茶苦茶な位、統一感が取れていない(寄せ集め感が強い)

OWASP Japan 2nd Local Chapter Meeting

2012-06-27 20:30:21 | セキュリティ(技術者向け)
(はせがわ“Short talk of XSS – 短いXSSの話”)
某サイトのXSSの話(会場では伏せられてないが)
alertを使っていない、なぜ?→入力が21文字に限られていたから
XSSで任意のコード動かすには何文字必要?
まともなモノなら22文字あれば→21文字以下にしてみました。
>

→実際には22文字あれば成立できるかな?
単純なJavaScriptだけなら?
→一番短いのは6文字「$(URL)」(但しJQuery使用時に限る)

-----
(徳丸 KDDI新GWの「かんたんログイン」なりすまし問題を振り返る)
敢えてガラケー、攻撃者視点での話です。
かんたんログインの話はどうせ皆さん知ってると思うので割愛(分からない人はググって下さい)。

書籍に載っているような標準的な実装に対してアタックしてみよう。
(キャリアGWのIPアドレスとAgent情報をチェックして入れる/弾くを決める)

DNS Rebinding攻撃でアタックしてみる→当然成功(same origin policyは破られてしまう)

リクエストヘッダの書き換え
(EZブラウザはJavaScriptは動かないがPCSVは実行可能なので)
発売時点で、2010年に発表された手口(X_UO_SUBUNO)は封じられていた…が、X.UO.SUBUNOは攻撃が成立してしまった
多分実装依存だとは思うが、ヘッダが上書きされていた
PCSVの仕様で同期モードでのみ成立、ブラウザのURL欄に攻撃コード(JavaScript)を挿入する形で実施→能動型の攻撃なので、誰でも実施できてしまう

これは脆弱性?
私見だけど脆弱性とは言えない
リクエストヘッダが化けるのはCGI or PHPの問題(仕様)

対策は?
→基本的にいたちごっこなので、使わない事が一番の対策
→ケータイIDも使うのを止めましょう

-----
(赤嶺/クリス モバイルアプリケーションセキュリティ101)
今度はスマホの話。
昨年のスマートデバイスの出荷は、全世界で10億台。2012年度はその倍になるのではないかとの予測。

セキュリティの課題
・デバイスの盗難、紛失リスクが高い
・容易にroot化、脱獄が可能
・プラットフォーム、デバイス毎に機能が異なる
・パッチ、アップデートが困難
・スクリーンが狭い
・キー入力が面倒 など

OWASPモバイルセキュリティプロジェクトの話

1.機密データの識別と保護→暗号化されていないデータはデバイス上ではなく、サーバに置く。デバイス上に置かざるを得ない場合は暗号化する。
2.パスワードクレデンシャルの安全な管理→パスワードの代わりに、デバイス上に安全に保存できるトークンを用いる、ログに記録されていないか確認する、SNSはセキュアチャネルではなく、機密情報は置かない
(iOSにおけるPINコード、KeyChainのクラックのデモを実施)
3.送信時における機密データの保護→通信は暗号化を必須(強制)、その暗号化方式も安全な(信頼性の高い)方式を用いる
4.適切なユーザ認証、認可・セッション管理の実装(iOSアプリにおけるクライアント認証バイパスのデモ)
5.バックエンドAPI(サービス)とプラットフォーム(サーバ)の継続的堅牢化→当然サーバ側も堅牢である必要がある
6.3rd Partyサービス/アプリとのセキュアなデータ連携→使うライブラリ、APIは安心して利用できるモノかを確認する必要がある
7.ユーザデータの収集と利用に対する承諾の収集、保存の注意→個人情報絡みでもあるが、必要でない情報を集めようとするモノは要注意
8.有料リソースに対する権限のないアクセスを防止する対策の実装(Androidアプリにおける有料リソースに対する権限のないアクセスのデモ)
9.モバイルアプリのセキュアなディストリビューション/プロビジョニング
10.コードのランタイムインタプリテーションのエラー確認

-----
(上野/野渡 「OWASPの歩き方」)
サイトには、Webアプリに関する各種資料(ガイドラインとか、チュートリアルとか)が沢山転がっている

有名なのはOWASP Top 10 for (Year)→Webアプリにおける脆弱性のトップ10

ZAP Proxy→昔Parosと呼んでいたモノ(日本語化されています)
Webアブリ脆弱性スキャナ、Paros時代よりレスポンスが良くなったっぽい?

WebScarab→Proxy型のテストツール(日本語版は無いです)

ESAPI→Enterprise Security API

ASVS→セキュリティ評価のための検査標準、コードレビュー方式の要件(日本語版あります)

AntiSamy→HTML/CSSへの出力を安全に行うためのAPI、ポリシーファイルの変更で要件を変更できます

Development Guid→開発、構築、運用まで含めたガイドライン、特に運用部分まであるのは少し嬉しい限り、最新版は英語版のみです

Code Review Guide→コードレビューのガイドライン、代表的な脆弱性に対するサンプルとか対策のベストプラクティスが掲載されています

Testing Guide→Webサイト、アプリ含めたテストのガイドライン、全349Pの大作です、脆弱性別、機能別のテスト方法が載っています(必要なところからつまみ読みするのを推奨)

SAMM→ソフトウェアセキュリティ保障成熟度モデル

Contracting→セキュア・ソフトウェア開発契約付属書

現状
日本語版がないプロジェクトもいくつか、停滞しているのもいくつか
求むボランティア