メールの海を渡りたい

その道はred ocean

Emotetに関する対策の雑な考察

初めに

問題は9月頃から増加していたようですが、IPAでも掲載され、ここのところ急速に認知が進んでいるウイルス「Emotet」についての雑な考察です。
上記記事などでも、エンドユーザ向けの対策などは書かれていますが、ここではサービスを提供しているシステム側において、どういう対策が有効だったのかを、本当に雑に考察していきます。

Emotetとは

詳細な解説はIPAの記事を参照ください。

www.ipa.go.jp

雑に動作を解説しますと、

  • メールなどでEmotet本体を添付ファイルとして送りつける(docファイルなど)
  • 添付ファイルを開くことでマクロが動作、端末に感染
  • 端末内のOutlookなどから、メール本文を取得し、別の端末に送信

という動作をするようです。
その後、

  • 別の端末にてメールのやり取りを解析し、あたかも正規のメールの返信のように装い、Emotetを添付したメールを送付

することで、更にEmotetウイルスを拡散するようです。(返信型ではない場合もあります)
正規にやり取りしたメールの返信を装う点が、騙されて添付ファイルを開いて感染を誘発させるということで特徴的ではないかと思います。

被害については以下のブログ参照

piyolog.hatenadiary.jp

各セキュリティ対策とEmotet

ではどうすればEmotetへの感染を防げたでしょうか。

ウイルスチェック(Anti-Virus)による対応

ウイルスの検知・駆除という意味では、一般的にはウイルスチェックによる対応がまずあげられると思います。上記のIPAの記事にも、ある組織では全て検出したとの記載があります。しかしながら、別の組織においては検出できずにすり抜けたとも記載があります。

ウイルスチェックはその仕組み上、新しいウイルスの発生後、それを解析して抗体(パターンファイル)の生成を行うため、どうしても検出できるようになるまでにタイムラグが発生します*1
タイムラグはソリューションによって様々ですが、通常時は数分から1日単位でパターンファイルが更新されると思われます。もちろん大きな問題となるような場合は緊急でパターンファイルが更新されますが、やはりパターンファイルの生成までにはそれなりの時間がかかるようです。

以下はとあるウイルスチェックエンジンにおいて、2017年5月に猛威を奮ったWannaCryの発生からパターンファイルの配布までの時系列です。

日時 事象
2017/05/12早朝 WannaCryの攻撃が本格化。各所で被害多数。セキュリティベンダなどのブログで報告。
2017/05/13 6時 緊急パターンファイル配布開始
2017/05/13 11時 対応済み最小バージョンパターンファイル配布開始
2017/05/15 21時 最終対応版パターンファイル配布

緊急パターンファイルの配布までで丸1日、最終対応までで3日以上かかっています。

このようにウイルスチェックは最新のウイルスへの対応には脆弱である場合があるため、過信は出来ません。そもそも多数の被害が出ているという時点で、該当の組織全てがウイルスチェックを実施していなかったとは考えにくく、相当数のすり抜けが発生しているということは想像に難くありません。

検出できた例もあることですので、全く無意味というわけではありません*2。ただ効果を最大限に得るためにも、導入に際しては、パターンファイルの確実な更新、ウイルスチェック非対応端末の排除といった適正な運用の徹底の他、パターンファイル更新間隔の確認、ベイズ学習アルゴリズム他検出方法の対応などを比較した上でソリューションを選択することが重要です。

Sandboxによる対応

ja.wikipedia.org

メールにおいては添付ファイルなどを保護された領域で実行し、振る舞いを確認することでウイルスを検知するソリューションです。
Emotetにおいては、感染した端末内のメール本文を別端末に送信するという動作を行うため、Sandbox内で動作させた際にこの通信を検知してウイルスとして検出出来たとの情報があります。
このように実際に動作を確認するため、未知のウイルスでも検出することが出来、高い防衛力を発揮するソリューションであると言えます。

ただし、当然のことながら暗号化zipなど、保護されたファイルは実行しての確認が出来ないため、すり抜ける可能性はあります。(その場合は受け取らないという選択肢もあります)
現時点でも正規のメールへの返信を装うなど、手間を掛けての送信を行っていることもあり、今後暗号化zip付きメールを送った後にパスワードを記載したメールを送るというパターンに変化する可能性もあります。その場合はSandboxでも検出ができなくなります。

以上はウイルスとして検出をする場合のパターンでしたが、以降は迷惑メールとして検出するパターンとなります。

