Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
インフラ編

フリーでできるセキュリティ
はじめに

Twitter:abend@number3to4
Webアプリケーションのセキュリティをメインでやってます。
お酒を飲むことも仕事の一環。
はじめに1
よくあるパターンで
セキュリティの必要性はわかっちゃいるけど、お金かけられないから
見て見ぬふりするしかないよね。

その結果、情報漏えい

そんな残念な人たちを減らす方法はないのか。
はじめに2
方法を考えることにした。
<方針>
・セキュリティ会社にカネを払わず
・有償ツールや有償のサポートを使わず
・がんばらず

<結論>
自分で公開されているフリー(無料)なツールをかけてみる。
はじめに3
以下を決める。
・ 範囲 →
・ 方法 →

どこまでやるのか。
どんな方法でやるのか。

<ポイント>
定期的に実施する。
→ これが何よりも難しい。
はじめに4
どこまで対象としてやるのか。
① 不特定多数の利用者いるシステム等に限定する。
② クライアント端末を除くすべてのシステム等にする。
③ 全部だよ、全部。

←

言うのは簡単だが。。。

①ほんとに一部

③全部

サーバ

②一...
はじめに5
どんな方法でやるのか。

① フリーのツールでチェック

→ 問題点を潰す。

② チェックリスト、ガイドラインを基にレビュー
③ 悟りを開き、リスクを受容する。

←

→ 問題点を潰す。

難しいが、結構重要。

※ ①、②を行...
はじめに6
じゃあ、具体的にどんなものがあるのか。
① フリーのツール(商用利用は個別に確認してください。)
サーバに対して・・・Nessus、OpenVAS、nmapなど
WebアプリやWebサーバに対して・・・Nikto、ZAPなど
② チ...
はじめに7
まずは、フリーのツール使ってやれるところまでやってみよう。

というわけで、Nessusについて

Nessusでは、Webアプリケーションに対する診断機能もあるが
今回は、インフラのみ。次回、Webアプリケーション診断に
関して。
やってみようよ1
Nessusって?
サーバやネットワーク機器に存在する既知の脆弱性の有無をチェック
するためのツール。
http://www.tenable.com/products/nessus

シンプルな作りで、直感的に操作できるいいツ...
やってみようよ2
流れは
① 診断の内容(Policy)を選んで
② 診断対象(IPアドレス)を書いて

③ ぼちっとして
④ ヨダレたらしながら結果を見て
⑤ いい感じに直す
やってみようよ3
① 診断の方法(Policy)を選んで

どれ選んでいいかわからない場合は、「External Network Scan」で。
理由:
TCPもUDPもフルポートでチェックしてくれるので。「Prepare for PCI-DS...
やってみようよ4
② 診断対象(IPアドレス)を書いて

「192.168.1.1」、「192.168.1.0/24」、「192.168.1.1-192.168.1.2」
「192.168.1.1,192.168.1.2」、「192.168.1...
やってみようよ5
③ ぼちっとして

診断が終わるまで待ちます。
やってみようよ6
④ ヨダレをたらしながら結果を見て
やってみようよ7
⑤ いい感じに直す

「Solution」、「Plugin Output」などを参考に修正してください。
一歩踏み込んで
ここからは、細かいことについて。。。
細かいんだけど1
Policyで初期登録されているのが4つ存在します。
External Network Scan
外部ネットワーク向け。Webアプリの機知の脆弱性もチェックする。
Internal Network Scan
内部ネットワーク向...
細かいんだけど2
Port Scanの範囲に差がある。
「Port Scan Range」でポートスキャンの範囲を定義するが、「default」や
「1-65535」と設定されている。「Port Scan Range」で定義されている
定数は以...
細かいんだけど3
では、Policyごとにどのような差があるかというと

External Network Scan
・・・1-65535
Internal Network Scan
・・・default
Web App Tests
・・・1-...
細かいんだけど4
それ以外に、「Reduce Parallel Connections on Congestion」や「Use Kernel
Congestion Detection (Linux Only)」がPCIのみ有効になっていたり。
...
細かいんだけど5
Policyというより、利用するエディションの違いだが、有償版と思われる
ProfessionalFeedと記載されたオプション項目が存在する(マニュアルに
記載されてました)。
・Cisco IOS Compliance C...
細かいんだけど6
「Log Scan Details to Server」にチェックを入れると、「Settings」「Advanced」-「logfile」で定義されているファイルに診断時の
各Pluginの評価結果が出力される。

