攻撃者はパスワード回復ツール LaZagne をクレデンシャル抽出に濫用: D-Bus API への警戒レベル引き上げを

By

Category: Malware

Tags: , , , , , , ,

A pictorial representation of malware distributed via D-Bus API attacks.  An open laptop against a dark background is flanked by exclamation points. On the laptop screen are overlapping windows with a bug icon representing the malware.

This post is also available in: English (英語)

概要

攻撃者による Linux システムへの標的型攻撃は増加し、LaZagne (広く利用されているオープンソースのパスワード回復ツール) のようなハックツール ユーティリティへのアクセスは容易になっています。攻撃者らはこれらのツールを濫用してマルウェア攻撃チェーンでパスワードをダンプすることが増えています。このツールは Linux ユーザーに重大なリスクをもたらします。Pidgin などの人気チャット ソフトウェアを狙い、D-Bus API を使ってパスワードなどの機微情報を抽出するからです。

本稿では、LaZagne が Pidgin D-Bus API を悪用してこの情報を取得する方法と、D-Bus API の監視が賢明なセキュリティ対策となり得る理由について簡潔に概要を説明します。また、攻撃者が特定のマルウェア キャンペーンで LaZagne をどのように使っているのかについても見ていきます。

eBPF を搭載したAdvanced WildFire for Linux は D-Bus API 関連のアクティビティを検出可能です。パロアルトネットワークスのお客様は、LaZagne の脅威に関連する不審なアクティビティを検出する YARA と振る舞いのルールにより、Wildfire を使ってハック ツール LaZagne からの保護を受けられます。

関連するUnit 42のトピック Linux, API Attacks

目次

D-Bus とは
LaZagne が Pidgin クレデンシャルを盗む方法
マルウェア キャンペーンにおける LaZagne
D-Bus API の監視
結論
謝辞
IoC
YARA

D-Bus とは

Desktop-Bus (通称 D-Bus) は *NIX 系システムにおけるプロセス間通信 (IPC) のしくみの 1 つで、アプリケーションとサービスが効率よく通信しあえるようにしています。D-Bus は、dbus-daemon アプリケーションがサーバーとして動作し、アプリケーションがクライアントとして動作する、クライアント サーバー アーキテクチャを使っています。

D-Bus は、NetworkManager、PulseAudio、systemd、Evolution などの一般的なソフトウェアで広く使われていて、さまざまなシステム コンポーネントやアプリケーション間で、シームレスな通信を可能にしてくれます。たとえば Evolution というメール クライアントは Evolution データ サーバーのような別コンポーネントとの通信に D-Bus を使っています。Evolution データ サーバーは、メール アカウント、連絡先、カレンダーの保存と管理などのタスクを処理しています。

Linux システム上の D-Bus API はアプリケーションとサービスとの間の通信を支えるものですが、ここから機微データが漏えいしてしまう可能性があります。したがって、監視されていない API はリスクをもたらしかねません。LaZagne ハックツールは Pidgin の D-Bus API を利用してクレデンシャルをダンプします。

LaZagne が Pidgin クレデンシャルを盗む方法

LaZagne は、アプリケーションの実行中に Pidgin クライアントの D-Bus API に接続し、ユーザー名とパスワードを含むアカウント クレデンシャルを取得します (図 1)。

画像 1 は、LaZagne プロジェクトがアカウント クレデンシャルを取得しているスクリーンショットです。一部の情報は伏せられています。「Pidgin passwords」の下に、「Password found (パスワードが見つかった)」という通知が表示され、ログイン名 (伏せ字) とパスワードが記載されています。また、-v オプションを使えば、プログラムを再スタートできます。経過時間も表示されています。
図 1. LaZagne でアカウント クレデンシャルを取得したところ

図 2 のコードは、LaZagne ハックツールが Pidgin D-Bus API に接続してクレデンシャルを取得する方法を示しています。

画像 2 は Python コードのスクリーンショットです。3 つの緑色の四角形でハイライト表示されている部分は上から下に、パスワードを取得する関数の定義、try ブロックの1行目、for ブロックです。これが、LaZagne が D-Bus を利用してパスワードを取得する方法です。
図 2. LaZagne が D-Bus を利用しパスワードを取得出典: AlessandroZ/LaZagne

