マルウェアがSSL/TLS証明書を悪用する手口-セキュリティブログ
近年のマルウェアは、自身のネットワークトラフィックを隠匿するために暗号化を行うことが増えている。
一般的なネットワーク通信の暗号化が普及していることを考えると、これは当然のことでもある。
Googleの透明性レポートでも、Google Chromeブラウザを経由するネットワークトラフィックの大部分はHTTPSトラフィックであることが報告されている。
まだまだ一般的ではないものの、SSL/TLS可視化(SSL/TLSインターセプト)製品などを用いるなどしないと正しく検証することはできない。
今回はトレンドマイクロ セキュリティブログより、マルウェアがSSL/TLS証明書を悪用する手口について紹介する。
手口を知っておくことで、防御イメージも湧くのではないだろうか。
トレンドマイクロでは過去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)トラフィックを証明書レベルで検出することは、マルウェアの不正活動をできる限り早い段階で阻止するためには非常に重要であり、特にプロキシベースで復号できない場合には有効である。
マルウェアが使用する証明書にはいくつかの変わった特徴がみられることがあり、その解説すると共にそれらの情報を用いて不正活動を検出する方法を以下に開設する。
SSL/TLSサーバ証明書に用いられる電子署名
不正活動の可能性を示す兆候は、”問題の証明書がどのように署名されているか”という点から始まる。
今回トレンドマイクロが調査した証明書の内、60%は自己署名であった。このこと自体が、重大な危険信号となる。
同様に、証明書に記載されている組織名(Organization Name)にも注意が必要である。AsyncRATやBitRATなどの一部のマルウェアファミリは、組織名が記載されているSubjectフィールド内に自身のマルウェア名を含んでいる一方で、他のマルウェアファミリは、「default」や「Internet Widgits Pty Ltd」という組織名を使用している。これらは、OpenSSLを用いて自己署名証明書を作成するときに使用されるデフォルト値だ。
さらに証明書の有効期限(Validity)も大きく異なる可能性がある。最新のブラウザであれば通常、最長13ヶ月間の有効期限をもつ証明書を受け入れており、認証局(CA)は一般的にそれよりも短い有効期限をもつ証明書を発行している。
(そもそも13か月になったのもAppleが「Safariブラウザにおいて399日以上のSSL証明書を信頼しない」と2020年3月に突然発表し、ChromeとFirefoxがこれに続いたことによって、今に至っているが、長期的には90日程度まで短縮することも検討されている。しかしながら、このレベルまで来るとサイト運営側は何か新しい策を考えないと今までのようなSSL対応はできないのだが…)
通常、不正な証明書はこの規則に従うものの、中には従わないものもある。トレンドマイクロでは、有効期限が1ヶ月のものから数年(最長99年)のものまであることを確認しているという。
例えば、バンキングマルウェア「URSNIF(別名:Gozi)」は、2018年から現在まで、一貫して10年の有効期限を自身の証明書に使用していた。
電子証明書のピン留め
「証明書のピン留め」という表現は、あまり耳にしたことがないのではないだろうか。
クライアント(ブラウザ、または、今回の場合はマルウェア)が、特定のWebサイトに対して、有効な証明書があれば全て受け入れるのではなく、有効とする証明書の数を制限する方法のことである。
これは、トラフィックの安全性を確保するために特定のWebサイトやブラウザで用いる方法であるが、マルウェアに採用されていたとしても、驚くべきことではないという。
マルウェアによる証明書のピン留めの利用についてはまだ一般的ではありませんが、一部のマルウェアファミリはこの方法を多用することが知られており、「IcedID」、「AsyncRAT」、「DcRAT」、「Vawtrak」、「PhantomNet」などがこれにあたる。
現在、これらのマルウェアファミリはすべて自己署名証明書を使用しているため、その点に着目して検出することは可能である。但し、マルウェアといえども、信頼できる認証局から発行された証明書を使用することも十分に考えられるので注意は必要だ。
信頼できる認証局からの証明書
前述のように不正な証明書のほとんどが自己署名されたものであると説明したが、下表のように、有名な認証局から発行されているものもかなりの数に上る。
この表は、各認証局によって署名された不正な証明書の数を示している。
表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)シグネチャ/フィルタの作成が可能になるなど、検出する手段がないわけではない。
そして、このような検出の為の情報は、脅威リサーチャが不正なトラフィックを見つける新たな情報として役立つのである。
本記事は、トレンドマイクロ様の許諾の元、「トレンドマイクロ・セキュリティブログ」の内容をベースに作成しております。
ソース:https://blog.trendmicro.co.jp/archives/28902