見出し画像

🔰ハッカーは会社の「開いているドア」を探している🔯ミカと教授のサイバーセキュリテイ🖥️第19回


【ポートスキャン――「ハッカーは侵入前に、なぜ会社のドアを一つずつノックするのか」】

ミカ「教授、これまでハッカーはパスワードを盗んだり、通信を偽装したりしていましたね」
教授「そうだったな」
ミカ「今回はポートスキャン。いよいよ侵入するのですか?」
教授「まだ入らない」
ミカ「第19回なのに、ずいぶん慎重なハッカーですね」
教授「優秀な攻撃者ほど、いきなり窓ガラスを割らない」
ミカ「では何を?」
教授「建物の周囲を歩いて、どのドアが開いているか調べる」
ミカ「下見ですか」
教授「そうだ。ポートスキャンは、攻撃前の偵察として使われる代表的な手法だ」

【そもそもポートとは何か】

ミカ「コンピューターにドアなんてあるのですか?」
教授「ネットワーク通信では、IPアドレスだけでなくポート番号を使って通信先のサービスを区別する」
ミカ「IPアドレスが会社の住所なら?」
教授「ポート番号は、その建物にある受付窓口だと考えるとよい」
ミカ「例えば?」
教授「Web、メール、SSH、データベースなど、それぞれ別のサービスが通信を待ち受けることがある」
ミカ「同じサーバーでも複数の入口がある」
教授「そうだ」
ミカ「ハッカーはその入口を一つずつ確認する」
教授「それがポートスキャンだ」

【身近な例――ホテルのドアを全部ノックする】

ミカ「例え話をお願いします」
教授「100室あるホテルを考えよう」
ミカ「またホテルですね」
教授「攻撃者が一階から順番にドアをノックしていく」
ミカ「101号室、コンコン」
教授「返事なし」
ミカ「102号室、コンコン」
教授「中から『はい』」
ミカ「誰かいる」
教授「103号室は鍵が開いている」
ミカ「怪しい」
教授「こうして、どの部屋が使われているかを調べる」
ミカ「まだ部屋には入っていない」
教授「しかし、侵入する価値のある入口を絞り込める」
ミカ「泥棒の下見ですね」
教授「ポートスキャン単独では侵入ではないが、その後の攻撃準備として重要なのだ」

【ポートには三つの状態があると考えると分かりやすい】

ミカ「スキャンすると何が分かるのですか?」
教授「大まかには、ポートが開いている、閉じている、途中で遮断されているといった状態を推測できる」
ミカ「開いているとは?」
教授「そのポートで何らかのサービスが通信を待っている状態だ」
ミカ「閉じている?」
教授「端末自体には到達できるが、そのポートではサービスが待っていない」
ミカ「遮断?」
教授「ファイアウォールなどによって応答が届かず、状態を判断しにくい場合だ」
ミカ「攻撃者にとって一番興味があるのは?」
教授「もちろん、開いているポートだ」

【開いているポート=脆弱性ではない】

ミカ「ではポートが開いていたら危険なのですね」
教授「そこは誤解しないように」
ミカ「違うのですか?」
教授「WebサーバーならWeb通信のためにポートを開く必要がある」
ミカ「開いていること自体は正常」
教授「そうだ。問題は、その先で動いているサービスが古かったり、不要だったり、設定が弱かったりする場合だ」
ミカ「つまり?」
教授「開いているドアが問題なのではなく、そのドアを開けておく必要があるか、奥に何があるかが問題なのだ」
ミカ「玄関があるだけで欠陥住宅とは言いませんね」
教授「そういうことだ」

【攻撃者は何を知りたいのか】

ミカ「ポート番号だけ分かって、そんなに役立ちますか?」
教授「入口が分かれば、その先でどんなサービスが動いているか推測できる場合がある」
ミカ「Webサーバーかもしれない」
教授「SSHかもしれない」
ミカ「データベースかもしれない」
教授「リモートデスクトップかもしれない」
ミカ「そしてサービスの種類が分かれば?」
教授「そのサービスに既知の脆弱性がないか調べる」
ミカ「攻撃の候補が絞れる」
教授「そうだ。ポートスキャンは攻撃の地図作りの第一歩になる」

