マルウェアの難読化と検知方法
不正ソフトウェアが進化を繰り返し、古くから使われている、実績あるウイルス対策(AV)ソリューションをも回避するようになるのは、なぜでしょうか。あらゆるレベルのハッカーが、検知を逃れて拡散するよう設計された難読化技術を使ってセキュリティ対策を回避するようになっており、既知の脅威を「新たなもの」に見せかけることで、その目的を達成しています。ウォッチガードの CTO、Corey Nachreiner が Dark Reading に最近掲載された 2 部構成の連載記事で、サイバー犯罪者がマルウェアを隠す目的で使用する、初歩的な方法や高度な技術を解説しています。記事の一部を抜粋し、以下に紹介します。
1.初歩的な難読化:
何百万ものマルウェア亜種が存在し、そのほとんどに、何らかのマルウェア回避技術が使われています。初歩的な方法としては、パッカ、クリプタ、ポリモーフィックマルウェア、ダウンローダ(ドロッパや段階型ローダと呼ばれることもあります)の 4 つがあります。Corey は、次のように説明しています。
「パッカとクリプタには、どちらにも弱点があり、たとえば、どちらの方法でも、マルウェアが静的分析から逃れることはできますが、動的分析から逃れられるとは言い切れません。静的分析とは、実行されていないファイルに対して実行する、マルウェア検知技術であり、システムに侵入する前にマルウェアを停止する必要があるため、多くの AV 製品が、ネットワークを通るファイルをスキャンしたり、コンピュータのファイルシステムにファイルをコピーしたりします。しかしながら、静的解析では、ファイルが圧縮されていたり、暗号化されていたりすると、AV が知ることができるファイル情報が制限されてしまいます。
2. 高度な難読化:
最近のハッカーは、初歩的な方法だけでなく、より高度な方法や戦術を使ってマルウェアを隠すようになっています。これには、逆アセンブリ対策とデバッグ、ルートキット、さらには、コード、プロセス、DLL のインジェクションが含まれます。Corey は、次のように説明しています。
「プロセスやダイナミックリンクライブラリ(DLL)の挿入(インジェクション)とは、具体的には、プログラムが別のプロセスのコンテキストでコードを実行するために使用できるさまざまな手法のことです。マルウェアの開発では、必要な Windows プロセスを実行するマルウェアコードを取得する目的で、これらの手法がよく利用されます。挿入されるのは、たとえば、explorer.exe、svchost.exe、notepad.exe などの正規の Windows 実行ファイルです。マルウェアがこのように Windows で必要なプロセスを選ぶのは、AV ソフトウェアが発見して強制終了するのを困難にするためです。」
残念ながら、初歩的なものから極めて高度なものまでのマルウェアの難読化技術が数多く存在します。ただし、対策がないわけではありません。マルウェアは、自らの外見を変えることはできたとしても、コンピュータを感染させる、バックドアを作成する、ファイルを暗号化するといった目標を達成するには、自らの挙動を変えることはできません。
そのため、高度な検知ソリューションの多くは、挙動に基づいてマルウェアを識別するシステムが組み込まれています。このようなソリューションでは、一般的には、ユーザのコンピュータのように動作する「サンドボックス」が作成されます。このシステムは、新しいファイルや不審ファイルを受け取ると、このサンドボックス環境でファイルを実行し、そのファイルの挙動を調べます。これらのソリューションでは、既知の回避技術を含む数百の既知のマルウェアの挙動を監視することで、その実行ファイルが不正ファイルであるかどうかを、正確かつプロアクティブに判断します。
詳細は、Corey の Dark Reading の第 1 部と第 2 部の記事を参照してください。ウォッチガードのインフォグラフィック「Top 5 Least Wanted Malware(最も迷惑な 5 つのマルウェア)」もご覧ください。
Secplicity では今後も、新たな脅威からの防御に役立つ、サイバーセキュリティの最新ニュースや実践方法をご紹介する予定です。