Album Stealer が Facebook の成人向けコンテンツを求めるユーザーを標的に

情報を盗むマルウェアは、今日のサイバー攻撃の状況でよく見られます。 Zscaler ThreatLabz チームは、さまざまな攻撃キャンペーンで、多くの新しいタイプのスティーラー マルウェア ファミリを発見しました。 最近、Zscaler ThreatLabz の研究チームは、Album という名前の新しい情報窃盗プログラムを発見しました。 このブログでは、Album Stealer のマルウェア配布キャンペーンと技術的な詳細について説明します。

キーポイント:

Album Stealer は、バックグラウンドで悪意のあるアクティビティを実行しながらおとりのアダルト画像をドロップするフォト アルバムに変装します。
このマルウェアは、正当なアプリケーションを使用して悪意のある DLL を実行するサイド ローディング手法を使用して、複数の段階での検出を回避します。
Album は、被害者のマシン上のさまざまな Web ブラウザーから Cookie と保存されている資格情報を盗みます。
Facebook 広告マネージャー、Facebook ビジネス アカウント、Facebook API グラフ ページからも情報が盗まれます。
Album は、ConcurrentDictionary クラスを使用して難読化を行い、重要な文字列とデータをマスクします。
Album は、感染したシステムから収集した情報をコマンド アンド コントロール サーバーに送信します。
これらの攻撃を開始する脅威グループは、ベトナムにある可能性があります。

連鎖感染:

アルバム スティーラーの攻撃は、成人向けの女性の写真を含む偽の Facebook プロフィール ページから始まります。 攻撃者はこれらのプロファイルを作成して、犠牲者をリンクをクリックさせ、画像を含むアルバムをダウンロードさせます。 被害者がそのリンクをクリックすると攻撃が開始され、Microsoft OneDrive で頻繁にホストされている zip アーカイブ ファイル、または悪意のある zip ファイルをホストする別の悪意のあるサイトにリダイレクトされます。 図 1 に示すグラフには、完全な攻撃チェーンが含まれています。

図 1: Album Stealer の攻撃チェーン

図 2 は、Zscaler のクラウドに最初にダウンロードされた悪意のある zip ファイルを示しています。

図 2: Zscaler のクラウドで識別された Album Stealer ダウンローダ

テクニカル分析