【具体的方法① TCP接続を試して入口を確認する】

ミカ「ポートスキャンは、具体的には何をしているのですか?」
教授「最も単純に考えれば、特定のポートへ通信を試み、どんな応答が返るか確認する」
ミカ「ドアをノックして返事を見る」
教授「そうだ」
ミカ「Windowsでも確認できますか?」
教授「自分が管理しているPCやサーバーなら、PowerShellの Test-NetConnection で特定ポートへの接続確認ができる」
ミカ「例えば自分のPCだけなら?」

Test-NetConnection localhost -Port 80

教授「これは自分自身の80番ポートへ接続できるか確認する例だ」
ミカ「一つのドアだけ確認する」
教授「そうだ。学習ではまずこれくらいで十分だ」
ミカ「他人の会社へ大量に試す必要は?」
教授「ない。第三者のシステムを無断でスキャンするのではなく、自分の管理環境で確認するのが基本だ」

【具体的方法② 自分のPCで待ち受けポートを確認する】

ミカ「外からノックするのではなく、自分のPC側から『どのドアが開いているか』確認できますか?」
教授「できる」
ミカ「Windowsなら?」
教授「PowerShellでは例えば次のように確認できる」

Get-NetTCPConnection -State Listen

ミカ「Listenが待ち受け状態?」
教授「そうだ」
ミカ「たくさん出たら危険?」
教授「まず、それぞれ何のサービスなのかを確認する」
ミカ「不要なものがあれば停止する」
教授「それが防御側のポート確認だ」
ミカ「攻撃者より先に自分でドアを点検する」
教授「非常に重要だ」

【具体的方法③ Nmapという代表的な確認ツール】

ミカ「Nmapという名前もよく聞きます」
教授「ネットワーク管理やセキュリティ診断で広く使われるツールだ」
ミカ「ハッカー専用?」
教授「違う。ネットワーク管理者やセキュリティ技術者も使う」
ミカ「包丁みたいなものですね」
教授「料理にも使えるし、悪用もできる」
ミカ「安全な学習なら?」
教授「自分自身のPCや、自分で用意した検証環境だけを対象にする」
ミカ「例えばlocalhostの確認」
教授「そうだ。重要なのはツール名ではなく、許可された対象だけを調査することだ」

【攻撃者はポート番号だけで終わらない】

ミカ「ポートが開いていると分かったら次は?」
教授「そのサービスが何なのかを確認しようとする」
ミカ「例えばWebサーバー」
教授「どんなソフトウェアか」
ミカ「バージョンは?」
教授「設定は?」
ミカ「既知の脆弱性は?」
教授「そうやって情報を積み上げる」
ミカ「侵入前にかなり調査するのですね」
教授「攻撃者から見ると、ポートスキャンは健康診断の問診のようなものだ」
ミカ「ただし患者を治す気はない」
教授「そこが最大の違いだ」

【なぜ不要なポートが危険なのか】

ミカ「使っていないサービスなら、動いていても害はないのでは?」
教授「使っていないからこそ危ない場合がある」
ミカ「なぜ?」
教授「管理者が存在を忘れやすい」
ミカ「更新されない」
教授「古いソフトウェアが残る」
ミカ「パスワードも昔のまま」
教授「誰もログを見ない」
ミカ「攻撃者だけが発見する」
教授「そうだ。不要なサービスは、会社が忘れた入口を攻撃者だけが覚えている状態になり得る」

【具体例――昔使っていたリモート接続】

ミカ「会社でありがちな例は?」
教授「以前、在宅勤務のためにリモート接続サービスを公開した」
ミカ「その後使わなくなった」
教授「担当者も退職した」
ミカ「でもサービスは起動したまま」
教授「ファイアウォールの設定も残っている」
ミカ「攻撃者がポートスキャン」
教授「入口を発見する」
ミカ「そこから古いサービスの脆弱性や弱い認証が狙われる可能性がある」
教授「こういう忘れられた入口が特に危険だ」

【インターネットには常にノックが来ている】