上記の図 2 でハイライト表示したコードの内容は次のとおりです。

  • get_password_from_dbus メソッドが ModuleInfo クラスを継承する Pidgin クラス内で定義される。
  • 各セッションの D-Bus 接続が dbus.bus.BusConnection(session) を使って作成される。purple オブジェクト (Pidgin D-Bus API のインスタンスとして作成される) で呼び出される各メソッドに対し dbus-python ライブラリが内部的に D-Bus メッセージの作成、送信、受信を処理する。
  • PurpleAccountGetUsername(_acc) メソッド、PurpleAccountGetPassword(_acc) メソッド、PurpleAccountGetProtocolName(_acc) メソッドが Pidgin アプリケーションとやりとりに使われる。これらのメソッドで Pidgin D-Bus API から各アカウントのユーザー名、パスワード、プロトコル名をそれぞれ取得する。
  • 抽出された情報はその後 pwd_found という名前のリストに辞書として格納される。

同様の処理に使用できる低レベル libdbus ライブラリー API (図 3 に示す) には次のものがあります。

  • dbus_message_new_method_call()
    • メソッド呼び出し用に新しい D-Bus メッセージを作成する
  • dbus_message_append_args()
    • D-Bus メッセージに引数をアペンドする
  • dbus_connection_send_with_reply_and_block()
    • メッセージを送信して返信を待つ
  • dbus_message_get_args()
    • 返信メッセージから引数を抽出する
画像 3 は、LaZagne の Pidgin クラスの低レベル libdbus ライブラリー API のスクリーンショットです。4 つの領域が赤でハイライト表示されています。黄色の下線で強調表示されているのは、ユーザー名とパスワードです。
図 3. LaZagne の Pidgin クラスの低レベル実装

攻撃者は LaZagne を使って Pidgin のアカウントに加え、ほかのアカウントのクレデンシャルもダンプできます。D-Bus API 経由で KDE Wallet (KWallet) のパスワードをダンプすることもできます。KWallet は、Linux の KDE デスクトップ環境で使われている安全なパスワード管理システムです。これらのパスワードは KWallet システム内に保存されている個別のパスワードで、Web サイトやメール アカウント、Wi-Fi ネットワークなどのパスワードのほか、ユーザーが保存することを選択したそのほかのクレデンシャルが含まれる場合があります。

攻撃者はこれらの D-Bus API を使って機微データを入手しており、過去数年、 LaZagne を利用した犯罪グループの事例がさまざまな公的情報源によって文書化されています。

マルウェアキャンペーンにおける LaZagne

LaZagne は複数のオペレーティング システムで利用可能なことから、攻撃者にとって魅力的なツールとなっています。

2019 年にはイランの支援が疑われる脅威グループ Agent Serpens (別名Charming Kitten、APT35) は、Windowsベースのシステムからログイン クレデンシャルを収集する一連の攻撃で LaZagne を使用していました。

2020 年には、Unit 42 のリサーチャーが CL-CRI-0025 (別名 UNC1945 LightBasin) の名前で追跡しているアクティビティ クラスターが、カスタムの Quick Emulator (QEMU) Linux 仮想マシンに LaZagne をはじめとするさまざまなツールを含め、これでイタリアなどヨーロッパの標的からクレデンシャルを収集していました。

2020 年以降では、私たちが Prying Libra (別名 Gold Dupont、RansomEXX ランサムウェアにつながる攻撃の背後にいるグループ) として追跡している脅威アクターが、標的ホストからクレデンシャルを抽出するのに LaZagne を使っているとの報告があります。

2021 年 7 月には、Adept Libra (別名 TeamTNT) が Chimaera キャンペーンの一環で LaZagne を使い、クラウドベース環境の Linux ディストリビューションを含むさまざまなオペレーティング システムからパスワードを盗んでいました。この攻撃は、Adept Libra が LaZagne を使って Kubernetes 環境の WordPress サイトからパスワードを盗んでいた 2021 年 12 月までは、少なくとも続いていました。

さまざまなマルウェア攻撃キャンペーンにおけるハックツールの使用状況を以下の表にまとめます。

脅威アクター 標的の業種 キャンペーンでの LaZagne 使用
Adept Libra  IoT、クラウド インフラ Chimaera キャンペーン、 kubelet キャンペーン
CL-CRI-0025  通信、防衛 イタリアの企業に対する脅威キャンペーン
Agent Serpens  軍事、外交 Windows ベースの攻撃キャンペーンに利用
Prying Libra  ソフトウエア、工業  RansomEXX ランサムウェア キャンペーン

