ランサムウェアの被害を防ぐために必要だったこと

WannaCryptで変な方向に対策議論が行かないことを祈りつつ、本来行っているべき対策を述べておこうと思う。

ダウンロードしたファイルを無闇に開かない

ダウンロードした実行ファイルやスクリプトファイルを不用意にダブルクリックして実行してしまうようだと、感染を防ぐためのソリューションは殆ど意味をなさない。ウィルス対策ソフトウェアを導入していても、ウィルス対策ソフトウェアで対策できるのは「過去に知られていたウィルス」だけある。新しいウィルスには極めて限定的な効果しか無い。
特に標的型攻撃のように特定の組織だけを狙ってウィルスを送っている場合、狙われている組織が自ら感染に気がついてウィルス対策ソフトウェアの開発元に連絡しない限り、ウィルス対策ソフトでは防げないって事も起こりうる。
実行する必要がある場合には、電子署名を確認するとか、ダウンロード元サイトをしっかり確認するとかしよう。
幸いにもWindowsの場合はダウンロードしたファイルを開こうとすると警告が表示されるのがデフォルトになっている。もしうっかり開きそうになって警告が表示されたらなら、速やかに閉じよう。

パーソナルファイアウォールを有効にしておく

パーソナルファイアウォールは有効にしておこう。ゲームをするからとか、警告が出るからとか、そういった理由で不用意に「全て無効」にしてはいけない。
日本で感染が少ないのは、ブロードバンドルーターがファイアウォールの役割をしてくれたり、フリーWiFiの提供事業者側で通信制限をしていたことに救われているのでは?と言う意見もあるぐらい。ファイアウォールはセキュリティホールを使った感染を防いだり、あるいは不正プログラムへの感染に気がつく為に大事です。

適切にセキュリティアップデートを実施する

