最新 .NET パッカーの種類および韓国国内の拡散動向

0. 概要

本内容は TI レポートの「最新 .NET パッカーの動向および分類レポート(日本語なし)」を縮約した内容であり、詳しい内容は、最下段のリンクから確認できる。

最近 .NET で作られたパッカーが韓国国内外で多数確認されている。そのため ASEC 分析チームでは、韓国国内で主に配布されている5つの種類の .NET パッカーについて紹介し、また拡散動向を説明する。まずは、.NET パッカーで配布されるマルウェアの種類について簡単に紹介し、このドキュメントのパッカーのフロー図を実際のパッカーを例に説明する。その後、それぞれのパッカーの特徴を把握し、最後に動向をまとめる。



1. 韓国国内外の .NET パッカーの比重

2022年10月の、韓国内外の統計資料のうち、.NET で配布されるマルウェアは以下の通りである。

[図1] 韓国国内(ASEC)と 韓国国外(ANY.RUN)の2022年におけるマルウェア統計の比較

ここでは AgentTesla や SnakeKeyLogger のような、最初から .NET でコンパイルされているようなマルウェアの他にも、Formbook(Xloader)や Lokibot のように .NET ではなく他の言語でコンパイルされている形態も存在する。それぞれ異なる環境で作られているが、これらの共通点は .NET パッカーで配布されているということである。現在、このような形態を使用した配布量が相当数を占めている。参考に、このタイプは .NET パッカーのみでも配布されているが、その前に一段階(Stage)を追加して、Excel VBS や PowerShell、Bat2Exe などのプロセスを経て .NET を実行するタイプ多く配布されいる。このような内容については、過去の ASEC ブログで紹介している。



2. .NET パッカーの基本構造およびフロー

2.1. 基本構造

.NET パッカーの場合、以下のように内部にバイナリが存在している状態、すなわち Resource Protection が適用された形態であるのが特徴である。

[図2] .NET パッカーの基本構造

現在 .NET パッカーは実行ファイルの内部に多数のデータが存在する。このデータには Data や Loader バイナリがあり、このバイナリ内部にはまた他の Data や Loader が含まれている。ここで Data および Loader は DLL もしくは EXE 形態の実行ファイルである。Loader は主に他の実行ファイルをデコードしたりメモリに積んだりする役割を担っており、解析妨害技法などが含まれていることもある。しかし Data の場合は実行コードがなく、通常のビットマップ(Bitmap)画像や HEX 値、文字列などで構成されたリソースのみが存在する。そのためどちらのバイナリもメモリに積まれているが、コードのフローが分かれるモジュールは Loader だけであるため、Data DLL はエンコードされたデータのみが存在するリポジトリであると考えればよい。

したがって、パッカーは以降、以下の規則で[図2]にように表現する。

実行コードのない DLL : 赤(Data)
実行コードのある DLL : 緑(Loader)
最終マルウェア : 赤に黄色の縁取り(PayLoad)

参考に、実行ファイルとして作られていない単純なリソースデータは図に含まれていない。例えば、エンコードされた文字列や定数などが実行ファイルのリソースに存在していて、それが使用されても上記の図のようにフロー図には表記しない。

2.2. フロー

パッカーには、そのパッカーのみが持っている固有の特徴や、固定で使用されるメソッドと変数名、そして妨害技法などが存在する。その中でも最も素早く確認でき、理解するのに重要な特徴2つを紹介する。

1) 内部にエンコードされたバイナリ情報(ファイル名情報)
2) 動作フローおよびエンコードデータの位置

この特徴はパッカーのフロー図において以下の通りとなる。

[図3] フローのうち集中してみるべきポイント(1番と2番)

まず最初に、「内部にエンコードされたバイナリ情報」を見る。特定の .NET パッカーは、配布された時期によって同じ特徴が存在する。その中でも最も代表的な特徴は、メモリにロードされる DLL(Loader と Data)のファイル名情報である。大半の .NET パッカーの場合、フレームワークは日ごとに変更されて配布されているが、内部バイナリである Loader の場合、一定の時期は同じ情報をそのまま使用するため、区分することができる。

