本ブログでも既報の通り、欧州を中心に暗号化型ランサムウェア「PETYA(ペトヤまたはペチャ)」の亜種による大規模な攻撃が確認されています。トレンドマイクロでは今回の事例で使用された PETYAの活動について、より詳細な解析を行いました。その結果、「MS17-010」脆弱性(通称:Eternal Blue)の利用以外にも、PsExec や WMICと言ったマイクロソフトが提供する正規ツールを利用したネットワークワーム活動など、PETYA が持つ非常に巧妙な活動が明らかになりました。
■PsExec と WMIC を利用したネットワークワーム活動
ネットワーク上における PETYA の拡散は EternalBlue によるものだけではありません。マイクロソフトが提供する正規ツール PsExecと、Windows の正規プロセスであり管理技術の中核を担う「Windows ManagementInstrumentation(WMI)」を操作するためのコマンドラインツール「Windows Management InformationCommand-line(WMIC)」を巧妙に利用します。
PETYA は、標的 PCで「dllhost.dat」というファイル名で「psexec.exe」をドロップし、自身の複製を「\\{遠隔PC名}\admin$\{マルウェアのファイル名}」に作成します。次に、dllhost.datを利用し、ドロップした複製を以下のパラメータで実行します。
dllhost.dat \\{遠隔PC名} -accepteula -s -dC:\Windows\System32\rundll32 “C:\Windows\{マルウェアのファイル名}”,#1{10以上の無作為の数値} {認証情報の列挙} |
{認証情報の列挙}の部分の形式は以下の通りです。
“username1:password1”“username2:password2”“username3:password3”…“usernameN:passwordN” |
もしこの実行に失敗した場合、PETYA は標的の PC でマルウェアを実行するために「WMIC.EXE」を利用します。
%System%\wbem\wmic.exe /node:”{ノード}” /user:”{ユーザ名}”/password:”{パスワード}” process call create“C:\Windows\System32\rundll32 \”C:\Windows\{マルウェアのファイル名}\”#1 {10以上の無作為の数値} {認証情報の列挙}” |
感染経路でこの PsExec と WMIC を利用した拡散が成功しなかった場合に限り、脆弱性EternalBlue を利用した拡散を行います。
■認証情報の抽出手法
PsExec や WMIC を利用したワーム活動のためには、ユーザーアカウントの認証情報が必要です。この PETYA の亜種は、感染した端末上で認証情報を抽出するために、正規のセキュリティツール「Mimikatz」を改造したツールを利用します。この Mimikatz を改造した実行ファイルは 32 ビット版と 64ビット版が用意されており、ランサムウェアのリソースセクションに暗号化されて保持されています。認証情報の抽出を行う際には、まず、PETYAのメインプロセスが、Mimikatz の実行結果を受け取るために「パイプ(プロセス間通信に利用される技術)」を開きます。次に、Mimikatzが実行され、メインプロセスがその実行結果を読み取ります。このようにして抽出された認証情報は、上述の PsExec と WMICを利用したネットワークワーム活動のために利用されます。
■起動ドライブに対するMBRの上書きとMFTの暗号化
活動を開始した PETYA はファイルの暗号化を実行する前に、まず端末の起動ドライブの「Master BootRecord(MBR)」を上書きします。MBR はシステムを起動する際に使用されるドライブ上の領域です。PETYA は初めに、「Volume BootRecord(VBR)」の次のセクタに「0xBAADF00D」を書き込み、OS が起動できないようにします。
また、以下のように各セクタが上書きされます。
- 0~18のセクタ(オフセット0x00~0x25FF)にブートプログラムを上書き
- 32のセクタ(オフセット0x4000~0x41FF)にある構造を持った無作為データを上書き
- 33のセクタ(オフセット0x4200~0x43FF)に0x07を上書き
元の MBR の暗号化
- 34のセクタ(オフセット0x4400~0x45FF)に元の MBR を排他的論理和(XOR)で暗号化したデータを上書き
もし、上記プロセスが失敗した場合、PETYA は 0~9のセクタを「0xBAADF00D(通常、メモリが初期化されていないことを示すために用いるマジックナンバー、Bad food)」で上書きします。
これらの MBR を上書きする活動により、元々の Windows OS は起動不可となり、端末を起動すると毎回 PETYAの身代金要求の脅迫メッセージを表示するようになります。
図1:PETYAが表示する身代金要求画面の表示例
また、従来の PETYA の亜種と同様、今回の亜種も感染 PC でファイルシステムのインデックス「Master File Table(MFT)」を暗号化します。まず、メインの DLL が Windows API「CryptGenRandom」を利用してキーとノンス(1度だけ利用される数値、nonce)のペアを1つ生成し、ディスクに書き込みます。次に、感染PCが再起動する際、このマルウェアによって上書きされたブートコードがこのキーを利用して「Salsa20」アルゴリズムによる MFT の暗号化を実行します。この暗号化処理の間には、図2に示した偽の CHKDSK 画面が表示されます。
図2:MFTの暗号化の際に表示するCHKDSKに偽装した画面の表示例
PETYAの以前のバージョンに存在した暗号化機能の欠点は、暗号化キーの生成にCryptGenRandom API を利用することによって解消されており、復号がさらに困難になっています。しかし、コードを解析したところ、今回の亜種は利用した暗号化キーを削除していることが判明しました。これはつまり、単に復号化が困難ということではなく、マルウェアの製作者であっても事実上復号化は不可能であり、感染 PC が一度再起動されてしまった後は身代金を払ったとしても復旧できないことを意味します。攻撃者がそもそもデータを復旧させるつもりが無かったのか、誤って自分でも復号できないようにしてしまったのかはわかりませんが、感染環境に深刻な被害をもたらすことだけは確かです。
このように、今回の事例で確認された PETYA は、非常に巧妙な活動を行う高度なランサムウェアであるということができます。特に、正規ツールであるPsExec や WMIC を利用したネットワーク内での拡散の活動や、Mimikatzのツールを利用した認証情報の取得、プロセス間通信のパイプの利用など、これまでは高度な標的型サイバー攻撃の中で確認されてきた手法が使用されていることは、このランサムウェアが周到な準備の元で作成されたものであることを示しています。
【更新情報】
2017/06/29 10:50 | 「MBRの上書き」の段落にMFTに関する情報を追記しました。 |
2017/06/29 12:40 | 図を追加し、構成を整理しました。 |
2017/11/22 18:35 | タイトルの脱字を修正しました。 |
参考記事:
- 「Large-Scale Ransomware Attack In Progress, Hits Europe Hard」
by Trend Micro
翻訳:澤山 高士(Core Technology Marketing, TrendLabs)