不正なドライバに目を光らせる: 証明署名付きマルウェアの追跡
Mandiant
※この投稿は米国時間 2022 年 12 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
最近のインシデントレスポンス調査において、Mandiantは、Windowsシステム上の特定のプロセスを終了させるために使用される悪意のあるドライバを発見しました。このケースにおいて、ドライバはエンドポイント上のEndpoint Detection and Response(EDR)エージェントを終了させるために使用されていました。Mandiantは、この悪質なドライバーをPOORTRY、そのローダをSTONESTOPとして追跡しています。最初の発見から間もなく、MandiantはMicrosoft Windows Hardware Compatibility Authenticode署名のついたPOORTRYドライバサンプルを観測しました。このドライバのAuthenticodeメタデータを注意深く分析した結果、Windows Hardware Compatibility Program経由で署名された悪意のあるドライバについて、より大規模な調査が行われることになりました。この調査により、より広範な問題が発見されました。
- 悪意のあるドライバはMicrosoftによって直接署名されており、元のソフトウェアベンダを特定するには、コードで署名を検査しなければならない
- 複数の異なる攻撃者に関連するマルウェアファミリーが、このプロセスで署名されている
- Mandiantは、証明署名付きマルウェアに関連する少なくとも9つの固有の組織名を特定
本調査は、SentinelOne社によるブログ記事とともに公開されています。
コード署名とWindowsハードウェア互換性プログラム
人間関係は信頼の上に成り立っています。そして、日々コンピュータを使用する際のソフトウェアとの関係についても同じことが言えます。そのプログラムの実行を信頼できるか?その理由は?ソフトウェアは、エンドユーザーにとって非常に不透明な場合があります。そのソフトウェアがX X社の製品である、と主張されるとき、エンドユーザーがそのソフトウェアの信頼性を確認するためには、どのようなメカニズムが存在するのでしょうか?
コード署名は、ファイルの整合性と信頼性を確保するための手段です。ソフトウェアベンダーは、コード署名のために使用する証明書を、CA/Browser Forum および CA Security Council が定めた基準を遵守する信頼できる認証局 (CA) から取得します。これらのガイドラインでは、企業の法的存在と身元を確認すること、証明書の要求者がソフトウェアベンダーの代理として行動することを許可されていることなどの要件が詳細に規定されています。
この証明書は、ソフトウェアに署名し、ソフトウェアとオペレーティングシステムの間に信頼レベルを提供するために使用されます。コード署名の実施方針は、署名付きコードの実行のみを許可するものから、署名付きコードの実行に対するセキュリティ警告を最小化するもの、純粋にアプリケーションの信頼性を示す電子署名として機能するものまで、OSやファイルの種類によって異なります。


