どうやって攻撃するの? - ソフトウェア・システムへの攻撃手法
ソフトウェア・システムへの攻撃手法と対策
前回の記事「なぜ攻撃するのか? -サイバー攻撃の動機と攻撃者」では、攻撃者がどのような目的でサイバー攻撃を行うのか、その多様な動機と背後にいる攻撃者たちについて解説しました。
本記事では、ソフトウェアやシステムへの攻撃手法とその対策について整理します。
マルウェア攻撃
マルウェアとは、悪意のあるソフトウェアの総称であり、攻撃ツールです。攻撃者はマルウェアをシステムに侵入させることで、情報窃取、システム破壊、遠隔操作など様々な不正行為を行います。
主な感染経路
- 電子メール : 添付ファイル・本文中のリンク
- Webサイト : 不正なWebサイトからのダウンロード
- アプリケーション : 不正なフリーソフトのインストール
- メディア : USBメモリなどの外部記憶媒体
- ネットワーク共有やリモート接続 : 脆弱な共有設定やRDP
マルウェア全般に共通する対策
- 最新のウイルス対策ソフトを導入・更新する。
- 定期的にウイルススキャンを実施する。
- OSやアプリケーションを最新状態に保つ。
- 添付ファイルや不審なリンクを不用意に開かない。
- 定期的にバックアップを取得する。
コンピュータウイルス
ウイルスには、自己伝染、潜伏、発病の機能があります。他のプログラムに寄生し、自己増殖して感染を広げます。
-
ポリモーフィック型ウイルス
検知を回避するために自身のコードを多態に変化させるウイルス。 -
マクロウイルス
Microsoft Officeなどのマクロ機能を利用して感染・動作するウイルス。 -
偽セキュリティ対策ソフト型ウイルス
セキュリティソフトを装い、偽の警告でユーザーを騙し、不要なソフトウェアを購入させようとするウイルス。 -
遠隔操作型ウイルス
感染したPCを外部から遠隔操作可能にするウイルス。
対策の重点
- 基本対策を徹底する。
ワーム
単独で存在し、ネットワークを通じて自己増殖しながら感染を広げます。
対策の重点
- ファイアウォール設定の強化 : 不審な通信を遮断する。
トロイの木馬
無害なプログラムやファイルに見せかけて侵入し、内部で悪意のある活動を行います。自己増殖能力はありません。
トロイの木馬には、次の種類があります。
- ダウンローダ : 他のマルウェアをダウンロードする役割を持つ。
- ドロッパ : マルウェアをインストールする役割を持つ。
- バックドア : 外部からの侵入口を作成する役割を持つ。
対策の重点
- 出所の不明なソフトウェアやファイルの実行は避ける。
ランサムウェア
感染したPCやサーバー内のデータを暗号化し、復旧と引き換えに身代金を要求します。代表的なものに「WannaCry」があります。
対策の重点
- 基本対策を徹底する。
スパイウェア
ユーザーに気づかれないようにPCの操作履歴や閲覧履歴、位置情報、入力情報などを密かに収集し、外部へ送信するマルウェアです。個人情報の窃取や監視を目的とします。
対策の重点
- 出所の不明なソフトウェアやファイルの実行は避ける。
- ファイアウォール設定の強化 : 盗んだ情報を外部に送信する通信をブロックする。
アドウェア
利用者の意図に反して、広告を強制的に表示したり、閲覧履歴や嗜好情報を収集するソフトウェアです。すべてが悪質とは限りませんが、中には情報収集や詐欺広告を目的とするマルウェアも存在します。
対策の重点
- 出所の不明なソフトウェアやファイルの実行は避ける。
- フリーソフトのインストール時に表示される利用規約や追加オプションのチェックを外す。
キーロガー
キーボードで入力された文字列を記録し、IDやパスワード、クレジットカード番号などの重要情報を窃取します。多くの場合、利用者に気づかれないようにバックグラウンドで動作します。
対策の重点
- キーボード入力時の注意 : 重要な情報を入力する際は、ソフトウェアキーボードを利用する。
- ファイアウォール設定の強化 : 盗んだ情報を外部に送信する通信をブロックする。
ルートキット
システムに不正侵入した後、自身の存在を隠蔽し、攻撃者が管理者権限(root)でシステムを操作できるようにするツール群です。ファイルやプロセス、ネットワーク通信などを隠す機能があり、マルウェアやバックドアの隠蔽にも使用されます。
対策の重点
- 基本対策を徹底する。
クリプトジャッキング
ユーザーに無断でPCやスマートフォンのリソース(CPU/GPU)を利用して仮想通貨のマイニングを行うマルウェアです。悪意あるWebサイトのスクリプトや他のマルウェアと組み合わされて感染することが多く、動作が重くなるなどの被害があります。
対策の重点
- Webブラウザの設定強化 : JavaScriptの無効化し、不正なスクリプトの実行を防ぐ。
- PCの動作に注意 : 異常に重い、ファンが高速で回っているなどの異変に気づいたら、不正なプロセスが実行されていないか確認する。
Mirai
IoTデバイスの初期パスワードや既知の脆弱性を突いて感染し、大量のデバイスをボットネット化するマルウェアです。主にDDoS攻撃の踏み台として使われ、2016年には大規模なサービス停止を引き起こした実例があります。
感染経路
- 初期パスワードの悪用 : 工場出荷時のまま変更されていない、安易なパスワード(admin/admin, root/rootなど)を総当たり攻撃で突破
- 既知の脆弱性: 修正されていないIoTデバイスのファームウェアの脆弱性
対策の重点
- 初期パスワードを変更する。
- ファームウェアを最新状態に保つ。
- 不要な通信ポートを閉じる。
脆弱性を狙う攻撃手法
脆弱性攻撃とは、OSやアプリケーション、ミドルウェアなどに存在するセキュリティ上の脆弱性を悪用して、システムに不正に侵入し、不正な操作を行う攻撃手法です。
脆弱性の主な発見方法は次のとおりです。
- ファジング : プログラムに大量のランダムなデータや予期せぬデータを自動的に入力し、システムのクラッシュや異常な動作を誘発する。この異常な動作が、脆弱性の兆候となる。
- 静的解析 : 公開されているプログラムのソースコードや、不正に入手したコードを自動で解析し、脆弱性の可能性がある記述を特定する。これにより、潜在的な脆弱性につながる可能性のあるコードのパターンを特定する。
- リバースエンジニアリング : プログラムのバイナリコードを逆アセンブルして解析し、元のソースコードを推定する。この過程で、開発者が意図しない脆弱性や隠された機能を発見することがある。
ゼロデイ攻撃
脆弱性が公になる前、もしくは修正される前(発見から“0日目”)に行われる攻撃です。
攻撃の流れ
- 攻撃者が、ゼロデイ脆弱性(OSの未知の欠陥)を発見する。
- この脆弱性を悪用するエクスプロイトコードを作成する。
- エクスプロイトコードを使って、標的のPCにマルウェアを送り込む。
対策の重点
- 多層防御 : ウイルス対策ソフト、ファイアウォール、侵入検知システムを組み合わせ、万が一、一つの対策が破られても、次の段階で被害を防ぐ。
- システムの監視 : 不審な通信やファイルの作成・改変がないか、監視することで、攻撃の早期発見を行う。
- アプリケーションの権限制限 : 不正な操作ができる範囲を最小限に抑えるため、アプリケーションに与える権限を必要最低限に留める。
バッファオーバーフロー
プログラムが確保したメモリ領域を超えるデータを書き込むことで、プログラムを異常終了させたり、攻撃者が任意のコードを実行してシステム権限を奪取することを狙う攻撃です。
攻撃の流れ
- 攻撃者が、ユーザーからの入力データを正しく検証しないプログラム(バッファの確保が不十分なプログラム)を発見する。
- バッファの容量を超えるサイズの悪意のあるデータをプログラムに送信する。このデータには、攻撃者が実行させたい不正なコードが含まれる。
- 送信されたデータがバッファからあふれ出し、プログラムの実行を制御する重要なメモリ領域(戻り先アドレスなど)を上書きする。
- プログラムが処理を終えると、上書きされたメモリ領域に指定された「攻撃者の不正なコード」へと制御が移り、意図しない動作が実行される。
対策の重点
- プログラム開発の段階からセキュリティを考慮する。
- 入力データの長さを常にチェックし、バッファのサイズを超えるデータが書き込まれないようにする。C言語の strcpy のような危険な関数を避け、strncpy など安全な関数を使用する。
- コンパイラのセキュリティ機能(スタックガードなど)を利用し、メモリの上書きを検知し、不正コードの実行を防ぐ。
- OSが提供するセキュリティ機能(アドレス空間配置のランダム化: ASLRなど)を有効にする。これにより、攻撃者が不正コードの位置を予測できないようにする。
エクスプロイトキット
複数のエクスプロイトコードをまとめて、様々な脆弱性攻撃を容易にするツールキットです。主にWebサイトに仕掛けられ、アクセスした端末の脆弱性を自動で検出・攻撃する機能を持つこともあります。
※ エクスプロイトコードとは、特定の脆弱性を悪用するために作成されたプログラムコードです。
攻撃の流れ
- 攻撃者が、マルバタイジングや改ざんした正規サイトなどを利用して、ユーザーをエクスプロイトキットを設置した悪意あるWebサイトへ誘導する。
※マルバタイジング : 不審な広告。 - ユーザーがサイトにアクセスすると、エクスプロイトキットはユーザーのWebブラウザやインストールされているソフトウェア(Javaなど)を自動的にスキャンし、既知の脆弱性を検出する。
- 検出した脆弱性を自動で悪用し、ユーザーに気づかれないようにマルウェアをダウンロード・実行させる。
対策の重点
- Webブラウザのセキュリティ設定を強化する。
- 不要なプラグインやアドオンを無効化・削除する。
不正アクセスの手法
システムやネットワークに正規の権限を持たない者が不正に侵入する行為全般を指します。認証の仕組みや権限管理の不備を狙います。
パスワードクラッキング
パスワードを推測・突破してアカウントに不正ログインする行為です。不正アクセスの代表的な手法のひとつであり、次のいずれかの手法を選びます。
辞書攻撃
辞書にある単語やよく使われるパスワードのリストを試す攻撃です。
ブルートフォース攻撃
考えられる全ての文字の組み合わせのパスワードを総当たりで試す攻撃です。辞書攻撃よりも試行回数が多く時間がかかります。
リバースブルートフォース攻撃
ブルートフォース攻撃の特定のパスワードを試す行為に対し、ユーザー名を総当たりで試す攻撃です。
パスワードリスト攻撃
別のサイトから漏洩したIDとパスワードの組み合わせを使い、パスワードを試す攻撃です。パスワードを使い回すユーザーを狙います。
対策の重点
- 12文字以上の英大文字・小文字、数字、記号を組み合わせた推測されにくいパスワードを使用する。
- サービスごとに異なるパスワードを使用する。
- 多要素認証を導入する。
- ログインの監視と通知を行う。
- パスワードをハッシュ化してデータベースに保存する。
レインボーリスト攻撃
「レインボーテーブル」を使って、ハッシュ化されたパスワードの元の文字列を高速で割り出す攻撃です。
レインボーテーブル
ハッシュ化されたパスワードを元に戻すために、攻撃者が事前に作成した巨大な「対応表」のことです。この表を利用すると、盗んだハッシュ値を計算することなく、テーブルを検索するだけで元のパスワードを即座に特定できるようになります。
レインボーテーブルの作成手順
- よく使われるパスワードや単語の組み合わせを大量にリストアップする。
- これらのパスワード候補をハッシュ化し、元のパスワードとハッシュ値の組み合わせを巨大な表として保存する。
攻撃の流れ
- 攻撃者が、ウェブサイトなどからユーザーのパスワードのハッシュ値を盗み出す。
- 盗み出したハッシュ値を、事前に用意しておいたレインボーテーブルで検索する。
- ハッシュ値が表に見つかれば、対応する元のパスワード(平文)が即座に特定される。
対策の重点
- パスワードをハッシュ化する際に、パスワードにソルト(ランダムな文字列)を付加し、同じパスワードでもユーザーごとに異なるハッシュ値を生成する。これにより、共通のレインボーテーブルが使えなくなる。
- ハッシュ化の計算に時間がかかる、より強力なハッシュ関数(Bcrypt、scryptなど)を使用し、レインボーテーブルの作成自体を困難にする。
- 現実の時間では解読困難な複雑で長いパスワードを設定する。
Pass the Hash攻撃
パスワードそのものではなく、認証に使われるハッシュ値を盗んで不正ログインを試みる攻撃です。パスワードを知らなくても、ハッシュ値だけで認証を突破できるシステムが攻撃対象となります。
攻撃の流れ
- 攻撃者が、何らかの方法で標的のコンピューターに不正にアクセスし、システム内に保存されているユーザーのパスワードのハッシュ値(NTLMハッシュなど)を盗む。
- 盗んだハッシュ値を認証プロトコルに直接渡し、パスワードを知らないままシステムへの認証を試みる。
- 認証システムがハッシュ値のみで認証を許可する場合、攻撃者はパスワードの入力を求められることなく、正当なユーザーとしてログインを成功させる。
対策の重点
- システムのセキュリティを強化し、パスワードハッシュの漏洩を防ぐ。
- ハッシュ値そのものではなく、パスワード自体を要求する認証プロトコル(Kerberosなど)を利用する。
- 多要素認証を導入し、別の要素がなければログインできないようにする。
権限昇格
低い権限でシステムに侵入した後、システムの脆弱性などを利用して、管理者権限などより高い権限を獲得する手法です。
攻撃の流れ
- 攻撃者が、何らかの方法で、ユーザー権限などの低い権限でシステムに侵入する。
- 侵入したシステム内で、OSやアプリケーションに存在する脆弱性を探す。
- 見つけた脆弱性を悪用するエクスプロイトコードを実行し、自身の権限を昇格させようと試みる。
- 管理者権限などを獲得し、システムの完全な制御権を奪取する。これにより、システムの破壊や情報の窃取、バックドアの設置などを自由に行えるようになる。
対策の重点
- 不必要なサービスやポートを閉じ、攻撃者が利用できる足がかりを減らす。
- ユーザーやアプリケーションには、業務上必要最小限の権限のみを付与する。
- EDRを導入し、不正な挙動を監視する。
※ EDR(Endpoint Detection and Response) : 万が一ウイルス対策ソフトをすり抜けて脅威が侵入した後に、その不審な挙動を検知し、対応するソフトウェア。
終わりに
本記事では、ソフトウェアやシステムを標的としたさまざまな攻撃手法と、その対策について解説しました。次回は、「どうやって攻撃するの? -Webアプリケーションへの攻撃手法」について整理します。
Discussion