ミカ「でも小さな会社のサーバーなんて、誰も探していないでしょう?」
教授「そう思わないほうがよい」
ミカ「会社名を知らなくても?」
教授「攻撃者や自動化されたシステムは、IPアドレス範囲を広く調査し、応答するサービスを探すことがある」
ミカ「『○○会社を狙おう』ではなく?」
教授「まず開いている入口を探し、その後で価値を判断するという順序もある」
ミカ「小さな会社だから見つからない、ではない」
教授「インターネットへ公開した時点で、世界中から到達可能になることを前提にしたほうがよい」

【ポートスキャン自体は攻撃なのか】

ミカ「ポートスキャンされたら、もう侵入されたということですか?」
教授「違う」
ミカ「単なる調査?」
教授「スキャンだけでは通常、情報を取得するための偵察段階と考える」
ミカ「では無視してよい?」
教授「それも違う」
ミカ「なぜ?」
教授「大量のポートを短時間で調べている端末があれば、その後の攻撃準備かもしれない」
ミカ「つまり侵入ではないけれど、侵入前の足音かもしれない」
教授「非常に良い表現だ」

【発見方法① ファイアウォールのログを見る】

ミカ「ではポートスキャンをどう発見しますか?」
教授「基本はネットワークログだ」
ミカ「例えば?」
教授「同じ送信元IPから、短時間に多数の異なるポートへ接続が試みられていないかを見る」
ミカ「80、443、22、3389……と次々に?」
教授「そういうパターンは調査材料になる」
ミカ「普通の利用者はそんなに多くのポートへアクセスしない」
教授「通常業務と比較することが大切だ」

【発見方法② IDS・IPSを使う】

ミカ「自動で見つけられますか?」
教授「IDSやIPSが役立つ」
ミカ「IDSは侵入検知システム」
教授「IPSは侵入防止システムだ」
ミカ「何を見ているのです?」
教授「通信パターンを分析し、短時間で多数のポートへ接続するような不審な動きを検知する」
ミカ「IPSなら?」
教授「設定によっては、不審通信を遮断する」
ミカ「警備員ですね」
教授「IDSは『怪しい人がいます』と知らせ、IPSは場合によって『入れません』と止めるイメージだ」

【発見方法③ サーバーログを見る】

ミカ「Webサーバーだけ見ればよいですか?」
教授「ポートスキャンはWeb以外も調べるので、ファイアウォール、OS、VPN装置、ルーターなど複数のログを見る必要がある」
ミカ「一か所だけでは分からない」
教授「そうだ」
ミカ「SIEMへまとめる?」
教授「規模の大きい組織なら有効だ。複数機器のログを一か所へ集めれば、攻撃の流れを確認しやすくなる」

【発見方法④ 正常状態を先に知っておく】

ミカ「どうしても攻撃されてから調べる話になりますね」
教授「だから平時の情報が重要だ」
ミカ「正常なポート一覧?」
教授「そうだ。会社がインターネットへ公開しているサービスを把握する」
ミカ「80と443だけのはずなのに、突然別のポートが開いた」
教授「その変化を検知できる」
ミカ「つまり攻撃者のスキャンを監視するだけでなく、自社自身を定期的にスキャンする」
教授「もちろん許可された環境でな」
ミカ「攻撃者より先に自社のドアを確認する」
教授「防御側の基本だ」

【防御策① 不要なポートを閉じる】

ミカ「一番簡単な防御は?」
教授「使っていない入口を閉じる」
ミカ「当たり前ですね」
教授「しかし、これが意外とできていない」
ミカ「昔使っていたサービス」
教授「試験用サーバー」
ミカ「退職した担当者しか知らない管理画面」
教授「開発用データベース」
ミカ「全部インターネットから見えていたら?」
教授「攻撃者に無料の見学ツアーを提供しているようなものだ」

【防御策② ファイアウォールで接続元を限定する】