2番目は「動作フローおよびエンコードデータの位置」で、これはパッカーが基本的には変更しにくい部分である。マルウェアはパック時に一般的にパックするビルドがあり、決められた型を用いて製作されるが、変更が必要な部分はオプションで提供される。しかし、通常サポートしているオプションは、インジェクションターゲットプロセスや、不正なファイルを生成するフォルダー、メッセージボックスの有無などであり、デコードデータの位置やコードフローを変更する機能はほとんどない。そのため、この部分が大きな特徴であるということができ、一部変更されても類似したタイプについて集めることができる。

最近韓国国内で確認された .NET パッカーのうち、配布量の多い5種は以下の通りである。

Type Packer
1 MajorCrypter
2 DarkTortilla
3 VariantCrypter(a.k.a GameLoader) 
4 PureCrypter
5 LogicNP’s Crypto Obfuscator
[表1] 最近拡散している代表的な .NET パッカー

パッカーの特徴を紹介する前に、フロー図と実際のパッカーをベースとして、上記の重要な特徴2つを簡単に見ていく。

以下は Type 1のフローである。

[図4] Type 1の基本フロー

上の[図4]のフローは以下の通りである。

1) パッカーは1番の Loader をデコードし、メモリに積んで Loader 1にコードが分岐する。
2) Loader 1はパッカー内部の Loader 2 をデコードし、メモリに積んで Loader 2にコードが分岐する。

3) 2番の Loader は自身の内部の Data をデコードして積む。

4) 2番の Loaderは積まれた Data DLL 内部のデータである Payload をデコードする。

5) 2番の Loader はターゲットプロセスを実行し、デコードされた Payload をインジェクションする

[表2] Type 1 のフロー段階

ここでの最初のポイントは内部のバイナリである Loader の名前である。パッカー Type 1は[図4]のように、内部バイナリである①番と②番の2つの Loader を持っている。この Loader についてのファイル情報は .NET デバッグツールである「Dnspy」を利用したり、メモリのバイナリをダンプすると確認できる。確認された情報は以下の通りである。

[図5] Type 1の Loader 名
(左 – 1番の Loader(Bunifu.UI.dll)、右 – 2番の Loader(MajorRevision.exe))

この内部情報は攻撃者が配布した時期によって名前を変更したものとみられる。以下は2021年から現在まで確認された情報である。

Loader File Information
1(First) Bunifu.UI.dll
Resource_Meter.dll
QuestKingdom.dll
Cassa.dll
2(Second) MajorRevision.exe
[表3] Type 1の Loader ファイル情報

[表3]の1番の Loader の場合、4つが収集された。順を追うと上(Bunifu_UI.DLL)から下(Cassa.dll)に配布されるため、最近では「Cassa.dll」が配布されている。次の2番の Loader は以前から今まで原本のファイル名「MajorRevision.exe」を使用し続けている。そのため、パッカー分類時はまず、ファイル名を利用すれば素早く分類することができる。

2番目はパッカーの「動作フローおよびエンコードデータの位置」である。一部のパッカーはフローを少しずつ変えながら拡散しているが、大きく型から外れることはない。Type 1は最近 Data をもう一つ追加して段階を増やしたことを確認した。変更されたフローは以下の通りである。

[図6] 最近の Type 1パッカーのフロー(Data が追加された形、黒の縁取り)

[図6]の下段のフローのように、最近では1番の Data がもう一つ追加された。これは、一段階が追加された形態で Data 1をデコードし、メモリに積んで Data 1内部リソースを参照しないと、2番の Loader の分岐ができない。そのため、現在は Loader と Data のそれぞれ2つの実行ファイルが確認されている。

バイナリを難読化するのに使われている難読化ツール(.NET Reactor や ConfuserEx など)の特徴ではパッカーを区別できないということを参考にしてほしい。これは .NET の内部バイナリごとにそれぞれ異なる難読化ツールが使われており、一貫性がないためである。

次はパッカーの種類と特徴について調べていく。



3. パッカーの種類と特徴

3.1. 種類

最近韓国国内で主に配布されている .NET パッカーは5種で以下の通りである。

