ゴールデンウィーク明け、管理サーバが仮想通貨マイニングの踏み台にされるという衝撃的な事態に直面してしまいました。
なんとか事態はおさまりましたが、なかなか巧妙に仕組まれていて非常に苦しみました。
今回管理サーバが仮想通貨マイニングに悪用されてしまった詳細をまとめてみます。
仮想通貨マイニングの攻撃
仮想通貨マイニングとは?
そもそも仮想通貨のマイニングって何って人も多いと思います。
ビットフライヤーさんではこのような解説をしています。
参考 ビットコインのマイニングとは?ビットフライヤーしっかり読み込んでもよくわかりませんよね?w
てことで3行で説明すると・・・
仮想通貨を取引情報の計算を手伝う
手伝ったら仮想通貨でお駄賃が貰える
でも計算処理はスゲー負荷がかかるので普通のパソコンじゃツライ
こんな感じですかね。
ようは仮想通貨を貰って稼ぎたいけど自分で高価なサーバとか買ったら元取れん。
じゃ、世界中に転がっているわきが甘そうなサーバを間借りさせて貰っちゃおうか。
これが仮想通貨マイニングの踏み台攻撃?と考えて下さい。
発見と対処法
今回私たちが攻撃を受けたのは、Oracle社製のWeblogic Serverという製品を使ったシステムです。
実はゴールデンウィーク明け、Oracle社からWeblogic Serverの深刻な脆弱性が発見され、緊急でパッチが公開されたんです。
こちらですね。
こりゃまずい!緊急で対応しなきゃ・・・
なんて思っていたら、すでに攻撃されていた!というちょっとマヌケな展開となってしまって大変お恥ずかしいところです。。
まず最初に気付いたのは監視からです。
サーバのCPUが100%になっているという報告。
慌ててサーバでtopコマンドを実行すると確かにCPUがほぼ100%に張り付いている。
CPUを占有しているプロセスは何か?
これがWeblogicサービスなんですね。
なので最初は「なんだWeblogicの負荷が高まっているだけかな?」と思っていたんですが、netstatコマンドを実行すると何だか怪しいIPアドレス宛にずっと通信しているプロセスがある。
てことでそのIPアドレスをGoogleに放り込んでみると・・・
miningとの表示があり踏み台確定!!
Weblogicの脆弱性をつかれ、何らかの攻撃を受けてしまったのはほぼ間違いない状況でした。
攻撃のがいようとしては、Weblogicの脆弱性を利用して不正にサーバにアクセスし、/tmp配下にスクリプトを配置。
そのスクリプトを実行するcronをWeblogicユーザで仕込み、あとは延々とスクリプトをループさせて実行させ続けるという手法でした。
そのため一次処理としては、スクリプトを隔離し、cronを削除して、該当のプロセスをkillするという方法になります。
恒久対策は?
一にも二にもパッチを当てるコト。
Oracle社から定期的にリリースされている累積パッチは当然定期的に適用する必要がありますが、緊急パッチが出たらこちらの方が深刻度は高いので急ぎで対応すべきです。
もう一つ重要なのはファイアウォール設定です。
今回のサーバは、もちろんDMZに配置してあるサーバでしたが、インバウンドの通信はガチガチに絞っているのに、アウトバウンドはスカスカだったんですね。
アウトバウンドの通信を締めておけば、入り込まれても外に出られなかったのに・・・とこの辺りは明らかに設計漏れですね。
ですので、DMZに配置するサーバはアウトバウンドの通信も確実に締めておきましょう。
結論
脆弱性情報って右から左へ聞き流しているとこんな目に合うんだな・・・ということをまざまざと思い知らされました。
公開サーバを構築する時、まずは通信設計を確実に行う事。
そして常にパッチは最新の状態にして、外部からのアタックに備えるコト。
自分が管理するサーバは、日本国内向けのサービスだから大丈夫だ!などとタカをくくっていてはイケません。
インターネットは、世界中に繋がっているんだから。