JPCERTコーディネーションセンター(JPCERT/CC: Japan Computer Emergency Response Team Coordination Center)は2月21日、「PyPIを悪用した攻撃グループLazarusのマルウェア拡散活動 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ」において、北朝鮮が関与しているとみられる脅威グループ「Lazarus Group」が不正なPythonパッケージを公式PyPIリポジトリに公開していることを発見したと報じた。
発見された4つの不正なPythonパッケージ
発見された不正なPythonパッケージは次の4件。
- pycryptoenv
- pycryptoconf
- quasarlib
- swapmempool
pycryptoenvおよびpycryptoconfに関しては、Pythonの暗号ライブラリ「pycrypto」と似た名称にしていることから、ユーザーが間違えてインストールすることを期待している可能性があると指摘されている。
不正なパッケージの分析結果
JPCERT/CCは、これら不正なパッケージについて分析結果を公開している。これによると、これら4つのPythonパッケージはいずれもほぼ同じファイル構成だったとのこと。ファイルの中にはダイナミックリンクライブラリ(DLL: Dynamic Link Library)をエンコードしたバイナリーデータが拡張子「.py」のファイルとして含まれている。この偽のPythonスクリプトファイルはinit.pyに含まれる関数によりデコードされて「output.py」ファイルとして保存、実行される。しかしながら、init.pyの関数はパッケージをインストールしただけでは実行されないため、脅威グループは何らかの手段でユーザーにこの関数を実行させていたものとみられている。
マルウェア「Comebacker」の実態
デコードされたダイナミックリンクライブラリ「output.py」をrundll32から実行すると、「IconCache.db」と「NTUSER.DAT」ファイルが作成される。次に、rundll32を使用してIconCache.dbが実行され、IconCache.dbによりNTUSER.DATがデコードされる。デコードされたデータはメモリ上に展開・実行される。メモリ上に展開されたプログラムがマルウェア「Comebacker」本体となる。
Comebackerは実行されると、脅威グループのコマンド&コントロール(C2: Command and Control)サーバと接続を確立。サーバから送られてくるWindowsの実行可能ファイルをメモリ上に展開して実行する機能を持つ。
対策
JPCERT/CCによると、これら不正なPythonパッケージはそれぞれ300から1,200件程度ダウンロードされたという。これらパッケージはインストールしただけでは感染しないと考えられているが、ライブラリを使用することで感染する可能性がある。
開発者はこのような攻撃を回避するために、ダウンロードしようとしているPythonパッケージが正規のものかどうかを確認し、配布者が信頼できるか検証することが推奨されている。また、インストールおよび実行前にパッケージに含まれているすべてのプログラムを解析して悪意のあるコードが含まれていないかを検証することが推奨されている。
JPCERT/CCは、今回の調査において判明したマルウェアの通信先URLと悪意のあるPythonパッケージのハッシュ値を公開しており、必要に応じて活用することが望まれている。