Packer Type 1
(MajorCrypter)
Type 2
(DarkTortilla)
Type 3
(VariantCrypter) a.k.a GameLoader
Type 4
(PureCrypter)
Type 5
(LogicNP’s Crypto Obfuscator)
Domestic distribution
period
(Estimate)
Early 2021 ~ 2020 ~ 2021 ~ Early 2021 ~ Mid 2022 ~
Initial
vector
Loader Downloader,
Loader
Loader Downloader,
Loader
Loader
Stage 4 3 or 4 3 2 3
Loader 1
Information
Data Location : Inside Code
(Encoded Base64)File Name :
Bunifu.UI.dll,
Resource_Meter.dll,
QuestKingdom.dll,
Cassa.dll
Data Location : Inside Code
(Encoded Binary)File Name:[Random_string].dll
Data Location : Resource
(Encoded Binary or Bitmap)File Name:(Explained in features)
Data Location : Inside Code
(Encoded ASCII or Encoded Array or Download data)File Name :[Random_string].dll
Data Location : Resource
(Encoded Binary)File Name:[Random_string].dll
Loader 2
Information
Data Location : Resource
(Bitmap)
File Name :
MajorRevision.exe
Data Location : Resource
(Encoded Binary)File Name:[Random_string].dll
Data Location : Resource
(Encoded Base64)Feature : Only decodingFile Name:(Explained in features)
Data Location : Resource
(Encoded ASCII)Feature : Only deserializingFile Name : protobuf-net.dll,
Newtonsoft.Json.dll
X
Loader 3
Information
X Feature : Shellcode(WIN API) Data Location : Resource
(Bitmap)File Name :(Explained in features)
X X
Sleep method Inside the code Inside the code Powershell,
Inside the code
Powershell,
Inside the code
Inside the code
Callback
Function
ResourceResolve AssemblyResolve ResourceResolve ResourceResolve ResourceResolve
AssemblyResolve
[表4] パッカーの簡単な紹介

最近の .NET パッカーはすべて Sleep() 時間停止があり、コールバック(Callback)機能を使用している。ここで使われるコールバック機能はマルウェア解析を妨害しようとする目的と、コードフローを円滑にするためであるとみられる。

3.2. 特徴

次は各パッカーの3つの特徴を紹介する。

3.2.1. Type 1(MajorCrypter)

1) フロー
[図7] 最近形態の変わった Type 1(MajorCrypter)

Type 1 パッカーは Cyble という海外インテリジェンス社で Xloader(Formbook)を紹介する際に軽く紹介されていたが、まだ名前は決定していない。

このレポートでは Loader 2(EXE)の名前である「MajorRevision.exe」をとって、MajorCrypter と命名する。MajorCrypter は韓国国外で2020年や2021年の初めから配布されていたと推定され、現在も拡散している。従来は3段階の形態だったが、4段階に形態に変わっている。

2) DLL ファイル情報
Loader File Information
1(First) Bunifu.UI.dll
Resource_Meter.dll
QuestKingdom.dll
Cassa.dll
2(Second) MajorRevision.exe
[表5] Type 1の Loader ファイル情報

現在までに ASEC 分析チームが収集した MajorCrypter の Loader ファイル情報は[表5]の通りである。

3) デコードメソッドのパラメータ名

MajorCrypter はいつも Loader 1のデコードメソッドパラメータ名と同じである。MajorCrypter の場合 Loader 1から Loader 2にコードが分岐する直前で以下の3つの引数を使用する。Loader 2をデコードする際に使用される引数は以下の通りである。

[図8] デコードおよび積載を実行する Loader 1のメソッド(デコード対象は Loader 2)

上の[図8]のようなデコードメソッド(AddContext)の最初のパラメータ(resource_name)は Bitmap リソースの名前で、エンコードされた Loader 2の位置を指している。これは以下の[図9]の赤線の文字列「WFiLAKn」と同じである。

[図9] リソース内部に Bitmap としてエンコードされた Loader 2バイナリ

2番目のパラメータは XOR キーでエンコードされた Loader 2をデコードするときに使用される。最後の3番目のパラメータは Bitmap リソースを探すのに必要な Root リソース名である。これは[図9]において「JumboSports」である。

この3つのパラメータのうち(「resource_name」、「(特殊文字)_param」、「project_name」)は以前から今まで同じ名前で Loader 2を呼び出すときに使用されている。デコードは Bitmap.GetPixel()のようなメソッドを使用し、RGB カラーを1次元配列で作って、XOR と解凍(Decompress)などを通して Loader 2をデコードする。そして Loader 2の内部バイナリである Data 2の内部には最終的に実行されるマルウェア(Payload)が含まれている。(図7参照)