このキャンペーンで使用される Facebook URL の例は l.facebook です。[.com/l.php?u=https://rebrandtop[.]top/clgtf?fbclid={ID}&h={値}&__tn__=*I&c[0]={値}。 このリンクは、図 3 に示すように、悪意のある zip ファイルを含む共有 OneDrive フォルダー、または hxxps://cdn などの悪意のある zip ファイルをホストする別のサイトにリダイレクトします。[.ubutun[.]xyz/Main/Album.zip?random=13131. zip のファイル名はキャンペーンによって異なり、Album.zip、AlbumSuGarBaby.zip、albumgirlsexy.zip、sexyalbum.zip などの名前が付いています。

図 3: 悪意のある zip ファイルをダウンロードするための Onedrive リンク

zip アーカイブには、次のような 3 つのファイルが含まれています。

アルバム.exe
PdfiumControl.dll
データ.dat

アルバム.exe

Album.exe は、「Tresorit kft」によって署名された正規の TresoritPdfViewer 実行可能ファイルです。 このファイルは、DLL サイド ローディング攻撃に対して脆弱です。 Album.exe が実行されると、プログラムは「PdfiumControl.dll」という名前の依存関係を読み込みます。この場合、これは悪意のある DLL です。 悪意のある PdfiumControl.dll 内のコードは、その後、自己解凍型アーカイブ (SFX) ファイルである data.dat ファイルを実行します。 SFX アーカイブを抽出すると、おとりとして使用される女性の画像が含まれています。 バックグラウンドで、悪意のある DLL は「%AppData%RoamingCanon」ディレクトリを検索して活動を開始します。 ディレクトリが存在しない場合は、作成されます。

次に、悪意のある PdfiumControl.dll がいくつかのファイルを解読して投下します。 ファイルの内容は、辞書に暗号化された形式で保存されます。 ConcurrentDictionary クラスは、キーと値のペアを使用してコンテンツをフェッチするために使用されます。 データは Base64 でデコードされ、GZip を使用して解凍されます。 最終的なペイロードは、AES アルゴリズムを使用して復号化されます。 AES キーは、ハードコードされたパスワードとソルトに基づいて Rfc2898DeriveBytes クラスを使用して、1000 回の反復で生成されます。 AES キーは 256 ビットで、初期化ベクトルは 128 ビットです。 図 4 は、以下の復号化アルゴリズムを示しています。

図 4: Album Stealer Decryption ルーチン コード

復号化プロセスでは、次のファイルがドロップされます。

%AppData%RoamingCanonCNQ.exe
%AppData%RoamingCanonCurl.dll
%AppData%RoamingCanonLenovo.TVT.CustomerFeedback.Manager.dll
%AppData%RoamingCanonlog4net.dll

次に、ファイル CNQ.exe が実行されます。

CNQ.exe

CNQ.exe は、「D-iOSiCloud」の別の正規製品です。 実行可能ファイルは「Shenzhen iMyFone Technology Co., Ltd」によって署名されています。 このバイナリは、DLL サイド ローディングに対しても脆弱であり、Curl.dll という名前の悪意のあるファイルをロードするために使用されます。

持続メカニズム

Curl.dll は、再起動のたびに「CNQ.exe」を実行する Autostart レジストリ キーを作成します。

キー: HKCUSOFTWAREMicrosoftWindowsCurrentVersionRunSpeaker2020

値: C:Users{UserName}AppDataRoamingCanonCNQ.exe

さらに、Curl.dll はディレクトリ %AppData%RoamingBluestack を作成します。 DLL は、ファイル http://cdn.ubutun もダウンロードします。[.xyz/Canon/sparkle-windows.xml and saves the result to:%AppData%RoamingCanonsparkle-windows.xml. The file sparkle-windows.xml contains the following:

The Curl.dll downloads a payload from the URL in this file (e.g., cdn.ubutun[.xyz/Canon/app{18 digit numeric}}.zip) and saves the result to %AppData%RoamingCanonapp{{18 digit numeric}}.zip. Next the Curl.dll extracts the contents of the zip file into the directory %AppData%Roaming/Bluestack/. After extraction, this folder contains the files below:

DiskCompactionTool.exe
Lenovo.TVT.CustomerFeedback.Manager.dll
WDLocale.dll
WDSyncConfiguration.dll
WDSyncSettings.dll
DiskCompactionTool.exe.config

DiskCompactionTool.exe

Next, the DiskCompactionTool.exe file is executed, which is a legitimate tool named “WD Sync” signed by “WESTERN DIGITAL TECHNOLOGIES”. The DiskCompactionTool.exe is also vulnerable to a DLL side loading attack, which is exploited to load a malicious file named “WDLocale.dll” . The malicious WDLocale.dll file creates 2 run registry keys for persistence to execute at every reboot as shown below:

Registry key:SOFTWAREMicrosoftWindowsCurrentVersionRun

Name:BlueStacks_bgp64

Value:C:Users{UserName}AppDataRoamingBluestackDiskCompactionTool.exe

Registry key:SOFTWAREMicrosoftWindowsCurrentVersionExplorerStartupApprovedRun

Name:Speaker2020

Value:C:Users{UserName}AppData\RoamingBluestackDiskCompactionTool.exe

The malicious WDLocale.dll file checks for the presence of the file: C:Users{UserName}DesktopRoamingBluestackversionid.txt

If the file does not exist, it will be created. This file is used to store system information and a unique system ID. The DLL will then perform a beacon the command and control server to obtain further commands, which are saved in the file “%AppData%RoamingBluestackcommonupdate”. ThreatLabz observed the server send the following commands as shown in Figure 5:

“120000|https://cdn[.]ubutun.xyz/App/Bravia.txt||Bravia.exe|Bravia|true|true|true|true|4127|」

図 5: C&C サーバーからコマンドを要求する Album Stealer

C&C サーバーからの応答には、コマンドのステータスを追跡するために使用されるタスク ID が含まれています。 図6は、C&Cサーバーがステータスを確認し、msgパラメータにベトナム語で「ステータスの更新が成功しました」を含むタスクを実行した結果を示しています。

図 6: Album Stealer の更新ステータス ビーコン

図 5 に示すタスクは、WDLocale.dll に「cdn」に接続するよう指示します。[.ubutun.xyz/App/Bravia.txt” that serves this URL “http://cdn[.ponamei[.top/App/app{18 digit numeric}.zip” and further , it downloads zip file and saved in the “%AppData%” directory “%AppData%RoamingBluestackapp{18 digit numeric}.zip”.After downloading the file, the content is a zip file that is extracted to “%AppData%\RoamingBravia” folder containing the following files:

Bravia.exe
BouncyCastle.Crypto.dll
EntityFramework.dll
EntityFramework.SqlServer.dll
EntityFramework.SqlServer.xml
EntityFramework.xml
Newtonsoft.Json.dll
Newtonsoft.Json.xml
System.Data.SQLite.dll
System.Data.SQLite.EF6.dll
System.Data.SQLite.Linq.dll
System.Data.SQLite.xml
CNQMUTIL.dll

Bravia.exe

The file Bravia.exe is legitimate and signed by “Canon Inc.”, which once again is vulnerable to a DLL side loading attack. When Bravia.exe is executed, it will load a malicious file named “CNQMUTIL.dll”. When loaded, this malicious DLL will search for the directory “%AppData%RoamingBraviaTemps” and if it exists, will delete any files inside this directory. If the directory is not present then, the malicious CNQMUTIL.dll creates a Temps folder at “%AppData%RoamingBraviaTemps”.

The strings used in the DLL payload at different stages are stored in a ConcurrentDictionary class as key/value pairs. Here the different strings are not used statically and fetched only at runtime using a key from the ConcurrentDictionary. Next the code checks if the file “%AppData%RoamingBluestackversionid.txt” exists and obtains the system ID from the file. Otherwise, the malware creates the file with the system ID.

Version ID

The version ID contains system information that is generated from the ManagementClass, which retrieves data from WMI using a specific class path. The code below in Figure 7 contains the recipe to create the version ID string, with various system information concatenated together.

Fig 7: Album Stealer version ID generation using system information code

The function smethod_5 retrieves CPU information as shown in Figure 8.

Fig 8: Album Stealer obtaining processor related information using Win32_Processor WMI class

The smethod_3 contains the ManagementClass class that retrieves data from WMI using a specific class path including the UniqueId, ProcessorId, Name and Manufacturer. Figure 9 shows the code for smethod_3.

Fig 9: Album Stealer smethod_3 code to retrieve system data using the Management class

Next, the code calls the function smethod_6 to get information regarding the BIOS and fetches the information below using the Win32_BIOS WMI class:

Manufacturer
SMBIOSBIOSVersion
IdentificationCode
SerialNumber
ReleaseDate
Version

Fig 10:Get BIOS related information using Win32_BIOS WMI class

Next, the code calls the function smethod_8 and fetches the following information using the Win32_BaseBoard WMI class.

Model
Manufacturer
Name
SerialNumber

Next, the code calls the function smethod_9 to obtain the following information about the VideoController using the Win32_VideoController WMI class.

DriverVersion
Name

Next, the code calls the function smethod_10 to obtain the system’s MAC address using the Win32_NetworkAdapterConfiguration WMI class if IPenabled is true.

The system information shown above is then hashed using MD5. The resulting MD5 hash is broken up into four byte segments separated by dashes, for example, “1ED9-A838-B7E5-A6AC-A107-{4 digit numeric}-{4 digit numeric}-{4 digit numeric}”. This system identifier value is then stored in the versionid.txt file and sent to the command and control server.

Data Stealing

Most information stealers have a hardcoded list of known locations for applications that store sensitive data related to credentials, cookies and other user data. Then they fetch those files and extract the relevant information. In contrast, Album Stealer searches for file names instead of static paths, to steal data from any browser with specific file names without providing a static path. Album Stealer enumerates through all folders and searches for the files starting in the %AppData% folder

Local State
Login Data
Cookies
cookies.sqlite

Further, Album searches and creates a list of files found in %AppData% and copies those files into

“%AppData%RoamingBraviaTemps”. Based on the browser, Album copies different files in the Temps folder as shown in Figure 11.

Fig 11: Example web browser login and cookie data targeted by Album Stealer

Chromium-Based Browsers

Album Stealer targets Chromium-based browsers including the following:

Google Chrome
Opera
Microsoft Edge
Brave

Credentials Stealing

Album Stealer targets the Local State, Login Data and Cookies files. The Local State file contains keys that are required to decrypt the web browser data. First Album Stealer reads the Local State file and loads the JSON file to recover the os_crypt and encrypted_key parameters as shown in Figure 12.

Fig 12: Album Stealer retrieving the encrypted key from the Local Data file

Then Album extract the Base64 encoded key from the JSON and decrypts the key via the ProtectedData.Unprotect function in C# as shown in Figure 13.

Fig 13: Album Stealer’s web browser data decryption using the ProtectedData.Unprotect function

The Login Data file contains saved usernames and passwords for browsers in SQLite format. Passwords are stored in encrypted form. Album Stealer opens the Login Data database file({Browser}Profile_login_{Datetime})and executes an SQL query and uses SqliteDataReader to extract the “action_url”, “username_value” and “password_value” fields and saved in the variables domain, user and pass respectively as shown in Figure 14.

Fig 14:Retrieve stored Credentials from chromium browsers

The password_value field is decrypted using the AES key extracted previously by using GcmBlockCipher’s DoFinal and ProcessBytes methods as shown in Figure 15.

Fig 15: Album Stealer decrypting web browser data

Cookie stealing

Further, Album Stealer opens the cookies database files({Browser}Profile_cookies_{Datetime})and executes an SQL query and uses SqliteDataReader to extract the following fields:

host_key
name
encrypted_value
Expires_utc

The encrypted_value field is decrypted using the AES key extracted previously. This information is stored in variables named domain, name, value and Expires as shown in Figure 16.

Fig 16: Album Stealer cookies stealing code

Firefox

Album extracts information from Firefox browser’s cookies.sqlite file by opening the database(FF_cookies_{Datetime}) and executing an SQL query to extract the information below:

host_key
Name
encrypted_value
Expires_utc

These values are saved in the variables: domain, name, value and Expires parameters, respectively.

Facebook data stealing

Album steals stored credentials of Facebook and cookies from the browser by searching for cookies related to Facebook. This information is used to steal information from the Facebook API graph, Facebook Ads Manager, and Facebook Business accounts pages. Album uses the graph API to obtain information related to business accounts and Ad accounts.

Business account details

Album steals the following information related to Facebook Business accounts:

id
name
created_time
permitted_roles
is_disabled_for_integrity_reasons
sharing_eligibility_status
verification_status
extended credits
billed_amount_details
billing_period
Cookies

The screenshots below in Figure 17 and Figure 18 show the code to steal this data and the respective parameter names.

Fig 17: Album Stealer harvesting business account data from Facebook pages

Fig 18: Album business account data parameters

Ad account details

Album Stealer harvests the following information related to Ad accounts associated with a victim’s Facebook accounts:

account id
Account_status
amount_details

currency
Total_amount

Network Communication

Album Stealer sends all data to the command and control server individually for different browsers. Figure 19 shows Album sending credentials and cookies information for the Google Chrome browser with the following HTTP query parameters:

Keyid = versionid (based on system information)
&ran = Unique ID attached in sample

Fig 19:Send stolen data to command & control server

Album Stealer will also send Facebook related data of victim’s profiles. After all data is sent, Album Stealer terminates itself. An observed response from the C&C was “{“status”:0,”msg”:”Đã xảy ra lỗi”}”. The msg parameter is in the Vietnamese language that translates to “Error! An error occurred. Please try again later”.

Conclusion

Threat actors are targeting Facebook users to download a malicious archive file that contains adult images as a decoy, while deploying a new information stealer that ThreatLabz has named Album. Album Stealer may bypass security products by leveraging legitimate applications that are vulnerable to DLL side loading. The Zscaler ThreatLabz team continues to monitor this campaign and protect users.

Zscaler’s multilayered cloud security platform detects indicators, as shown below:

Win32.PWS.Album

Indicators of Compromise (IOCs)

Indicators

Description

d09be7c2784e05c615c3f1414a9b534d

Zip file

A844D8580BA205BCBB5F72DE6DC60352

1F79BB67A22EEDC2E5BAC2037A07710A

2131FFBB5613CC2F40D7394A2ECB71D7

B49CC8837C6D418B133BF4F0D455098D

Clean file used for sideloading the malicious DLL.

5E0C580C5D84780D56C069D8F74F67AA

EBDDEEB9823DDCC6FA8201431601B0BF

33F4C955FC38DD3A313E4A451345CAB9

11AD0039556FB04D4BA07DC89D9ABE3D

4A4D0728D0C1E3E06A90F26655FF58F3

435769AD9BE3B7C64A0089D833FC8E5E

D7E1B8C5FACE37FD8B01EEE9974A0A7E

Malicious DLL file

267cfa3c3c9cbff218bbd4ec098e4ab9

Dat file with images

cdn.ubutun[.]X Y Z

rebrandtop[.]上

検索アルバム[.]上

ショップアルバム[.]X Y Z

ネウカ[.]上

安全に保管する[.]上

ポナメイ[.]上

ファウンダズ[.]X Y Z

マイクロトビッグ[.]X Y Z

CNC

*** これは、Rajdeepsinh Dodia によって作成されたブログ カテゴリ フィードからの Security Bloggers Network シンジケート ブログです。 元の投稿を読む: https://www.zscaler.com/blogs/security-research/album-stealer-targets-facebook-adult-only-content-seekers

Leave a Comment

Your email address will not be published. Required fields are marked *