Pythonパッケージ スレッドフルエントPyPIで発見された、 悪意のあるこれは、従来型の情報窃盗マルウェアを含んでいます。しかし、その特徴は、ペイロードを難読化する高度なコード難読化技術を使用している点にあり、分析を非常に困難にしています。このマルウェアは、攻撃チェーン全体にわたって3層の難読化を繰り返し使用しており、手動による解析に大きな障害となっています。
当社のマルウェア早期警告チームは、パッケージをPyPIセキュリティチームに報告し、PyPIセキュリティチームはそれを迅速に削除しました。この記事では、 スレッドフルエントの攻撃と、その目的を隠すために使用する手法に焦点を当て、情報窃盗マルウェアとコード難読化がどのように連携して機能するかを解説します。
チートシート:情報窃盗マルウェアとコード難読化
Infostealerマルウェアとは何ですか?
情報窃盗マルウェアは、あなたのデジタル世界に潜む狡猾な泥棒のような存在です。パスワード、クレジットカード番号、個人情報などの機密情報を、あなたが気づかないうちに密かに盗み出します。これらのプログラムは、入力内容を記録(キーロギング)、ブラウザを乗っ取り、デバイス上のファイルをスキャンして貴重なデータを収集します。そして最も恐ろしいのは、その巧妙な手口です。
コード難読化とは何ですか?
コード難読化とは、いわば物事を人目につかないように隠す技術であり、ハッカーが悪意のあるコードを発見されにくくしたり、理解されにくくしたりするためによく用いられる手法です。意図的に分かりにくいコードを書いたり、一部を暗号化したり、見た目を混乱させたりして、アンチウイルスツールや研究者を欺くことを想像してみてください。これは巧妙ではあるものの、マルウェアがより長く活動を続け、検出を回避するのに役立つ、厄介な戦術です。
ThreadFluent Infostealerマルウェアの難読化レイヤー
1. 三重暗号化
難読化プロセスは、高度に暗号化されたペイロードが埋め込まれることから始まります。 fluent.py ファイル。最初のエンコードおよび復号化プロセスは、次のように要約できます。
encoded_data = base64_module.b64decode("... BASE-6 with encrypted payload, IV and RSA-encrypted keys…”); # … Sequential decryption: ChaCha20, Blowfish and AES … encrypted_payload = AES_Cipher.new(aes_key, AES_Cipher.MODE_CBC, iv=aes_iv).decrypt(encrypted_payload[16:]) final_payload = unpad_function(encrypted_payload, AES_Cipher.block_size) exec( zlib_module.decompress(bz2_module.decompress(final_payload)) ) この難読化プロセスには以下が含まれます。
- 圧縮gzipとbzipを使用します。
- 対称暗号化ChaCha20、Blowfish、およびAESによる連鎖暗号化。
- 非対称暗号化: 対称鍵の暗号化にはRSAが使用されます。
結果はBase64でエンコードされ、次のように挿入されます。 エンコードされたデータ各イテレーションは前のイテレーションに基づいて構築され、入れ子構造の暗号化構造を作り出すため、リバースエンジニアリングなしでは実際のペイロードを解明することは極めて困難です。
2. Gzip解凍
多くの中間段階において、このマルウェアは単純ながら効果的な難読化手法、すなわちGzip圧縮とBase64エンコードの組み合わせを採用している。
import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) この手法により、難読化されたペイロードは全段階を通して隠蔽されたままとなる。
3. コードの連結と動的コンパイル
最終段階では、難読化されたペイロードを複数の変数に分割し、実行時に動的に連結および復号化します。
import base64, zlib FEQXCBDOZKHVIhT = '...' # ....(111 other variables with base-64 encoded values) ... zZytWuvuEdBXSrO = eval(<FEQXCBDOZKHVIhT' encoded with '\x>) + eval(<next variable, encoded>) + eval( ' zlib.decompress(base64.b64decode(<VAR>)).decode('utf-8') ') + ... eval(compile(base64.b64decode(eval(zZytWuvuEdBXSrO)).decode('utf-8'), ‘<app>', 'exec')) この段階は、各変数を解読して再結合して次のペイロードを明らかにする必要があるため、手動でリバースエンジニアリングするには特に面倒です。
これらの難読化技術を組み合わせることで、 情報窃盗マルウェア in スレッドフルエント 検出を回避し、 コードの難読化 現代のサイバー攻撃において。
ThreadFluentのマルチステージ攻撃チェーン
その スレッドフルエント 情報窃盗マルウェア 4 つの明確な段階から構成され、それぞれが追加の層を導入します コードの難読化これらの段階は、ペイロードを輸送するだけでなく、検出や分析から保護する役割も果たします。

