たれながし.info

とあるITエンジニアの備忘録

Microsoft Defender Antivirusの定義ファイルの中を見たい。

直近1~2週間でDefender AVの誤検知が3~4回あったので、定義ファイルってどうなってるの?と思って調べてみたメモです。(定義ファイルが読めれば、誤検知の原因も分かるんじゃないかと。)

結論を先に言います。→ 「バイナリファイルだったのでよく分からなかった。」

f:id:tarenagashi_info:20210220124441p:plain:w600

調べた内容

定義ファイルの保存場所

定義ファイルの保存場所は「C:\ProgramData\Microsoft\Windows Defender\Definition Updates\{GUID}」です。
エンジンも同じ場所に保存されています。

f:id:tarenagashi_info:20210220062632p:plain:w600

  • mpengine.dll:AVエンジン
  • mpav*.vdm:AntiVirusの定義ファイル
  • mpas*.vdm:AntiSpaywareの定義ファイル

ファイル形式

拡張子は「vdm」となっていますが、ファイル形式はPEフォーマットでした。(先頭2バイトが0x4D5A)

f:id:tarenagashi_info:20210220063507p:plain:w600

PeStudioというビューアで見てみました。
https://www.winitor.com/

DLLとして作成されていました。
f:id:tarenagashi_info:20210220114921p:plain:w600

定義は圧縮されてリソースとして格納されているもよう。
f:id:tarenagashi_info:20210220114432p:plain:w600

バージョン情報

f:id:tarenagashi_info:20210220115225p:plain:w600

各ファイルのファイルバージョンは以下の通り。

ファイル名 バージョン 備考
mp*base.vdm 1.331.0.0 ベースファイル
mp*dlta.vdm 1.331.1374.0 差分ファイル
  • mp*base.vdmが名前の通りベースファイルで、mp*dlta.vdmが差分ファイル。
    通信負荷を抑えるためか、サイズが小さい差分ファイルを頻繁に更新し、サイズが大きいベースファイルの更新頻度は低いもよう(ファイルの作成日時から推測)
  • AntiVirusとAntiSpaywareの定義バージョンは同一だった。ファイルバージョン=定義バージョンだった
  • 定義ファイルにはMicrosoftの署名が付いている。署名付ける目的でPEフォーマットなのか?
> Get-MpComputerStatus | Select-Object *Version

AMEngineVersion             : 1.1.17800.5
AMProductVersion            : 4.18.2101.9
AMServiceVersion            : 4.18.2101.9
AntispywareSignatureVersion : 1.331.1374.0
AntivirusSignatureVersion   : 1.331.1374.0
NISEngineVersion            : 1.1.17800.5
NISSignatureVersion         : 1.331.1374.0

NISは「Network Inspection System(ネットワーク検査システム)」のことらしい

定義ファイルを解凍する

vdmファイルには定義が圧縮されて格納されているらしいです。
解凍するためのPowerShellスクリプトGitHubで公開されていたので使ってみます。



> ls mpavbase.vdm | .\ExpandDefenderSig.ps1 -OutputFileName mpavbase.decompressed
...
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2021/02/20     12:35       78778304 mpavbase.decompresseds

解凍したらファイルサイズが約1.6倍になりました。
f:id:tarenagashi_info:20210220123858p:plain:w600

バイナリ形式らしく、ここからどうしたら良いかわからず諦めました。
「Hupigon」はWindowsバックドアマルウェアの名前らしい。

f:id:tarenagashi_info:20210220124441p:plain:w600


おまけ

Defender AVのリバースエンジニアリングの発表@2018年BlackHat

www.youtube.com

  • 発表スライド(PDF)

https://i.blackhat.com/us-18/Thu-August-9/us-18-Bulazel-Windows-Offender-Reverse-Engineering-Windows-Defenders-Antivirus-Emulator.pdf


DefenderCheck
与えたファイルのどの部分をDefenderが悪性と判定するか特定するツールなもよう、C#製。
github.com

WDExtract
こちらの「WDExtract」も定義ファイルの解凍に使えるツールです。
exeファイルなので、こちらの方が使いやすいかも
github.com