不正かつ有害に動作させる意図で作成された悪意のあるソフトウェアや悪質なコードの総称。コンピュータウイルスやワームなどが含まれる。software)[1]、悪意のある不正ソフトウェア[2]、有害なソフトウェア[3][4]、不正プログラム[2]とも呼ばれる。マルウェアの行う活動としてはデータの破壊やデータの盗難などがあるが、こうした「悪意のある」行動をするソフトのみならず、ユーザの望まない広告を勝手に出すアドウェアのような「迷惑ソフト」(の中で悪質なもの[5])もマルウェアの範疇に含める場合がある[6]。「悪意のある」という意味の英語「malicious(マリシャス)」と「software」を組み合わせて創られた混合語である[7]。類義語としてクライムウェアがあり、これはマルウェアの中で特に犯罪(crime)に使われるものを指すとするものもあるが[8]、必ずしもこれを要件としないものもあり[9]、マルウェアとの関係は判然としない。外部リンク種類編集2011年3月の種類別マルウェア。マルウェアの種類の代表例として以下のものがあげられる。以下の種類は排他的ではなく、複数の種類の定義を満たすマルウェアも存在しうる[10]。いずれかをもつ加害プログラムの事をウイルスの定義として採用している[11]。後述するワームやトロイの木馬は狭義のウイルスではないが、この意味での広義のウイルスには属する[11]。最広義では「ウイルス」という語はマルウェアと同義であり[12][13]、マスメディアなどではこの最広義の意味に用いられるが、これは誤用であるとされることもある[12]。他のプログラムやファイルの一部を書き換え(寄生、感染)、自己複製する機能を持つマルウェアのことである[10][14][11]。感染対象のプログラムの事をウイルスの宿主もしくはホストプログラム[14]という。感染経路を秘匿するなどの目的で、プログラムなどに感染したあと一時的に潜伏し、その後しばらく経ってから活動を開始(発病)するものも多い[11]。(コンピュータ)」を参照ウイルス同様自己増殖するが、ホストプログラムを持たず、単体で存在するプログラムの事を指す[10][14]。Tool)とも呼ばれる[15]。バックドアをしかけるマルウェアをバックドア型と呼ぶ[15][16]。無害なファイルやプログラムに偽装した上でコンピューターに侵入したあと悪意のある振る舞いをするものを指すことが多いが[10][14][17]、偽装を行わずにOS等の脆弱性を悪用して勝手にインストールされてしまうもの(ドライブバイダウンロード)もトロイの木馬に含める場合がある[18]。狭義のウイルスと違い自己増殖機能は持たない[10][18][15]。トロイの木馬の定義として単体で存在し宿主を必要としないことを要件に加えるものもあるが[18]、これを要件としない場合もある[14]。トロイの木馬の定義として、コンピューター内部に侵入したあと攻撃者による外部からの命令で悪意のある振る舞いをする[10][14][18]事やバックドア型である事[18]を要件にする場合もある。スパイウェア情報収集を主な目的とし[10]、コンピューターの内部情報を外部に勝手に送信する[19]ソフトウェアで、ユーザーが気づかないうちにパソコンにインストールしているパターンが多い[10]。IPAとJNSAの定義によればスパイウェアとは「利用者や管理者の意図に反してインストールされ、利用者の個人情報やアクセス履歴などの情報を収集するプログラム等」のことである[20][21]。スパイウェアはマルウェアの一種とみなすことが多いが[19][22][7][23][24]、シマンテックはスパイウェアをマルウェアに含めていない[10](クライムウェアには含めている[25])。キーロガーもしくはキーストロークロガー[14]キーボードからの入力を記録するプログラムのこと[26]で、キーロガーというものそれ自体はマルウェアではなく、コンピューターの所有者自身がデバッグのためにしかけるなどの使い方もあるが[26]、パスワードや個人情報などを奪取するため悪意を持ってしかけられるなどマルウェア[26][14](スパイウェア[19])として用いられることもある。同様にネットワークを通るパケットを監視するスニッファも盗聴目的で使われる場合がある。ボットボット自体は常駐してチャットで会話するなどといった機能を持つ任意のプログラムを指すもので、必ずしもマルウェアを指すものではない。マルウェアとしては、ボットネットと呼ばれる仕組みにより、IRCなどを利用して攻撃者から命令を受け取り、命令に応じてDDoS攻撃やスパムメール送信などを行うマルウェア[27]を指す。ボットに感染したコンピューターによって構成されたネットワークをボットネットもしくはゾンビクラスタという[27]。server)という[28]。ボットなどの感染により攻撃者による遠隔操作が可能なコンピューターをゾンビマシンという[29]。ルートキット攻撃者が被害者のコンピューターに侵入したあとに用いるツールを集めたパッケージ[30]で、マルウェアとして被害者のコンピューターにしかける[31]。侵入の発覚を防ぐログ改ざんツール[30]、バックドアをしかけるツール[30]、キーロガー[30]、パスワードやクレジットカード情報等の窃盗ツール[31]、DDoS攻撃用のボット化ツール[31]、セキュリティソフトの無効化ツール[31]などが含まれていることがある。した攻撃を容易にするため、システムバイナリを含めたファイルを数百個単位で改ざんする[14]。ルート権限を奪うなど管理者レベルのアクセス権を取得する事を定義とする場合もある[32]。ランサムウェア(ransomware)コンピューターをロックしたり重要なファイルを暗号化して読めなくするなどして被害者を困らせ,身代金(ransom)を払えば元に戻すと脅迫するマルウェア[33]。スケアウェア(scareware)ユーザの恐怖(scare)心を煽る偽の警告メッセージ(「PCから違法ポルノやウイルスが検出された」等)を表示し、問題を解決するには所定の金額を支払うようにと脅すマルウェア[34][35]。ダウンローダーサイズの小さなマルウェアで、攻撃者のサーバから被害者のコンピューターに実行ファイルなどをダウンロードする[15]などさらなる攻撃の足がかりにする。アドウェア(Adware)ユーザの望まない広告を勝手に出すソフトウェアである。アドウェアないしその中の悪質なものもマルウェアの範疇に含める場合がある[36][37]。実行するために、攻撃者はマルウェアを作成するが、その不正な試みが検出されてしまっては、その目的を達成することはできない。セキュリティベンダーがセキュリティ技術を進化させると、それに合わせて攻撃者も技術を進化させる。セキュリティベンダーと攻撃者の間では、いたちごっこが繰り返されている。回避するためにマルウェアが使用する手段の総称である[38]。セキュリティ技術に対する回避技術は次の3つに分類できる[38]。マルウェア対策エンジン、ファイアウォール、アプリケーション隔離などの保護ツールによる検出を回避するために使用される[38]。自動分析を検出し、マルウェアの挙動を報告するエンジンを回避するために使用される。仮想環境に関連するレジストリキー、ファイル、プロセスを検出することで、サンドボックス内で実行されているかどうかをマルウェアに通知する[38]。マルウェア分析を検出して欺くために使用される。ExplorerやWiresharkなどの監視ツールを検出するだけでなく、リバースエンジニアリングを回避するために圧縮や難読化などを行う[38]。高度なマルウェアの中には、このような技術を組み合わせて利用しているものもある。RunPE(メモリー内で自身のプロセスをもう1つ実行する)などの技術を使用して、マルウェア対策ソフトウェアやサンドボックス、分析を回避している。仮想環境に関連する特定のレジストリキーを検出し、サンドボックスでの自動分析や仮想マシン上での動的分析を回避するマルウェアもある[38]。ウイルスをはじめとしたマルウェアはセキュリティソフトに発見されないよう、下記のようなツールや手法を用いていることがほとんどである。サイバーセキュリティの回避技術で、よく使われる用語がある。ここで、攻撃者が使用するツール、手法や用語をいくつか紹介する[38]。マルウェアの実行時に、マルウェア対策エンジンや静的分析による検出を回避するため、マルウェアの暗号化と復号を行う。クリプターは、攻撃対象に合わせて作成されることが多く、闇市場で購入することもできる。クリプターをカスタマイズすることで、復号や逆コンパイルがさらに困難になる。Tejonなどがある[38]。クリプターと似ているが、マルウェアファイルの暗号化ではなく圧縮を行う。UPXが代表的なパッカーである[38]。複数のマルウェアファイルを1つに結合する。マルウェアの実行ファイルの拡張子を変更せず、JPGファイルに結合できる。マルウェア作成者は、正規のEXEファイルにマルウェアファイルを結合しようとする[38]。これにり、マルウェア対策エンジンによる検出を回避できる場合がある[38]。UnDetectable)であることを表す。有効なFUDプログラムは、スキャンタイムとランタイムの両方を組み合わせ、100%検出不可を実現する。既知のFUDとして、次の2種類が知られている[38]。マルウェアファイルの実行前に、マルウェア対策エンジンで検出されないように保護する[38]。マルウェアファイルの実行中に、マルウェア対策エンジンで検出されないように保護する[38]。実行中の各インスタンスに固有のスタブを作成し、検出と分析を困難にする[38]。(スタブとは、通常、元のマルウェアファイルのメモリーへの読み込み(復号または解凍)に使用するルーチンが含まれる。ディスクにファイルを書き込むことはせず、自身をメモリーに挿入することでシステムに感染する[38]。マルウェアのコードを簡単に人が理解できないようにする。プレーンテキストの文字列をエンコード(XOR、Base64など)し、マルウェアファイルに挿入したり、ジャンク関数をファイルに追加する[38]。無駄なコードや偽の命令をバイナリに追加し、逆アセンブルを欺いたり、簡単に分析されないようにする[38]。使用するすべての手法を指す。地下フォーラムや闇市場で使用される[38]。仮想マシンの概念を取り入れた高度なパッカーである。マルウェアのEXEファイルが圧縮されると、元のコードが仮想マシンのバイトコードに変換され、プロセッサーの動作をエミュレートする。既知のものではVMProtect、CodeVirtualizerでこの手法が利用されている[38]。一般的な回避技術は次のとおりである[38]。データ、変数、ネットワーク通信を保護する。変数または関数の名前をランダム化する。XORなどのエンコーディング方法を使用する[38]。仮想環境に関連するツールやアーティファクトを検出し、セキュリティーソフトやベンダー等の分析を回避する[38]。サンドボックス関連のファイルやプロセスを検出するためにディスクをチェックする[38]。感染経路編集マルウェアは、下記のように、様々な感染経路によって、感染活動を行っている[39]。ネットワーク感染やメール添付感染等の感染手法の他に、ホームページを見ただけで感染する「Web閲覧感染型」も感染手法の一つとして確認されており、その方法も高度化・巧妙化している[39]。下記に感染経路の例を示す[39][40]。Web閲覧感染型:ブラウザで閲覧したサイトに埋め込まれたマルウェアをダウンロードし、感染させるタイプである。サイトを見ただけで感染することもあり、インターネット利用者が自身で感染を認識することが難しくなっている。表示された広告を通して感染する場合もある[41]。Web誘導感染型:メールに添付されたURLをクリックし、アクセスしたサイトからマルウェアをダウンロードするよう誘導して感染させるタイプである。無料のウイルス対策ソフトのように見せかけて、悪意のあるプログラムをインストールさせようとする「偽セキュリティソフト」の被害が増えている。その代表的な手口は、ホームページなどで「あなたのコンピュータはウイルスに感染しています」のようなメッセージを表示し、利用者を偽のウイルス対策ソフトを配布するWebサイトに誘導するタイプである。OS等の基本ソフトの設定の不備を悪用し、感染させるタイプである。:USBメモリ、デジタルカメラ、ミュージックプレーヤー等の外部記憶媒体を介して感染させるタイプである。ファイル共有ソフトでは、不特定多数の利用者が自由にファイルを公開することができるため、別のファイルに偽装する等の方法で、いつの間にかウイルスを実行させられてしまうタイプである。暴露ウイルスなどがその一例である。Applications)を使用できるため、ファイルの書き換えや削除など、コンピュータを自在に操ることが可能である。そのため、マクロウイルスに感染した文書ファイルを開いただけで、VBAで記述されたウイルスが実行されしまい、脅威となるコードが実行されるタイプである。CMS改ざん型:個人や企業が運営するCMS(コンテンツマネジメントシステム・ワードプレスサイトの被害が特に多い[42])の脆弱性を利用して、管理者権限を乗っ取ったうえで、不正なコードをウェブサイトに埋め込む[43]。改ざんによりマルウェアを埋め込まれたサイトはスパムメールの配信元となったり、そのサイトにアクセスしたユーザーを意図しないサイトに転送したりする。マルウェアの検出技術編集マルウェアの検出には、マルウェア検出回避技術に対抗するために様々な技術を用いている。いかなる方法・手段・技術を用いても未知のマルウェアを100%検出・発見できるわけではない。いかなる方法・手段・技術を用いても未知のマルウェアからパソコンを100%保護してくれるわけではない。パターンマッチング検出技術:セキュリティソフトなどがマルウェアを発見するための、最も一般的な方式である[44]。セキュリティソフトは、パターンファイルと呼ばれるマルウェアの特徴(パターン)を記録したリストを持っている[44]。そのリストとパソコン内のファイルを比較して、一致すればマルウェアと判定して除去する[44]。これが、パターンマッチングと呼ばれる方式である[44]。パターンマッチングは、すでに存在が知られているマルウェアは間違いなく検出できる可能性が高い[44]。そのためには常にパターンファイルを最新の状態にしておく必要がある[44]。新しいマルウェアが登場したとき、その存在が知られて、パターンファイルに新しいマルウェアの情報が登録されるまでは効果がない[44]。亜種・変種といって、既知のマルウェアを僅かに改変したマルウェアにも対応できない[44]。ヒューリスティック検出技術:ヒューリスティック検出技術とは、セキュリティソフトなどがマルウェアを探索する際に、パターンマッチングではなくマルウェアに特徴的な挙動の有無を調べる手法である[45]。ヒューリスティック検知では、実行ファイルの挙動などを解析し、ライブラリファイルの書き換えなど、一般的なプログラムではあまり見られないような特異な挙動を探し出し、感染したマルウェアによるものと類推する[45]。未知のマルウェアや亜種などに対して、ある程度の対応が可能である。この方法では未知のマルウェアを100%発見できるわけではなく、また、マルウェアではないものをウイルスと誤認する場合もある[45]。サンドボックス検出技術:パソコンの内部に「サンドボックス」と呼ぶ仮想化環境を用意して、そこで不審なプログラムを動作させてみてマルウェアかどうかを判定する手法である[46]。仮想化環境でなら不審なプログラムを動作させても、実環境に被害が及ぶことはない[46]。ビヘイビアブロッキング(振る舞い検知)技術:サンドボックス検出技術のサンドボックス上の実環境におけるプログラムの挙動を見てウイルスを検出するものを「振る舞い検知」あるいは「ビヘイビアブロッキング」と呼ぶ[46]。ジェネリック検出技術:短期間に大量発生するウイルスの亜種に迅速に対応する検出技術として採用されているのがジェネリック検出である[47]。ジェネリック検出では、特定のマルウェアの既知の亜種から共通点を抽出し、既知の亜種だけでなく亜種と想定される複数のマルウェアを検出する[47]。パターンマッチング方式では検出できない新しい亜種であっても、共通点が一致していれば発生した時点で検出できる[47]。パッカー検出技術:使われたパッカー・クリプターなどのコード改変ツールの「種類」から、怪しいかどうかを判定してマルウェアの疑いのあるファイルを検出する手法である[47]。マルウェアに使われることの多いコード改変ツールが利用されたファイルを、疑わしいファイルとして検出する[47]。IDSはシステム設定の変更を行ったユーザーや設定ファイルの変更箇所など、ファイルやレジストリへの変更をリアルタイムで監視し不正動作を検出する手法である[48]。:アプリケーションに対しての最小権限アクセス制御機能によりゼロデイ攻撃を防ぎ、承認されたアプリケーションのプロセスであっても所定の動作に制限し、不正な攻撃からシステムを防御する手法である[48]。エクスプロイト対策技術:アプリケーション(PDFビューア、ブラウザなど)の脆弱性を突くエクスプロイト攻撃により、パソコンが不正侵入を受けないように保護する機能である[49]。一般的なエクスプロイト対策としてはアプリケーションを最新の状態に更新することが非常に重要であるが、未知のエクスプロイト攻撃があった場合、更新を行っているだけでは完全に防げない可能性がある[49]。FAQカスペルスキー。(パワーポイント)、4頁。