「Lazarus」との関連が指摘されるRAT「DACLS」、macOSも標的に

ワンタイムパスワード(OTP)とは、あるユーザに一定時間で変更される一回のみ利用可能なパスワードを通知することによって、オンラインサービスのセキュリティを高めるための仕組みです。多くの法人ネットワークでは、サードパーティのプロバイダによって提供されるOTPのシステムを利用し、アカウントの侵害によりシステムへ不正侵入されることを防ぐ追加の認証として使用しています。

トレンドマイクロは、2020年4月、macOS向けの正規OTP認証アプリを偽装した「TinkaOTP」というアプリを確認しました。調査の結果、この不正アプリは「DACLS(ダクルス)」と呼ばれる遠隔操作ツール(RAT)に酷似していることがわかりました。DACLSは、2019年12月にセキュリティ企業「360 Netlab」によって報告された、WindowsおよびLinuxをターゲットとするバックドア型マルウェアです。この報告によれば、不正アプリが接続するコマンドアンドコントロール(C&C)サーバが通信に使用する文字列から、サイバー犯罪集団「Lazarus」との繋がりが示唆されています。

■サイバー犯罪集団「Lazarus」との関連

「TinkaOTP」を実行すると、インストールして実行するためのアプリケーションバンドルであるDMGファイル「Disk iMaGe」が表示されます。DMGファイルとはmacOSのDisk Copy Imageで作成されたファイルです。アプリを起動しても、最初は不審な動作は確認されません。しかし、隠しファイル~/Library/.mina をLibraryフォルダ内に作成し、 また/Library/LaunchDaemons/com.aex-loop.agent.plist を作成して、隠しファイルが起動時に実行されるように設定します。

図1:隠しファイルを作成するTinkaOTP

また、バンドルされたメインのmach-o実行ファイル/Contents/MacOS/TinkaOTP は、GitHubで入手可能なオープンソースの認証ツール「MinaOTP」という別のOTPアプリをリパックしたものであることが判明しました。

図2:左がTinkaOTP、右がMinaOTP(GitHubより)
図3: TinkaOTPのメインの実行ファイルを逆アセンブルすると、MinaOTPモジュールへの直接参照と、不正な隠しファイルをコピーするためのシェルコマンドが確認できる

隠しファイルである.minaファイルの起点を辿ると、アプリケーションバンドルに含まれるリソースのコピーの名前を「SubMenu.nib」に変更したもので、メインのバックドア機能が含まれていることが確認されました。また、これより以前に確認されているLazarusによるWindows・Linux向けのバックドアとの関連を示す、ハードコードされた文字列c_2910.clsおよびk_3872.clsが確認されました。これらの文字列は、360 Netlabのリサーチャも報告しているように、Lazarusが保管場所として利用していたドメインthevagabondsatchel[.]comへのC&C通信で使用されていた文字列です。

図4:C&Cとの通信で文字列c_2910.clsおよびk_3872.clsが確認できる
図5:Windows・Linux向けバックドアと同様のHTTP Postメッセージ形式

また、メインのバックドアをペイロードとしてドロップする実行ファイルを持つ別の亜種も確認しました。ファイル「SubMenu.nib」は見つかりませんでしたが、ハードコードされたアドレスからペイロードをダウンロードし、隠しファイルとしてのペイロードの中に展開して実行します。アドレス「loneeaglerecords[.]com」を調査すると、ドメインは11年間前に登録され存続しているものですが、発行されたHTTPS証明書はかなり最近発行されたものです。ドメインは50[.]87[.]144[.]227に割り当てられており、このIPは、「ADWIND」や「URSNIF」など、さまざまな種類のWindows向けマルウェアをホストしていることが確認されています。差異はあるものの、ダウンロードされる隠しファイルのペイロードは両方同じです。

図6:別の亜種がダウンロードするペイロードのアドレス

Lazarusは、このmacOS向けバックドアをWindows・Linux向けDacls RATの後続種として作成したようです。これは、新亜種のダウンロード先アドレスから、最新のIP割り当てとHTTP証明書を照合することによって確認できます。

■バックドア活動とその持続化

