和毅Tweetはじめに今回からは「スキャン・検査ツール」というカテゴリで、大きく分けて下記の2つについて、それぞれ解説していきます。システムの(脆弱性等を)スキャンするツールソフトウェア・アプリケーションの脆弱性をスキャンするツール今回は、1の「システムの脆弱性等をスキャンするツール」について、簡単に紹介します。システムの情報/脆弱性検査ツールシステムの情報や脆弱性を検査するツールにもいろいろあります。昔からあるものとしては、Nmap/ZenmapNessusでしょう。最近OSSで提供されている代表的なシステムの脆弱性検査ツールで注目が集まっているものとしては、OpenVASopenSCAPVulsがあります。今回はまずNmap/ZenmapやNessusの概略を解説し、次回でOpenVAS/openSCAP/vulsの基本的な機能の解説とツールの比較を行います。Nmap/Zenmapの概略Nmapはこの分野(リモートからの情報収集ツールの分野)ではかなり古く、1997年9月に最初のバージョンがリリースされており(2017年9月でちょうど20年目を迎えました)、皆様もよくご存じのツールだと思います。空いているポートをスキャンして起動しているサービスを検索するようなツールでしたが、現在はさらに機能拡張されており、色々な検出を行なえるようになっています。Nmapの開発元はhttp://www.nmap.orgで、2017年時点の最新バージョンは7.60です。LinuxディストリビューションではパッケージでNmapを提供しているため、一般的にはそちらが利用されていると思われます。7.40を使って、テスト用のサーバをスキャンしてみましょう。検索対象のPCには、以下のものを使用します。GuestIP:172.16.148.130ホスト名:cent7enc.localdomainまた、Nmapを動かすPCには以下のものを使用します。7.40IP:172.16.148.1User:jsosugNmapで検索対象PCをスキャンするNmapには非常にたくさんのオプションがあり、用途によって使い分けることができます。使用可能なオプションは”--help”を付けて実行することで表示されます。ここで、いくつかのオプションを紹介します。Nmapでオプションを用いずに検索対象PCを指定すると、検索対象のPC上で起動して接続を待っているポートの情報を確認できます。“-A”オプションを用いると、様々な接続を試しながらスキャン対象のOSを検出できます。この結果を見ると、それぞれのサービスについて1SSHでは使用しているhostキー2Apacheではヘッダー情報3SambaではバージョンとSMBドメイン情報など、非常に細かい情報を取得していることがわかります。[IPアドレス]”の結果(2)TCPフルコネクトスキャンとTCPハーフコネクトスキャン(いわゆるステルススキャン)の違いを確認します。TCPフルコネクトスキャンでは、3Wayハンドシェイクを用いてポートが空いているかどうかを判定します。この場合はコネクションが確立してしまうため、検索対象PC側のログに何らかの証跡が残ってしまう可能性があります。TCPハーフコネクトスキャンでは、3Wayハンドシェイクの最後の送信を行わずに接続可能かどうかのみを調べていくため、検索対象PC側のログに証跡が残りにくくなります(もっとも、検索対象PCのiptablesをうまく設定したり、snortなどのIDSを使用したりすれば、スキャンの証跡を残すことは可能です)。図4:TCPフルコネクトスキャンとTCPハーフコネクトスキャンちなみに、あえてオプションを付けない場合、nmapはデフォルトでTCPハーフコネクトスキャンを使用します。3)に設定してみましょう。levelを加えてsmb/nmbを再起動します。3」を加えるこの状態で”-sT”オプションを用いて検索対象PCをTCPフルコネクトスキャンすると、/var/log/samba/log.smbdに(エラーメッセージではありますが)何らかの接続が試みられたという形跡が残ります。図6:“-sT”オプションを指定してスキャン図7:/var/log/samba/log.smbdに接続の形跡が残る一方、”-sS”オプションを用いて検索対象PCをTCPハーフコネクトスキャンすると、/var/log/samba/log.smbdには何も表示されません。図8:“-sT”オプションを指定してスキャンNmapは単に「どのポート番号が空いているのか」からサービスを推定するだけでなく、実際にサービスのバージョンを確認する事で、ポート番号をずらして動かしているサービスも検知できます。23(telnet)”で動くように変更した場合のスキャン結果を見てみます。前述の”-A”オプションでもApacheを検出できる図11:“-sV”オプションでApacheが検出されるZenmapで検索対象PCをスキャンする続いて、今度はZenmapで検索対象のPCをスキャンしてみましょう。Zenmapはnmapのフロントエンドで動くGUIです。できることはnmapと同じですが、GUIで操作できるのがメリットです。一般ユーザでzenmapを起動すると、特権がないためいくつかのオプションが使えない旨が表示されます。図12:一般ユーザで起動すると制限事項が表示されるGUIでコマンドを指定してスキャンを実行します。実行結果は色分けされて見やすくなっています。図13:Zenmapでスキャンをすると分かりやすく表示されるスキャンプロファイルを選ぶことで、実行するコマンドのオプションを変更できます。プロファイルには代表的なものが登録されているため、わかりやすく選ぶことができます。図14:スキャンプロファイルを選ぶと実行するコマンドが変更されるNessusの概略NessusはOSSではなく商用ソフトですが、脆弱性検査ツールとしては最も有名なものであるため、簡単に解説します。Security社が開発する脆弱性検査ツールです。2005年にNessus3となった際にクローズドソースのライセンスに切り替わり、以降は商用ツールとして開発が続けられています。これに伴い、OSSだったNessusのバージョンを元にした「OpenVAS」がOSSとして開発が続けられています。OpenVASに関しては、次回で解説します。Nessusの入手方法Nessusは商用製品ですが、個人用途の場合には無料で使用できます。Home」のWebサイトから製品を取得することになります。16-IPアドレスまでしかスキャンできない等の制限があります。HomeのWebサイトで登録する必要があります。HomeのWebサイト。Codeが送られてくるので、これを用いてインストールと設定を行います。CodeはNesussの設定中に使用します。Linuxの場合はRPMやdebでインストールした後にnessusdを起動し、Webブラウザからlocalhostの8834番に接続するとNessusを設定できます。Codeの登録なお、Nessusはよく知られているツールであるため、ここではインストール方法や使い方の詳細な説明は省きます。Nessusにはスキャンのテンプレートもたくさん用意されており、PCI-DSSなどの基準に準拠しているかをスキャンするものもあります。標準のネットワークスキャンテンプレートで検索対象PCをスキャンすると、スキャン結果がGUIでわかりやすく表示されます。図19:スキャンテンプレートが充実している図20:スキャンの結果がGUIでわかりやすく表示されるおわりに今回は、システムの情報収集ツールNmap/Zenmapと、脆弱性の検査ツールNessusの2つを紹介しました。脆弱性検査ツールについては、実際にいくつかOSSのものも出てきています。次回は、OSSの脆弱性検査ツールの機能解説と比較を行います。OSS/セキュリティエバンジェリストOSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダや外資系、ユーザ企業などで様々な立場を経験。2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍し、同社でSIOSセキュリティブログ(http://security.sios.com)を連載中。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。