図 4 は LaZagne を使う bash スクリプトのサンプルで、2021 年 12 月に報告された攻撃のものです。

画像 4 は、LaZagne を使う bash スクリプト サンプルのスクリーンショットです。これは 2021 年 12 月に報告された攻撃からのものです。Lasagna を実行している箇所を黄色でハイライト表示しています。データを保存している箇所は赤でハイライト表示しています。データを漏出している箇所は緑色でハイライト表示しています。
図 4. TeamTNT の LaZagne スクリプト (VirusTotal をハッシュで検索)

技術力の高い脅威グループがキャンペーンで LaZagne を使っていることから、パスワードを捕捉し、さらなる悪用を可能にする同ツールの有効性がうかがえます。

D-Bus API の監視

LaZagne は D-Bus を使って実行中のアプリケーションから機微データを抽出できます。そこで、D-Bus の API コールを監視すれば、そうした不審なアクティビティを検出できます。たとえば Extended Berkeley Packet Filter ( eBPF) をベースにしているライブラリー トレース ツール類は D-Bus の API コール洗い出しに有用です。

以下の図 5 は、bpftrace ツールを使って LaZagne ハックツールのアクティビティ (SHA256:d2421efee7a559085550b5575e2301a7c2ed9541b9e861a23e57361c0dbdbdb) のD-Bus API を監視しているようすです。

bpftrace は Linux システム用のコマンドライン ツールで、カーネル レベル/ユーザー レベル プログラムの動的解析に向けて設計されています。bpftrace ツールを使って dbus_message_get_args() API にプローブを設定します。私たちはこの API (libdbus-1.so.3 共有オブジェクト ライブラリーで定義) を使い、返信メッセージから引数を抽出しました。

使用したワンライナーの bpftrace プローブ コマンドは以下の通りです。

画像 5 は、2 つの異なるターミナルのスクリーンショットです。左のターミナルは LaZagne によって Pidgin のユーザー名とパスワードがダンプされた場所を示しています。右のターミナルには API コールのログが記録されています。
図 5. bpftrace で D-Bus API を監視

上の図 5 は LaZagne が Pidgin のユーザー名とパスワードのダンプに成功し (左側のターミナル) 、その API コールが bpftrace の出力にログとして記録されたようす (右側のターミナル) を表しています。

高レベルのD-Bus API をフックして、プロセス識別子 (PID) やプログラム名などの詳細をログに記録しておくと、どのプロセスが API を呼び出したかを特定できるので有用です。

結論

D-Bus API を注意深く監視することは、マルウェアやハックツールからアプリケーションや接続されたシステムを守る重要な方法の 1 つになりえます。開発者とサイバーセキュリティ専門家で協力しあい、セキュリティリスクについて常に情報を入手し、アプリケーションと機微なユーザー データを保護するための必要な措置を講じねばなりません。

クラウド コンピューティングや IoT の導入が進むなか、堅牢なセキュリティ対策は不可欠です。eBPF を搭載したAdvanced WildFire for Linux は D-Bus API 関連のアクティビティを検出可能です。パロアルトネットワークスのお客様は、LaZagne の脅威に関連する不審なアクティビティを検出する YARA と振る舞いのルールにより、Wildfire を使ってハック ツール LaZagne からの保護を受けられます。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらのフォームからご連絡いただくか、infojapan@paloaltonetworks.comまでメールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。

  • 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
  • 欧州: +31.20.299.3130
  • アジア太平洋: +65.6983.8730
  • 日本: +81.50.1790.0200

パロアルトネットワークスは、ファイル サンプルや IoC (侵害指標) を含む調査結果を Cyber Threat Alliance (CTA: サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使って、お客様に保護を迅速に提供し、悪意のあるサイバー脅威アクターを体系的に阻害できます。詳細については Cyber Threat Alliance にてご確認ください。

謝辞

本稿執筆にあたり Yang Ji 氏、Dongrui Zeng 氏に貴重なフィードバックと提案をいただきましたことを感謝します。

IoC

LaZagne バイナリー

  • d2421efee7a559085550b5575e2301a7c2ed9541b9e861a23e57361c0cdbdbdb

LaZagne バイナリー

  • d23707e0123732e03d156a0fd474a1384e1b3deee3235df9e96ff5d21a4d440c

LaZagne シェル スクリプト (kubelet キャンペーンで利用されていたもの)

  • b58bef842f6d6d4f53e6821f9ac1b63780267cc81006b649b56c263efeab1306

YARA