3.2.2. Type 2(DarkTortilla)

1) フロー

Type 2は2022年8月、米国のサイバーセキュリティ会社 SecureWorks で「DarkTortilla」という名前で初めて呼ばれるようになった。

DarkTortilla は韓国国内で2020年から配布していたと見られ、現在まで度々確認されている。このパッカーは通常4段階で構成されているが、以下の[図10]のように形態の異なる他の変種がさらにあるものと推測される。

[図10] Type 2(DarkTortilla)パッカーのフロー(以下 B タイプの場合 Data 追加)
2) LOADER 1のリソースの特徴

DarkTortilla の DLL ファイル情報はランダムなファイル名であり、決められていない。しかし、以下のようにいくつもの Bitmap 画像をリソースとして持っている。この Bitmap はすべてエンコードされた Payload で最終実行されるマルウェアである。

[図11] Type 2(DarkTortilla)のリソース構造
3) インジェクションメソッドのパラメータ(LOADER 2 のメインメソッド)

DarkTortilla は Loader 1クラスから Loader 2クラスに(Loader1.Class11_Install -> Loader 2.Class1_RunCommand)コードが分岐するときに以下のような引数を渡す。

[図12] Loader 2のメソッドで渡された引数値4つ

引数の最初はインジェクションされる対象ファイルのパス(path)であり、2番目はインジェクションされるプロセスのコマンドライン引数(cmd)、3番目はインジェクションに使用される Payload(data)のバイナリ、4番目はパッカーの特定オプションである。そのため DarkTortilla は最低4つのパラメータ(path, cmd, data, compatible)をいつも使用している。

また loader 2の場合はたいてい Anti Tamper が有効になっている。Anti Tamper はバイナリ上、改ざん防止機能で逆コンパイルすると、正常にコードを見れないようにしていた。これはランタイム時に一番最初に実行される生成子(.cctor)を通して復旧される。

[図13] Loader 2のコード復旧前(左)と復旧後(右)

復旧が完了すると、呼び出された loader 2の .Class1_Runcommand の Runn() メソッドは最小4つの引数を受け取り、インジェクションを実行する。これは配布時期によって引数値5つを受け取る場合も存在する。このパラメータは Type 5として紹介する LogicNP 社の Crypto Obfuscator という商用パッカーでも見ることができる。このような共通点は HackForum で活動していた Aeonhack というユーザーの RunPE から派生したものと推測される。

[図14]Aeonhack の RunPE オープンソースコード(左)と DarkTortilla パッカー(右)の比較

3.2.3. Type 3(VariantCrypter – a.k.a GameLoader)

1) フロー
[図15] Type 3 パッカー(VariantCrypter)のフロー

Type 3は主にゲームプログラムを装って2021年11月に米国サイバーセキュリティ社の Gosecure で GameLoader が紹介したパッカーである。

[図16] ゲームプログラムに偽装したマルウェア

このパッカーはゲーム以外にも様々なプログラムに偽装して拡散しており、パッカーのうち最も正常に近いフレームワークを作りだしていることが特徴である。また、韓国国内で最も多く配布され、最も多く変形を試みているため、このレポートでは Type 3を VariantCrypter と命名する。

2) DLL ファイル情報および変形

VariantCrypter は一定の時間が経過すると Loader のファイル情報を変えて配布している。

Category Loader 1(Hex Binary or Bitmap) Loader 2(Array)
// Decoder
Loader 3(Bitmap)
Type A PrivateBinPath.dll
SafeSerializationManager.dll
X UI.dll
Type B SharpStructures.dll
SpaceChemSolver.dll
EverCraft.dll
abzQueueReader.dll
introspective.dll
FuncAttribute.dll
CustomAttrubute.dll
PoolWait.dll
Fort.dll
X DotNetZipAdditionalPlatforms.dll
Type C Fort.dll
Cerbera.dll
MLang.dll
X IVectorView.dll
Type D ArgIt.dll
ArgIteratorZAA.dll
CloneHelper.dll
Egra.dll
TokenImpersonation.dll
NativeVariant.dll
OAA.dll
RangePartition.dll
TweenEngineAPI.dll
Tokenizer.dll
Thookinieng.dll
Type E Plates.dll
KeysNormalize.dll
TargetParameterCount.dll
Wise.dll
Precision.dll
Froor.dll
WebName.dll
Inspector.dll
SchedulingClerk.dll
Doncepre.dll
Metal.dll
Collins.dll
[表6] 2022年11月までに確認された Type 3(VariantCrypter)の変形

