--- title: '攻撃手法' disqus: Yuma --- サイバーセキュリティまとめ === [TOC] # 攻撃手法 ## Web ### HTTPレスポンス分割 改行コードを追加することでHTTPレスポンスを複数作り出すHTTPヘッダインジェクション。 ### HTTPヘッダインジェクション 入力データをもとにHTTPのレスポンスを生成するサービスにおいて、入力フィールドに不正なデータを入力することで、HTTPレスポンスにヘッダフィールドやメッセージボディを追加したり、複数のレスポンスに分割したりする攻撃。 ### ディレクトリトラバーサル ディレクトリトラバーサルとは、アクセスして欲しくないファイルやディレクトリの位置を、相対パス指定などでプログラムに表示させて、不正なアクセスをする攻撃手法です。 ### クリックジャッキング クリックジャッキングとは、ユーザーが利用するWebブラウザを悪用して、ユーザーに不利益をもたらすサイバー攻撃の一種で、具体的な特徴としては、ボタンやリンクなどを透明で見えない状態にして、通常のWebページの上にかぶせてしまうというもの。 ### バージョンロールバック攻撃 バージョンロールバック攻撃とは、あるプロトコルで通信するソフトウェアへの攻撃手法の一つで、脆弱性が発見されている古いバージョンを使用するよう誘導し、その脆弱性を利用して攻撃を行うもの。ダウングレード攻撃の一種。 ### SQLインジェクション SQLインジェクションとは、データベースと連動したWebアプリケーションなどに対する攻撃手法の一つで、検索文字列など外部から指定するパラメータの一部にSQL文の断片などを混入させ不正な操作を行うもの。また、そのような攻撃を可能にする脆弱性。 “injection” は「注入」の意。 ### OSコマンドインジェクション OSコマンドインジェクションとは、コンピュータシステムに対する外部からの攻撃手法の一つで、システムへの入力文字列中にオペレーティングシステム(OS)のコマンド(命令文)として解釈できる断片を紛れ込ませ、不正に実行させるもの。 ### XSS(クロスサイトスクリプティング) クロスサイトスクリプティングとは、利用者が入力した内容を表示するような構成のWebサイトに存在する欠陥を悪用して、攻撃者が用意した悪意のあるスクリプトを利用者の元に送り込んで実行させる攻撃手法。 ### CSRF(クロスサイト・リクエスト・フォージェリ) ユーザーがSNSなどのWebサイトにログイン中に、並行して、別のWebサイトやメール内に記載されている不正リンクをクリックすると、悪意あるリクエストがユーザーの要求であるかのように偽って、ログイン中のWebサイトに送信されます。このような、ユーザーの意思とは別の操作をする「クロスサイト・リクエスト・フォージェリ」攻撃により、攻撃者に非公開の個人情報を公開する設定に変えリクエストをさせられたり、パスワードを書き換えるなどの被害があります。攻撃者がユーザーになりすまして操作してしまうので、ユーザー側には、Webサイトにログインしているときは、怪しいURLや身に覚えのないメールやメッセージに注意しアクセスしないようにします。また、作業が終わればログアウトすることが大切です。 ### POODLE攻撃 POODLE(Padding Oracle On Downgraded Legacy Encryption)は、SSL 3.0のブロック暗号のCBCモードにおける「パディングの最終1バイト分だけをチェックして正しければメッセージ全体が正しいと判断する」という欠陥を突いて、通信内容の解読を試みる攻撃です。平均してわずか256回の試行で暗号文の1バイトを解読可能であり、脆弱性を抱えるシステムにとっては深刻な脅威となります。 POODLEのように暗号ブロック長を揃えるためのパディング処理の不備を突く攻撃を総称して「パディングオラクル攻撃」といいます。このためPOODLEは、昔の暗号化方式(Downgraded Legacy Encryption)の上で行われるパッディングオラクル(Padding Oracle)攻撃という意味をもちます。 ## TCP / IP ### Smurf攻撃 Smurf攻撃とは、特定のコンピュータに繋がるかどうか確認する「ping」コマンドで使われるパケットの送信元を偽装し、標的に向けて大量のパケットを送りつける攻撃手法。標的となったコンピュータやその所属するネットワークに過重な負荷をかけ、正常な通信ができない状態に陥らせるDoS攻撃の一種である。 ### ICMP Flood ICMP Flood攻撃とは、攻撃対象を機能不全に陥らせるDoS攻撃の手法の一つで、標的にICMPパケットを短時間の間に大量に送りつける攻撃。 ### IP Spoofing IPスプーフィングとは、TCP/IPネットワークを通じた攻撃手法の一つで、IPパケットの送信元として虚偽のIPアドレスを書き入れてそのアドレスになりすます手法。不正侵入にもDoS攻撃にも悪用される。 ## マルウェア ### ポリモーフィック型ウイルス ポリモーフィック型ウイルスとは、コンピュータウイルスの分類の一つで、感染時に毎回異なる暗号鍵で自身を暗号化することでパターンマッチングによる検出を回避するもの。 ### rootkit rootkitとは、コンピュータシステムへの不正アクセスに成功した攻撃者が、侵入後に遠隔操作で活動するために必要なソフトウェア一式をまとめてパッケージにしたもの。 ### ダウンローダー型ウイルス ダウンローダ型ウイルスは、感染したコンピュータのユーザに気付かれないようにインターネット上の悪意のあるWebサイトに接続し、他のマルウェアをダウンロードして感染を拡散させるタイプのウイルス(またはマルウェア)です。 ## サイドチャンネル ### サイドチャンネル攻撃 サイドチャネル攻撃とは、IT機器に対する攻撃手法の一つで、装置の物理的な特性の変化を外部から観測・解析することにより、本来読み取ることができない情報を盗み取る手法。 暗号鍵の盗聴などに応用される。 ### テンペスト攻撃 モニタやキーボード、ネットワークケーブルなどから放射されている微弱な電磁波を傍受し、それを解析することで元の情報の再現を試みる攻撃手法。 一般に知られている実験では、ブラウン管ディスプレイやケーブルから発生する電磁波を3m離れた地点で傍受して、表示されている画像を再現した例がある。 ### タイミング攻撃 《timing attack》サイドチャネル攻撃の一種。コンピューターが暗号化や復号処理に要する時間を測定し、その差からパスワードの文字列を解析するもの。 ## DNS ### カミンスキー攻撃 2008年にDan Kaminsky(ダン・カミンスキー)氏が発表した、DNSキャッシュポイズニング攻撃の効率を劇的に向上させる手法です。 ### DNSキャッシュポイズニング DNSキャッシュポイズニングとは、インターネット上のIPアドレスとドメイン名(ホスト名)を対応付けるDNS(Domain Name System)に対する攻撃手法の一つで、DNS情報の探索を行うキャッシュサーバに不正な手段で嘘の情報を覚えさせ、利用者からの問い合わせに答えさせる手法。 ### DNSリフレクション攻撃 DNSリフレクション攻撃とは、送信元のIPアドレスを偽装してDNSサーバにDNSリクエストを送信し、偽の送信元(攻撃対象)に大量のDNSパケットを送信して、攻撃対象をダウンさせる攻撃のことです。「DNSアンプ攻撃」や「DNSリフレクター攻撃」と呼ばれることもあります。 ### DNS水責め攻撃 DNS水責め攻撃(ランダムサブドメイン攻撃)とは攻撃対象に大量のランダムなサブドメインを問い合わせて、DNSの機能停止を狙う攻撃手法のことです。 ## メール ### スパムメール スパム は、受信者の意向を無視して無差別かつ大量に一括してばらまかれる各種ネットメディアにおけるメッセージのこと。 ## NTP ### NTPリフレクション攻撃 NTPリフレクション攻撃とは、ネットワークを通じて時刻合わせを行うためのNTP(Network Time Protocol)を悪用し、攻撃対象に大量のデータを送信して機能を麻痺させる反射型DoS攻撃の一つ。 ## 標的型攻撃 ### RLO制御文字 RLO(Right-to-Left Override)| RLO 拡張子偽装 RLO拡張子偽装とは、OSの文字設定表示を変更し拡張子を偽装し、ユーザに悪意のプログラムを実行させる攻撃手法。 RLO制御コード (U+202E) とはアラビア語など右から左に向け文字のための制御文字。 これを悪用した拡張子偽装する。 ### 水飲み場型攻撃 水飲み場型攻撃とは、特定の組織や個人を狙う標的型攻撃の手法の一つで、標的がよく利用すると思われるWebサイトを改竄し、コンピュータウイルスなどの感染を試みる手法。肉食獣が水場の周囲で待ち伏せし、水を飲みに現れた草食獣を狙い撃ちにする様子になぞらえている。 ## アプリの脆弱性 ### バッファオーバーフロー バッファオーバーフローとは、データ書き込み用に確保したメモリ領域(バッファ)の量を超える大量のデータを入力することで、それ以外のメモリ領域が上書きされて書き換えられ、プログラムが誤動作を起こしてしまう脆弱性のことを指す。 # サイバーキルチェーン ### 偵察 (Reconnaissance) 標的となる個人、組織を調査する。例えば、インターネット、メール情報、組織への潜入等が挙げられる。 ### 武器化 (Weaponization) 攻撃のためのエクスプロイトキットやマルウェア等を作成する。 ### デリバリー (Delivery) マルウェアを添付したメールや悪意あるリンク付きメールを仕掛ける。また、直接対象組織のシステムへアクセスする。 ### エクスプロイト (Exploitation) 標的にマルウェア等攻撃ファイルを実行させる。または、悪意あるリンクにアクセスさせ、エクスプロイトを実行させる。 ### インストール (Installation) エクスプロイトを成功させ、標的がマルウェアに感染する。これでマルウェア実行可能となる。 ### C&C (Command & Control) マルウェアとC&Cサーバーが通信可能となり、リモートから標的への操作が可能となる。 ### 目的の実行 (Actions on Objectives) 情報搾取や改ざん、データ破壊、サービス停止等、攻撃者の目的が実行される。 # 暗号 ## 古典暗号 コンピュータが登場する以前の暗号を古典暗号と呼びます。古典暗号では、その仕組みが単純であることが多いため、アルゴリズムが非公開で使用されます。そのため、暗号化・復号化の仕組みそのものが秘密の情報となっている暗号と言えます。現代では暗号化の手法として用いられることは稀です。 ### シーザー暗号 ジュリアス・シーザーがガリア戦争の時に用いた暗号方式です。アルファベットを三文字ずらして置換するだけの単純な仕組みです。文字の頻度分析を行うことで簡単に対応関係を推測することができるため、非常に脆弱です。 ### コードブック 任意の単語をそれに対応した符号で置き換える仕組みの簡単な暗号です。対応表(コードブック)自体が秘密情報です。複雑なメッセージをやりとりする場合には、コードブックのサイズが大きくなってしまう欠点があります。 ### スタキュレー暗号 紀元前5世紀ごろにスパルタ人が使ったとされる暗号です。スタキュレーと呼ばれる棒に細長い羊皮紙を螺旋状に巻きつけて、平文を書きつけます。その後、羊皮紙のみを配布することで、意味不明な状態に見えます。復号は、暗号化に用いたスタキュレーと同じものに巻きつけることで実現できます。 ### 転置式暗号 平文の文字を別の文字に置換する仕組みです。シーザー暗号もこの暗号方式の一つです。文字の出現頻度を分析する頻度分析に対して脆弱です。 ### 多表式暗号 平文をブロックごとに区切った状態で、それぞれのブロックに異なる置換ルールを適用する仕組みです。単一換字式暗号と同じ原理で暗号化しますが、解読が難しくなっています。 ### 単一換字式暗号 平文の文字を別の文字に置換する仕組みです。シーザー暗号もこの暗号方式の一つです。文字の出現頻度を分析する頻度分析に対して脆弱です。 ### エニグマ暗号 古典暗号の集大成とも言える暗号です。ドイツの技師であるアルトゥール・シェルビウスが発明しました。単一換字式暗号と多表式暗号を組み合わせることで頻度分析に対して耐性を持たせた機械式暗号です。ドイツ軍が第二次世界大戦で使用したことが有名です。計算機科学の祖であるアラン・チューリングにより機械を用いて解読されたことも有名です。 ## 共通鍵暗号方式 共通鍵暗号は、暗号化と復号化に同じ鍵を使用します。この鍵のことを共通鍵や秘密鍵と呼びます。秘密鍵が流出してしまうと誰でも復号できてしまうので、メッセージの送受信者は安全な方法で秘密鍵を共有する必要があります。共通鍵暗号のメリットとして、高速に暗号化、復号化ができるため、比較的大きなサイズの平文をやりとりする場合に向いています。現代では、通信路の暗号化によく使用されています。 暗号化する平文の単位によってストリーム暗号とブロック暗号に大別されます。 ### ストリーム暗号 ストリーム暗号は平文をビットやバイトなどの小さい単位で順次処理を行っていく方法です。平文と秘密鍵との排他的論理和をとることで暗号化、復号化を行います。 ### バーナム暗号 ストリーム暗号の代表的な暗号化プロトコルです。平文と同じ大きさをもつ秘密鍵で排他的論理和を計算することで暗号化する仕組みです。非常にシンプルながら、情報理論的安全性をもつ解読不能の暗号です。総当たりで復号を試みても、真の平文を識別することができません。 ### ブロック暗号 ブロック暗号はブロックと呼ばれる一定の大きさに平文を区切って処理する暗号化方法です。暗号化時のブロックの区切り方と暗号化の方法により、いくつかの暗号化モードがあります。ブロック暗号の一つであるAESは現在でも通信時などに利用されている有名な暗号です。 ### DES(Data Encryption Standard) 米国国立標準技術研究所(NIST)が公表したブロック暗号です。IBMが開発したLuciferを元にして作られました。現在は脆弱性が見つかっているので、機密情報の暗号化に使用してはいけません。 ### トリプルDES 上述のDESを3回繰り返し適用する方式です。使用する鍵の個数に応じて、2鍵トリプルDESと3鍵トリプルDESがあります。現在でも致命的な脆弱性は見つかっていませんが、AESの方が安全かつ計算コストも安いため、使用は推奨されていません。 ### AES(Advanced Encryption Standard) コンピュータの発展に伴い、DESでは解読されてしまう可能性が高くなったため、NISTが次の標準暗号として募集したものがAESです。コンペティションの結果、ラインダール暗号が選ばれました。現在の通信路の暗号化(TLS/SSL)によく用いられています。 ## 公開鍵暗号 受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する暗号方式です。公開鍵は第三者に公開して使用し、秘密鍵は自分自身で管理します。公開鍵暗号は、共通鍵暗号を用いた通信を実現する場合の課題であった、秘密鍵を事前共有しなければならない問題を解決するために、ディフィとヘルマンによって提案されました。現代のインターネットのように、不特定多数の相手と通信を行う場合に利用され、今では不可欠の暗号です。インターネットを介した通信では、公開鍵暗号によって共通鍵暗号の秘密鍵を配送し、共有された秘密鍵を用いてその後の通信を暗号化するのが一般的です。 ![](https://i.imgur.com/HEUZqHv.png) ### DH鍵共有 ディフィとヘルマンによって提案された、共通鍵暗号に使用する秘密鍵を安全に共有する方法です。公開された情報のみでは、秘密鍵を推定することができません。共通鍵の配送方法の一つとして現在も使われています。 ### RSA暗号 最初に具体的な構成方法が公表された公開鍵暗号です。リベスト、シャミア、エーデルマンによって提案されました。大きな素数を法とした素因数分解問題の困難性を用いて実現しています。公開された情報から秘密鍵を推定するには大きな数字の素因数分解を行う必要があります。一般的に、多項式時間でこの問題を解くアルゴリズムはまだ見つかっていません。共通鍵の配送に現在も使われています。 ### ElGamal暗号 1984年にエルガマルによって提案された方法です。離散対数問題の困難性に基づいて実現されています。平文に対して乱数を混ぜてマスク処理を行っているため、より安全性が高まっています。しかし、暗号文は平文の2倍のサイズになってしまいます。また、乗法準同型性を持っているため、暗号文同士の乗算を行うことができます。 ### Rabin暗号 1979年にラビンが発表したRSAに似た暗号です。素因数分解の困難性に基づいて実現されています。暗号文を復号すると平文の候補が4つ出力されるため、どの文が元の文章であるかを決めるための工夫が別途必要です。 ### RSA-OAEP(Optimal Asymmetric Encryption Padding) 1994年にベラーレとロガウェイによって発表された、RSA暗号をさらに改良して安全性を高めたものです。適応的選択暗号文攻撃者に対して、不適切な暗号文の復号を行った場合にエラーメッセージを返す仕組みを持ちます。この仕組みにより、攻撃者は不適切な暗号文の復号結果から情報を得ることができなくなります。 ## ハッシュ関数 ### MD4/MD5 リベストにより提案された128bitのハッシュ値を出力するハッシュ関数です。既に衝突困難性が破られているため、別のハッシュ関数を使用することが推奨されています。 ### SHA-1/SHA-2 SHA(Secure Hash Algorithm)はNISTによって標準化されたハッシュアルゴリズムの総称です。SHA-1は160bitのハッシュ値を出力します。その後、SHA-2として4つのハッシュ関数(SHA-224、SHA-256、SHA-384、SHA-512)が標準化されています。それぞれの数字が出力bit数に対応しています。多様な場面で使用されています。 ### SHA-3/Keccak SHA-1の安全性が脅かされたため、NISTが次世代のSHAを選定するために作られものがSHA-3です。コンペティション形式で選ばれたKeccakという手法が現在SHA-3として標準化されています。224bit、256bit、384bit、512bit、可変長のハッシュ値を出力できます。安全性の高いハッシュ関数として、広く使用されています。 ### RIPEMD-160 ヨーロッパのRIPEプロジェクトの一部として提案されたハッシュ関数です。 NISTとは対照的に学術コミュニティから生まれた技術です。オリジナルのRIPEMDは128bitのハッシュ値を出力し、RIPEMD-160は160bitのハッシュ値を出力します。 # OSI参照モデル ![](https://i.imgur.com/wAMrgco.png) ### 第7層 :アプリケーション層 アプリケーション層は、ユーザとのインターフェースになる層です。通信を行う上でアプリケーション(ソフトウェア)ごとの固有のルールが決められています。 ### 第6層 :プレゼンテーション層 プレゼンテーション層は、データの表現形式を決定する層です。文字コードや画像のフォーマットもこの層で取り決めをしています。文字化け(文字が正しく表示されないこと)が起こるのはこの層で、異なる文字コードでやり取りをした際に発生します。 ### 第5層 :セッション層 セッション層は、セッションの管理をするための層になります。セッションとはアプリケーションによる通信全体を指す用語で、簡単にいうと通信の開始から終了までのことです。 ### 第4層 :トランスポート層 トランスポート層は、通信の信頼性を確保するための層になります。データのやり取りをしていて適切に届いているかを宛先に確認するためのルールが決められています。 ### 第3層 :ネットワーク層 ネットワーク層は、エンドツーエンドの通信をするための層になります。通信はいつもお隣さんとだけするわけではありませんよね。送信元から隣接する機器を経由して本来の宛先にデータを届ける必要があります。その際に利用するのがIPアドレスです。そしてIPアドレスを使うことで異なるLANへの通信が可能になりその時に必要なルールが決めれています。 ### 第2層 :データリンク層 データリンク層は、隣接する機器と通信をするための層になります。通信が始まって最初の相手はケーブルなどでつながるお隣さんです。このお隣さん(隣接する機器)と正しく通信をするために必要なルールが決められています。 ### 第1層 :物理層 物理層は、ビットを正しく送受信するための層になります。電気信号や光信号などを正しく相手側へ届けるために必要なルールが決められています。 # プロトコル一覧 ## アプリケーション層 ### BGP(Border Gateway Protocol) AS(自律システム)間におけるルーティングを行う。 ### DHCP(Dynamic Host Configuration Protocol) ネットワークを接続するために必要な情報を取得するために用いる。 ### FTP(File Transfer Protocol) ネットワーク上におけるクライアントとサーバ間でのファイル転送のために用いる。 ### HTTP(Hypertext Transfer Protocol) webサーバアプリケーションとwebブラウザなどのクライアントアプリケーション間でのデータの送受信のために用いる。 ### IMAP(Internet Message Access Protocol) メールサーバ上でメールを管理するために用いる。 POPがメールをサーバーから一度だけダウンロードするのに対してIMAPではメールをサーバ上で保持し続ける。 ### IRC(Internet Relay Chat) クライアントとクライアントがテキストベースでメッセージのやり取りをするために用いる。 SNSやチャットツールの台頭によって利用者数は年々減少中。 ### LDAP(Lightweight Directory Access Protocol) リソースを一元管理しているディレクトリサービスへ接続するために用いる。 ### MGCP(Media Gateway Control Protocol) VoIP(ネットワーク上での音声による通話)の実現をサポートするプロトコル。 ### NNTP(Network News Transfer Protocol) ネットニュースサーバから記事を受信あるいはニュースを投稿するために用いる。Webアプリのニュースサイトなどがあるためほとんど使われていない模様。 ### NTP(Network Time Protocol) 時刻の同期に用いられる。Time Protocolと異なり、通信時間による誤差を最小化する機能が含まれる。 ### SNTP(Simple Network Time Protocol) NTPの簡易版。主にクライアントの時刻の同期のみに用いる。 ### TIME(Time Protocol) 時刻の同期に用いる。NTPより古く通信時間に起因する誤差が発生する。 ### POP(Post Office Protocol) メールサーバからメールを取得するために用いる。 IMAPと異なりメールを取得するとサーバからは対象のメールは削除される。 ### RIP(Routing Information Protocol) ルーティングに関する処理を行う ### SIP(Session Initiation Protocol) クライアント間でのセッションを確立するために用いられる。 ### SMTP(Simple Main Transfer Protocol) メールの転送に用いる。 ### SNMP(Simple Network Management Protocol) ネットワーク上の通信機器の監視および制御を行うために用いる。 ### SSH(Secure Shell) 暗号化技術を使って安全に外部サーバに接続し遠隔操作を行うために用いる。 本プロトコルによって通信内容は全て暗号化される。 ### Telnet(Teletype network) テキストベースでの端末間での通信に用いる。SSHのように暗号化はされない。 ### TFTP(Trivial File Transfer Protocol) FTPと同様にファイル転送を行うが、FTPと異なり認証が不要でUDPを使用する。 ### TLS/SSL(Transport Layer Security/Secure Sockets Layer) セキュアな通信を実現するために用いる。盗聴・改ざんの防止、証明書による通信相手の確認が可能。 ### XMPP(Extensible Messaging and Presence Protocol) インスタントメッセンジャーのためのプロトコル。WhatsAppやGoogle Talk、Facebook Chat(Messengerの前身)などで使われている。 # カプセル化 非カプセル化 ## カプセル化 ![](https://i.imgur.com/w0IYWpg.jpg) ## 非カプセル化 ![](https://i.imgur.com/oMl6PFY.jpg)