ステージ0:初期コード実行
エントリーポイントは __init__。py ファイルによって難読化されたペイロードの実行が開始されます。 fluent.pyこのファイルは、(手順1~3で説明したように)多層的な難読化を使用して、ステージ1のドロッパーを生成します。
import os,threading def main(): if os.name == 'nt': from . import fluent fluent.main() thread = threading.Thread(target=main , daemon=True) thread.start() ステージ1:初期ドロッパー
最初のドロッパーは、難読化解除されると、追加の悪意のあるコードをダウンロードして埋め込みます。 puts.pyGitHubリポジトリより Red-haired-shanks-1337/repuests (警告:悪意のあるコードが含まれている可能性があります。)
ドロッパー埋め込み puts.py 人気のローカルインストールに リクエスト ライブラリを修正し、 __init__。py 難読化解除を実行するファイルと、次のステージを実行します。この難読化解除は、難読化レイヤー 1 ~ 3 の多くの適用をリバースすることから構成されます。
ステージ2:2番目のドロッパー
2番目のドロッパーは、同じプロセスで難読化解除されると、さらに別のペイロードをダウンロードします。 ssl.py GitHubリポジトリから、名前を変更します。 udp.pyそして、マルウェアが繰り返し再インストールされないようにロックファイルを生成します。その後、難読化解除が実行され、最終的な情報窃盗ペイロードが実行されます。
ステージ3:最終情報窃盗者
最終段階は、高度な回避技術を用いる、完全に機能する情報窃盗装置である。
- 分析防止機能:
- マルウェア対策ツールを検出し、ブラックリストに登録されているプロセス、IPアドレス、ホスト名、または仮想環境が検出された場合は、そのプロセスを終了します。
- データの引き出し:
- IPアドレス、MACアドレス、VPNデータ、ブラウザのCookie/履歴、クレジットカード情報、暗号通貨ウォレットの認証情報など、スクリーンショットを含むあらゆる情報を収集します。
- ここに示すテンプレートを使用して、盗んだデータ(暗号化済み)をTelegramチャンネル経由で送信します。

難読化解除戦略
類似のパッケージを分析するには、研究者は体系的に難読化レイヤーを解読する必要がある。
- 難読化手順を模倣する: ペイロードを実行せずに、変換処理(復号化、解凍など)をシミュレートするスクリプトを作成します。
- 逆暗号化レイヤー: 埋め込まれた鍵とアルゴリズムを使用して、ペイロードを抽出して復号化する。
- 反復分析: 各中間段階を繰り返し処理して、最終的なペイロードを再構築する。
この分析を効率化するには、自動化ツールとサンドボックス環境が不可欠です。
リアルタイムで脅威に先手を打つ方法についてもっと詳しく知りたいですか?
弊社のホワイトペーパー「早期警戒:リアルタイム脅威検知と優先順位付け」をダウンロードして、ソフトウェアサプライチェーンを保護する方法をご確認ください。
脅威アクター
どうやらこのパッケージは2つのPyPIアカウントから公開されたようだ。 アビルホサイン10 (NAIST) と anomilano785現在削除されています。
現在アクティブなGitHubアカウントがあり、 アビルホサイン10これはキャンペーンに関連している可能性がある。 赤毛のシャンクス1337 ステージ2およびステージ3のペイロードのダウンロードに使用されたリポジトリを所有するGitHubユーザーも調査対象となっている。
犯人の特定は常に複雑であり、レッドチームへの所属の可能性もあるが、流出した情報の種類と量から判断すると、悪意のある行為者が関与している可能性が高い。
結論:マルウェアの進化におけるコード難読化の役割
その スレッドフルエント このパッケージは、多段階配信という点で、現代のマルウェア難読化の典型例と言える。採用されている回避技術と相まって、このパッケージは検出を回避し、分析に抵抗しようとする明確な意図を示している。
この分析は、こうした脅威に対抗する上で、連携した取り組みと自動化ツールの重要性を強調している。セキュリティ専門家は、これらの手法を詳細に分析し理解することで、将来的に同様のマルウェアに対するより効果的な防御策を開発できるだろう。
XygeniのMEWシステムが、悪意のあるthreadfluentパッケージが本番環境に到達するのを阻止した方法
ザイジェニの マルウェア早期警戒システム(MEW) このシステムは、 スレッドフルエント Python パッケージ、高度な悪意のある依存関係 コード難読化 そして多段階 情報窃盗マルウェア生産環境に悪影響を及ぼす前に、対策を講じる方法は次のとおりです。
- 静的解析による検出
ミューが目撃された スレッドフルエント隠されたコードを調べ、階層型暗号化や異常な依存関係などの疑わしい兆候を見つけ出す。 - 実行時到達可能性評価
システムは、パッケージのコードが使用中に実行される可能性があることを検出し、実際に実行することなく、それを深刻な脅威としてマークした。 - CI/CD Pipeline 保護性能
MEWはブロックされました スレッドフルエント リアルタイムで検知し、ビルドへの組み込みを阻止し、本番環境へのデプロイを防ぎました。開発者には具体的な対応が必要なアラートが送信され、貴重な時間を節約できました。 - 脅威インテリジェンスの共有
Xygeniは速やかにこのパッケージをPyPIに報告し、その調査結果をグローバルセキュリティネットワークと共有することで、さらなる拡散を阻止した。
捕獲することで スレッドフルエント 初期段階で、XygeniのMEWシステムは悪意のあるコードがソフトウェアサプライチェーンに損害を与えないようにし、 CI/CD ワークフロー。
あなたを守る CI/CD Pipeline無料で
次のような脅威を防ぐ スレッドフルエント Xygeniのマルウェア早期警告システムで始めましょう。 無料試用 今すぐソフトウェアサプライチェーンのセキュリティを確保しましょう。
ルイス·ロドリゲス
ルイス・ロドリゲスは物理学者ですcist + 数学者と CISSP。現在、Xygeni Securityの共同創業者兼CTO。ソフトウェアセキュリティ分野で20年以上の経験を持ち、以下のようなプロジェクトに参加。 SAST (NAIST) と SCA彼は現在、 software supply chain security.
ダニエル・マルティン
ダニエル・マルティンはサイバーセキュリティの専門家であり、Xygeniの研究セキュリティチームのメンバーで、 SDLC セキュリティおよびアプリケーションの脆弱性対策。