VariantCrypter は2022年のうち、計5種の形態が配布された。これは Type A から Type E まで Loader の名前および機能によってタイプを分けることができる。これらの名前は Type A~E まで重複せず、他の Type の DLL を混合させて使用しないため、バイナリ抽出時に名前だけ見てタイプと何番目の Loader かを推測できる。

例を見ると以下の通りとなる。

[図17] Type 3パッカー(VariantCrypter)の Type C ローダー

したがって、上記[図17]の Loader の場合は Type C であることがわかる。VariantCrypter は変形によって計3種類のフローに分けられる。

[図18] Type 3の3種類のフロー

以前から現在まで Type A から E に変わっているため、現在配布されている大半が Type E である。Type E の特徴は、実行できるバイナリ(Loader)が3つであり、従来の Loader 1に含まれているデコード機能が別途になり、Loader 2が作られる。結局[図18]の Type E の Loader 2はデコード機能のみを実行するモジュールである。

3) LOADER 1のデコードメソッド引数3種

まず VariantCrypter は Loader 1を積むためにデコードを行う。この時 VariantCrypter はハードコードされた特定の長さの Key を使用するのが特徴である。

[図19] Type 3 パッカー(VariantCrypter)の Loader 1デコードプロセス

ハードコードされた Key は22byte の文字列で MOD 演算に使用される。その後、メモリに積まれた Loader 1は Loader 2と Loader 3をメモリに積む機能を実行する。したがって、以下のように Loader 1に積まれるときに、Packer フレームワークは Loader 1のメソッドで特定の引数値を渡す。

[図20] Loader 1 積載時に渡される引数値

渡された引数値は Loader 3を積むときに使用する値で、Loader 3をデコードするのに必要な XOR 値とエンコードされた Loader 3のバイナリの位置である。ここで Loader 2は単純なデコーダーであり、この引数値を利用して Loader 3をデコードする。

[図21] Loader 2の Decode メソッド(対象 Loader 3、Key : 「vth」)

3.2.4. Type 4(PureCrypter)

[図22] PureCrypter の公式 HP および PureCrypter(v2)オプション

Type 4は公式 HP で PureCrypter という名前で2021年から販売されている商用パッカープログラムである。しかし PureCrypter はマルウェアの配布によく使われており、韓国国外でも目にすることがある。このパッカーは偽のメッセージボックスを登録することができ、初期ベクトル(ダウンローダー、VBA マクロ、ローダー)とインジェクション方法とインジェクションターゲット、Anti 技法などを設定することができる。

1) フロー
[図23] PureCrypter の構造およびフローの変化

以前は[図23]の最上段の構造とともに実行されるモジュールが合計で4個あった。ここで Loader 1と Loader 3が Anti Tamper Protection 機能を実行し、Loader 2はデコードおよびメモリ搭載機能を実行し、Loader 4が Json フォーマットを処理していた。現在は[図23]の下段の形態のように「Loader 1」モジュール(デコードおよびメモリ搭載機能)と「Loader 2」モジュール(Json フォーマット処理)のみで配布されており、特定の Anti Tamper Protection は消去されたものと推定される。また、最下段の図のように、最近では Json フォーマットを処理するモジュールを他に設定せずに Loader 1にすべてを含んでいることも確認されている。

[図24] Json 処理がすべて含まれた Loader 1の形態(namespace : Newtonsoft.Json)
2) DLL ファイル情報
Loader File Information
1(First) [Random_string].dll
2(Second) protobuf-net.dll
Newtonsoft.Json.dll
[表8] PureCrypter DLL ファイル情報

最近では[図24]のように Loader 2の機能が Loader 1に含まれて拡散されており、Loader 2が存在していない。

3) JSON データ使用(DESERIALIZE)

PureCrypter の代表的な特徴は Json フォーマットデータを使用することである。Json データは最後のインジェクションの振る舞いについてのオプション値で、メソッド引数として使用するための逆シリアル化(Deserialize)プロセスが必要である。そのため PureCrypter は Protobuf-net や Newtonsoft.json のようなフレームワークを利用して Json データを使用している。