ミカ「必要なポートは閉じられません」
教授「では、誰からでも接続できる必要があるか考える」
ミカ「Webサイトは世界中から必要」
教授「しかし管理用SSHは?」
ミカ「管理会社のIPだけでよいかもしれない」
教授「そうだ。VPN経由だけにする方法もある」
ミカ「データベースは?」
教授「Webサーバーからだけ接続できればよい場合が多い」
ミカ「必要な人に、必要な入口だけ」
教授「ネットワーク版の最小権限だ」

【防御策③ 管理ポートをインターネットへ直接出さない】

ミカ「SSHやRDPはどう扱えば?」
教授「必要性を十分検討し、可能ならインターネットへ直接公開しない」
ミカ「VPNやゼロトラスト型のアクセス基盤を経由させる」
教授「MFAも利用する」
ミカ「IP制限だけでは?」
教授「補助にはなるが、認証も組み合わせる」
ミカ「入口を隠すだけではだめ」
教授「そのとおりだ」

【防御策④ サービスを最新に保つ】

ミカ「開いているポートの先にあるソフトも重要ですね」
教授「非常に重要だ」
ミカ「Webサーバー」
教授「SSH」
ミカ「VPN」
教授「メールサーバー」
ミカ「全部更新する」
教授「攻撃者はポートが開いていることを確認すると、そのサービスに既知の脆弱性がないか調べる」
ミカ「最新版なら完全安全?」
教授「完全ではないが、既知の脆弱性を放置するよりはるかに良い」

【防御策⑤ バナー情報を出しすぎない】

ミカ「サービス名やバージョンまで相手に分かることがありますか?」
教授「設定によっては応答情報から推測される場合がある」
ミカ「『私は○○サーバーの古いバージョンです』と自分から名乗る?」
教授「攻撃者に親切すぎる」
ミカ「隠せば安全?」
教授「それだけで安全にはならない。しかし、不要な情報を外部へ出さないという考え方は重要だ」
ミカ「セキュリティは秘密主義?」
教授「必要のない自己紹介をしないだけだ」

【防御策⑥ ネットワークを分離する】

ミカ「もし一つのサーバーへ侵入されたら?」
教授「そこから全社ネットワークへ自由に行けないようにする」
ミカ「VLANやファイアウォールで分離」
教授「DMZを設ける考え方もある」
ミカ「公開Webサーバーと社内の給与データを同じLANへ置かない」
教授「そのとおりだ」
ミカ「一つのドアから入られても、次の部屋にはまた鍵」
教授「多層防御だ」

【防御策⑦ 外から自社がどう見えるか確認する】

ミカ「会社自身がポートスキャンする意味は?」
教授「社内から見るだけでは分からないことがある」
ミカ「外部から本当に何が公開されているか」
教授「そうだ。設定した本人は『閉じたはず』と思っていても、別のファイアウォール設定やクラウド設定で公開されている場合がある」
ミカ「定期的な脆弱性診断も?」
教授「有効だ」
ミカ「攻撃者より先に発見する」
教授「セキュリティ対策の基本思想だ」

【防御策⑧ クラウドのセキュリティグループも確認する】

ミカ「AWSやAzureならポートは関係ない?」
教授「大いに関係ある」
ミカ「クラウドでも?」
教授「仮想マシンの通信を制御するセキュリティグループやファイアウォール設定がある」
ミカ「『全世界からアクセス許可』になっていたら?」
教授「管理用サービスでは特に危険だ」
ミカ「クラウドは建物が見えないだけで、入口は存在する」
教授「非常に良い理解だ」

【安全な範囲で自分のPCを確認する】

ミカ「私のWindows PCでも確認してみたいです」
教授「まず待ち受け状態を確認する」

Get-NetTCPConnection -State Listen

ミカ「LocalPortがポート番号ですね」
教授「そうだ」
ミカ「PIDも見えます」
教授「どのプロセスが使っているか調べられる」
ミカ「知らないポートを見つけたら即削除?」
教授「だめだ。OSや正規ソフトが必要としている可能性がある」
ミカ「まず調べる」
教授「そうだ。知らない=マルウェアではない」
ミカ「セキュリティでは早とちりも危険ですね」

【会社で確認したい「公開ポート台帳」】

ミカ「企業なら一覧を作ったほうがよいですか?」
教授「私は勧める」
ミカ「どんな項目です?」
教授「例えば次のようなものだ」