バックドアのインストールシーケンスを見ると、/LaunchAgents/com.aex-loop.agent.plistおよび/Library/LaunchDaemons/com.aex-loop.agent.plistによって活動の持続化を意図していることがわかります。設定ファイル/Library/Caches/com.applestore.dbを開始してC&CサーバIPを設定し、リモートセッション情報を取得します。ボットのプラグインをロードするとC&Cサーバへ接続しコマンドを待機することが可能になり、受信したコマンドに基づいて設定ファイルを更新し、AES-CBCアルゴリズムによってファイルを暗号化します。設定ファイルがすでに存在する場合、新しいセッションが開始されると復号されます。

図7:逆アセンブルによって持続化のためのコードが示される

インストールされると、既存の設定ファイルが存在するかどうかを確認します。ない場合は設定ファイルを作成し、C&Cサーバのアドレスその他、C&Cセッション情報などセットアップに関連するデータを書き込みます。ボットの接続先である、最初のC&CサーバIP 「67[.]43[.]239[.]146 」および「185[.]62[.]58[.]207」はバックドアのファイルにハードコードされており、設定ファイルに書き込まれます 。次に設定ファイルは/Library/Caches/com.applestore.dbとして作成され、暗号化されます。 完了すると、バックドアは特定の機能を実行するプラグインをロードします。

図8:設定ファイルに書き込まれた最初のC&CサーバIP。ファイルは、更新された新しいサーバのIPアドレスに書き換えられている場合がある
図9:設定ファイルを作成してAES-CBCで暗号化する

C&CサーバのIPからは、正規のトラフィックもこのドメインによってホストされていることが確認されました。つまり、これらのドメインをブロックすると他の正規サイトに影響が生じる可能性があります。

■感染後の攻撃活動

最初に逆アセンブルされたコードを解析すると、IPとプラグインをロードするために使用される文字列からは、文字が抜け落ちているように見えました。しかし、文字を詳しく調べると、間隔が意図的に空けられていることが確認できました。これは、検出を回避する目的と考えられます。

図10:検出回避のために細工された文字列

C&Cサーバから応答を受け取った後、ヘッダをチェックして、実行するプラグインを決定します。各プラグインは、初期化時にそれぞれ該当する機能をロードするようにテンプレート化されています。macOS向けと、Windows・Linux向けで使用されるプラグインを比較すると、いくつかの違いと追加された機能が明らかになりました。

図11:ヘッダをスキャンする
プラグイン名 文字列 機能
Plugin_CMD /bin/bash

受信コマンドの実行

リバースシェル可能

Plugin_FILE plugin_file ディレクトリを検索 ファイルのダウンロード 開く、書き込む、削除する
Plugin_PROCESS plugin_process

実行中のプロセスからデータを収集

プロセスの作成

プロセスの終了

Plugin_TEST plugin_test サーバが発行した指定アドレスへのネットワークアクセスを確認
Plugin_RP2Pv plugin_reverse_p2p ボットとサーバ間のネットワークプロキシをセットアップ
Plugin_LOGSEND logsend ログサーバへ接続 システムをスキャン 収集したログの送信
PLUGIN_SOCKS plugin_socks Socks4スレッドを開始してSSL接続をセットアップする

表1:プラグインのテンプレートおよび機能

CMDプラグインは、bashスクリプトとして追加してからターミナルで実行する形でシェルコマンドを実行するために使用されます。受信したパケットに設定された引数に基づいて、リバースシェルを実行する機能も備えています。

図12:CMDプラグイン

FILEプラグインは、Windows・Linux向けと同じ機能を実行します。ファイルの読み取り、書き込み、削除、ダウンロード、特定のファイルのディレクトリのスキャンを実行できます。

図13:FILEプラグイン

引数を調べると、受信したパケットからPROCESSプラグインが取得され、プロセス情報の収集、新しいプロセスの実行、実行中のプロセスの終了などの機能を実行していることがわかります。収集されるプロセス情報には、ターゲットプロセスのユーザ名、ユーザID、グループID、プロセスの親IDが含まれます。