セキュリティアップデートが必要なのはOSだけではない。Office製品もそうだしサードベンダの製品もUpdateが必要。保守が終了してしまった(EOLを迎えた)ソフトウェアは、Updateが提供されないので使用してはならない。
意外にできていないもので、下記のような事がままある。
・WindowsはUpdateしているがOfficeはUpdateされていない(その他のマイクロソフト製品も更新すると言うオプション項目がある)
・AdobeReaderはUpdateされていない(自動更新には管理者権限が必要なため管理者が更新作業をする必要がある)
・古いJavaRuntimeがインストールされたまま(旧番のJavaは更新時に古いバージョンを残す設定になっていた。
・LZHファイルの解凍ツールをいまだに使っている(LZHはサポート終了しており、セキュリティ更新なども行われていない)
・Oracleのデータベースを使っているがOracleと保守契約していない(Oracleは有償サポート契約していないとUpdate提供してくれない事が多いよ)
etc・・・心当たりがあるなら、改める必要がある。

どうしても古いOSを使う必要がある場合

どうしても保守が終了してしまった(EOLを迎えた)ソフトウェアを使い続けなくてはならない場合、それなりのセキュリティ対策を取ろう。お勧めは再起動したときに、ファイル等への更新をロールバックしてくれるシステムだ。Windows XP Embededには標準で備わっていた機能で、物珍しいものじゃない。再起動でロールバックするシステムを導入していれば、万一ウィルスに感染しても復旧作業が容易になる。

データのバックアップを取る

データのバックアップを取っておく。良くある勘違いにRAIDを組んでいるから・・・と言うのがある。RAIDは故障等によるシステム停止の可能性を下げるための仕組みであって、故障その他の事由によるデータの喪失を防ぐための仕組みではない事を覚えておこう。RAIDを組んでいたとしてもRAID本体が故障すればデータを失うことになるし、もちろんランサムウェアに感染してしまえばデータを失うことになる。
普段はパソコンからアクセス出来ない別の媒体に、他のパソコンでも読み込める状態で複製して、初めてバックアップとして機能する。普段アクセス出来る媒体では、何かの拍子に両方を更新してしまうのが落ちである。幸いにも大容量のストレージをインターネット上に安価に借りれる時代になった。どこかにストレージを借りて、定期的に複製することをお勧めする。

「怪しいメールを開かない」とか、いい加減なことを言うのは流石に止めてほしい

たしかに20年くらい前なら、日本語としておかしい文面でるという事が多かった。当時のコンピューター犯罪は愉快犯的なものが多く、非技術的な部分にコストを掛けてまで実施する物好きが居なかっただけである。
だが、今時は文面で判断することは出来ない。コンピューター犯罪は莫大な利益をもたらす闇産業となっており、それなりのコストを掛けて実施されているのだ。もし怪しいか判断しようとするなら、最低でもReceivesヘッダを解析したり、そこに現れるサーバー名やIPアドレスの所在を追いかける程度のことはしないと話にならない。毎日数十~数百通のメールを手作業でヘッダを確認せよと言うのは、素人には無理だし、玄人だって遠慮したい作業だ。
しかも致命的なことに「怪しくないから問題が無いメールである。」とは言えない。取引先が既に感染していて「本当の業務連絡のメールに添付されているファイルがウィルス付き」って場合もある。もし怪しいか否かで判断しようとするなら、添付ファイルのあるメールは全て怪しいので文面を見ずに削除する程度には徹底しないと防げない。(僕の一番のお勧めは「添付ファイルのあるメールは全て怪しい」として扱うことだけどね。参照

WSUSに接続しているクライアントPCが、Updateのダウンロードに失敗する場合

WSUSクライアントがWindowsUpdateのダウンロードに失敗する場合には、次の手順でクライアントのキャッシュを初期化すると正常に動作する場合がある。

参考:Windows Update クライアントの情報をクリアにする手順

WSUSを使っていると言うことは、ActiveDirectoryの環境も整っています。ここではクライアントにログインせずに、エンドユーザーに気がつかれないように遠隔操作のみで処理していきます。

次の様なコマンドを実行して、コントロールパネルの「コンピューターの管理」をエラーの発生している端末に繋ぎます。

C:\>runas /user:example.local\[管理者ユーザー] "mmc.exe C:\windows\system32\compmgmt.msc /computer=[コンピューター名]"

これで「コンピューターの管理」が開きますので、ツリーからサービスを選んで「Windows Update」と「Background Intelligent Transfer Service」を停止します。

次のコマンドを実行して、エラーの発生している端末のC:ドライブをマウントします。

C:\>net use A: \\[コンピューター名]\C$ /user:example.local\[管理者ユーザー] [パスワード]

以下のコマンドでSoftwareDistributionフォルダ、及びBITSのジョブを削除します。

ren A:\Windows\SoftwareDistribution SoftwareDistribution.old
del A:\ProgramData\Microsoft\Network\Downloader\qmgr0.dat
del A:\ProgramData\Microsoft\Network\Downloader\qmgr1.dat

「コンピューターの管理」に戻って「Windows Update」と「Background Intelligent Transfer Service」を起動します。

これで先ほど削除した、あるいはリネームしたファイルやフォルダが再び作成されて居ることを確認します。

最後にマウントしたドライブを解放しておきます。

NET USE A: /DELETE

以上で、人知れずWindows Updateのキャッシュ削除完了。2日ほど待ってWSUS上からエラーがなくなっていれば成功です。

WSUSで再配信のエラーが・・・

GWを開けて出社してみれば、WSUSで大量の適用エラーが・・・。

KB3008923、KB3003057、KB2987107など、2014年のInternet Explorer用セキュリティパッチが、何故か再配信されている模様。他にもOffice 2010も混じってる。緊急性の高いセキュリティホールが見つかったという話もあるので、Microsoft側でリリース作業中に何かポカったのかな?

業務ネットワークをインターネットから分離して、インターネット専用端末を作る(ナンセンスなセキュリティ対策)

世の中・・・と言うより、日本国内ではナンセンスなセキュリティ対策が、さも標準的な対策であるかのように横行しています。セキュリティ対策の基本「どうやって」「だれから」「なにを」守っているのか考えてみれば綻びがはっきりします。二つ目の例として、「社内ネットワークをインターネットから分離して、インターネットを使うときには社内ネットワークとは切り離されたパソコンを使う。」ことによって、「どうやって」「だれから」「なにを」守れているのか考えてみましょう。

「インターネットを使うときには、社内ネットワークとは切り離されたパソコンを使う。」と聞いて真っ先に考えるネットワークは上のようなものかも知れません。これはむしろ全体のセキュリティを悪化させているに過ぎません。今時社外とインターネットを使った情報の送受信をやらずに済む事など無ありません。結局の所、社内のネットワークから必要な資料等をCDやDVDでインターネット専用端末に持ち込むことになります。インターネット専用端末がウィルスやマルウェアに感染していた場合、インターネット専用端末を介して情報漏洩に繋がる恐れもあるのでセキュリティ対策を疎かにするわけにはいきません。

社内ネットワークから切り離されたパソコンのセキュリティをどのように担保するのかが重要になります。インターネット専用端末が所属するネットワークにも、ADサーバーによる従業員の個別認証、IDSによるインシデント検知、Firewallによる通信の制限、WSUSによるセキュリティアップデートの監視、企業用のウィルス対策ソフトウェア導入、USBメモリなどのストレージ機器の監視・・・下のような、一通りの管理体制は必要になるはずです。


インターネットから切り離した社内ネットワークはどうなるのかというと、完全にインターネットと切断するわけにはいきません。インターネット接続用端末からUSBメモリなどを介してウィルス等が持ち込まれる可能性も考えると、セキュリティパッチのインストール、ウィルス対策ソフトの更新などは必要です。個々のパソコンからの接続は禁止していたとしても、セキュリティパッチのインストール、ウィルス対策ソフトの更新を行うための中継サーバーはインターネットに接続しておく必要があります。先の「インターネット専用端末が所属するネットワーク」と同様の管理体制が、インターネットから切り離した社内ネットワークにも必要になります。

ここであらためて考えてみましょう。インターネット接続用ネットワークも、社内ネットワークも同じレベルのセキュリティ対策が施され、管理されています。インターネット接続用ネットワークを儲けることで、セキュリティがどのように向上しているのでしょうか?実はクライアントパソコンに着目する限りでは、何もセキュリティは向上していません。ネットワークインフラ構築にに2倍のコストを掛けたうえに、インターネットから切り離すことで業務効率を悪化させているにも拘わらず、セキュリティはほとんど向上していないのです。


これは「なにを」守るのかが、ズレているのが要因です。上の図のようにセキュリティ更新を受けることが出来ない古いソフトウェアや、運用の都合でセキュリティパッチを導入できないサーバー等、様々な理由でセキュリティレベルの低い状態に置かれている場合があります。本当に排除しなければならないのはインターネットではありません。インターネットに接続可能な環境で使用するにはセキュリティレベルの低い状態になっている端末やサーバーを、インターネットと社内ネットワークから排除するひつようがあります。そのために社内ネットワークまるごと排除するのは過剰対策ですし、USBメモリなどによる持出を許可するのであれば、なんの解決にもなりません。


脆弱なサーバーや端末を社内ネットワークから排除し、使用する必要がある場合にはシンクライアント等で接続するように構成した場合です。シンプルに見えるでしょう?
実はこのような構成変更をするには、社内ネットワークの業務システム全体を掌握しており、必要に応じて大幅な設定変更できる事が必要になります。必要十分な実力を持つ情報システム部門が無かったり、情報システム部門が機能不全に陥って社内の業務システムを掌握出来ていない場合には無理です。図1や図2の構成を進めようとしているのであれば、その背後に情報システム部門の機能不全を考えた方が良いでしょう。緊急対策として「インターネットを使うときには、社内ネットワークとは切り離されたパソコンを使う。」の対処を行うにしても、その場合は情報システム部門の再構築をセットで考えるべきと思います。

参考:
日本のPOS端末が狙われる?組込みシステムのセキュリティ対策 – IT、IT製品の情報なら【キーマンズネット】
インターネットに接続していない環境から、大規模な個人情報漏洩が起きた事例です。最近のPOSはWindows Embeded等が使われておりセキュリティ対策としてネットワークからの隔離を実施していました。ところがPOSのメンテナンスのために接続されたUSBメモリがウィルスに感染しており、USBメモリを経由して個人情報漏洩を起こしています。隔離対策だけで脆弱な部分を残していては、もっとも脆弱なところから攻撃されます。

常時SSL対応しました

遅ればせながらLets Encryptを使って、常時SSLに対応しました。使ってる広告サービスがSSLに対応したのがきっかけです。以前にもSSLを利用を検討したことがあったのですが、当時よりも各段に導入が容易になってますね。

手順については、次のページを参考にしました。Ubuntu 16.x&Nginxの場合の導入手順がわかりやすく纏められています。
How To Secure Nginx with Let’s Encrypt on Ubuntu 16.04