送信ドメイン認証

ウイルスの検知ではなく、受信したメールが不審なもの(早い話が迷惑メール)かどうかを確認することでウイルス感染を回避します。
送信ドメイン認証はメール業界においては10年以上に渡り普及を促進している技術群で、ドメインレベルでのなりすまし(メールの差出人詐称)を検出する技術として利用されます。
現在の主流技術は、

  • SPF(Sender Policy Framework)
  • DKIM(DomainKeys Identified Mail)
  • DMARC(Domain-based Message Authentication, Reporting, and Conformance)

の3つで、この3つ全てに対応することで、なりすましを高い確率で検出できるようになります。

各技術の概要は以下のサイトで確認ください。

www.naritai.jp

ざっくり言うと、メールのFromメールアドレスのドメインに注目し、そのドメインを送信してきたサーバが正規のサーバであるかどうかを確認する技術となります。
差出人が@○○.co.jpである場合、○○.co.jpが管理しているメールサーバから送信されているかを確認できる、ということになります。
Emotetの動作上、不正に取得したメールを加工して別端末からメールを送信するという挙動であるため、送信時に利用するFromのメールドメインと、メールを送信する端末は無関係であれば、送信ドメイン認証で検出できたのではないかと思われたのですが、どうもEmotet付きのメールはDMARCまでPassするものもあるようです。

仮定の状況として、差出人のドメインが攻撃者所有のドメインであった場合、送信ドメイン認証でPassする様に環境を整えることが出来てしまいます。具体的には、「○○.co.jp」を模倣した「○○co.jp」というドメインを攻撃者が所有していた場合、「○○co.jp」ドメインを送信するサーバ情報として、送信ドメイン認証をPassする設定を攻撃者が行うことが可能です。
つまり、「〇〇co.jp」ドメイン「○○.co.jp」とは異なり、また誰の持ち物であるかということが容易に判別できることが重要になってくるのですが、これを簡単に確認する手段は現状ではありません。(規格としてBIMIが策定中ですが、一般化するかは未知数です)

また、ドメインハイジャックにより、不正なレコードを返して送信ドメイン認証をPassさせている可能性もあります。こうなるともうお手上げです。

どの程度送信ドメイン認証をPassしたのか、データはありませんが、今回のEmotetは送信ドメイン認証に対応していても検出できなかった可能性はあります。
ただし、送信ドメイン認証の対応にせよ、ドメインハイジャックにせよ、攻撃者側にとっても相当手がこんだ対応になるので、そんなに多くはないのではーと思いたい。
そうであればある程度検出できたのではないかと思います。

その他迷惑メール対応

実際に検出できたかどうかのデータがないため、有効度は不明ですが、もしかしたら検出できていたかもしれない対策

迷惑メールフィルタ

ウイルスチェックと同じようにパターンファイルでのチェックになりますが、ウイルスチェックに比べると比較的対応が早いです(ソリューションによります)。また、迷惑メールの特徴として送信パターンに現れる場合が多い(短時間に大量送信、普段利用されていないIPからの送信など)ので、迷惑メール送信の立ち上がりを検出して対応できていた可能性があります。

IP Reputation

別の端末からメール送信したということなので、普段メール送信に利用されていないなどで、その端末のIPアドレスが怪しいと判断出来ればIP Reputationで検出/受信拒否できていたかも。

メールヘッダチェック

対応する商品などは思いつかないのですが、普段やりとりがある相手先であれば、不審なメールは Recievedヘッダ等がいつもと異なることを分析できれば検出できたかもしれません。機械学習などを使った解析で判別する事が可能そうではあります。

ケツのロン

いろいろ考えていると、対策の回避策ばかりが思いついてげんなりしてしまうのですが・・・
現状では、EmotetはSandboxが一番効果が高そうです。
ただし、これも状況が変われば突破される可能性はあります。

今回は Emotetにフォーカスして有効性を雑に考えましたが、Sandboxも全ての攻撃に対して有効というわけでもありませんので、最終的にはあらゆる対策を講じて攻撃に対処する必要があると思われます。

*1:ベイズ学習アルゴリズムなどにより、亜種などで類似したウイルスを直ちに検出できる仕組みを持つものもある

*2:エンタープライズ向けAntiVirus製品の場合、感染後の振る舞いを検知して通信をブロックするなどのポリシーを設定できるものもあります。感染は防げなくても被害拡大を防ぐことができます。