私事ですが、2022年1月10日頃にQNAP製NASがランサムウェアに感染し、思い出のjpg画像やmp3の音楽データ、小さな動画などが7zという拡張子で圧縮され、パスワードロックがかかっていました。
パスワードで圧縮されたファイルがあるフォルダにはすべて、!!!README.txt が作成されていて、中には「0.01BTCを支払えばパスワードを教えてやる」という身代金の要求が書かれていました。
ここから長い戦いの日々です。
まずはQNAPのサイトに書かれている復元法を試しました。
■Qlocker で暗号化されてしまった QNAP NAS 上のファイルを回復させるために QRescue を手動インストールする
この前提には今使っているNASのファイル容量をまるごと復元できるだけの、もうひとつのNAS(ストレージ)が必要になります。
私の場合、幸いにもあまり使っていなかったもうひとつの拡張NASがあったので、その中身を退避してからフォーマットし「rescue」に名前を変更して実行しました。
処理には三日以上かかりました。
この部分は他の方が情報を公開されているので、詳しいやり方は割愛しますが、結論から言えば、この方法である程度のファイルは復旧できますが、すべては帰ってきません。ある程度取り戻せれば良いという方にはこの方法で何とかなります。
ですが私はすべての思い出を取り戻したい!
その為にデータ回復業者への依頼も考えましたが、完全に復旧させるのは無理との事。
パスワードを解析する方法を考え、フリーのソフトを実行させましたが、5日ほど経過して、それが無謀だった事に気づきます。
Qlockerが仕掛けたパスワードは、大文字・小文字・数字を使用した32桁!
ちなみに10桁で7カ月、12桁で何と2000年もかかるそうです。32桁のパスワードを解析する事は絶対に不可能だという事です。
■パスワード解析されるまでの時間をまめてみた【パスワードクラッキングについて】
この現実を受け止め、私は改めて !!!README.TXT の脅迫状を読み返しました。
0.01BTC !?
ビットコインを購入した事もない自分にとってはこれが高いのか安いのか分からなかったので、まずはここを調査する事に。
Googleで「0.01 btc」で検索すると、「市場概説 > ビットコイン」という検索結果が表示され、ここに1ビットコインの日本円金額がリアルタイムに表示されています。例えば、2022年1月31日現在の 0.01BTCの価格は、 42957円 との事でした。つまり43,000円ほど支払えば暗号化したパスワードを教えてやるとの事なのです。
悩みに悩んで、家族会議を開き、自分は身代金を支払う事にしました。
一か八かの決断です。身代金を支払っても、パスワードが手に入る保証はありません。
しかし、ネットを調べてみても、身代金を支払ったもののパスワードを入手できなかったという情報はあまり見当たらなかったので、という事は身代金を支払った人は沈黙をしているのだろうと考えました。
また、昨年の夏にも同様のハッキング被害があったようですが、その時の身代金額は 0.03 BTC だったそうです。今の3倍の金額ですね。
昨年では、15万円ほど支払わなければパスワードは取り返せなかったわけです。
ちなみに昔、NASがクラッシュして画像をサルベージしてもらったのですが、35万円ほど請求された事があります。
これは勉強工数。セキュリティ対策を怠るとこうなるという事ですね。
35万は払えませんが、リスクはあるものの43000円(振込手数料などを含めると5万円程度)なら何とかなります。
この部分も結論から言うと、ダウンタウンのまっちゃんが宣伝するビットコインの取り扱い会社に入会し、5万円の入金をして、ビットコインを0.01分購入し(変動するし、支払い時にビットコインで手数料が必要になるので、0.012BTC くらいは購入しておく事を推奨)、身代金を支払いパスワードを入手しました。
まっちゃんがQlockerの首謀者のように見えて、以来、探偵ナイトスクープが見れなくなりましたが、パスワードは本物で、無事に暗号化を解く事が出来ました!
次の問題は、ファイルを元にもどす事です。
ひとつひとつチマチマ解凍する事は誰でも出来ますが、ボタン一つで元にあった場所に解凍し、圧縮ファイルを削除する方法が見つからない。
そこでバッチファイルを自作しました。ここからがこのブログの本題になります。
まず、コマンドプロンプトでNASを参照できる必要があります。
ネットワークドライブの割り当てで、特定のドライブ(Lなど)にNASを割り当てていましたが、コマンドプロンプトでは認識しませんでした。
そこで、コマンドプロンプト上で、
net use x: \\IPアドレス\share
といったコマンドで接続します。
なお、一旦接続すると、切断するコマンドを投入しない限り、ずっとつながりっぱなしになります。
例えば、IPアドレスが、192.168.10.100 で shareフォルダが共有先だとすと、
> net use x: \\192.168.10.100\share
になります。
次にバッチファイルですが、
batch.bat という名前で、以下をコピペします。
set PATH=C:\Program Files\7-Zip
set PW=U5fYXjBDQyJm9vWT7dEV8pCRxP4e9rAh
cd /d x:
cd \
for /d /r %%a in (*) do (
pushd "%%a"
for %%b in (*.7z) do (
"%PATH%\7z" x -y -p%PW% "%%b"
if not errorlevel 1 del "%%b"
)
popd
)
7zipをインストールしておきますが、そのインストール先が、「C:\Program Files\7-Zip」だとしますと上記のままで良いです。
違う場合は、PATH の中身を変更します。
そして、取得した32桁のパスワードを、PW にセットします。
※パスワードはこれを使っても解除できません。皆それぞれ違いますので。
そして、Dドライブの直下に batch.bat を配置したとしますと、コマンドプロンプトで
> D:\batch.bat
と入力してバッチファイルを実行します。
実はバッチファイルの中身はもっとシンプルに出来るのですが、動いている事が分かるようにこの形にしています。
これを実行する事で、7zに圧縮されたファイルは元に戻ります。
ただし、繰り返しになりますが、パスワードが正しくないと解凍は出来ません。
実際、私はこのバッチ処理で7zのほぼすべてを元に戻す事が出来ましたが、Everything というソフトを使って7zのファイルを検索すると
いくらかは残っていました。フォルダの属性や、何故か同じ名前のフォルダが存在したりと、多少の不整合が見つかりました。
消せないフォルダは、QNAPのFILEマネージャからでしたら消す事が出来ます。
!!!README.TXT は、Everything で抽出して一括で消しました。
最後に、コマンドプロンプトで以下のコマンドを実行し、Xドライブを解除します。
> net use x: /delete
Everything でNASから7zを根絶出来れば復旧完了です。
お疲れさまでした。
セキュリティには気を付けましょう。
そして、可能ならば、NASは違うメーカーで二重化しましょう。
インターネットには繋がない事。