プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • セキュリティ
  • 【セキュリティ】攻撃手法(「DDoS攻撃」、「セッションハイジャック」、「IPスプーフィン…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【セキュリティ】攻撃手法(「DDoS攻撃」、「セッションハイジャック」、「IPスプーフィング」、「インジェクション」など)、「WAF」、「IDS」、「IPS」とは?

09.14

  • miyabisan2
  • コメントを書く

この記事は5分で読めます

DDoS(Distributed Denial of Service)攻撃について

サーバに対して大量の要求(パケット)を送りつけることでサービス停止に陥らせる等の妨害を行う攻撃です。複数のコンピュータが協調して行うことで協調分散型DoSと呼ばれます。

経緯

2009年7月に韓国や中国が攻撃を受けたニュースが流れました。この攻撃ではボットに感染したPCが攻撃に悪用されました。感染したPCハ世界中で13万台に昇りました。

攻撃の種類

  • サーバーやルータの脆弱性をつく攻撃
  • サーバーやネットワークの性能の限界を超えた大量のリクエストを送付する。

サーバーやルータの脆弱性をつく攻撃

DNSサーバーが狙われることも多いです。

サーバーやネットワークの性能の限界を超えた大量のリクエストを送付する。

主に後者の「サーバーやネットワーク性能の限界を超えた大量のリクエスト送付」が行われます。特にHTTPリクエストを大量に送りつける攻撃が最も一般的です。

対処が困難な理由

一つのコンピュータから大量のリクエストが送られた場合はそのコンピュータからのリクエストを遮断すれば良いですが、分散型で大量のコンピュータから送られてくるため対策が難しいのです。(攻撃者の身元の特定が困難)

タイプ

帯域幅消費タイプ

ネットワーク帯を攻撃者のパケットで埋め尽くす攻撃です。ただ、一般家庭の帯域幅と企業の帯域幅では規模が違うため様々な試みが検討されています。

ICMP/UDPフラッド攻撃

帯域幅消費タイプの代表的な攻撃。サーバー側がレスポンスを返す必要のあるリクエストを要求してリクエストとレスポンスで帯域を消費させます。ブロードキャストアドレスに対して送信することでより効果を発揮します。(ただ、IPv6にはブロードキャストはないので今後はこの攻撃は影を潜めることになると思われます。)

システムリソース消費タイプ

プロトコルが使用するCPUやメモリに負荷をかけます。プロトコル攻撃とも呼ばれます。

アプリケーションレベルのDos

アプリケーションの仕様不備や、脆弱性を利用して行うDos攻撃。

SLOW HTTP攻撃

リクエストメソッドが複数行になっていることがあり、その終了時に改行コードを2つ送信する必要がある。攻撃者は改行コードが一つしかないリクエストを大量に送りつける。

攻撃が簡単

Webアクセスするだけなので攻撃が簡単です。なので、その企業に恨みを持つ人たちが賛同すればそれだけで攻撃が発生する可能性が上がります。また、攻撃用ツールを使えば簡単に攻撃を行うことも可能です。

攻撃を行う目的

  • 国家の重要なシステムをサービス不能状態にさせ社会を混乱させるため
  • サービス運営者への恨みによるもの
  • DDoS 攻撃の解消を売り物にするための詐欺や脅迫を目的とするもの

DDoS 攻撃の解消を売り物にするための詐欺や脅迫を目的とするもの

攻撃者はボットを使用してDDos攻撃を行います。

「IPアドレス偽装(IPスプーフィング)」と相性が良い。

クラッキングの際に利用される「IPアドレス偽装」ですが、特にレスポンスが帰ってこなくても問題ないので攻撃者にとっては非常に相性が良いです。なので、積極的に利用されます。

ボットとは?

パソコンに組み込まれる不正なプログラムのことです。世の中の一般的なパソコンがこのボットに利用されてしまいます。ボットに感染したパソコンが作り出すネットワークをボットネットワークとも呼びます。

ボットに感染させる方法

Webサービスの改竄で、配布されたアップデートプログラムにボットが埋め込まれました。

C &C(Command & Control)サーバー

攻撃者はボットの他にネットワーク上にこのツールも用意する。これは各ボットを管理し制御するプログラム。攻撃者はこれを利用して各ボットに指令して一斉に攻撃を行わせる。

ボットの特徴

  • DDos攻撃の踏み台に使われたりします。
  • ボットを解析しても攻撃の全体像は掴めません。
  • 一つのボットからの攻撃の通信も通常の通信と変わらない。

セッションハイジャックとは?

コンピュータ間の通信におけるセッションを第三者が乗っ取る攻撃方法、Webアプリケーションでユーザーのログイン状態を管理するのがセッションであり、クライアントはcookieを用いて情報を保持しています。

攻撃内容

ユーザーのクレジット情報や個人情報を搾取します。

セッションIDが漏洩する原因

推測されるケース

連番や日付等の推測されやすいセッションIDとしてしまう場合

Webアプリの脆弱性

代表的な例としてはXSSがあります。

セッションIDの固定化(セッションフィクセーション)

攻撃者が事前にサイトにログインをしておき、罠を仕掛けて一般人をその攻撃者のセッションIDでログインするよう仕向ける。攻撃者はその後サイトを自由に操作する。

対策

  • フレームワークに用意されているセッション管理機構を使う。
  • ログイン後に新しいセッションを発行するようにする。(セッションフィクセーション対策)
  • WAFを導入する。

IPスプーフィングとは?

なりすましの一種です。別のIPアドレスに偽装します。

仕組み

通信ヘッダの送信元IPを別のIPに書き換えるので相手先のPCには別IPからの送信だと認識されます。ログに残るのは本来のIPとは別IPになる。また、IPアドレスでのフィルタリング制御も難しいです。

攻撃者のデメリット

その要求が何らかの返答を要求するのも立った場合は送信元IPが異なるため受け取れない。なので、クラッカーは情報収集だったりには向かない攻撃になります。

攻撃者のユースケース

DoS攻撃

返答を求めませんし、IPアドレスを偽装することでネットワークトラフィックに負荷をかけることもできるのでDos攻撃では当たり前のように使われます。

対策

  • 通信の認証はIPだけでなくMACアドレスや認証キー、ID/PASS認証と併用する。
  • SSHで通信を暗号化する。
  • ファイアウォールの設定を見直す。(外部アクセスなのに送信元が内部IPである場合は弾く等)

ブルートフォース攻撃(総当たり攻撃)

ID一つ固定して膨大な数のパスワードを試して不正ログインを試みます。

対策

設定できる文字種を多くする。

例えば、数字4桁等の設定できる文字種が非常に少ないサイトでは簡単に突破されてしまいます。

パスワードの試行回数に上限を設ける。(アカウントロック)

一般的に何万回と試行回数を繰り返すことでログインを成功させるので試行回数に上限を設ける対策が効果的です。

リバースブルートフォース攻撃(逆総当たり攻撃)

パスワードを固定してIDを試行する事です。一般的な対策のパスワード試行に上限を設けるアカウントロックによる対策では防げません。

パスワードリスト攻撃

他のサイトから入手したIDやパスワードを用いて別のサイトで不正ログインを試みることです。複数のサイトでID、パスワードを使い回している人が多いという特性を生かした攻撃です。

レインボー攻撃

レインボーテーブルと呼ばれる、ハッシュ値からパスワードを特定するための逆引き表を用いて、パスワードを高速に解読する手法です。「パスワードの長さ」や「文字種ごと」にレインボーテーブルを作成しています。

対策

文字種をたくさん用いたり、ソルトを加える事です。ソルトの長さが公開されていない状態ではいくつもの膨大なサイズのレインボーテーブルを作成する必要があり攻撃者はレインボーテーブルの作成が実質的に困難になります。

類推攻撃

ターゲットの個人情報に関する知識から、攻撃者自身がパスワードを推測し不正ログインを試みる方法

辞書攻撃

辞書や人名等を組み合わせて攻撃する。

対策

  • 英和辞典にある英単語の利用禁止する。
  • パスワード中に会員情報として登録した文字列を含めることの禁止
  • パスワードに記号文字を含めることの必須化

インジェクション

Webアプリに対して悪意のあるスクリプトやパラメータを入力しそれを評価する際の権限で実行させる攻撃です。これはプログラミング言語が、あらかじめシングルコーテーション(')、ダブルコーテーション(")、カンマ(,)で区切る等、データ形式が決まっているのでそこを付いた攻撃となります。

インジェクション系脆弱性の種類

XSS(クロスサイトスクリプティング)

悪意のあるスクリプトを仕掛けて第三者に成り済まします。

SQLインジェクション

SQLの呼び出し時に発生する脆弱性です。

影響
  • DB内のデータを外部に盗まれる。
  • DBの内容を書き換えられる。
  • 認証を回避される。(ID、パスワードを用いずにログインされる。)
  • DBサーバー上のファイルの読み出し、書き込み、プログラム実行等が行われる。
対策

「静的プレースホルダ」を用いて、SQLを呼び出すこと。

HTTPヘッダインジェクション

HTTPヘッダを出力する際に発生する脆弱性です。

OSコマンドインジェクション

シェルコマンドの呼び出し等に発生する脆弱性です。

メールヘッダインジェクション

メールヘッダ、本文を出力する際等に発生する脆弱性です。

WAFとは?

「Web Application Firewall」の略です。従来のファイアウォールでは防げないアプリケーションへの驚異を守ります。ファイアウォールとWebサーバの間に配置します。(ホスト型であれば違うが)

普通のファイアウォールやIDS、IPSとの違い

一般的なファイアウォール

企業等の内部ネットワークへのアクセスを防ぐ。アクセス元IPとアクセス先IPとポートを見てその通信を許可するか決めます。

WAF

WebアプリケーションやWebサーバへのアクセスを防ぎます。通常のファイアウォールでは通信方法だったり通信の中身まではチェックしないためです。

IDS、IPS

WAFのようにシグネチャは使えますが、WAFより精度が低く十分なセキュリティ対策が行えないです。

WAFの仕組み

「シグネチャ」を用いて不正アクセスを防止します。なお、これらの機能を使うためにはHTTPである必要があるので事前に「TLS(SSL)アクセラレータ」等でHTTPSの暗号電文を復号しておく必要があります。

シグネチャとは?

アクセスパターンを示します。このパターンに該当する場合はアクセスを防ぎます。最近は、クラウド型WAFが登場してベンダがクラウド上でシグネチャをアップデートすることで対応が気軽にアップデートされる製品が多くなりました。

ブラックリスト方式

既知の攻撃パターンをシグネチャに定義して一致する場合は防ぎます。未知のアクセスには対応できませんがアクセス過多は防げます。

ホワイトリスト方式

許可すべき通信だけを許可します。未知の攻撃も防ぐことが可能です。個々の企業ごとにシグネチャを用意する必要があるのでセキュリティ人員コストがかかったりします。

IDS(不正侵入検知システム)

ファイアウォールではできない通信の中身を見て異常があれば管理者へ通知します。

ネットワーク型

ネットワークを流れる通信自体を監視します。

ホスト型

通信先のサーバで生成されたログや受信データ等を監視します。

IPS(不正侵入防止システム)

IDSは通知するだけですが、ブロックもします。

スポンサーリンク
  • 2020 09.14
  • miyabisan2
  • コメントを書く
  • セキュリティ
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.28

    【セキュリティ】証明書の基本、サーバー証明書発行までの流れなど

  2. 2018 04.01

    【Webセキュリティ】XSS(クロスサイトスクリプティング)対策の基本(JavaやRails、breakmanなど)

  3. 2018 07.19

    【Auth0】認証プラットフォーム「Auth0」とは?

  4. 2018 07.19

    【セキュリティ】「SSO(シングルサインオン)」、「SAML」とは?

  5. 2021 12.28

    【セキュリティ】「メッセージ認証コード(MAC)」、「電子署名との違い」について

  6. 2021 08.08

    【OAuth】「トークン」、「エンドポイント」、「ロール」

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【経営戦略】会計、財務知識、経営分析指標全般

【セキュリティ】「マルウェア」の種類(ウイルス、ワーム…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー