ネットワークシステムを監視し、機器の情報を集めることができるSNMP。今回はその「コミュニティ名」をある言葉に置き換えて考えます。
※ご注意
本記事に掲載した行為を自身の管理下にないネットワーク・コンピュータに行った場合は、攻撃行為と判断される場合があり、最悪の場合、法的措置を取られる可能性もあります。また、今回紹介するツールの中には、攻撃行為に利用されるという観点から、アンチウイルスソフトにウイルスとして検出されるものも存在します。このような調査を行う場合は、くれぐれも許可を取ったうえで、自身の管理下にあるネットワークやサーバに対してのみ行ってください。
また、本記事を利用した行為による問題に関しましては、筆者およびアイティメディア株式会社は一切責任を負いかねます。ご了承ください。
第8回「魂、奪われた後――弱いパスワードの罪と罰」、第9回「人の造りしもの――パスワードの破られ方と守り方」では、OSのパスワードを知られること、そして、それが破られる手法について解説した。
今回はある1つのプロトコルの、見落とされがちな点にフォーカスを当てる。そこにはどのような脅威が潜んでいるか、そして、そこから考えられるデフォルト設定の価値を解説していきたいと思う。
今回、フォーカスを当てるのは、SNMP(Simple Network Management Protocol)である。SNMPとは、ルータやコンピュータなどの機器をネットワーク経由で監視や制御を行うためのプロトコルで、エージェントとマネージャという構成で情報のやりとりを行う。SNMPにはバージョンがあり、現在はSNMPv1、SNMPv2C、SNMPv3などがある。
【関連記事】
監視を自動化するSNMP(1)
なぜネットワークを管理しなければならないか?
http://www.atmarkit.co.jp/fnetwork/rensai/snmp01/01.html
監視の構成としては、複数のエージェントに対して、マネージャが集中管理を行うというものが一般的だろう。監視対象にあるSNMPエージェントはMIB(Management Information Base)というデータベースを保持し、マネージャはその情報を基に管理を行う。
MIBからは、監視対象の通信状態(トラフィック量)、稼働プロセス、CPUの負荷状況などさまざまな情報をリモートから取得することができる。SNMPで監視を行うためのフロントエンドも有償、無償を問わず数多く世の中に提供されているため、情報システム部の方、管理者の方はSNMPを利用してシステムの監視などを行っているのではないだろうか。
SNMPは通常、エージェントはUDP/161番ポートでホストの情報を提供するのだが、当然、リクエストを送るだけで誰しもが取得できるというものではない。
ペネトレーションテストの現場でよくお目にかかる、SNMPv1、SNMPv2Cで、エージェントから情報を取得する際には、コミュニティ名と呼ばれる文字列を指定する必要がある。SNMPにおけるコミュニティとは、監視対象をグルーピングするといった概念であり、エージェント、マネージャ間でコミュニティ名を共有することで情報のやりとりを実現している。マネージャは、複数のエージェントと通信するため監視対象ごとにコミュニティ名を設定可能である。
また、エージェントにおいては、コミュニティ名に対して、情報のアクセスに対する、読み込み、書き込み、読み書きといった3つの属性を設定することが可能である。
皆さんは、「情報を取得するために用いる文字列」と聞くと真っ先に思いつく言葉は何だろうか。おそらく、以前の記事でも取り上げた「パスワード」ではないだろうか。しかしSNMPでは、情報取得のために用いられるこの文字列を、「コミュニティ名」と呼んでいる。名前の違いから、意識しづらくなっているのかもしれないと筆者は予想しているのだが、このコミュニティ名がデフォルトや慣習的に使用される文字列となっていることが、ペネトレーションテスト中に発見されることが非常に多い。
世の中にはさまざまな脆弱(ぜいじゃく)性スキャナが存在するが、ほとんどの脆弱性スキャナではコミュニティ名が推測可能な場合を危険度「中」以上のものとして報告する【注1】。SNMPでは、取得できる情報の多さ、その重要性から、このような位置付けとなっていると考えられる。
【関連記事】
セキュリティ対策の“次の一手”
脆弱性スキャナで実現する恒常的なセキュリティ管理
http://www.atmarkit.co.jp/fsecurity/special/108secscan/secscan01.html
Copyright © ITmedia, Inc. All Rights Reserved.