[図25] Json データの変換プロセス(Deserialize)

以前は Protobuf-net を使用していたが、最近では Newtonsoft.json フレームワークを使用しているものとみられる。そのため、このモジュールのエンコードされた位置は以下の通りとなる。

[図26] フローおよび Json 処理モジュールの変化(上、過去 vs 下、最近)

また、直近で収集されたサンプルは Newtonsoft.json 機能を別途のモジュールとして使用せず、Loader 1に合わさった形態で拡散している。したがって現在は上記の[図26]のように Json 処理モジュールリソースが存在せず、コード内部に存在する。これは以下の通りである。

[図27] 直近で確認された PureCrypter

3.2.5. Type 5(LogicNP’s Crypto Obfuscator)

1) フロー
[図28] Type 5(LogicNP’s Crypto Obfuscator)のフロー

Type 5は Type 4(PureCrypter)と同じように商用パッカーで LogicNP 社のプログラムである。このパッカーは製作されてからかなり経っているとみられ、韓国国内では2022年の初めから中頃まで時々配布されていた。このパッカーの最も大きな特徴は、基本的にエンコードされた情報によってリソース名の規則が存在し、リソース名を見るとある程度推測できるということである。

[図29] Type 5(LogicNP’s Crypto Obfuscator) 公式 HP
[図30] Type 5(LogicNP’s Crypto Obfuscator)のビルドオプション

LogicNP パッカーは基本的に文字列の変数、制御フローの難読化やアンチデバッグなどのオプションを提供している。

2) リソース名の規則

LogicNP’s Crypto Obfuscator の DLL ファイル情報はランダムなファイル名であり、決められていない。しかし、パッカーが実行に必要なデータをリソースとして持っている。このパッカーは基本的には機能に応じて[表7]のようなリソースデータの名前が付けられる。

Resource name Feature
&& or & PE File (Data.dll)
$ Encoded String
(
ArgumentExternal APIs Name, ..etc)
% PE File (Loader.dll)
[表9] リソース名による規則

このリソースデータと実際の実行ファイルを構造として表すと以下のように整理できる。

[図31] Type 5(LogicNP’s Crypto Obfuscator)の構造およびリソースデータ

実際の不正なファイル(Payload)の場合、パッカー内部に Base64 でエンコードされており、Replace など何度もデコードを経てから配列される。その後 Packer は Loader 1に Payload を渡し、Loader 1を通してインジェクションを実行する。ここにインジェクションメソッドに特徴が存在する。

3) インジェクターメインメソッドのパラメータ(TYPE 2との共通点)

Payload のデコードが終わり、パッカーが Loader 1に分岐するときに渡される引数は以下の通りである。

[図32] Loader 1で渡される引数4つ

この引数は Type 2で紹介した内容と同じであり、インジェクションされるターゲットファイルのパス(path)とインジェクションされるプロセスのコマンドライン(cmd)、そしてインジェクションに使用される Payload(data)が含まれている。これは Type 2、そしてインターネットにて公開された Aeonhack の RunPE メソッドと酷似している。

[図33] インジェクションメイン関数の共通するパラメータ(Type 2、Type 5、Aeonhack’s RunPE)



4. .NET パッカーの国内拡散動向

ここまで Type 1(MajorCrypter)、Type 2(DarkTortilla)、Type 3(VariantCrypter)、Type 4(PureCrypter)、Type 5(LogicNP’s Crypto Obfuscator)の計5つのパッカーを紹介した。

このパッカーの韓国国内の動向は以下の通りである。

[図34] 5つのパッカーの動向(22.07~22.11)

上の[図34]のグラフは2022年7月から2022年11月までに主要クライアントから収集されたサンプルとメールハニーポットで収集されたサンプルで作成した統計資料である。韓国国内では現在までに Type 3(VariantCrypter)が最も多く配布されており、その次に韓国国外のセキュリティ会社でよく言及されていた Type 4(PureCrypter)が多く配布されている。その次が Type 1(MajorCrypter)で、Type 4(PureCrypter)と同じような線を描いていたが、最近は徐々に増加傾向にあり、Type 2(DarkTortilla)と Type 5(LogicNP)は他のパッカーに比べてあまり使用されていない。参考に Type 2はさらにカテゴライズする必要のあるパッカーであり、ほかのパッカーに比べて数量は少ないものの今後さらに増加すると考えられる。