図1:コード署名の概要(出典 (https://pkic.org/uploads/2016/12/CASC-Code-Signing.pdf))
MicrosoftのWindowsバイナリ用のコード署名の実装は、Authenticodeとして知られています。Authenticodeは、ドライバやドライバパッケージに特化したいくつかの機能を備えており、Windowsハードウェア互換性プログラム(Windows Hardware Compatibility Program)を通じて、ハードウェアベンダーがドライバに適切な署名を付与できるように支援します。
"Windowsハードウェア互換性プログラム"は、Windowsと互換性があり、Windows 10、Windows 11、Windows Server 2022上で確実に動作するシステム、ソフトウェア、ハードウェア製品を提供できるようにするためのものです。また、このプログラムでは、ドライバーの開発、テスト、配布のためのガイダンスも提供されます。Windows Hardware Dev Centerダッシュボードを使用すると、提出物の管理、デバイスやアプリのパフォーマンスの追跡、テレメトリの確認など、さまざまなことができます。
Windows ハードウェア互換性プログラムの作業には、複数の段階があります。


図2:Windowsハードウェア互換性プログラムの手順
Windows 10以降で動作させる場合、ドライバをMicrosoftに提出し、証明署名を受けることができます。
この証明署名プロセスでは、提出されたドライバパッケージの整合性を確認し、ドライバパッケージを提供したソフトウェア発行者の身元を確認するために、電子署名が使用されます。このプロセスでは、提出組織は、他のコード署名証明書よりも識別要件が強化され、より強力な暗号化アルゴリズムを使用しなければならないEV(Extended Validation)証明書でドライバパッケージに署名することが要求さ れます。このEV証明書は、強化された監査要件に合意した、より少数の認証局によって提供されます。
さらに、ベンダーは、ドライバをハードウェアラボキット (HLK) テストに提出し、Windows Certified を取得することができます。ドライバが証明署名を受けても、それはWindows Certifiedではありません。Microsoftからの証明署名は、ドライバがWindowsによって信頼できることを示しますが、ドライバはHLK Studioでテストされていないため、互換性、機能性などに関する保証はされていないからです。
互換性プログラムのプロセスにおいて、証明署名付きドライバを提出するには、大聞く9つのステップがあります。
- ハードウェアデベロッパープログラムに登録する。
- Extended Validation (EV) 証明書を確認または購入する。
- Windows Driver Kit (WDK)をダウンロードし、インストールする。
- 承認のために提出されるCABファイルを作成する。CABファイルには、ドライバ本体、ドライバINF、シンボルファイル、カタログファイルなどが含まれる。
- EV 証明書で CAB ファイルに署名する。
- EV 署名された CAB をハードウェアダッシュボードから送信する。
- Microsoftがドライバに署名する。
- ハードウェアダッシュボードから署名済みドライバをダウンロードする。
- 署名されたドライバーの確認とテストを行う。
このプロセスの成果は、証明署名付きドライバです。
Mandiantは、攻撃者が不正に購入したコード署名証明書を使用してマルウェアに署名し、正当性を示すとともに、アプリケーションの許可リストポリシーなどのセキュリティ制御を無効化することを継続的に確認しています。認証署名付きドライバは、CAから付与された信頼を、Microsoft自身から発信されたAuthenticode署名付きファイルへ転送します。私たちは、攻撃者が不正に入手したEVコード署名証明書を使用してこのプロセスを破壊し、認証署名プロセスを介してドライバーパッケージを提出し、実質的にMicrosoftによって直接署名されたマルウェアを持っていると高い信頼性を持って評価しています。
脅威データと観測事項
Mandiantは、UNC3944が証明書署名プロセスを介して署名されたマルウェアを利用していることを確認しています。UNC3944は、少なくとも2022年5月から活動している金銭的動機のある脅威グループで、通常、SMSフィッシング攻撃によって窃盗した認証情報を使用して初期ネットワークアクセスを取得します。このグループの侵害後の目的は、SIMスワッピング攻撃を可能にするために使用される認証情報またはシステムへのアクセスに集中している場合がおり、おそらく被害組織の環境外で発生する二次的な犯罪行為を支援するためと考えられます。
UNC3944は、2022年8月という早い時期にSTONESTOPとPOORTRYの両方を展開していることが確認されています。
STONESTOPは、悪意のあるドライバーを作成しロードすることでプロセスを終了させようとするWindowsユーザーランドユーティリティです。Mandiantは、この悪意のあるドライバをPOORTRYとして追跡しています。POORTRYは、プロセス終了を実装するWindowsドライバで、機能を開始するためにユーザーランドユーティリティを必要とします。ドライバのエントリでは、STONESTOPのようなユーザー空間ユーティリティによる対話のために、device \KApcHelper1 が登録されます。
Mandiantは、2022年6月までさかのぼり、広く出回っている盗難証明書を含む、さまざまな証明書による署名済みPOORTRYドライバを観測しています。POORTRYの使用は、さまざまな脅威グループにわたっていると見られ、購入可能なマルウェアや異なるグループ間で自由に共有されているマルウェアと一致しています。
このPOORTRYのサンプルは、不適切に署名されたものが多い以前の例とは異なり、Microsoft Windows ハードウェア互換性発行者証明書を使用して合法的に署名され、検証されています。これは、認証プログラム全体で使用されているMicrosoftの証明書であるため、正規のバイナリにも広く使用されています。


図3:有効なPOORTRY署名データ
証明署名に使用された公開鍵(補足 C:POORTRY証明書詳細)には、鍵の使用値の中に注目すべき2つのオブジェクト識別子(OID)が含まれています。
X509v3 Extended Key Usage:
1.3.6.1.4.1.311.10.3.5, 1.3.6.1.4.1.311.10.3.5.1, Code Signing
RFC 5280のセクション4.2.1.12では、拡張鍵使用法(EKU)を定義している。この署名に含まれる EKU 値は、このファイルの署名にどの方式が使用されたか、またこの署名証明書がどのような目的で使用され るかを識別するのに役立つ。定義された値は、この証明書がWindows Hardware Compatibilityドライバー署名プロセスで使用され、特に認証署名されたドライバーに使用されることを示す。表 1 に OID の説明を示す。
POORTRYサンプル、証明書、およびこの証明書で署名された多数の正規サンプルとの関連性から、MandiantはこのマルウェアがWindowsハードウェア互換性プロセスによって検証されたと高い信頼性を持って評価しました。
PKCS #7 v1.5仕様のRFC2315はSignerInfoコンテンツタイプを定義しており、Authenticode署名付きPEは、最初に特定したPOORTRYドライバ(6fcf56f6ca3210ec397e55f727353c4a)に関するサンプルを特定するために使用できる、いくつかの興味深い構造を含んでいます。
対象フィールドであるprogramNameは、Authenticode固有のSpcSpOpusInfo属性に含まれています。Mandiantは、証明署名付きドライバーのprogramNameフィールド(以下、Program Name)には、証明署名のためにドライバーを提出した個々のハードウェアベンダーに関する識別可能な情報が含まれていると、高い信頼性をもって評価しています。
SpcSpOpusInfo
SpcSpOpusInfo is identified by SPC_SP_OPUS_INFO_OBJID
(1.3.6.1.4.1.311.2.1.12) and is defined as follows:
SpcSpOpusInfo ::= SEQUENCE {
programName [0] EXPLICIT SpcString OPTIONAL,
moreInfo [1] EXPLICIT SpcLink OPTIONAL,
} --#public--
SpcSpOpusInfo has two fields:
programName
This field contains the program description:
If publisher chooses not to specify a description, the SpcString
structure contains a zero-length program name.
If the publisher chooses to specify a
description, the SpcString structure contains a Unicode string.
moreInfo
This field is set to an SPCLink structure that contains a URL for
a Web site with more information about the signer. The URL is an
ASCII string.
大连纵梦网络科技有限公司
このフィールドは、追加の関連サンプルを特定するための重要な手がかりとなります。Mandiantは、プログラム名を軸に、追加のPOORTRYサンプルを含む11個の新しい疑わしいファイルを特定しました。
証明書署名付きドライバのprogramNameフィールドは、WHCPポータルへの最初のCAB提出に署名するために使用されたEV Code Signing証明書のX.509 Subject Organization Name(O)によって入力されるようです。このことは、VirusTotalや他のMandiantのデータセットにおいて、このOrganization Nameや他の対応するProgram Nameの値に関連するサンプルの大量の不正検知によって裏付けられます。この記事の執筆時点では、証明署名付きドライバのprogramNameフィールドがどのように入力されるかについて、これが正確なメカニズムであることをMicrosoftに確認することはできていません。
観測された対応するEVコード署名証明書はすべてDigicertによって発行されたものでした。証明書シリアル 01:15:3e:7a:3c:8d:c5:0b:3d:23:c8:ba:31:d3:70:52 は時間とともに失効しましたが、他のいくつかは失効していないものと思われます(表 4 の太字部分)。これらの対応するExtended Validation証明書は、Temp.Hexが利用するSOGUマルウェアのランチャーや、オープンソースのFast Reverse Proxyツールの配布物の署名に使用されています。このツールは、イランの国家に支援されていると思われる攻撃者が使用していたことを、Mandiantがこれまでに観測したことがあるものです。
OIDと証明書のデータを利用して、追加の証明書署名付きドライバを収集するYARAルールを開発しました。
これらの証明書署名付きドライバを調査した結果、悪意のあるバイナリで観測されたプログラム名を共有する57の疑わしいサンプルが見つかりました(付録B:Indicators of Interest)。これらのサンプルは、9つの異なるプログラム名に分散していました。
Qi Lijun
Luck Bigger Technology Co., Ltd
XinSing Network Service Co., Ltd
Hangzhou Shunwang Technology Co.,Ltd
福州超人
北京弘道长兴国际贸易有限公司
福建奥创互娱科技有限公司
厦门恒信卓越网络科技有限公司
大连纵梦网络科技有限公司
図7:不審な証明署名サンプルで確認されたプログラム名
不正なドライバー署名をサービスとして提供
この調査を通じて特定された疑わしいサンプルは、複数の開発環境アーティファクト、特にプログラムデータベース(PDB)のパスにつながっており、複数の異なる開発環境と複数の異なるマルウェア作者の可能性を示唆しています。
Mandiantは以前にも、コード署名のために共通の犯罪サービスを利用していると疑われるシナリオを観測しています。これは新しいものではなく、2017年にメリーランド大学のCertified Malwareプロジェクトによって記録されている現象です。Mandiantは、これがこれらの疑わしい証明署名付きドライバーと関連するEV署名付きサンプルにおいても起きていることだと考えています。
攻撃者が盗んだり、不正に入手したコード署名証明書を使用することは、一般的な戦術であり、これらの証明書や署名サービスを提供することは、地下経済において儲かるニッチな分野であることが証明されています。Mandiantは、英語、ロシア語、中国語を含むさまざまな言語で、コード署名証明書を提供したり、攻撃者に代わってマルウェアに署名したりすると主張する多数の脅威アクターとサービスを確認しました。例えば、Twitter ユーザーの「@ContiLeaks」によってリークされたチャットメッセージを分析したところ、Trickbot の操作に関与する脅威アクターが複数の脅威アクターからコード署名証明書を購入する事例が複数確認され、1つの証明書の価格は約 1,000~3,000 USD であることが確認されています。
これらの広告のほとんどは EV コード署名証明書について言及していますが、WHQL によるドライバ署名に焦点を当てた議論も少数ですが確認されています。これらの議論のほとんどは、WHQL の制限によってもたらされた課題を嘆いていますが、私たちは、WHQL でドライバーに署名した経験を述べた少なくとも 1 人の攻撃者を観察し、また、オープンインターネット上で企業ビジネス向けの WHQL ドライバー署名サービスを宣伝する複数の Web サイトを確認しました。この活動で観測された署名付きペイロードを、特定されたサービスのいずれかと関連付けることはできませんが、攻撃者は、署名付きドライバマルウェアを入手するために、アンダーグラウンドフォーラムからサービスを取り込むか、商業サービスを悪用している可能性が高いと思われます。
悪意のある証明書に署名したドライバには、他の悪意のあるサンプルに署名したEV証明書に対応するprogramNameが含まれているパターンがあります。証明書は主にDigicertおよびGlobalsign経由で中国の顧客に発行されているようで、中国市場の証明書リセラーまたは署名サービスを悪用している可能性を示しています。
特定された異なる会社名と異なる開発環境から、Mandiantは、これらのマルウェアサンプルに攻撃者に代わって認証プロセスを通じて署名させたサービスプロバイダーが存在するのではないかと推測しています。しかし、残念ながら現時点では、この評価の信頼度は低くなっています。
ハンティングとブロッキング
証明署名はMicrosoftの正規のプログラムであり、生成されたドライバはMicrosoftの正規の証明書で署名されています。このため、MicrosoftとほとんどのEDRツールは、Microsoftの署名付きバイナリのロードを許可するため、実行時の検知は困難です。代わりに、組織は、Microsoft署名のバイナリに付与された匿名での信頼性の問題を克服するため、疑わしい活動やルートキットに似た活動に対して警告する行動検知に頼らざるを得ません。しかし一方で、プロアクティブな調査には、これらのファイルを検索する方法が数多くあります。
YARAルールと概要
M_Hunting_Signed_Driver_Attestation_1
OLE は、認証プロセスを通じて署名された任意のバイナリを識別するために、検知を実装することができます。このルールは、OLEの存在とMicrosoft Windows ハードウェア互換性発行者証明書のサブジェクトにマッチします。
M_Win_Hunting_CertEngine_Attestation_ProgramName_1
証明書プログラムの名前に含まれている特定された会社名を使って、潜在的に疑わしいサンプルを探し出すことができます。しかし、これらの証明書の性質上、この証明書を持つすべてのサンプルが悪意あるものであるとは限らず、単に過去に悪用されたことがあるだけで、さらなる調査が必要であることを理解しておく必要があります。
M_CertEngine_Malicious_Attestation_Signed_Driver
VirusTotalデータセットには、LiveHuntルールでアクセス可能な追加データがあります。これには、関連するサンドボックスの実行から得られるさまざまなタグやその他のメタデータが含まれます。この情報は、M_Hunting_Signed_Driver_Attestation_1ルールと悪意のあるカウントメタデータを組み合わせることで、悪意のある証明書署名バイナリの疑いのあるものを特定するために使用することができます。
M_Hunting_Win_ConventionEngine_PDB_Attestation_Multiple_1
Devilish Debug DetailsのDefinitive Dossierに記載されているように、PDBパスはマルウェア内に存在する文字列を特定するために使用できます。しかし、これはマルウェアやマルウェア開発者に起因するものであり、証明書や署名プロセスによるものではないことを覚えておくことが重要です。
検出結果の一覧は「補足A:YARA」をご覧ください。
結 論
証明書署名プロセスは、申請するハードウェアまたはソフトウェアベンダの身元を検証する責任を認証局に負わせるものです。 理論的には、認証局は合意された手順に従って、申請者の身元と、申請者がソフトウェアベンダを代表していることを確認しなければならないので、これは有効なプロセスです。しかし、このプロセスが悪用され、Microsoftによって署名されたマルウェアが入手されています。
これは今に始まったことではなく、GDataとBitDefenderの両社は、2021年にMicrosoftが署名した悪質なドライバーに関するレポートを発表しています。"Microsoft signed a malicious Netfilter rootkit" と "Digitally-Signed Rootkits are Back - A Look at FiveSys and Companions" では、このブログ記事で取り上げたのと同じ認証プロセスで署名された悪質なドライバについて取り上げています。
このブログ記事では、POORTRYと証明書署名プロセスに焦点を当てましたが、Mandiantは、他のマルウェアが証明書によって署名されていることを確認しています。TEMPLESHOTは、ドロッパー、バックドア、フィルタドライバ、保護ドライバから構成されるマルウェアファミリーです。MD5 48bf11dd6c22e241b745d3bb1d562ca1 を持つ TEMPLESHOT ドライバは、実際に観測されており、証明書による署名が行われていることが確認されています。
謝 辞
Signify python ライブラリを使用することで、Authenticode データの自動分析が非常に効率的になりました。また、Mandiant IntelligenceとFLARE組織のアナリストの協力なしには、このレポートを完成することはできませんでした。ここに感謝を表します。
補足A: YARA
import "pe"
rule M_Hunting_Signed_Driver_Attestation_1
{
meta:
author = "Mandiant"
date_created = "2022-10-20"
description = "Find driver signed via Microsoft attestation signing only (no EV certificate signing outside of Microsoft Windows Hardware Compatibility Publisher)" //https://learn.microsoft.com/en-us/windows-hardware/drivers/dashboard/code-signing-attestation
strings:
$whql_oid = {2b0601040182370a030501} //OID 1.3.6.1.4.1.311.10.3.5.1, Windows Hardware Quality Labs (WHQL) crypto -- "szOID_WHQL_CRYPTO"
$spc_statement_type = {2b060104018237020115} //OID 1.3.6.1.4.1.311.2.1.21, SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID
$spc_sp_opus_info_oid = {2b06010401823702010c} //OID 1.3.6.1.4.1.311.2.1.12, SPC_SP_OPUS_INFO_OBJID
condition:
pe.signatures[0].subject == "/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Windows Hardware Compatibility Publisher" and
$whql_oid and
$spc_sp_opus_info_oid and
$spc_statement_type
}
import "pe"
rule M_Win_Hunting_CertEngine_Attestation_ProgramName_1
{
meta:
author = "Mandiant"
description = "Find driver signed via Microsoft attestation signing only with one of the identified company names of interest."
strings:
$whql_oid = {2b0601040182370a030501} //OID 1.3.6.1.4.1.311.10.3.5.1, Windows Hardware Quality Labs (WHQL) crypto -- "szOID_WHQL_CRYPTO"
$spc_statement_type = {2b060104018237020115} //OID 1.3.6.1.4.1.311.2.1.21, SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID
$spc_sp_opus_info_oid = {2b06010401823702010c} //OID 1.3.6.1.4.1.311.2.1.12, SPC_SP_OPUS_INFO_OBJID
$unicode1 = {59278FDE 7EB568A6 7F517EDC 79D16280 67099650 516C53F8}
$unicode2 = {51 69 20 4c 69 6a 75 6e}
$unicode3 = {4c 75 63 6b 20 42 69 67 67 65 72 20 54 65 63 68 6e 6f 6c 6f 67 79 20 43 6f 2e 2c 20 4c 74 64}
$unicode4 = {58 69 6e 53 69 6e 67 20 4e 65 74 77 6f 72 6b 20 53 65 72 76 69 63 65 20 43 6f 2e 2c 20 4c 74 64}
$unicode5 = {48 61 6e 67 7a 68 6f 75 20 53 68 75 6e 77 61 6e 67 20 54 65 63 68 6e 6f 6c 6f 67 79 20 43 6f 2e 2c 4c 74 64}
$unicode6 = {54 41 20 54 72 69 75 6d 70 68 2d 41 64 6c 65 72 20 47 6d 62 48}
$unicode7 = {798f 5dde 8d85 4eba}
$unicode8 = {5317 4eac 5f18 9053 957f 5174 56fd 9645 8d38 6613 6709 9650 516c 53f8}
$unicode9 = {798f 5efa 5965 521b 4e92 5a31 79d1 6280 6709 9650 516c 53f8}
$unicode10 = {53a6 95e8 6052 4fe1 5353 8d8a 7f51 7edc 79d1 6280 6709 9650 516c 53f8}
condition:
$whql_oid and
$spc_sp_opus_info_oid and
$spc_statement_type and
pe.signatures[0].subject == "/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Windows Hardware Compatibility Publisher" and
(1 of ($unicode*))
}
import "vt"
import "pe"
rule M_CertEngine_Malicious_Attestation_Signed_Driver
{
meta:
author = "Mandiant"
description = "Find driver signed via Microsoft attestation signing only and greater than 3 malicious hits in VirusTotal.”
strings:
$whql_oid = {2b0601040182370a030501} //OID 1.3.6.1.4.1.311.10.3.5.1, Windows Hardware Quality Labs (WHQL) crypto -- "szOID_WHQL_CRYPTO"
$spc_statement_type = {2b060104018237020115} //OID 1.3.6.1.4.1.311.2.1.21, SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID
$spc_sp_opus_info_oid = {2b06010401823702010c} //OID 1.3.6.1.4.1.311.2.1.12, SPC_SP_OPUS_INFO_OBJID
condition:
for any tag in vt.metadata.tags : ( tag == "signed" ) and
pe.signatures[0].subject == "/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Windows Hardware Compatibility Publisher" and
vt.metadata.analysis_stats.malicious > 3 and
$whql_oid and
$spc_sp_opus_info_oid and
$spc_statement_type
}
rule M_Hunting_Win_ConventionEngine_PDB_Attestation_Multiple_1
{
meta:
author = "Mandiant"
description = "Looking for PDB path strings that has been observed in malicious samples which were attestation signed"
strings:
$anchor = "RSDS"
$pdb1 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}gamehacks.{0,250}boot_driver.{0,250}\.pdb\x00/ nocase
$pdb2 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}MyDriver1.{0,250}wfp_vpn.{0,250}\.pdb\x00/ nocase
$pdb3 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}FilDriverx64_win10.{0,250}\.pdb\x00/ nocase
$pdb4 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}RedDriver_win10.{0,250}\.pdb\x00/ nocase
$pdb5 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}sellcode.{0,250}MyDriver.{0,250}\.pdb\x00/ nocase
$pdb6 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}Users\\ljl11{0,250}\.pdb\x00/ nocase
$pdb7 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}RkDriver64.{0,250}MyDriver1.{0,250}\.pdb\x00/ nocase
$pdb8 = /RSDS[\x00-\xFF]{20}[a-zA-Z]:\\.{0,250}\\ApcHelper.{0,250}TSComputerManager.{0,250}\.pdb\x00/ nocase
condition:
(uint16(0) == 0x5A4D) and uint32(uint32(0x3C)) == 0x00004550 and filesize < 20MB and $anchor and (1 of ($pdb*))
}
補足B: Indicators of Interest
疑わしいプログラム名の値を持つ証明書署名バイナリ
この表はSignature Date(署名日)の順に並んでいます。署名日は、署名のタイムスタンプを含む認証された属性です。この日付でソートすることで、読者はprogramNameがどのように使用され、時間の経過とともに変化したかを見ることができます。
1つのサンプル(688c138fffbb4e7297289433c79d62f5)にはSignature Dateがなく、これは署名後にVMProtectを使用するなど、バイナリ改竄によるものと思われます。
署名付きPOORTRYサンプル
次の表は、署名付きPOORTRYのサンプルです。
拡張バリデーション(EV)署名付きサンプル
次の表は、Organization Nameが大连纵网梦络科技有限公司のEV証明書による署名のサンプルです。
疑わしい証明署名付きサンプル
以下のMD5のリストは、多くのセキュリティソリューションによって疑わしいと判断された証明署名付きバイナリです。これらのバイナリは、直接的に有害なものではありませんが、環境中に存在する場合は、調査を行う必要があります。
補足C:POORTRY証明書の詳細
以下の証明書の詳細は、POORTRYサンプルに署名された証明書から抜粋したものです。ただし、これは正規の証明署名Microsoftの証明書であることに注意してください。なお、簡略化のため、いくつかの詳細は削除しています。
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
33:00:00:00:57:ee:4d:65:9a:92:3e:7c:10:00:00:00:00:00:57
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = Washington, L = Redmond, O = Microsoft Corporation, CN = Microsoft Windows Third Party Component CA 2014
Validity
Not Before: Jun 7 18:08:06 2022 GMT
Not After : Jun 1 18:08:06 2023 GMT
Subject: C = US, ST = Washington, L = Redmond, O = Microsoft Corporation, CN = Microsoft Windows Hardware Compatibility Publisher
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Extended Key Usage:
1.3.6.1.4.1.311.10.3.5, 1.3.6.1.4.1.311.10.3.5.1, Code Signing
X509v3 Subject Key Identifier:
41:8F:FB:78:B4:1F:1F:7F:19:8E:36:12:08:D0:22:76:6B:58:FA:29
X509v3 Subject Alternative Name:
DirName:/OU=Microsoft Operations Puerto Rico/serialNumber=232147+470769
X509v3 Authority Key Identifier:
keyid:C8:3A:9C:A7:4A:C3:23:F2:25:7E:B9:DA:AB:29:53:0E:54:00:C3:A1
※本ブログは、2022年12月13日に公開されたブログ「I Solemnly Swear My Driver Is Up to No Good: Hunting for Attestation Signed Malware」の日本語抄訳版です。
-Mandiant, 作成者: Mandiant Intelligence