This post is also available in: English (英語)
概要
Unit 42リサーチャーは、クリプトジャックマルウェアの新たな亜種Black-Tを発見しました。同亜種を作成した攻撃グループTeamTnTは、侵害したクラウドシステム上のAWS認証情報ファイルを標的とし、Monero (XMR)をマイニングすることで知られています。Black-TはTeamTnTの従来の手法、戦術、手順(TTP)を踏襲し、公開されたDockerデーモンAPIを標的として被害組織の脆弱なシステム上でスキャンやクリプトジャックオペレーションを実行します。ただし、Black-TのマルウェアサンプルのコードからはオペレーションTTPの変化も読み取れます。
これら新たなTTPでとりわけ注目すべきは、既知のクリプトジャックワーム(Cruxワーム、ntpdマイナー、Redisバックアップマイナー)を対象にこれらの活動を停止させる点です。また、TeamTnTはこれまで、mimipyやmimipenguinを使ってメモリ パスワード スクレイピング オペレーションの利用を実装してきましたが、これは広く利用されているWindows用メモリ パスワード スクレイパー機能Mimikatzの*NIX版です。MimikatzはWindows OSシステムから平文のパスワードをスクレイピングする機能を持つツールで、ほかにもpass-the-hash、pass-the-tokenなどのオペレーションを実行できることから、これを使えば攻撃者がユーザーセッションをハイジャックできるようになります。mimipenguin経由で取得・識別されたパスワードはTeamTnTのコマンド & コントロール(C2)ノードに持ち出されますが、TeamTnTがTTPにこの手のポストエクスプロイトオペレーションを使う様子が確認されたのは今回が初めてです。
Black-Tツールはまた、3種類のネットワーク スキャン ツールを使用して、侵害されたシステムのローカルネットワークや任意の数の公開ネットワーク内で公開されているDockerデーモンAPIを追加識別し、クリプトジャックオペレーションを拡大する機能も備えています。TeamTnTは以前からmasscanとpnscanという2種類のツールを使用していましたが、今回はGoLangで書かれたネットワークスキャナzgrabを追加していました。TeamTnTのTTPにGoLangで書かれたツールが組み込まれているのが発見されたのはこれが初めてです。またmasscanネットワークスキャナオペレーションが更新され、5555/tcpの検索が含まれるようになっていました。5555/tcpをスキャナに追加した正確な目的はわからないものの、AndroidベースのデバイスでXMRクリプトジャックが発生しているという事例が報告されていることから、この追加により未知の標的を対象とするクリプトジャックオペレーションの拡大を狙っている可能性も考えられます。ただし、TeamTnTがAndroidデバイスを標的にしていることを裏付ける証拠はほとんど確認されていません。
Unit 42のリサーチャーはBlack-Tを含むTeamTnTの複数のスクリプトにドイツ語のフレーズが複数挿入されていることを発見しました。ASCIIアートバナーに続くスクリプト先頭行には、 verbose mode ist nur für euch 😉 damit ihr was zum gucken habt in der sandbox :-* とあります。これは「 あなただけにとくべつに冗長モードを用意しましたよ😉 サンドボックス上で何かしらは見つかるようにね( ̄ー ̄) 」という意味です。TeamTnTスクリプト内ではほかにもドイツ語のフレーズが複数使用されています。
パロアルトネットワークスのPrisma Cloudを利用すれば、クラウドの環境設定やInfrastructure As Code (IaC)テンプレートに潜む脆弱性や不適切な設定を高い精度で検出し、その後の本番システムのデプロイを成功にみちびき、攻撃グループTeamTnTのもたらす脅威から自社のクラウドのデプロイを保護できるようになります。これにくわえてパロアルトネットワークスの 次世代ファイアウォールに最新のApp ID や脅威シグネチャをインストールすれば、既知のXMRパブリック マイニング プールや悪意あるドメイン、IPへのネットワーク接続による自社環境への侵害を阻止することができます。
Black-Tの詳細
Black-TスクリプトはTeamTnTのドメインであるhxxps://teamtnt[.]red/BLACK-T/SetUpTheBLACK-Tから侵害されたクラウドシステムにダウンロードされます。このクラウドシステムが公開されたDockerデーモンAPIを維持しています。侵害されたシステムにダウンロードされたスクリプトは、以下のアクションを実行します。
最初に、この亜種がバージョン1であることを宣言するASCIIアートバナーが表示されます(図1参照)。次にこのスクリプトは、クリーンアップやシステムの準備といったオペレーションを実行し、侵害されたシステムにすでに存在している既知のクリプトジャックマルウェアがあれば除去します。Black-Tはとくに、競合するクリプトジャック プロセス ファミリであるKinsingマルウェアを標的としています。また、TeamTnTの作成者は、そのクリプトジャックマルウェアを増強するために、以前のTeamTnTツール内とこのBlack-Tツール内の両方に、マルウェアコードの一部をいくつかコピーしていることにも注目すべきでしょう。具体的には、このコピーされたコードでAliyun、Tencentのクラウド セキュリティ ソフトウェアを除去・回避し、AWS認証情報の窃取機能とmasscanスキャン機能を追加しています。
アクティブなXMRマイナーの無効化
Unit 42リサーチャーはまた、TeamTnTの作成者は、前述したkinsingクリプトジャックプロセスに加え、競合する他の潜在的なクリプトジャック マルウェア ファミリも標的にしている、ということの証拠も発見しました。こうした競合するクリプトジャックプロセスには、kswapd0、ntpdマイナー、Redisバックアップマイナー、auditdマイナー、migrationマイナー、Cruxワーム(図2参照)、Cruxワームマイナー(図3参照)が挙げられます。Black-Tのマルウェアにこれら潜在的なクリプトジャックプロセスが組み込まれているのが発見されたことから、作成者はこうしたクリプトジャックプロセスをクラウド処理リソースの競合プロセスとみなしていることが考えられます。これはまた、防御チームが現在把握していないクリプトジャックプロセスがいくつか存在し、こうした未知のクリプトジャックプロセスへの対策となるルールを識別および構築するための取り組みが必要であることも示唆しています。cruxpool[.]comというXMRパブリック マイニング プールが存在しますが、Cruxワームがcruxpoolパブリック マイニング プールを使用しているのか、それともこれは単にクリプトジャックのオペレータによる巧妙な命名に過ぎないのかについて、判断の裏付けとなる追加情報は今のところありません。
Black-Tマルウェアは、既知の全クリプトジャックプロセスのクリーンアップに続き、侵害されたシステム上で現在動作中の既知の全xmrigプロセスのクリーンアップオペレーションも実行します。XMRigは、XMR仮想通貨のマイニングに必要なコンピューティングオペレーションを容易にするオープンソースプロセスとして普及しています。
特徴は、TeamTnTはそのスクリプト内でカスタマイズされたプロセスを使用している点です。これらのカスタムプロセスは、従来の*NIXプロセスに代わるもので、プロセス名に「tnt」というプレフィックスが追加されています。例えば、tntrechtは侵害されたシステムの/usr/local/bin/tntrechtにロードされるカスタムプロセスですが、これを使って正規の*NIXプロセスの権限をハイジャック・修正してからTeamTnTのオペレーションに使用しようとしていると考えられます。修正された正規プロセスは、tntwgetやtntcurlのように、「tnt」というプレフィックスを付けて名前が変更されます。
システムのセットアップ
侵害されたシステムのクリーンアップが完了すると、スクリプトはさらにシステム環境のセットアップを行います。PATH変数のPATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbinを設定し、新しいDNSサーバーとして8.8.4.4と8.8.8.8を指定します。そして最後に、iptables -Fコマンドを使用して、確立されているIPテーブルルールをすべてフラッシュします。
スクリプトは次に、侵害されたシステムにどの*NIXパッケージマネージャがインストールされているかを確認します。パッケージマネージャには、Advanced Package Tool (APT)、Yellowdog Updater、Modified (YUM)、またはAlpine Linuxパッケージマネージャ(APK)があります。スクリプトは、識別されたパッケージマネージャのタイプに関係なく、masscan、ネットワーク パケット トラフィック リスニングを実行するlibpcap、pnscan (ネットワーク スキャン ツール、ただし現在のサンプルでは、pnscan機能はコメントアウトされています)、zgrab (zmap用にビルドされたGoLangツール)、Docker、jq (柔軟なコマンドラインJSONプロセッサ)をインストールします。図4にセットアップのイメージを示します。
Unit 42のリサーチャーは、TeamTnTがより高度なクリプトジャック機能(具体的には、さまざまなクラウド環境内の脆弱なシステムを識別するための機能)をツールセットに組み込む計画を持っているものと考えています。TeamTnTがネットワーク スキャナ ソフトウェアzmapを使用した様子はこれまで確認されていませんでしたが、そのzmapを使用しているだけでなく、あまり知られていないzgrabというツールも使用しています。zgrabはアドレスバナーの取得に使われるGoLangで書かれたツールです。同グループがこのデータをどう使おうとしているのかはさしあたり不明ですが、自分たちのオペレーションのスキャナ機能をテストするためにzgrabを試そうとしている可能性は高く、おそらくテスト結果に基づいた調整を加えていくものと考えられます。この見かたはzgrab GitHubページの説明からも裏付けが取れます。というのも、同GitHubには「zgrabはおおよそステーブルとはいいがたく、いつAPIを利用できなくなるかわかりません。このため必ずvendorディレクトリを作ってzgrabのローカルコピーを保持し、依存関係の問題発生を回避するようにしてください」という説明がされているからです。この見かたはさらに、zmapがBlack-Tが使っていた元のzgrabツールを本稿を執筆中に非推奨とし、zgrab2という新バージョンのzgrabに置き換えた事実によっても裏付けられています。
Unit 42リサーチャーは、TeamTnT脅威攻撃グループがBlack-Tツールのスキャン機能を非常に重要視していることをよく認識しています。なぜなら現在3種類のスキャナがこのツールに組み込まれているからです(masscan、pscan、zgrab)。
ツールセットのダウンロード
Black-T亜種は次の2つのファイルをダウンロードし、ダウンロードしたファイルを直接bashで実行します。
- xxps://teamtnt[.]red/BLACK-T/beta
- hxxps://teamtnt[.]red/BLACK-T/setup/bd
Beta
Betaは、新しいディレクトリ … を作成するために使用されます。このディレクトリのroot.tar.gz、cron.tar.gzという名前の2つのtarファイルに、次のファイルが圧縮して入れられます。
root.tar.gz 内
- /root/.bash_history
- /root/.ssh/
- /etc/hosts
- /root/.docker/
- /root/.aws/
- /root/*.sh
- /home/*/.bash_history
- /home/*/.ssh/
- /home/*/*.sh
cron.tar.gz 内
- /etc/cron*/
- /var/spool/cron/
これら2つのファイルは圧縮され、URL hxxps://teamtnt[.]red/only_for_stats/dup.phpに送信されます。ここで注意すべき重要な点は、TeamTnTは今も自分たちが侵害したAWSクラウドシステム上のAWS認証情報や設定ファイルを狙っているということです。侵害されたシステムにAWS認証情報が含まれていれば、TeamTnTはそれらの情報を使って侵害システムのAWS環境内でクリプトジャックオペレーションの拡大を目指すことができるのです。TeamTnTは、公開・侵害されたDockerデーモンシステムから得たAWS認証情報を使うことで、当のシステムを梃子にほかのクラウドシステムやリソースにアクセスできるようになります。つまり、当該システムと同じAWS認証情報を使用しているより大きなAWS環境へとアクセスを広げていくのです。
betaスクリプトは次にhxxps://teamtnt[.]red/x/pwファイルをダウンロードし、Black-Tダウンロードからの複製であるhxxps://teamtnt[.]red/BLACK-T/setup/bdファイルもダウンロードします。
最後に、betaスクリプトは、XMRマイニングオペレーション監視用のサービストークンを設定します。このトークンはabyofigfefda6c3itn9f3zkrmjfays31に設定され、Black-Tスクリプトhxxps://teamtnt[.]red/BLACK-T/SetUpTheBLACK-Tを再度ダウンロードします。これはおそらく冗長化のための手法と思われます。こうしておけば、攻撃者がシステムをエクスプロイト後にさまざまなオペレーションを開始できるようになります。
pw
pwスクリプトは非常に興味深く、WindowsツールのMimikatzを*NIX用に改変したmimipyとmimipenquinを使ってエクスプロイト後のパスワードスクレイピングオペレーションを実行しています。侵害されたシステム内のメモリで発見されたパスワードは、/var/tmp/…/output.txtファイルに書き込まれ、これはhxxps://teamtnt[.]red/only_for_stats/dup.phpにアップロードされます。図5をご覧ください。
bd
bdスクリプトは、侵害されたシステムに適合するXMRマイニングソフトウェアをダウンロードするために使用されます。ダウンロードされるファイルとマイニングソフトウェア用のSHA256値については、以前、Weave Scopeのデプロイを標的とするオペレーションの際に報告されています。
Unit 42リサーチャーは各ソフトウェアサンプルをダウンロードして、これらのサンプルが以前報告されたサンプルと同じ形式であるものと考えています(表1参照)。
名前 | SHA-256ハッシュ | 注記/VirusTotalの結果 |
bioset | a5dd446b2a7b8cfd6b6fd4047cc2fddfcea3a4865d8069dcd661e422046de2a1 | 破損している可能性あり |
kube | a506c6cf25de202e6b2bf60fe0236911a6ff8aa33f12a78edad9165ab0851caf | VT = 33/60
kube.jpg |
tshd | a5e6b084cdabe9a4557b5ff8b2313db6c3bb4ba424d107474024030115eeaa0f | 破損している可能性あり VT = 1/60 |
docker-update | 139f393594aabb20543543bd7d3192422b886f58e04a910637b41f14d0cad375 | VT = 35/60 default.jpg |
表1: TeamTnT XMRマイニングソフトウェア
XMRマイナーのセットアップ
Black-Tのスクリプトは次に、既知のXMRマイナーソフトウェアsbin_u (SHA256: fae2f1399282508a4f01579ad617d9db939d0117e3b2fcfcc48ae4bef59540d9)をダウンロードします。この種類のマイニングソフトウェアは過去にもTeamTnTに関連付けられていました。VirusTotalは現在、このマルウェアを8/62とリストしていますが、*NIXプラットフォームシステム上で動作するマイニングソフトウェア、Executable Linkable Format (ELF) CoinMiner (図7参照)だとラベル付けしています。
Black-Tは最後に、以下のXMRウォレットアドレスを使用するように、XMRマイニングソフトウェアを設定します: 84xqqFNopNcG7T5AcVyv7LVyrBfQyTVGxMFEL2gsxQ92eNfu6xddkWabA3yKCJmfdaA9jEiCyFqfffKp1nQkgeq2Uu2dhB8。図8は、本稿執筆時点では、5ワーカーが8.2 KH/sを生成したのみと報告されたことを示しています。これは、2020年9月26日の最大25.05 KH/sから減少しています。この特定のXMRウォレットが収集したのは、2020年9月29日の時点で、約10米ドルのみです。その理由はおそらく、これはクリプトジャックソフトウェアの非常に新しい亜種であり、拡散する時間があまりなかったためと考えられます。
ワーム機能
TeamTnTはこれまでも長くワームのような手法を使い、masscanやpnscanを使って脆弱なシステムを見つけていました。Black-Tも例外ではありませんが、以前報告されたTeamTnTのmasscanオペレーションとBlack-T内に見られるオペレーションの間には、わずかな違いがあります。具体的には、Black-Tには、新しいスキャンポート5555/tcpが追加されていることです(図9参照)。5555/tcpをスキャナに追加した正確な目的はわからないものの、AndroidベースのデバイスでXMRクリプトジャックが発生しているという事例が報告されていることから、この追加により未知の標的を対象とするクリプトジャックオペレーションの拡大を狙っている可能性も考えられます。ただし、TeamTnTがAndroidデバイスを標的にしていることを裏付ける証拠はほとんど確認されていません。
さらに、Black-Tは、公開されたDocker APIインスタンスを探す際、ランダムな/8のCIDRネットワーク範囲のスキャンオペレーションを実行します。これも、TeamTnTのTTPに関する新たな発見です(図10参照)。TeamTnTはBlack-Tのスキャン範囲を拡大することで、標的オペレーション範囲を大幅に拡大しています。Black-Tは、侵害されたシステムのローカルネットワーク範囲のみをスキャンするのではなく、/8のCIDRネットワーク範囲全体のランダムなスキャンを行うようになります。たとえば、Black-Tが134.0.0.0/8を選択すると、134.0.0.0と134.255.255.255の間で公開されたDockerデーモンAPIを含むアドレスが標的とされ、Black-Tはそのシステムのエクスプロイトを試みます。十分時間があれば、公開されているすべてのIPアドレスが、公開されたDockerデーモンAPIシステムを探してスキャンされます。これにより、TeamTnTが所有する侵害システム数が大幅に増加する可能性があります。
結論
TeamTnTはクラウドにフォーカスしたクリプトジャックグループで、公開されたDockerデーモンAPIを標的とします。TeamTnTはDockerデーモンAPIの識別とエクスプロイトに成功すると、クリプトジャックの新しい亜種であるBlack-Tをドロップします。この亜種は最大3種類のネットワークスキャナ(masscan、pnscan、zgrab)をインストールし、これらを使用して他の公開されたDockerデーモンAPIをスキャンします。Black-Tはまたクラウドシステムのエクスプロイトに成功すると、メモリスクレイピングオペレーションも実行します。このオペレーションは、侵害システムにmimipyとmimipenguinスクリプトをダウンロードして実行します。識別されたパスワードはTeamTnT C2ノードに渡されます。やはりTeamTnT脅威攻撃グループによって取得され、窃取されたAWS認証情報と同様に、これらの認証情報は、侵害されたDocker APIを管理する組織を標的とした追加オペレーションに使用されると考えられます。
TeamTnTのBlack-Tクリプトジャックマルウェアからクラウドシステムを保護するため、組織は以下の対策を講じる必要があります。
- クラウド環境でDockerデーモンAPIや他のネットワークサービスが不用意に公開され、機密の内部ネットワークサービスが外部にさらされないようにする。
- パロアルトネットワークスのPrisma Cloudを使用し、クラウドのデプロイメントを保護する。
- パロアルトネットワークスの次世代ファイアウォールに最新のApp-IDや脅威シグネチャを適用する。
IoC
URL
- hxxps://teamtnt[.]red
- hxxps://teamtnt[.]red/BLACK-T/beta
- hxxps://teamtnt[.]red/BLACK-T/CleanUpThisBox
- hxxps://teamtnt[.]red/BLACK-T/setup/bd
- hxxps://teamtnt[.]red/BLACK-T/setup/docker-update
- hxxps://teamtnt[.]red/BLACK-T/setup/hole
- hxxps://teamtnt[.]red/BLACK-T/setup/kube
- hxxps://teamtnt[.]red/BLACK-T/setup/tshd
- hxxps://teamtnt[.]red/BLACK-T/SetUpTheBLACK-T
- hxxps://teamtnt[.]red/BLACK-T/SystemMod
- hxxps://teamtnt[.]red/ip_log/getip[.]php
- hxxps://teamtnt[.]red/only_for_stats/dup[.]php
- hxxps://teamtnt[.]red/x/getpwds[.]tar[.]gz
- hxxps://teamtnt[.]red/x/pw
- hxxps://iplogger[.]org/blahblahblah
Moneroマイニングプール
MoneroOcean[.]stream
SHA-256ハッシュ
Black-T関連のハッシュ
SHA-256ハッシュ | ファイル名 |
90c74c9ff4c502e155d2dc72f3f6c3f512d354d71b5c480c89b6c1b1852bcb1f | bd.bin |
1cf803a8dd2a41c4b976106b0ceb2376f46bafddeafbcef6ff0c312fc78e09da | beta.bin |
a5dd446b2a7b8cfd6b6fd4047cc2fddfcea3a4865d8069dcd661e422046de2a1 | bioset.bin |
9f8cb3f25a8b321b86ee52c16b03b3118f3b157b33e29899d265da3433a02c79 | SetUpTheBLACK-T.bin |
6c16473060ffd9e215ee8fc82ff430384a8b99ea85000486f363e9bff062898d | cleanupthisbox.bin |
139f393594aabb20543543bd7d3192422b886f58e04a910637b41f14d0cad375 | docker-update.bin |
5b417032a80ddf4d9132a3d7d97027eeb08d9b94b89f5128863930c1967c84c4 | getpwds.tar.gz |
e92b19f535fa57574401b6cdbf511a234a0b19335bd2ad6751839c718dc68e4d | gimmecredz.sh |
a506c6cf25de202e6b2bf60fe0236911a6ff8aa33f12a78edad9165ab0851caf | kube.bin |
c0069aab1125a8ac1b9207e56371e86693b26b0dcab1630f337be55929b36a2a | pw.bin |
fae2f1399282508a4f01579ad617d9db939d0117e3b2fcfcc48ae4bef59540d9 | sbin_u |
84fabfbbd134bbeeb5481a96b023f44a671382349e5b39928baf0e80e28fd599 | setup_moneroocean_miner.bin |
06e9cb770c61279e91adb5723f297d472a42568936199aef9251a27568fd119f | systemmod.bin |
a5e6b084cdabe9a4557b5ff8b2313db6c3bb4ba424d107474024030115eeaa0f | tshd.bin |
Mimipy と Mimipenguin 関連のハッシュ値
SHA-256ハッシュ | ファイル名 |
79b478d9453cb18d2baf4387b65dc01b6a4f66a620fa6348fa8dbb8549a04a20 | mimipenguin.py |
3acfe74cd2567e9cc60cb09bc4d0497b81161075510dd75ef8363f72c49e1789 | mimipenguin.sh |
73a956f40d51da737a74c8ad4ecbfab12350621ffc167b5c278cd33ce9e0e0f0 | mimipy.py |
b9b3a97ed5c335b61f2cc9783cb8f24c9cff741d020b850502542dbd81c2c2df | pack.py |
1f09ccae15d8d452bde39f7ada9660df3cf0598137c5ac7a47027d8b9107415d | pupyimporter.py |
023283c035a98fcb0b4d32bc103a44df5844c5e41c82261e0d029180cde58835 | dbg.h |
a0d4cbbb61e3b900a990a2b06282989c70d5d7cb93052ad7ec04dcd64701d929 | max.h |
6cbf056fe35f1a809b8e8a2a5fc1f808bb4366e6e1ca2767fb82832d60c9ecf8 | scanner.h |
9469e2937be4cf37e443ba263ffc1ee9aa1cf6b6a839ad60e3ecfe3e9e1bc24e | targets.h |
9703cd1d00bf6f55b5becb1dd87ffcbd98b2ac791c152f7adcb728c5512df5e2 | users.h |
88226956193afb5e5250639bd62305afde125a658b7e924ce5a5845d08f7de08 | mimipenguin.c |
54d7524c73edbd9fe3cfa962656db23d6a2d8e4ebc6a58b116b3b78d732acfdf | scanner.c |
ac54934dd9b3b55296baf3e4d1aec959f540bed71d02a6f624edab281a719bdf | targets.c |
00f116b831f720b62acf3a2d0db2a870b6ae114c4f9b3b517362a49c42c5a6f3 | users.c |
Moneroウォレット
84xqqFNopNcG7T5AcVyv7LVyrBfQyTVGxMFEL2gsxQ92eNfu6xddkWabA3yKCJmfdaA9jEiCyFqfffKp1nQkgeq2Uu2dhB8