現代社会において、暴力や盗難といった様々な犯罪があるのと同じように、ICT の分野においても、情報の盗難やシステムやデータの破損などの犯罪があります。
インターネットの普及によって、世界中のコンピューターが通信可能な状態となり、様々なサービスの恩恵を受けることができるようになっています。その一方で、世界中とつながっているため、個人や企業を問わず、サイバー攻撃によるコンピューターへの侵入や情報の盗難、データの改ざんなどの被害にあう可能性も高まっていることになります。サイバー攻撃による被害を避けるためには、どのようなサイバー攻撃があるのか、また対処策は何なのかを把握しておく必要があります。
今回は、サイバー攻撃の一つである不正アクセスや、ポートスキャンという手法や対処策について紹介します。
不正アクセスとは?
不正アクセスとはネットワークを介して、与えられた権限によって許可された操作以上の行為を意図的に行うことです。
不正アクセスは、他人のパスワードや ID を盗んで不正にログオンしたり、システムのセキュリティ ホールをついて行われます。悪意のある攻撃者による不正アクセスが行われてしまうと、以下のようなサイバー攻撃を受ける可能性があります。
- Web ページの改ざん
- システムで管理していた機密情報の外部流出
- システムやデータの破壊/改ざん
- サーバーやサービスの停止
- 他のシステムを攻撃するための踏み台として利用
- 外部から自由に侵入可能なバックドアの仕掛け
不正アクセスよりサイバー攻撃を受けると、業務停止せざるを得ない状況になったり、会社のブランドイメージを損ねるなど、多方面にわたって大きな被害となる可能性があります。昨今では、会社で管理している多くの端末/システムはインターネットで世界中とつながっているため、世界中のどこからでも攻撃される危険があることに注意が必要です。
不正アクセス禁止法
不正アクセス禁止法とは、2000 年に施行された不正アクセスの行為を処罰するための法律です。不正アクセスの行為だけでなく、故意に不正アクセスを助長する行為についても罰則規則が施行されてます。不正アクセスを助長する行為とは、例えば、第三者に社内ユーザーの ID やパスワードを提供するなどの行為です。
不正アクセス禁止法においては、不正アクセスの行為自体を禁じるとともに、犯罪そのものの防止や不正行為の再発防止を目的とした法律です。インターネットを利用する人が、普段から心がけておきたい対策についてもまとめられています。
不正アクセス禁止法の保護対象
不正アクセス禁止法において、不正アクセスと認められるのは、「ネットワークを介して」サーバーやシステムの内部に侵入して、不正な操作をする行為です。セキュリティ ホールをつく攻撃も処罰の対象となります。
また、不正アクセス禁止法で保護の対象となるのは、「アクセス コントロールされているシステム」のみです。アクセス コントロールされておらず、無防備なまま放置されているような端末は「のぞかれても仕方ない」とみなされ、不正アクセス禁止法の保護対象となりません。
不正アクセス禁止法の保護対象となる「アクセス コントロール」については、方法や仕組みは問われません。何らかのアクセス コントロールの仕組みが、システムに導入されていれば問題ありません。
不正アクセスに必要な手法
基本的に不正アクセスはネットワークを介して行われますが、不正アクセスの事前準備として、まずは攻撃対象のコンピューターや解放されているポートの確認が行われます。攻撃対象の端末の特定のための手法として、「ネットワーク スキャン」「ポートスキャン」などの方法が利用されます。
攻撃対象の端末の特定の手法について詳細をみていきましょう。
ネットワーク スキャン
ネットワーク スキャンとは、考えられるあらゆる IP アドレスに ping を実行するなどの手法で、相手ノードの存在確認を行うことです。
ping とは通信相手とのネットワークの疎通性を確認するためのコマンドで、ICMP プロトコルが利用されます。考えられるあらゆる IP アドレスに ping を実行して、ping の応答 (echo reply) を受けた IP アドレスにはアクティブな端末が存在することになります。
ネットワーク スキャンによる対処策は、各端末にて ping の応答を返さない構成にすることです。Windows OS であれば「Windows Firewall」の機能にて、MacOS であればステルスモードの機能にて対処することができます。また、外部ネットワークからの IP アドレスの特定を避けるためには、ネットワーク機器にて NAT を設定し、各端末のプライベート IP アドレスを隠匿することが有効です。
ポート スキャン
攻撃対象とする端末の IP アドレスが確認できたら、次は対象のコンピューター内部のアプリケーションの動作の確認を行います。内部のアプリケーションの動作の確認する方法の1つとして、ポートスキャンという手法があります。ポートスキャンとは、対象のコンピューターの各ポートへ TCP/UDP データを送信し、その応答から稼働状況の確認を行うことです。
ポートスキャンを行うことで、対象のコンピューターに関して以下のことが確認できます。
- どのポートが解放されているか(通信が可能な状況か)
- ファイアーウォールによってポートがフィルタリングされているか
- 解放されているポートにてリッスンしているサービス/アプリケーションに関する情報
解放されているポート、また稼働しているアプリケーションの種類やバージョンなどの情報がわかれば、既知の脆弱性があれば利用してサイバー攻撃ができます。
ポートスキャンによるデータ送信の応答があった TCP/UDP ポートは、ポート開放されており、外部からの接続要求を受け付けています。また、そのポートの背後ではサービス/アプリケーションが稼働しています。例えば、TCP ポート 0 から順番にデータを転送していった時に、TCP ポート 25 にて応答があった場合、TCP ポート 25 は SMTP の Well-known ポートであるため、対象のコンピューターはメール サーバーであることがわかります。
TCP のポート スキャンには、コネクション確立時に行われる「3 Way Handshake」が利用されます。TCP はコネクション型プロトコル(通信相手の応答があってはじめて通信を開始する)であることから、データ転送を行う前にコネクションの確立を行います。コネクションの確立を行うために、以下の流れの通り、3回のやりとりを行って、双方が通信可能な状態であることの確認した上で通信を開始します。
- 接続元は、接続してよいか確認するために SYN を送信します
- 接続先は、ポートが解放されており接続を受け付けられる状態であれば、応答可能であることを示す SYN/ACK を送信します。
- 接続元は SYN/ACK を受け取ったら、確認応答として ACK を返します。
パケットの送受信を3回行うことから「3 Way Handshake」と呼ばれます。もし、接続元の端末が解放されていないポートに対して① の SYN パケットを送信すると、接続先は応答不可であることを示す SYN/RST を返してコネクションの確立しません。
TCP の 3 Way Handshake を動作から、ポートスキャンでは以下のような確認手法があります。
ポートスキャン名 | 内容 |
TCP スキャン | 3 Way Handshake を行って、TCP コネクションを確立します。TCP コネクションが確立されるためログに証拠が残りやすい手法です。 |
SYN スキャン |
攻撃者は 3 Way Handshake のうち、最初の SYN だけを送信します。そのため、ハーフオープンの状態のコネクションとなるため、ログに証拠は残らない手法です。ログに証拠が残らないため「ステルススキャン」となります。 |
FIN スキャン |
攻撃者は TCP のコネクション終了の要求である FIN を送信します。ポートが開放されていても通信はできませんが、ポートが閉じている場合には FIN に対してサーバーは RST を返すため、ポートの開放状態は確認できます。また、ログに証拠が残らないため「ステルススキャン」となります |
NULL スキャン | 攻撃者は TCP のフラグの全てを NULL にして送信します。ポートが開放されていても通信はできませんが、ポートが閉じている場合には FIN に対してサーバーは RST を返すため、ポートの開放状態は確認できます。また、ログに証拠が残らないため「ステルススキャン」となります |
クリスマスツリースキャン | 攻撃者は URG(緊急確認)もしくは PUSH(データを上位アプリに渡すように指示) のフラグを立てた TCP パケットを送信します。ポートが閉じている場合にはサーバーは RST を返すため、ポートの開放状態は確認できます。また、ログに証拠が残らないため「ステルススキャン」となります |
下図は SYN スキャンによるポートスキャンの動作となります。
UDP ポートに対しても、ポート スキャンする手法はあります。
UDP ポートはコネクションレス型プロトコルとなり、通信開始前に相手と事前のやりとりを行わずに確認します。そのため、UDP のポートスキャンでは各ポートに UDP パケットを送信し、何も応答がなければポートが解放されていると判断できます。一方、ポートが閉じている場合には、UDP パケットを送信すると ICMP の port unreachable パケットが返ってくるためです。
ポート スキャンの対処策
ポート スキャンなどの事前準備により脆弱性が確認されると、不正アクセスによる被害を受ける可能性があります。事前にポートスキャンに対して適切な対処策を行っておくと、ポートスキャンによる被害を受ける影響を受ける可能性が低くなります。
対処策1:不要なポートを閉じる
ポートスキャンによる被害を対策するためには、不必要なポートに関してはファイアーウォールなどの機能を利用して閉じておきます。不要なポートが不用意に開放されている状況であると、脆弱性を利用した攻撃を受ける可能性が高まるためです。そのため、開放するポートは必要なポートのみに絞ります。
また、必要なポートを開放する場合においても、ポートをリッスンしているアプリケーションにより接続元を認証する仕組みを導入しておくと安全です。
対処策2:ファイアーウォールや IDS/IPS などのセキュリティ機器を導入する
外部ネットワークと内部ネットワークの境界に、ファイアーウォールや IDS/IPS などのセキュリティ機器を配置します。
ファイアーウォールは通過する TCP や UDP パケットを監視し、サイバー攻撃の高いアクセスを遮断することができます。ファイアーウォールでは通過を許可した全ての TCP/UDP 通信の状態を管理するテーブルを保持しており、その内容をもって受信したパケットの通過を許可/拒否するか決めています。TCP 通信が開始される際には、必ず TCP SYN からパケットが始まるため、ファイアーウォールではテーブルで管理しているコネクションに存在しない TCP SYN パケット以外を受信してもパケットの通過は拒否されます。そのため、ファイアーウォールがある環境では、FIN スキャン/NULLスキャン/クリスマスツリースキャンのポートスキャン手法は有効ではありません。
また、IPS/IDS ではネットワーク経路を通過するパケットを監視し、攻撃パターンに合致する通信があれば、管理者に通知したり遮断したりすることができます。IPS/IDS にてポートスキャンのパターンを検知したら、通信を遮断する構成にすることも可能です。
一般的に、ファイアーウォールや IDS/IPS はネットワークの境界に配置されますが、Web サーバーなど、外部インターネットからの接続要求を受け付けるサーバーは DMZ(非武装地帯)に配置してください。外部に公開しているサーバーは、不特定多数の端末から接続要求を受けるため、「接続元の認証」はできません。万一、公開中のサーバーに脆弱性があり、脆弱性を利用して攻撃された場合でも、内部ネットワークとは隔離されているために被害を限定的に抑えられます。
不正アクセス対策に必要なこと
ポートスキャンにより攻撃対象の端末を特定され、攻撃者に不正アクセスなどのサイバー攻撃を試みられる可能性があります。不正アクセスの対策として、以下のような対策を実施することをおすすめします。
- 不要なサービスの稼働中の有無の確認
- ソフトウェアの定期更新
- アクセス権を正しく設定
端末を管理するために telnet や FTP などの機能を有効としており、そのポートが開放されている環境である可能性があります。これらの機能は端末の管理には有用ですが、不正アクセスに利用されやすい機能でもあります。もし機能として利用していないのであれば無効にするか、代替として、SSH や SFTP などのセキュリティ強度の高い機能を利用してください。
また、利用している端末のハードウェアや OS、アプリケーション ソフトウェアに関して、開発元メーカーで脆弱性がみつかった場合、その脆弱性に対処する修正プログラムが公開されます。その場合は、まず現行のシステムへの影響や緊急性の検討をした上で、可能な限り迅速に更新プログラムを適用するようにしてください。
会社で管理している貴重な情報資産へのアクセス権は適切に割り当て、厳密に管理してください。実際に発生している個人情報の漏洩事件の多くは、アクセス権の不適切な割り当てが原因となっているケースとなっています。