マルウェアがSSL/TLS証明書を悪用する手口を解説
本ブログ記事では、マルウェアが使用する証明書に見られるいくつかの変わった特徴を解説すると共に、それらの情報を用いて不正活動を検出する方法について説明します。弊社は当該調査時点で、さまざまなマルウェアファミリが使用した1,767通の証明書を検証しました。これらの詳細については技術論文(英語)を参照ください。
近年のマルウェアは、自身のネットワークトラフィックを隠匿するために暗号化を行うことが増えています。一般的なネットワーク通信の暗号化が普及していることを考えると、これは当然のこととも言えます。Googleの透明性レポートでは、Google Chromeブラウザを経由するネットワークトラフィックの大部分はHTTPSトラフィックであることが報告されています。
トレンドマイクロでは過去6年間で、汎用性の高いマルウェアおよび標的型攻撃に用いられるマルウェアの両方で暗号化が多用されていることを確認しています。これらの暗号化は、検出回避や暗号化された通常のトラフィックに不正な通信内容を混入させるために行われます。マルウェアだけでなく、Cobalt Strike、Metasploit、Core Impactなどの商用のペネトレーションテスト(侵入テスト)ツールでも暗号化が用いられています。これらの事例における証明書の利用は多くの場合、SSL/TLS暗号化通信で通常使用されるX.509証明書の利用にまで及びます。
トレンドマイクロの技術論文「The State of SSL/TLS Certificate Usage in Malware C&C Communications(英語)」では、さまざまなマルウェアファミリが使用しているSSL/TLSサーバ証明書について解説しており、これらの証明書に関する興味深い特徴や見解を紹介するとともに、これらの不正な証明書を迅速に見分けるための検出技術をお伝えしています。マルウェアが使用するコマンド&コントロール(C&C)トラフィックを証明書レベルで検出することは、マルウェアの不正活動をできる限り早い段階で阻止するためには非常に重要であり、特にプロキシベースで復号できない場合に有効となります。
本ブログ記事では、マルウェアが使用する証明書に見られるいくつかの変わった特徴を解説すると共に、それらの情報を用いて不正活動を検出する方法について説明します。弊社は当該調査時点で、さまざまなマルウェアファミリが使用した1,767通の証明書を検証しました。これらの詳細については技術論文(英語)を参照ください。
■ SSL/TLSサーバ証明書に用いられる電子署名
不正活動の可能性を示す兆候は、問題の証明書がどのように署名されているか、という点から始まります。今回調査した証明書のうち、60%は自己署名でした。このこと自体が、重大な危険信号となるはずです。同様に、証明書に記載されている組織名(Organization Name)にも注意が必要です。AsyncRATやBitRATなどの一部のマルウェアファミリは、組織名が記載されているSubjectフィールド内に自身のマルウェア名を含んでいる一方で、他のマルウェアファミリは、「default」や「Internet Widgits Pty Ltd」という組織名を使用しています。これらは、OpenSSLを用いて自己署名証明書を作成するときに使用されるデフォルト値です。
さらに証明書の有効期限(Validity)も大きく異なる可能性があります。現在のブラウザは通常、最長13ヶ月間の有効期限をもつ証明書を受け入れており、認証局(CA)は一般的にそれよりも短い有効期限をもつ証明書を発行しています。
通常、不正な証明書はこの規則に従いますが、中には従わないものもあります。弊社は、有効期限が1ヶ月のものから数年(最長99年)のものまであることを確認しました。例えば、バンキングマルウェア「URSNIF(別名:Gozi)」は、2018年から現在まで、一貫して10年の有効期限を自身の証明書に使用しています。
■ 電子証明書のピン留め
「証明書のピン留め」とは、クライアント(ブラウザ、または、今回の場合はマルウェア)が、特定のWebサイトに対して、有効な証明書があれば全て受け入れるのではなく、有効とする証明書の数を制限する方法のことです。これは、トラフィックの安全性を確保するために特定のWebサイトやブラウザで用いる方法ですが、マルウェアに採用されていたとしても、驚くべきことではありません。
マルウェアによる証明書のピン留めの利用はまだ一般的ではありませんが、一部のマルウェアファミリはこの方法を多用することが知られており、「IcedID」、「AsyncRAT」、「DcRAT」、「Vawtrak」、「PhantomNet」などがこれにあたります。現在、これらのマルウェアファミリはすべて自己署名証明書を使用しているため、その点に着目して検出することができます。ただし、マルウェアであっても、信頼できる認証局から発行された証明書を使用することも十分に考えられます。
■ 信頼できる認証局からの証明書
不正な証明書のほとんどが自己署名されたものであると上述しましたが、下の表に見られるように、有名な認証局から発行されているものもかなりの数に上ります。この表は、各認証局によって署名された不正な証明書の数を示しています。
発行認証局(Certificate Authority、CA) | 発行された証明書の数 |
Let's Encrypt Authority X3 | 458 |
COMODO RSA Domain Validation Secure Server CA | 41 |
RapidSSL CA | 19 |
EssentialSSL CA | 18 |
cPanel, Inc. Certification Authority | 13 |
その他 | 26 |
表1:マルウェアによる使用が確認された証明書の認証局別件数
また、これらの証明書を頻繁に使用しているマルウェアファミリが複数確認されています。Goziスパイウェアは、これらの証明書のうち150通を使用しており、次いでNode.jsマルウェア「QNodeService」が61通、トロイの木馬型マルウェア「BazarLoader」が29通、バンキングマルウェア「ZLoader(別名:Zbot)」が28通となっています。これらの証明書の有効期限に関しては、認証局「Let's Encrypt」が提供する3か月の有効期間を過ぎても、不正ドメインの証明書が更新されることはありませんでした。一方で弊社は、同じドメインに対して2通の異なる証明書が発行されているのをいくつかのドメインで確認しました。
不正ドメインや電子証明書の発行に関する規定は認証局ごとに異なります。例えばLet's Encryptは「(コンテンツに対する継続的な可視性などから)認証局がフィッシングやマルウェアへの対抗するための最前線に立つべきではない」と述べています。すべてのドメインでTLSがデフォルトで有効になると、すべてのネットワークトラフィックにおいて暗号化は重要な機能となります。マルウェアやフィッシングサイトに対する証明書の発行についての議論はさておき、TLSがデフォルトになることによってネットワーク防御の手順が複雑になることは確かです。
■ 結論
SSL/TLSで暗号化されたトラフィックは通常、マルウェアが使用するC&C通信トラフィックの検出を妨げます。しかし、暗号化に用いられた証明書を検証することで不正なトラフィックの判断が可能になるほか、SSL/TLSハンドシェイクのレベルで異なるマルウェアファミリの検出を試みるための侵入検知/防止システム(IDS/IPS)シグネチャ/フィルタの作成が可能になります。さらに、これらの情報は脅威リサーチャが不正なトラフィックを見つけるために利用可能な新たな情報を提供します。
これらの内容についての詳細は、技術論文「The State of SSL/TLS Certificate Usage in Malware C&C Communications(英語)」をご参照ください。
参考記事:
- 「Analyzing SSL/TLS Certificates Used by Malware」
by Mohamad Mokbel
記事構成:岡本 勝之(セキュリティエバンジェリスト)
高橋 哲朗(セキュリティマーケティンググループ)
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)