.NET パッカーは主に以下のようなマルウェアで使用されている。

[図35] .NET パッカーで配布されているマルウェア上位8個(韓国国内)

[図35]は紹介されたパッカーを悪用して韓国国内で拡散しているマルウェアの分布を示したものである。拡散しているマルウェアの大半はインフォスティラーと RAT マルウェアであり、1.韓国国内の .NET パッカーの比重で見た内容と大きな差はない。.NET パッカーで最も多く配布されているマルウェアは情報流出型マルウェアの AgentTesla である。全体の37%を占めており圧倒的な1位になっている。このほかにも Formbook、SnakeKeylogger、Lokibot、Remcos などのマルウェアはすべて ASEC ブログでもよく言及されるサンプルである。

また Type 1(MajorCrypter)パッカーは11月末にランサムウェアの配布に使用されたこともある。

[図36] Type 1(MajorCrypter)で配布されたランサムウェアのランサムノート

このランサムウェアは RaaS 型のマルウェアであるとみられ、「*.OBZ」拡張子でファイルを暗号化していた。



結論

このブログでは .NET パッカーの一部のみを取り扱った。比較的配布量の多いパッケージのみをカテゴライズした内容であるため、ここに含まれなかったパッカーもあり、韓国国外では活発に活動していても、韓国国内に流入していないといったパッカーがある場合もある。幸いなことに Microsoft からは Windows 10から新たな遮断 Interface である AMSI が提供されている。AMSI は .NET パッカーだけでなく VBS や JSのようなスクリプト、MS Office から提供される Word、Excel、そして Powershell スクリプトなど、以前から配布されていた難読化されたマルウェアを効率的に遮断できる機能である。そのため AhnLab V3 ではこのインターフェイスを通して .NET パッカーと難読化されたマルウェアを事前に遮断しており、製品使用時はユーザーにこのオプションを ON にして使用することを推奨している。

[図37] V3 製品の AMSI 機能(環境設定 – PC メンテナンス設定 – PC リアルタイムメンテナンス)

AhnLabでは、これらのパッカーを以下のように検知している。

Trojan/Win.MSILKrypt.R478738 (2022.03.21.01)
Trojan/Win.MSILKrypt.R479010 (2022.03.22.03)
Trojan/Win.AgentTesla.C4826923 (2021.12.09.02)
Trojan/Win.MalwareX-gen.C4922823 (2022.01.19.01)
Trojan/Win.MSILKrypt.C5020026(2022.03.21.01)
Trojan/Win.MSIL.R503383 (2022.07.08.03)
Trojan/Win.MSIL.R510208 (2022.12.02.00)
Trojan/Win.MSIL.R492640 (2022.05.16.03)
Trojan/Win.MSILKrypt.R478746 (2022.03.21.01)
Trojan/Win.MSIL.R491654 (2022.05.12.00)
Trojan/Win.MSIL.R479032 (2022.07.13.03)
Trojan/Win.MSIL.R536135 (2022.11.26.00)
Trojan/Win.Loader.C5020045 (2022.03.21.01)
Trojan/Win.MSILKrypt.R479033 (2022.03.23.00)
Trojan/Win.Generic.C5197697 (2022.07.07.04)
Trojan/Win.MSILKrypt.R479202 (2022.03.23.03)
Trojan/Win.MSIL.R5288800 (2022.10.31.00)
Trojan/Win.MSIL.C5134406 (2022.05.19.03)
Trojan/Win.MSIL.R5288800 (2022.10.31.00)
Trojan/Win.MSIL.C5134406 (2022.05.19.03)
Trojan/Win.MSIL.R498082 (2022.06.15.03)
Trojan/Win.MSIL.C5198300 (2022.07.08.03)
Trojan/Win.MSIL.R510204 (2022.10.27.01)
Trojan/Win.MSIL.R510208 (2022.12.02.00)
その他多数

[IOC 情報]

MD5

