マルウェア
マルウェア (malware) とは、不正かつ有害に動作させる意図で作成された悪意のあるソフトウェアや悪質なコードの総称。コンピュータウイルスやワームなどが含まれる。
悪意のコード (malicious code) 、悪意のソフトウェア (malicious software) 、悪意のある不正ソフトウェア、有害なソフトウェア、不正プログラムとも呼ばれる。
マルウェアの行う活動としてはデータの破壊やデータの盗難などがあるが、こうした「悪意のある」行動をするソフトのみならず、ユーザの望まない広告を勝手に出すアドウェアのような「迷惑ソフト」(の中で悪質なもの)もマルウェアの範疇に含める場合がある。
マルウェア (malware) は、「悪意のある」という意味の英語「malicious(マリシャス)」と「software」を組み合わせて創られた混合語である。
類義語としてクライムウェアがあり、これはマルウェアの中で特に犯罪 (crime) に使われるものを指すとするものもあるが、必ずしもこれを要件としないものもあり、マルウェアとの関係は判然としない。
難読化: マルウェアのコードを簡単に人が理解できないようにする。プレーンテキストの文字列をエンコード (XOR, Base64など) し、マルウェアファイルに挿入したり、ジャンク関数をファイルに追加する。
ジャンクコード: 無駄なコードや偽の命令をバイナリに追加し、逆アセンブルを欺いたり、簡単に分析されないようにする。
アンチ: 保護ツールや監視ツールの回避、無効化、終了に使用するすべての手法を指す。地下フォーラムや闇市場で使用される。
Virtual machine packer(仮想マシン パッカー): 仮想マシンの概念を取り入れた高度なパッカーである。マルウェアの EXE ファイルが圧縮されると、元のコードが仮想マシンのバイトコードに変換され、プロセッサの動作をエミュレートする。既知のものではVMProtect、CodeVirtualizerでこの手法が利用されている。
最も一般的な回避技術は次のとおりである。
難読化: データ・変数・ネットワーク通信を保護する。変数または関数の名前をランダム化する。XORなどのエンコーディング方法を使用する。
環境のチェック: 仮想環境に関連するツールやアーティファクトを検出し、セキュリティソフトやベンダ等の分析を回避する。
サンドボックスの検出: サンドボックス関連のファイルやプロセスを検出するためにディスクをチェックする。