JPCERTコーディネーションセンター(JPCERT/CC: Japan Computer Emergency Response Team Coordination Center)は2月21日、「PyPIを悪用した攻撃グループLazarusのマルウェア拡散活動 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ」において、北朝鮮が関与しているとみられる脅威グループ「Lazarus Group」が不正なPythonパッケージを公式PyPIリポジトリに公開していることを発見したと報じた。

  • PyPIを悪用した攻撃グループLazarusのマルウェア拡散活動 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ

    PyPIを悪用した攻撃グループLazarusのマルウェア拡散活動 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ

発見された4つの不正なPythonパッケージ

発見された不正なPythonパッケージは次の4件。

  • pycryptoenv
  • pycryptoconf
  • quasarlib
  • swapmempool
  • 不正なPythonパッケージの例 - 提供:JPCERTコーディネーションセンター

    不正なPythonパッケージの例  引用:JPCERTコーディネーションセンター

pycryptoenvおよびpycryptoconfに関しては、Pythonの暗号ライブラリ「pycrypto」と似た名称にしていることから、ユーザーが間違えてインストールすることを期待している可能性があると指摘されている。

不正なパッケージの分析結果

JPCERT/CCは、これら不正なパッケージについて分析結果を公開している。これによると、これら4つのPythonパッケージはいずれもほぼ同じファイル構成だったとのこと。ファイルの中にはダイナミックリンクライブラリ(DLL: Dynamic Link Library)をエンコードしたバイナリーデータが拡張子「.py」のファイルとして含まれている。この偽のPythonスクリプトファイルはinit.pyに含まれる関数によりデコードされて「output.py」ファイルとして保存、実行される。しかしながら、init.pyの関数はパッケージをインストールしただけでは実行されないため、脅威グループは何らかの手段でユーザーにこの関数を実行させていたものとみられている。

  • マルウェアの感染経路 - 提供:JPCERTコーディネーションセンター

    マルウェアの感染経路  引用:JPCERTコーディネーションセンター

マルウェア「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パッケージのハッシュ値を公開しており、必要に応じて活用することが望まれている。