・サーバー名
・IPアドレス
・公開ポート
・用途
・利用サービス
・管理担当者
・外部公開が必要な理由
・許可する接続元
・最終確認日

ミカ「資産台帳のポート版ですね」
教授「そうだ」
ミカ「一覧に載っていないポートが開いたら?」
教授「調査する」
ミカ「誰も管理していないサーバーも見つかりそうです」
教授「それを野良サーバーと呼びたくなるな」

【経営者が確認したい7項目】

ミカ「経営者なら何を聞けばよいですか?」
教授「次の七つでよい」

  1. インターネットへ公開しているサーバーを把握しているか

  2. 外部公開しているポートを一覧化しているか

  3. 不要なサービスやポートを閉じているか

  4. SSHやRDPなど管理用サービスを直接公開していないか

  5. VPN・MFA・接続元制限などを利用しているか

  6. ファイアウォールやIDS・IPSでスキャンを監視できるか

  7. 定期的に外部から自社の公開状態を確認しているか

ミカ「『うちはファイアウォールがあります』だけでは足りませんね」
教授「ファイアウォールがあっても、全部許可する設定なら立派な置物だ」

【ポート番号を変えれば安全なのか】

ミカ「教授、よく使われるポート番号を別の番号に変更すれば見つからないのでは?」
教授「多少のノイズを減らす効果はあり得るが、それを主要な防御にしてはいけない」
ミカ「スキャンすれば別番号も見つかる?」
教授「そうだ」
ミカ「つまり『玄関という看板を外したから誰も入れない』ではない」
教授「鍵を掛けるほうが先だ」
ミカ「セキュリティ・バイ・オブスキュリティですね」
教授「隠すことは補助にはなっても、認証やアクセス制御の代わりにはならない」

【ポートスキャンが教える本当のこと】

ミカ「今回、一番覚えておくべきことは?」
教授「攻撃者は、いきなり高度な攻撃をするとは限らない」
ミカ「まず調査する」
教授「どんなIPがあるか」
ミカ「どんなポートが開いているか」
教授「どんなサービスが動いているか」
ミカ「どのサービスが古いか」
教授「そして一番弱そうな入口を選ぶ」
ミカ「つまり防御側も同じことを先にやる」
教授「そうだ。攻撃者が最初に調べることを、防御側が先に調べて直しておく」
ミカ「攻撃者との早押しクイズですね」
教授「ただし負けたときの景品はいらない」

【ミカと教授の一言で締める】

ミカ「教授、ポートスキャンを一言で説明してください」
教授「サーバーやPCの通信ポートへ順番に接続を試み、どのサービスが外部から利用可能か調べる偵察行為だ」
ミカ「ポートが開いていたら?」
教授「即脆弱性ではない」
ミカ「見るべきなのは?」
教授「そのサービスが必要か、最新か、誰から接続できるかだ」
ミカ「発見するには?」
教授「ファイアウォールやIDS・IPSのログで、短時間に多数のポートへアクセスする挙動を見る」
ミカ「防ぐには?」
教授「不要なポートを閉じ、必要な入口は接続元と認証を限定し、サービスを更新する」
ミカ「教授の研究室には何番ポートがありますか?」
教授「一つだけだ」
ミカ「何番?」
教授「レポート提出ポート」
ミカ「閉じています」
教授「それはセキュリティ事故ではなく学業事故だ」

【次回予告】

【第20回 ネットワークスキャン――「攻撃者は会社の内部地図をどう作るのか」】

ミカ「ポートスキャンと何が違うのですか?」
教授「ポートスキャンは主に一台の機器にある入口を見る」
ミカ「ネットワークスキャンは?」
教授「どんな機器が存在し、どこにサーバーがあり、どんなネットワークになっているかを広く調べる」
ミカ「ドアの調査から町全体の地図作りへ」
教授「そのとおりだ」
ミカ「攻撃者は地図まで作るのですね」
教授「次回は、侵入前の偵察がどこまで組織的に行われるのか、そして防御側がどう発見するのかを見ていこう」

いいなと思ったら応援しよう!