ReversingLabsは2月20日(米国時間)、「Attackers leverage PyPI to sideload malicious DLLs」において、DLL(Dynamic Link Library:ダイナミックリンクライブラリ)のサイドローディング技術を悪用して検出を回避する悪意のあるPythonパッケージをPyPIから2つ発見したと報じた。
悪意のあるPythonパッケージの実態
発見された悪意のあるPythonパッケージは、「NP6HelperHttptest」と「NP6HelperHttper」の2つ。これらはいずれも正規パッケージ「NP6HelperHttp」と「NP6HelperConfig」に名前を似せたものと推測されている。
すべてのパッケージに共通する「NP6」はChapsVisionが開発しているマーケティング自動化ツールの名称であり、正規パッケージの2つはChapsVisionの従業員が個人的に公開したヘルパーツールとされる。ChapsVisionがその事実をReversingLabsに確認したのと時期を同じくして、これら正規パッケージはPyPIから削除されている。
悪意のあるPythonパッケージはいずれもインストール用のsetup.pyスクリプトを含む。このスクリプトは「ComServer.exe」と「dgdeskband64.dll」をダウンロードするように設計されており、dgdeskband64.dllに悪意のあるコードが含まれているという。
setup.pyはこれらファイルをダウンロードすると署名付きの実行可能ファイルComServer.exeを実行する。ComServer.exeはKingsoftが開発した正規の実行可能ファイルであり、実行するとdgdeskband64.dllをロードしてDllinstall関数を呼び出す。悪意のあるdgdeskband64.dllは正規のファイルではなく、マルウェアを配布するために特別に作成されたDLLとされる。
このように署名された正規の実行可能ファイルから署名されていないDLLの関数を呼び出すサイドローディング技術を使うことで、セキュリティソリューションの検出リスクを軽減できるとされる。
ComServer.exeに呼び出されたDllinstall関数は、例外処理を通してシェルコードをダウンロードして実行する。シェルコードは暗号化されたデータを復号し、復号された「Cobalt Strike Beacon」に処理を移す。
対策
開発者はこのような攻撃を回避するため、信頼できる開発者のパッケージのみを使用し、それ以外のパッケージを使用するときはインストール前に不審な処理が含まれていないかどうかを確認することが推奨されている。
また、ReversingLabsは今回の分析の過程で判明したセキュリティ侵害インジケーター(IoC: Indicator of Compromise)を公開しており、必要に応じて活用することが望まれている。