他のプラグインはサーバから渡された引数の関数を直接呼び出して実行しますが、PROCESSプラグインは、サーバがプラグイン自体から関数を間接的に呼び出す点で異なります。PROCESSプラグイン関数のアドレスの場所は、実行前に最初に呼び出されます。

図14:PROCESSプラグイン
図15:収集された情報を送信前にフォーマットするPROCESSプラグイン

TESTプラグインは、指定されたアドレスに接続してネットワークへのアクセスを確認します。一方、RP2Pvプラグインは、C&Cとクライアントをつなぐプロキシサーバを作成します。これにより、コマンドで指定された別のC&Cへの別の接続が作成され、プロキシとして機能し、感染したコンピュータから実際のC&Cサーバへとトラフィックをリダイレクトします。

図16:TESTプラグイン
図17:RP2Pvプラグイン

LOGSENDプラグインは、関数「start_scan_worm」を使用してシステムをスキャンすることによりシステム情報を収集し、指定されたログサーバにデータを送信します。また、SOCKSプラグインは、SSL(Secure Sockets Layer)関連のトランザクション用にsocks4を介して接続を作成します。このプラグインは、Windows・Linux向けバックドアには確認されませんでした。 

図18:LOGSENDプラグイン
図19:SOCKSプラグイン
■結論

Lazarus によるWindows・Linux向けバックドアの解析結果から、彼らが幅広い知識を持つことがうかがえます。2019年末に報告した、Lazarusとの関連が推測されているmacOS向けバックドアの解析結果からも、複数のOSを攻撃できるマルチプラットフォームへの変化は、彼らがターゲットを拡大していることを示しています。また、これまでの活動に見られなかったプラグインの追加は、彼らが将来の攻撃を想定し試していることも示唆しています。

注目すべきことに、2019年の不正なマクロによる攻撃で初めてLazarusのmacOSへの攻撃があらわになった直後に、彼らはファイルレスのAppleJeus作戦を続投し急速な発展を示しました。また、最初の亜種で実装されていた唯一の検出回避方法は、ペイロードを隠しファイル内にコピーすることでしたが、2番目の亜種では、ペイロードをダウンロードする手法に変更しています。それほど洗練された攻撃ではないものの、AppleJeusがファイルレスへ素早く移行した点を考えると、Lazarusは今回解説した活動でも同様の変更をまもなく展開するであろうと考えられます。

また、Lazarusは、多層なセキュリティ機能の需要の高まりを利用することによって、ボット拡散のために特定のユーザを狙っていることがうかがえます。OTP認証アプリは暗号通貨のウォレットや取引の管理にも使用されており、これはサイバー犯罪集団のもう一つの標的となっています。彼らはさらに、モバイルプラットフォームにも攻撃の手を拡大する可能性があります。彼らが利用したMinaOTPのソースには「MinaOTP-iOS」と呼ばれる別のiOS向けプロジェクトが含まれているため、これをモバイル用に利用したバージョンへ再構築される可能性があります。トレンドマイクロでは、引き続きLazarusの活動を監視していきます。

■トレンドマイクロの対策

macOS 向けバックドア「DACLS」による脅威からシステムを保護するために、ユーザは公式および正規のマーケットプレイスからのみアプリをダウンロードしてください。

 「ウイルスバスター™ コーポレートエディション XG」はクロスジェネレーション(XGen)セキュリティアプローチにより、グローバルスレットインテリジェンスに基づくさまざまな高度なセキュリティ技術に加えて、次世代の AI技術のひとつである高度な機械学習型検索を活用し、実行前・実行後両方に対応する独自のアプローチで、未知のファイルが脅威かどうか判別します。

ウイルスバスター  for Mac」は、先進技術と高い実績を融合した防御アプローチ、XGenセキュリティを導入し、機械学習型スキャンなど先進のAI技術と実績ある既存の対策技術を組み合わせた多層防御により、日々巧妙化し多様化する脅威からシステムを守ります。

■侵入の痕跡(Indicators of Compromise 、IoCs)

侵入の痕跡(Indicators of Compromise、IoCs)はこちらを参照してください

※調査協力:Kazuki Fujisawa

参考記事:

翻訳: 室賀 美和(Core Technology Marketing, Trend Micro™ Research)