0aafb32868f183efaf80ba7176ec3a16
138ca47d7eb25b2522090f8a3688f1b9
3456bfcebe8c7d4f988ec4eab5d9c25e
461af5cc340963ea11fcd822bfdb3a62
5d39675de3c860d023f92fbc8ad33300
8b10aff2ad146b2d05700932571d7306
963296ff9287f30af86c6ae029627753
9f36c6884ecc5ac7fe027121871596ed
b43f26346d14e50a9c45658c08fbc9dd
c5c7371e2b483d74c95afe992857a887
c5f5f08ed0ff1aa0134c2d101766fa9f
dd5fce942f380f6130e6c798f2bbdb44
e3662856ae63484de56f4f69019bee4e
016da09b26d08c7f213523b281b3a209
2a6fe3324ecded60b8eb3af192750b9d
47926d4e06f1a28fc1f9bab98f08f310
577b4a8ffd3d2ede7f85c53ee88feaa7
5c3dc31e9aa2777603f97a12def0a9de
5c4d20b4a621d7b81f273b94df51e5da
69835df32c3a41f9caf849700c5c511b
74a5200a7ea77a462e3b6bef77d791e1
7fb55d4603a18e4167d6c75eac2803d8
841e9dcec96b65c9a9c2991180b2f3b2
84c2e71de354539e426781a0db952fa9
8a1d7b15b9a0c2e304462c7415b1ea60
8e81fc66692d64bfe5b5375855aa5d78
9f537825c82946571a945b1d0b5c5b73
aba6ea39e2ad2fbff27f5d26ebfa1108
bc512e753ef24ba7c089db020e07c6da
c6ab29668433ac0e7358b07d4d662cb8
cd644c1ebc45ee3d06445a91284f1767
d311c4b0e72f08e881094f31d0831d54
e2d07c1194008eacff161c48fcb8b1c5
その他多数

URL

hxxps://cdn.discordapp[.]com/attachments/1012175409779052625/1012220255885611028/DHL_SHIPMENT_Dgiqqkwt.png
hxxps://cdn.discordapp[.]com/attachments/1011828934763106316/1012203140214427718/hesaphareketi_Guctuslk.png
hxxp://80.66.75[.]88/Hublast_Idiwdgcw.png
hxxp://80.66.75[.]98/Gpthxnldfea.png
hxxp://80.66.75[.]217:8080/Wliukdbs.png
hxxp://80.66.75[.]103/Rsgbmepvbv.jpeg
hxxp://80.66.75[.]123/Idmna_Gtwobgsx.bmp
hxxp://80.66.75[.]230:8060/Kkrzzsc.jpeg
hxxp://80.66.75[.]238:8021/Xgevj.jpeg
hxxp://80.66.75[.]27/arx-Zanmveyvwvi.bmp
hxxp://80.66.75[.]27/arx-2-Ylqvxlmv.jpeg
hxxp://80.66.75[.]28/a-Aembvui.jpeg
hxxp://80.66.75[.]28/aa-Zgqgzeqgvc.png
hxxp://80.66.75[.]25/pl-Thjct_Rfxmtgam.bmp
hxxp://80.66.75[.]25/arx-Slkmrtswx_Vttmygcq.bmp
hxxp://80.66.75[.]25/pl-Puuyc_Ibpaiuhr.bmp
hxxp://81.161.229[.]7/Re_order_144_23-09-2022_Wuyewluh.png
hxxp://103.57.223[.]182:25258/Vgtznlkxzhi.png
hxxp://104.223.106[.]33/loader/uploads/Qmmaa_Ypaocsue.jpg
hxxp://112.136.239[.]71/Tsfifp_Rhpuibqx.png
hxxp://121.4.69[.]26:50294/Ccijxlpv.bmp
hxxp://147.124.209[.]112/DatedAugust_25th_Needed_Dqeoywpe.png
hxxp://107.172.13[.]154/Vlbmzaqrb_Gtsxcxjx.png
hxxp://107.172.13[.]154/Pjdcopfml_Xxbbkmat.png
hxxp://172.245.142[.]35/77.bmp
hxxp://185.216.71[.]120/Rxefnjsexz.jpeg
hxxp://185.216.71[.]120/Pbdocvt.png
その他多数

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。

5 3 votes
評価する
guest

1 コメント
Inline Feedbacks
View all comments
trackback

[…] 最新 .NET パッカーの種類および韓国国内の拡散動向 […]