10. 脅威と脆弱性の評価
10.1. 一般的なセキュリティ脆弱性と脅威
10.1.1. マルウェア
ウィルス
コンピュータウイルスは、実行されると他のコンピュータプログラムを変更し、独自のコードを挿入することによって自分自身を複製するコンピュータプログラムの一種のこと。
コンピュータウイルスには通常、ホスト プログラムが必要です。ウイルスは独自のコードをホスト プログラムに書き込みます。プログラムを実行すると、先に書かれたウイルスプログラムが実行され、感染や被害を引き起こす。
マルウェア
マルウェアは悪意のあるソフトウェアのことで、コンピュータに損害を与えるように意図的に設計されたソフトウェアを指す。
マルウェアは、個人情報の漏洩、情報やシステムへの不正アクセスの原因となり、ユーザーの情報へのアクセスを奪ったり、ユーザーのコンピュータのセキュリティやプライバシーを知らず知らずのうちに妨害したりする。
10.1.2. その他のマルウェア
ワーム
コンピュータワームは、複数のデバイス上で活動を続けながら複数のデバイスに拡散するように設計された、潜行性のタイプのマルウェアのこと。
ワームの定義としては、ワームをユーザーの介入なしで実行および増殖できる自己完結型のマルウェアといえる。
ルートキット
ルートキットはコンピュータまたは他のソフトウェアへの不正アクセスを許可するように設計された悪意のあるソフトウェアバンドルのこと。 ルートキットは検出が難しく、感染したシステム内でその存在を隠すことができる。
ルートキットが定着すると、システムはゾンビ コンピュータであるかのように動作し、ハッカーはリモートアクセスを使用してデバイスを完全に制御できるようになる。
トロイの木馬
トロイの木馬は正当で安全であるように見えるファイル、プログラム、またはコードの一部に偽装された悪意のあるソフトウェアのこと。
通常、トロイの木馬はパッケージ化されて正規のソフトウェア内に配信され、多くの場合、被害者を監視したりデータを盗んだりするように設計されている。
キーロガ
キーロガはコンピュータ上で行われるすべてのキーストロークを記録する悪意のあるソフトウェアのこと。 キーロガーはスパイウェアの一種で、被害者を監視するように設計されたマルウェア。キーロガーは入力されたものをすべてキャプチャできるため、最も侵入的な形式のマルウェアの 1 つといえる。
キーロガーには主にソフトウェアとハードウェアの2つのタイプがある。
10.1.3. その他の脅威や攻撃
ソーシャルエンジニアリング
ソーシャルエンジニアリングは、心理学的手法を使用して行動を操作すること。ソーシャルエンジニアリングは、人的ミスを悪用し、被害者に自分の利益に反する行動を促すことによって行われる。
情報セキュリティにおけるソーシャル エンジニアリングの定義は、ログインの詳細や財務情報などの個人データをオンラインで漏洩させることを指す。
ソーシャルエンジニアリングの攻撃の1つにはフィッシングがある。
フィッシング
フィッシングはソーシャルエンジニアリング攻撃の一種で、通信が信頼できる送信元からのものであるかのように偽装されたメッセージから引き起こされる、個人情報や財務情報の漏洩を狙ったもの。
フィッシング攻撃は以下の3つの要素から構成される。
- 攻撃は電子メールや電話などの電子通信を介して行われる
- 攻撃者は、信頼できる個人または組織を装う
- 攻撃者の目的は、ログイン資格情報やクレジット カード番号などの機密の個人情報を取得すること
ブルートフォースアタック
ブルートフォース攻撃とは、ハッカーがコンピュータを利用した集中的な試行錯誤を通じてパスワードを解読しようとすること。
ブルートフォースアタックではできるだけ多くのパスワードの組み合わせを試し、いずれかが機能することを狙う。
ブルートフォースアタックの種類には以下の種類がある。
- 単純攻撃
- 辞書攻撃
- ハイブリッド攻撃
- リバース攻撃
- クレデンシャルスタッフィング
レインボー攻撃
レインボー攻撃は特別なテーブル (「レインボー テーブル」) を使用してデータベース内のパスワード ハッシュを解読するパスワード クラッキング手法のこと。
レインボー テーブル自体は、認証プロセス中に使用される各プレーン テキスト文字のパスワード ハッシュ値を含む事前計算されたテーブルを指す。 ハッカーがパスワード ハッシュのリストにアクセスすると、レインボーテーブルを使用してすべてのパスワードを非常に迅速に解読する。
バッファオーバフロー攻撃
バッファオーバフローはデータ量がメモリ バッファの記憶容量を超えると発生し、原理としてはバッファにデータを書き込もうとするプログラムは、隣接するメモリ位置を上書きしてしまうことに起因する。
バッファオーバフロー攻撃ではアプリケーションのメモリを上書きすることプログラムの実行パスが変更され、ファイルが破損したり個人情報が漏洩したりする反応を狙う。
攻撃者がプログラムのメモリ レイアウトを知っている場合、バッファに保存できない入力を意図的にフィードし、実行可能コードを保持する領域を上書きして、独自のコードに置き換えることができる。
なお、CやC++はメモリ内のデータの上書きやアクセスに対する保護機能が組み込まれていないため、バッファオーバフロー攻撃の影響を最も受けやすい言語といえる。
クロスサイトスクリプティング(XSS)
XSSはハッカーが正規の Web サイトに悪意のあるコードを挿入したときに発生する攻撃のこと。
XSS攻撃は、コードインジェクション攻撃の1種である。
クロスサイトリクエストフォージェリ(CSRF)
CSRFはエンド ユーザーが現在認証されている Web アプリケーション上で望ましくないアクションの実行を強制する攻撃のこと。
IPスプーフィング攻撃は
IPスプーフィングは偽の送信元アドレスを使用し、ハッカーはネットワーク上で信頼できるデバイスのように見せかけ、デバイスが自由に提供する機密情報を要求する可能性がある攻撃。
なお、IP アドレス スプーフィング攻撃は検出が難しい。 また中間者攻撃の種類にはDDos攻撃やMITM攻撃がある。
DDoS攻撃
DDoS攻撃(分散型サービス拒否)はインターネット トラフィックを大量に送信して Web サイトやサーバーをクラッシュさせることを目的とした攻撃のこと。
DDoSでは複数のコンピュータを使用してサーバーに TCP および UDP パケットを大量に送信する。
MITM攻撃
MITM攻撃(中間者攻撃)は 2 つのデバイス間の通信を傍受し、IP パケットを静かに変更し 2 台のコンピュータ間の通信を傍受する攻撃のこと。
権限昇格
権限の昇格とは、ユーザーが資格のない権限を受け取ることを指す。 これらの権限は、ファイルの削除、個人情報の表示、ウイルスなどの不要なプログラムのインストールに使用される可能性がある。
権限昇格は以下の2種類の形式で行われる。
- 垂直権限昇格 ... 権限昇格とも呼ばれ、権限の低いユーザーまたはアプリケーションが、権限の高いユーザーまたはアプリケーション用に予約されている機能またはコンテンツにアクセスする
- 水平的権限昇格 ... 通常のユーザーが他の通常のユーザー向けに予約されている機能またはコンテンツにアクセスするもの
SQLインジェクション
SQLインジェクションは、ハッカーが独自のコードを Web サイトに挿入してセキュリティ対策を破り、保護されたデータにアクセスする秘密のタイプの攻撃。
10.2. ペネトレーションテスト
10.2.1. 侵入テスト
侵入テスト(ペネトレーションテスト)はコンピュータ システムのセキュリティを評価するためにコンピュータ システムに対して実行される、許可された模擬攻撃のこと。
ペネトレーションテストでは、攻撃者と同じツール、テクニック、プロセスを使用して、システムの弱点がビジネスに与える影響を見つけて実証する。
侵入テストの種類
侵入テストには以下の3つの種類がある。
- ブラックボックスペネトレーションテスト
- テスターに会社名のみなど、最小限の情報が提供されるテスト
- グレーボックスペネトレーションテスト
- ターゲットとなる特定のホストやネットワークなど、もう少し詳しい情報がテスターに提供されるテスト
- ホワイトボックスペネトレーションテスト
- あらゆる種類の内部文書や構成計画などの情報が提供されているテスト
侵入テストのプロセス
侵入テストは通常以下のプロセスで実施される。
- 偵察
- スキャニング
- アクセス権の取得
- アクセス維持の確保
- 痕跡の消去
定番の侵入テストツール
侵入テストツールには以下のようなものがある。
- Nmap ... 開いているポートとサービスをスキャンできる
- Metasploit ... 脆弱性悪用ツール
- WireShark ... ネットワークからパケット データをキャプチャし、読み取り可能な形式にデコードできるネットワーク分析ツール
- BurpSuite ... Web アプリケーション セキュリティ テスト ツール