Pythonで書かれた新たな情報窃取マルウェア(インフォスティーラー)が確認されました。Chromiumベースの17種のブラウザとFirefoxを標的に、保存された認証情報、決済カードの詳細、閲覧履歴、有効なセッションCookieを収集します。
ComputerScience
このマルウェアは「ビルダー」フレームワークを通じて配布されます。攻撃者はこのビルダーを使い、カスタマイズしたWindows向けペイロードを生成し、独自のデータ送信先Webhookを設定できます。
入手したアーカイブには「TokenGrabber Builder」フォルダが含まれており、Python製のビルダーと、埋め込み型のスティーラーペイロードが収められていました。
この構成から、マルウェア・アズ・ア・サービス(MaaS)モデルが採用されているとみられます。複数のアフィリエイトや技術力の低い攻撃者でも、個別仕様のサンプルを作成して展開できる仕組みです。
ビルダーは、埋め込まれたPythonペイロードをNuitkaまたはPyInstallerでWindows実行ファイルにコンパイルできます。生のPythonスクリプトとして保存することも可能です。
特にNuitkaは注目に値します。PythonコードをネイティブバイナリーにS変換するため、復元可能なPythonバイトコードが残りにくく、一般的なPythonデコンパイラによる解析が難しくなります。
コンパイルの前に、攻撃者はDiscordまたはTelegramのWebhookアドレスを指定します。ビルダーはこのアドレスをキー0x5AでXOR暗号化し、Base64エンコードしたうえでペイロードに埋め込みます。
この方式ではWebhookが平文で現れません。また、個別にビルドしたサンプルごとにエンコード後の設定値が異なり、ハッシュ値も別になる可能性があります。そのため、単純な指標(IOC)ベースのクラスタリングは効果を発揮しにくくなります。
ビルダーは、必要に応じて依存パッケージを自動でインストールします。ローカルにインストールされたPythonインタープリターも、環境変数のパス、一般的なインストール先ディレクトリ、Windowsレジストリの場所から探し出します。

そのため、開発用ではないアプリケーションから予期せずpip.exeが実行された場合は、防御側にとって早期に気づける挙動ベースの検知シグナルになり得ます。
K7 Labsがこの攻撃キャンペーンを特定しました。きっかけは、不審なRARアーカイブ「my new program called 2.rar」の調査です。このアーカイブには、TokenGrabberBuilder.zipという入れ子構造のアーカイブが含まれていました。
Python製インフォスティーラーのキャンペーン
埋め込まれたスティーラーは、%LOCALAPPDATA%と%APPDATA%にある既知のブラウザプロファイルのパスを確認し、Chromiumベースの17種のブラウザを標的にします。

認証情報はLogin Data、閲覧履歴はHistory、決済カード情報はWeb Dataから収集します。セッション情報はCookiesまたはNetwork/Cookiesから取得します。
ComputerScience
Chromiumが保護しているデータにアクセスするため、マルウェアはLocal Stateファイルからブラウザの暗号化マスターキーを取得します。続いて、Windows DPAPIによる復号を試みます。
ロックされているSQLiteデータベースは、読み取る前に一時的な場所へコピーします。その後、AES-256-GCMで保護された新しいChrome形式のエントリを復号します。復号できない場合は、DPAPIベースの旧方式にフォールバックします。
Firefoxも対象です。スティーラーはFirefoxのプロファイルディレクトリからplaces.sqliteとcookies.sqliteを探し出し、閲覧履歴とセッションCookieを収集します。
セッションの窃取は特に深刻です。有効なCookieがあれば、攻撃者は被害者のパスワードを知らなくても、認証済みのWebセッションを乗っ取れるためです。
ブラウザデータ以外にも、マルウェアはnetsh wlan show profilesを使って保存済みのWi-Fiプロファイルを列挙し、平文のWi-Fiキーの抽出を試みます。
さらに、DiscordのLevelDBストレージをスキャンしてトークンを探し、見つけた候補をDiscordのAPIで検証します。Robloxアカウントの侵害につながる.ROBLOSECURITYCookieも狙います。
永続化には2つの手法を使います。1つ目は、HKCU\Software\Microsoft\Windows\CurrentVersion\RunにあるレジストリのRunキーです。値の名前には、紛らわしいWindowsUpdateを使います。2つ目は、ONLOGONのスケジュールタスクです。
解析を回避する仕組みも備えています。デバッガーのアタッチ、仮想マシンのプロセス、容量の小さいディスク、サンドボックスの時間制限を確認します。

収集した情報には、パブリックIPアドレス、位置情報、ユーザー名、コンピューター名が含まれます。これらはメモリ上でStolenData_<USERNAME>.zipとしてまとめられます。
このアーカイブは、HTTP POSTで攻撃者が管理するWebhookへ送信されます。ディスクを対象とした監視では見つかりうる痕跡が、限られる形になります。
組織は、静的なファイルシグネチャだけに頼らず、挙動ベースの検知を優先すべきです。
有効なハンティングの手がかりとしては、次のようなものがあります。
不審な子プロセスとしてのpip.exeの実行、信頼できないプロセスによるブラウザデータベースへのアクセス、Wi-Fiプロファイルを要求するnetshコマンド、Runキーによる永続化やログオン時に起動するスケジュールタスクの作成、見慣れないWebhookインフラへの外向きPOSTリクエストです。
このキャンペーンは、アーカイブ経由で配布されるマルウェアのリスクも浮き彫りにしています。
ユーザーは、出所不明の、あるいは検証されていないアーカイブから取り出したファイルを実行しないよう注意してください。防御側は多要素認証を徹底し、異常なセッション活動を監視する必要があります。侵害が疑われる場合は、ブラウザのセッションを速やかに失効させ、認証情報をリセットしてください。
侵害指標(IOC)
| ハッシュ | 検出名 |
| 610f0c65a3f8e88559f89ed90ea9ee5c | Password-Stealer ( 006dba241 ) |
| 429ed63ab3fbda8d22d0ac750ecfe8cc | Password-Stealer ( 006dba241 ) |
| 9ffe0e45c7a3f20e4481206c1c3b0854 | Trojan ( 006e632e1 ) |
注: IPアドレスとドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(デファング)しています(例:[.])。無害化を元に戻すのは、MISP、VirusTotal、自社のSIEMなど、管理された脅威インテリジェンスプラットフォーム内に限ってください。
SOCアラートの調査時間を1件あたり21分短縮。即時のIOCコンテキストでSOCの迅速な対応を後押しします: SOCにTI Lookupを導入する
翻訳元: https://gbhackers.com/python-infostealer-campaign/