清水理史の「イニシャルB」
簡単なパスワードでRDPを空けておいたら、数時間でハッキングされマイニングツールを仕込まれた話
2019年9月2日 06:00
やってしまった……。外部からリモートデスクトップ接続可能な状態にしたWindows Serverが、わずか6時間で乗っ取られ、マイニングマシンに仕立て上げられる結果に。「大丈夫かなぁ」との不安が見事に的中してしまった。やはりノーガードはダメということを、身をもって体験することになった。
なお今回登場する機材には、非は全くない。すべての原因は、筆者が不用意のポートを解放したこと、簡単なパスワードを設定してしまったことにある点は、あらかじめご理解頂きたい。
Windows Serverをテスト目的で放置したら
きっかけは、筆者の日常ではよくあることだった。
レビュー用機材が想定通りに動作せず、メーカーに問い合わたところ、リモートで調査したいとの申し出があった。
いつアクセスがあるかは分からなかったので、リモートデスクトップ用のポート3389を開けて管理者パスワードも分かりやすいものに変え、「さあ、どうぞ」というメールを送信したのが7月5日(金)の午前10時。
その日は調査が実施されず、「週明けまで待機か、大丈夫かな」と不安がよぎったものの、何度も設定変更する面倒さに負けて、そのまま放置していた。
そして週が明けた7月8日、月曜日。
昼ご飯を食べてくつろいでいたら、電話が鳴った。
「お客様の回線から不審な通信が大量に送信されているようです」
ISPからの連絡に、すぐに「やられた」と気付いたものの、後の祭り……。
Windows Serverを見ると、Administratorアカウントでロックされており、何かセッションが稼働している様子。
しかし、ログオンしようと思っても、設定したパスワードが弾かれてしまい、ログオンできない……。
とりあえず、LANケーブルを抜いて、落ち着いて考える。
環境は、仕事環境とは切り離したテスト専用のもので、つながっているのはレビューの検証に必要だった2台のNASと、1台のWindows Serverのみ。
なので、実害はほぼない。
とは言え、目の前に乗っ取られたマシンがあると、人間慌ててしまうものだ。「おー! えー? うん?」と、しばらく思考が停止してしまった。
しばらくして冷静になると、ユーザーアカウントの1つをDomain Adminsに追加していたことを思い出し、そのアカウントで早速ログオン。
変更されてしまったAdministratorのパスワードをリセットし、アカウントを切り替えてみると、デスクトップ上に、見慣れないフォルダーとコマンドプロンプトがあった……。
コマンドプロンプトをスクロールしてみると、「new job」やら「speed」、「pool.supportxmr.com:80」やらの文字が……。
どうやら、マイニングツールを仕込まれ、せっせと仮想通貨の採掘処理にCPUパワーを供出させられていたようだ。
いつ何をされたのか? 調査開始
こうした話を耳にすること自体はさほど珍しくないが、今回のケースは、クラッキングの手口が極めて「雑」で、痕跡が残りまくっている上に、攻撃もピンポイントだった。
ISPの担当者も報告書へ記入をしなければならないようで、いつ何があったのか、ログをチェックして教えて欲しいとも依頼された。ちょうどいい機会なので、状況を詳しく調査してみることにした。
ルーター
まずはルーターをチェックする。
今回、テスト環境で使っていたのはネットギアジャパンの「Orbi」。ログ機能は備えているものの、リセットすると消えてしまう仕様となっていた。
調査中も、80や65479など、それっぽいポートや無造作なポートへ盛んにアクセスが繰り返されていることは確認できたのだが、別のテストを行うため、週末にルーターを再起動していたので、肝心のログは残っていなかった。
きちんと残しておくべきだったと悔やまれる。
NAS
続いて、NASをチェック。
今回の環境では、被害に遭ったWindows Server以外に、NASが2台つながれていたのだが、こちらは、なぜか全く被害がなかった。
本稿を書いていた時点でも、筆者の回線の固定IPアドレス宛に、ポート80への通信が盛んにあった。これらのポートを許可すると、1分に2~3回ほどのアクセスがあり、たちまちNASに「admin」の「login failed」ログが大量生成されるが、奇跡的に(かどうか)、ログインが成功したという記録は1つもなかった。
こちらのパスワードも比較的単純なものだったので、運がよかっただけのようにも思えるが、おそらく、今回の攻撃者は「興味がなかった」のだと考えられる。
Windows Serverの方にリモートデスクトップで管理者としてログオンできており、目的はどうやらマイニングツールの設置だけで、NASに余計な労力を掛ける必要がなかったのだろう。
もしくは、あとでゆっくり、と考えていたのかもしれない。
Windows Server
おそらく、今回の攻撃者は、痕跡を隠す気など全くなかったのだと思われる。
詳しくは後述するが、次から次へとマイニングツールを設置しまくり、所有者に気が付かれるまでの間、計算にCPUパワーを得られればいいという考えだったと推測できる。
あまりにも目的以外の行動が見られないので、Botによる仕業との可能性もあるが、GUIツールが使われているので、人の手によるものとの可能性が高いと考えられる。
痕跡として最初に目に付くのは、使われたツールだ。デスクトップに、「xmmmrr」「Massscan_GUI」という2つのフォルダーがあった。これらを詳しく見ていこう。
残されたツールから何をされたのかを探る
xmmmrrフォルダー
このフォルダーには、4つのファイルが存在した。大きく分けると、マイニング用とバックドア用の2つのツールに分かれる。それぞれを見ていこう。
- config.json
このファイルは、json形式の設定ファイルで、「xmrig」でマイニングをするための設定が含まれていた。userの値が書き込まれているので、この持ち主が犯人だと思われる。
- start.cmd
xmrig.exeの実行ファイル用バッチだが、中身は「xmrig.exe」と「pause」が指定されているだけだ。わざわざpauseを書き込んでいる意味がよく分からない。 - xmrig.exe
1つ飛ばしてxmrig.exeだが、これはマイニングツール本体だ。バックグラウンドで実行すればよさそうなものだが、今回は、コマンドプロンプトでそのまま動いていた。
- vps(3).exe
これは、最初、用途が分からなかったのだが、実際に実行してみて(前回紹介したWindowsサンドボックスが役に立った!)、動作を確認できた。
結論から言えば、再侵入用のバックドアを設けるツールだ。
実行すると、「c:\windows\cmdacoBin」フォルダーに「RE[B]Ell.EXE」と「registry.reg」という2つのファイルを生成する。
registry.regの中身は、次のようになっている。このエントリは、特定のプログラムを実行するときに、別のプログラムを実行するための設定だ。このエントリを書き込むと、「sethc.exe」の代わりに「RE[B]Ell.exe」が実行されるようになる。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe]
"Debugger"="C:\Windows\cmdacoBin\RE[B]Ell.exe"
「sethc.exe」は、Shiftキーが5回連続で押されたときに起動する「固定キー機能」だ。「Shift」などとほかのキーを同時に押すことが難しい人向けのものだが、この機能は、Windowsのログオン画面やロック画面でも起動できる。
そして肝心の「RE[B]Ell.exe」は、パスワード付きの圧縮ファイルだったため、中身までは分からなかった。おそらく、所有者に発見されてAdministratorのパスワードが変更された場合に、このバックドアを使って再度侵入するために仕込んでいたと思われる。ファイル名も「ベルを再度鳴らす」という意味なので、それっぽい!
Massscan_GUIフォルダー
こちらのフォルダーは、次のターゲットを探すために使われたと考えられる。実行に必要なランタイムが含まれているが、基本的にはポートスキャンを実行するためのツール一式なので、ポイントとなるファイルのみをピックアップしよう。
- vint.exe
masscan.exe(本体)をGUIで利用するためのプログラム
- masscan.exe
大規模なネットワークを高速にスキャンできるポートスキャンツール - input.txt、IPs.txt、Output.txt
masscanでスキャンする対象のIPアドレスやポートのリスト、そしてスキャンの結果が保存されている
テキストファイルのタイムスタンプをチェックすると7月7日となっており、このスキャンが、筆者宅のWindows Server上で実行されたことは明確だ。
これらのことから、次のことが推測できる。
- 攻撃者はGUI環境を操作しているため、Botではなく人間の可能性が高い
- スキャンしているポートが3389でリモートデスクトップを狙い撃ちしている
- 3389で158件のスキャンに成功しており、同じ被害に遭っている可能性が高い
筆者は、月曜の昼、ISPからかかってきた電話で「大量通信が発生している」と告げられたが、おそらく原因は、このポートスキャンだろう。先のInput.txtには、21(FTP)、22(SSH)、23(Telnet)、25(SMTP)の各ポートの記載も確認できるので、メインは3389だが、これらのポートも同時にスキャンしていたと考えられる。
イベントビューアーで操作の痕跡を探る
続いて、操作の痕跡を探っていこう。
Windows Serverには、アクセスの痕跡がログとしてあまり残らないことが多いが、イベントビューアーをチェックすることで、ある程度の痕跡をたどることができる。
詳しくは「インシデント調査のための攻撃ツール等の実行痕跡調査に関する報告書」(PDF)という、JPCERT/CCが配布している資料が非常に詳しいので、ぜひ参考にしてもらいたい。
この報告書には、考えられる攻撃がなされたときに、どこにどのような痕跡が残るかが詳しく記されている。これを参考に調査をしてみたところ、リモート系のツールやPowershellが実行された形跡、プログラムの実行がスケジュールされた形跡は、筆者宅のWindows Serverからは発見できなかった。
つまり、前述したデスクトップに配置されたファイルでの操作が全てで、そのほかの攻撃は、どうやらなされていないようだった。
一方、リモートログインの痕跡は、しっかりと残っていた(詳しくは上記資料参照)。イベントビューアーの「アプリケーションとサービス」から「\Microsoft\Windows\TerminalServicesLocalSessionManager\Operational」を確認すると、該当する期間内で、次のIPアドレスから、合計で13回のリモートデスクトップ接続の「成功」が記録されていた。
このうち最初のアドレスは、筆者が設定を確認するために外部からアクセスしたものだが、その後はいずれも外部からの不正アクセスだ。
イギリスやアメリカ、中国など、IPアドレスの場所はバラバラなので、おそらくこれらの発信元も、同様に乗っ取られたリモートデスクトップ環境なのではないかと推測される。
直接の犯人につながる手掛かりはマイニング用のアカウントだけで、実質的な追跡は不可能だろう。
とは言え、これらの情報は、筆者宅が踏み台となっていた証拠となる。筆者宅でmasscanが実行されていたことを考えると、おそらく同様の被害に遭っている環境は少なくない。筆者が犯人だと疑われた場合の証拠として、保存しておく必要がありそうだ。
教訓:パスワードは複雑に、不要なポートは閉じる
というわけで、一時的なテスト環境であったため、実際の被害はほとんどなかったのだが、セキュリティ被害は身近に起こるということを体験できたのは、いい勉強になった。
予防策としては、 「パスワードはどんなときでも複雑にする」 ということに尽きる。
もう1つ、リモートデスクトップやSSHなどは、かなり広範囲に侵入先のターゲットとなっているようなので、 「ルーターで22や80、3389のポートが解放されている場合は閉じておく」 というのも大切だ。
どうしても開けなければならない場合は、ポート番号を変えておくことである程度は予防できる。実際、筆者宅から実行されたmasscanも、全てのポートではなく、侵入できそうなポートだけを狙い撃ちしていた。
あと、 「Windows Serverを見かけたら、とりあえず「Shift」キーを5回押してみる」 というのもチェックしておきたい。コマンドプロンプトや妙なツールが起動したら、もうすでに乗っ取られていることも考えられる。
最後にもう1つ。 「リピーター率は特殊詐欺並」 ということも付け加えておきたい。昨今のポート80へのアクセスの多さを見る限り、もう、筆者宅の固定IPは、攻撃者御用達のターゲットリストに掲載されているのだろう。そして、そのリストから削除されることは、おそらく、もうない。
このため、今後は永久に、外部からの攻撃を受け続けることになる。いい勉強になったが、失ったものは大きく、もう元には戻せない。
なお、最後に、重ねて付け加えておくが、今回、登場したルーターやNASなどの機器には、非は全くないことをご理解頂きたい。すべての原因は、筆者が不用意のポートを解放したこと、簡単なパスワードを設定してしまったことにあるからだ。