該当するポ...
細かいんだけど7
Engin5.2.3、Web UI2.0.0 (master #1)で、Policyのひな形が大きく変更
されていた。見た目も。
細かいんだけど8
Policyは、ひな形が一気に増えていた。

・Host Discovery
・Basic Network Scan
・Credential Patch Audit
・Web Application Tests
・Window...
運用面1
これまでの結果を保存しておけば

比較したい結果を選択し、「Options」-「Diff Results」を実行すると
結果の差分がわかるようになります。

前回から増えたリスクが可視化されるので便利。
実際にやった結果1
MetasploitableとWindowsXPSP1のノーパッチに対して4つのPolicyで診断
をしてみた。

Metasploitable(39ポート)

WinXPSP1(11ポート)

18000

300

16...
実際にやった結果2
検出された脆弱性数は?

Metasploitable(39ポート)
250

WinXPSP1(11ポート)
44
43

200

42
150

41

100

40
39

50

38

0

37
Extern...
運用面2
スケジュールを設定することが可能。

Once、Daily、Weekly、Monthly、Yearlyと選べるが、あまりスケジュール
機能は使わない方がいいです。
<理由>
スケジュールしたことを忘れてしまうと、気付かぬうちに診断を開...
運用面3
スケジューリングすると、「Scan Templates」にエントリーされます。

診断結果は、同じ名前で保存される。
権限渡しちゃおうぜ1
Credentialsって
日本語だと資格情報。認証情報にあたります。

<選べる種類>
・Windows
・SSH
・Kerberos
・Cleatext Protocol

Credentialを適切に設定すると、認証...
権限渡しちゃおうぜ2
では、なぜ認証情報を渡すという機能が存在するのでしょうか。
認証情報が必要だが
セットされていない
場合

認証機能
サービス①

Nessus
認証情報を必要
としない場合
サービス②

認証機能のあるサービス(sshや...
権限渡しちゃおうぜ3
同じ環境に対して、認証情報の有無でどれだけ差がでるか確認してみた。

<環境>
Cent6.4で以下サービスが稼働。
・SSH
・HTTP
・IRC

SSH SettingでSSHでログイン可能なユーザ(一般ユーザ)の認...
権限渡しちゃおうぜ2
認証情報なしの状態では
権限渡しちゃおうぜ3
認証情報ありの状態では

認証情報に管理者権限を設定するとさらに1つ多く脆弱性を検出。
つくってみよう1
Nessusのpluginは、NASL(Nessus Attack Scripting Language)という
スクリプト言語で作られています。
C言語ライクで、わかりやすいのです。

日本語訳
http://www.pun...
つくってみよう2
自分でもPluginを作ってみることにした。

Plugin名:HBD for You
つくってみよう3
NASLで作ってpluginフォルダに置くだけでは認識されません。

nessus.confにある「nasl_no_signature_check」を「yes」に変更する必要
があります。5.2.4では、nessus.conf...
つくってみよう4
HTTP(80番)、HTTPS(443番)がオープンになっているか確認して、
オープンなら実行。
つくってみよう5
サーバ管理者にaccess.logを通して、Happy Birth Day(HBD)を言ってくれる
Pluginになっています。

ただ、おめでとうって言いたいけど、

冬

XXX.XXX.XXX.XXX - - [03/N...
つくってみよう6
いやいや、それだけではなく真面目なやつも。
DDI_Directory_Scanner.naslは、Webサーバの公開領域を調査するためのもので
つくってみよう7
NASLは、データベースとの連動ができないため、ディレクトリ一覧は
このplugin内で定義されている配列に文字列がセットされている。

このpluginに、追加することで自分用にカスタマイズが簡単に行える。
どうでもいいんだけど
やはり、2byte文字は苦手なようです。
Policy名に2byte文字をセットすると

何も表示されない。
まとめ
フリーで簡単に診断をするだけならば、多分なんとかなると思うが、
当然、誤検知や検知漏れなどの補足は、ツールは何もしてくれない
ので、自分でなんとかするしかない。

結局、自分でがんばるしかなく、当初の方針であった「がんばらず」
は、未達...
Upcoming SlideShare
Loading in …5
×

フリーでできるセキュリティ インフラ(Nessus)編

9,949 views

Published on

フリーでできるセキュリティ インフラ(Nessus)編

  1. 1. インフラ編 フリーでできるセキュリティ
  2. 2. はじめに Twitter:abend@number3to4 Webアプリケーションのセキュリティをメインでやってます。 お酒を飲むことも仕事の一環。
  3. 3. はじめに1 よくあるパターンで セキュリティの必要性はわかっちゃいるけど、お金かけられないから 見て見ぬふりするしかないよね。 その結果、情報漏えい そんな残念な人たちを減らす方法はないのか。
  4. 4. はじめに2 方法を考えることにした。 <方針> ・セキュリティ会社にカネを払わず ・有償ツールや有償のサポートを使わず ・がんばらず <結論> 自分で公開されているフリー(無料)なツールをかけてみる。
  5. 5. はじめに3 以下を決める。 ・ 範囲 → ・ 方法 → どこまでやるのか。 どんな方法でやるのか。 <ポイント> 定期的に実施する。 → これが何よりも難しい。
  6. 6. はじめに4 どこまで対象としてやるのか。 ① 不特定多数の利用者いるシステム等に限定する。 ② クライアント端末を除くすべてのシステム等にする。 ③ 全部だよ、全部。 ← 言うのは簡単だが。。。 ①ほんとに一部 ③全部 サーバ ②一応サーバ クライアントPC …etc
  7. 7. はじめに5 どんな方法でやるのか。 ① フリーのツールでチェック → 問題点を潰す。 ② チェックリスト、ガイドラインを基にレビュー ③ 悟りを開き、リスクを受容する。 ← → 問題点を潰す。 難しいが、結構重要。 ※ ①、②を行った結果、内容によってリスクを受容し、対応しないと いうのも一つの解決策。ただし、その判断を行うために結果を正しく 認識することが前提。
  8. 8. はじめに6 じゃあ、具体的にどんなものがあるのか。 ① フリーのツール(商用利用は個別に確認してください。) サーバに対して・・・Nessus、OpenVAS、nmapなど WebアプリやWebサーバに対して・・・Nikto、ZAPなど ② チェックリスト、ガイドライン IPAなどを参考にする。 https://www.ipa.go.jp/security/awareness/vendor/programming/index.html https://www.ipa.go.jp/security/vuln/websecurity.html ③ ネ申
  9. 9. はじめに7 まずは、フリーのツール使ってやれるところまでやってみよう。 というわけで、Nessusについて Nessusでは、Webアプリケーションに対する診断機能もあるが 今回は、インフラのみ。次回、Webアプリケーション診断に 関して。
  10. 10. やってみようよ1 Nessusって? サーバやネットワーク機器に存在する既知の脆弱性の有無をチェック するためのツール。 http://www.tenable.com/products/nessus シンプルな作りで、直感的に操作できるいいツール。
  11. 11. やってみようよ2 流れは ① 診断の内容(Policy)を選んで ② 診断対象(IPアドレス)を書いて ③ ぼちっとして ④ ヨダレたらしながら結果を見て ⑤ いい感じに直す
  12. 12. やってみようよ3 ① 診断の方法(Policy)を選んで どれ選んでいいかわからない場合は、「External Network Scan」で。 理由: TCPもUDPもフルポートでチェックしてくれるので。「Prepare for PCI-DSS audits (section 11.2.2)」もいいのだが、バージョンに紐付く脆弱性まで全部 出してしまい、定期的な実施が激しくなるので、まずはExternalでいいのでは。
  13. 13. やってみようよ4 ② 診断対象(IPアドレス)を書いて 「192.168.1.1」、「192.168.1.0/24」、「192.168.1.1-192.168.1.2」 「192.168.1.1,192.168.1.2」、「192.168.1.1;192.168.1.2」、 「192.168.1.1n192.168.1.2」って表現も行けるようです。
  14. 14. やってみようよ5 ③ ぼちっとして 診断が終わるまで待ちます。
  15. 15. やってみようよ6 ④ ヨダレをたらしながら結果を見て
  16. 16. やってみようよ7 ⑤ いい感じに直す 「Solution」、「Plugin Output」などを参考に修正してください。
  17. 17. 一歩踏み込んで ここからは、細かいことについて。。。
  18. 18. 細かいんだけど1 Policyで初期登録されているのが4つ存在します。 External Network Scan 外部ネットワーク向け。Webアプリの機知の脆弱性もチェックする。 Internal Network Scan 内部ネットワーク向け。多数の対象へのスキャン用にカスタマイズされている。 Web App Tests Webアプリ向け。 Prepare for PCI DSS audits PCI DSS要件11.2.2向け。 具体的に何が違うのか。
  19. 19. 細かいんだけど2 Port Scanの範囲に差がある。 「Port Scan Range」でポートスキャンの範囲を定義するが、「default」や 「1-65535」と設定されている。「Port Scan Range」で定義されている 定数は以下。 ・「default」 これは、おおよそ4,790の一般的なポートに対して行う。具体的には nessus-servicesに記載されているポートが対象になる。TCPが4603 ポート、UDPが4401ポート記載されていた。 ・「all」 TCPおよびUDPのすべてのポートが対象。数字のみ指定の「1-65535」 も同様の意味。「 T:1-65535,U:1-65535」も同様。 <ちなみに> Port Scanのデフォルト設定はSYN Scanになっており、診断時間の短縮など を考慮した結果だと思います。
  20. 20. 細かいんだけど3 では、Policyごとにどのような差があるかというと External Network Scan ・・・1-65535 Internal Network Scan ・・・default Web App Tests ・・・1-65535 Prepare for PCI DSS audits・・・1-65535 <ちなみに> 「Consider Unscanned Ports as Closed」でポートスキャンの範囲外は、 クローズと判断する。クローズなポートに対しては、該当するplugin を投げないためのオプションだと思う。
  21. 21. 細かいんだけど4 それ以外に、「Reduce Parallel Connections on Congestion」や「Use Kernel Congestion Detection (Linux Only)」がPCIのみ有効になっていたり。 「Reduce Parallel Connections on Congestion」は、送出するパケット数が多く なりすぎた場合に抑制するオプション。 また、PCIの場合、SSLベースのサービスに対するチェックなどで、ほかの Policyより多く行うように設定されていました。 <ちなみに> 「Max Simultaneous TCP Sessions Per Scan」はすべてのPolicyで「unlimited」 と定義されているが、Nessusを稼働させているOSがWindowsの場合、最大で 19にするようになっているそうです。
  22. 22. 細かいんだけど5 Policyというより、利用するエディションの違いだが、有償版と思われる ProfessionalFeedと記載されたオプション項目が存在する(マニュアルに 記載されてました)。 ・Cisco IOS Compliance Checks ・Database Compliance Checks ・IBM iSeries Compliance Checks ・PCI DSS compliance ・Unix Compliance Checks ・Windows Compliance Checks ・Windows File Contents Compliance Checks 全部コンプライアンス系だった。診断の結果がどんなふうに出力されるのか 非常に興味はあるが、お金はかけられないので、詳細不明。
  23. 23. 細かいんだけど6 「Log Scan Details to Server」にチェックを入れると、「Settings」「Advanced」-「logfile」で定義されているファイルに診断時の 各Pluginの評価結果が出力される。 該当するポートがオープンではない [Tue Nov 5 22:31:36 2013][2254.137236] user root : Not launching smb_group_domain_admin.nasl against XXX.XXX.XXX.XXX none of the required tcp ports are open (this is not an error) KBと推測されるkeyがないため [Tue Nov 5 22:31:36 2013][2254.137236] user root : Not launching vmware_workstation_multiple_vmsa_2012_0011.nasl against XXX.XXX.XXX.XXX because the key SMB/Registry/Enumerated is missing (this is not an error) リスクの有無は関係なく診断が行われたもの。 [Tue Nov 5 22:33:07 2013][2254.137236] user root : launching DDI_tomcat_default _accounts.nasl against XXX.XXX.XXX.XXX [142292]
  24. 24. 細かいんだけど7 Engin5.2.3、Web UI2.0.0 (master #1)で、Policyのひな形が大きく変更 されていた。見た目も。
  25. 25. 細かいんだけど8 Policyは、ひな形が一気に増えていた。 ・Host Discovery ・Basic Network Scan ・Credential Patch Audit ・Web Application Tests ・Windows Malware Scan ・Mobile Device Scan ・Prepare for PCIDSS Audits ・Advanced Policy 詳細は次回で。
  26. 26. 運用面1 これまでの結果を保存しておけば 比較したい結果を選択し、「Options」-「Diff Results」を実行すると 結果の差分がわかるようになります。 前回から増えたリスクが可視化されるので便利。
  27. 27. 実際にやった結果1 MetasploitableとWindowsXPSP1のノーパッチに対して4つのPolicyで診断 をしてみた。 Metasploitable(39ポート) WinXPSP1(11ポート) 18000 300 16000 250 14000 200 12000 10000 150 8000 6000 100 4000 50 2000 0 0 External Internal PCI Web External Internal オープンなポート数が約4倍だと、平均63倍時間がかかっている。 括弧の中はオープンなポート数。 PCI Web
  28. 28. 実際にやった結果2 検出された脆弱性数は? Metasploitable(39ポート) 250 WinXPSP1(11ポート) 44 43 200 42 150 41 100 40 39 50 38 0 37 External Internal PCI Web External Internal PCI Web PCIが一番多く検出しているが、バナー情報取得による指摘が多く検出されて いるように感じた。詳細はまだ分析していない。
  29. 29. 運用面2 スケジュールを設定することが可能。 Once、Daily、Weekly、Monthly、Yearlyと選べるが、あまりスケジュール 機能は使わない方がいいです。 <理由> スケジュールしたことを忘れてしまうと、気付かぬうちに診断を開始され 診断対象がいつのまにか落ちていたなど障害つながる可能性が高まるから。
  30. 30. 運用面3 スケジューリングすると、「Scan Templates」にエントリーされます。 診断結果は、同じ名前で保存される。
  31. 31. 権限渡しちゃおうぜ1 Credentialsって 日本語だと資格情報。認証情報にあたります。 <選べる種類> ・Windows ・SSH ・Kerberos ・Cleatext Protocol Credentialを適切に設定すると、認証後の情報をもとに診断してくれます。
  32. 32. 権限渡しちゃおうぜ2 では、なぜ認証情報を渡すという機能が存在するのでしょうか。 認証情報が必要だが セットされていない 場合 認証機能 サービス① Nessus 認証情報を必要 としない場合 サービス② 認証機能のあるサービス(sshやftpなど)で正当な認証情報をNessusが 送信しないとサービスまで辿りつかないため、認証情報をセットする より多くの項目をチェックできるようになる。
  33. 33. 権限渡しちゃおうぜ3 同じ環境に対して、認証情報の有無でどれだけ差がでるか確認してみた。 <環境> Cent6.4で以下サービスが稼働。 ・SSH ・HTTP ・IRC SSH SettingでSSHでログイン可能なユーザ(一般ユーザ)の認証情報を セットするパターンとセットしないパターンで確認。
  34. 34. 権限渡しちゃおうぜ2 認証情報なしの状態では
  35. 35. 権限渡しちゃおうぜ3 認証情報ありの状態では 認証情報に管理者権限を設定するとさらに1つ多く脆弱性を検出。
  36. 36. つくってみよう1 Nessusのpluginは、NASL(Nessus Attack Scripting Language)という スクリプト言語で作られています。 C言語ライクで、わかりやすいのです。 日本語訳 http://www.puni.net/~mimori/nessus/nasl-ja.html
  37. 37. つくってみよう2 自分でもPluginを作ってみることにした。 Plugin名:HBD for You
  38. 38. つくってみよう3 NASLで作ってpluginフォルダに置くだけでは認識されません。 nessus.confにある「nasl_no_signature_check」を「yes」に変更する必要 があります。5.2.4では、nessus.confは存在しなくすべてWeb上で設定 変更を行う必要があります。 nessusdを止めてから、「nessus-service –R」を実行し、nessusdを立ち 上げると、認識してくれるようになります。
  39. 39. つくってみよう4 HTTP(80番)、HTTPS(443番)がオープンになっているか確認して、 オープンなら実行。
  40. 40. つくってみよう5 サーバ管理者にaccess.logを通して、Happy Birth Day(HBD)を言ってくれる Pluginになっています。 ただ、おめでとうって言いたいけど、 冬 XXX.XXX.XXX.XXX - - [03/Nov/2013:13:24:41 +0900] "GET /?______________________________Happy_Birth_Day!!_Hava_nice_a_birth _day!!______v(-_-)v HTTP/1.1" 200 66 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)" 大量に送りすぎると、威力業務妨害に問われる可能性もあるので要注意!!
  41. 41. つくってみよう6 いやいや、それだけではなく真面目なやつも。 DDI_Directory_Scanner.naslは、Webサーバの公開領域を調査するためのもので
  42. 42. つくってみよう7 NASLは、データベースとの連動ができないため、ディレクトリ一覧は このplugin内で定義されている配列に文字列がセットされている。 このpluginに、追加することで自分用にカスタマイズが簡単に行える。
  43. 43. どうでもいいんだけど やはり、2byte文字は苦手なようです。 Policy名に2byte文字をセットすると 何も表示されない。
  44. 44. まとめ フリーで簡単に診断をするだけならば、多分なんとかなると思うが、 当然、誤検知や検知漏れなどの補足は、ツールは何もしてくれない ので、自分でなんとかするしかない。 結局、自分でがんばるしかなく、当初の方針であった「がんばらず」 は、未達成。 次回は、以下をまとめたいと思います。 ・Webアプリケーションへの診断がどこまでできるのか ・調べきれなかったこと

×