知識と経験がほぼない状態でIIJに入社
守田瞬氏(以下、守田):IIJの守田が、「セキュリティとAIと私」と題してお話しします。
本日ですが、基本的には私自身の話をします。私はタイトルにあるとおり、「セキュリティ」と「AI」の2つを大きく軸に置いて仕事をしています。今回の15分の中でできるだけお伝えしていきたいんですが、IIJのSOC(セキュリティオペレーションセンター)でデータ分析は何をしているのかというところを、みなさんにお話できればいいかなと思っています。
まず自己紹介からなんですが、私自身は2017年2月にIIJ入社しまして、中途入社です。今ちょうど3年半ぐらいIIJのSOCで働いています。以前は、セキュリティとはぜんぜん違う業界にいて、光学シミュレーション用の数値計算エンジンの開発をしていました。
以前は、ここにも書いてあるとおり光学なので、「レイトレース」がキーワードになると思います。物理シミュレーションの計算エンジンを開発したり、作ったエンジンのアルゴリズム改良をして高速化を図ったりしていました。
時代が時代で、機械学習ブームがやってきて、もともと僕自身は数学が好きだったので、機械学習もやってみたいなと思いつつ日々過ごしていましたね。そういったところで、もう少し自分の仕事としてやっていきたいなといった気持ちがあったので、IIJのSOCでデータ分析をやるようになりました。
中途入社した時には、セキュリティとかネットワークに関しては「なにそれおいしいの?」という状態で、ほぼ知識や経験がない状態で業界に飛び込んでいます。今は、セキュリティ業界の中にAIや機械学習を組み込んでいくことが使命になっています。
セキュリティアナリストチームの役割
具体的にIIJの中でやっていることを、この先どんどん掘り下げていこうと思っています。まずは簡単に概要なんですが、私自身は、セキュリティ機器から得られるログの情報を元に脅威を見つけるということをしています。
具体的にログって何? というところから説明すると、IIJではマネージドセキュリティサービスというものを展開していて、例えばIPS(不正侵入防止システム)とかIDS(不正侵入検知システム)、他にもファイアウォールやメールなど多岐に渡るセキュリティサービス機器のログを扱っています。そのログがどこに集約されているか、というのが右の真ん中の図で、情報分析基盤と大きく円で書いてあるところです。
簡単に言うとデータベースなんですが、データベースに一括集中して管理していて、その中で分析作業をします。具体的にどんな脅威が見つかっているの? とか、どういう脅威を見つけているの? といったところは気になるかなと思って、今回はマルウェアの通信やDDoS攻撃を具体例としてもってきたので、後々お話ししようかなと思っています。
先ほどの図をもうちょっと拡張したバージョンです。下の円がセキュリティアナリストチームですが、私はここに所属しています。私はデータ分析をしているので、 先ほど言ったとおり、情報分析基盤からデータにアクセスして、異常を検知したときに、実際にそれが世間で知られている脅威なのか突き合わせをしないといけません。なので、左の下にあるようにインターネットから脅威の情報や観測情報をインプットしています。
データ分析とインターネットから得られた情報を合わせて解釈することで、「これは脅威だ」とか「これは脅威じゃないね」ということを判断しています。分析する中で、まとまった情報や、みなさんに広く知ってもらいたい脅威に関しては、情報発信というかたちで、我々が書いているwizSafe Security Signalというブログの中で紹介しています。
他にも、セキュリティインテリジェンスとしてC2サーバーの攻撃元の宛先を大量のログの中から見つけ出して、みなさんのネットワークの脅威に対して、還元しています。
通信の振る舞いからC2を検知する
もう少し具体的に、データ分析でどうやって脅威を見つけているかをフローで説明します。先ほどと違って、データ分析がベースになるので、データを起点として脅威を見つけるのが大きなポイントになっています。なので、まずは可視化からスタートします。何をするかというと、日常の中で得ているセキュリティ機器のログの傾向をつかむということをやっています。
これは、異常か正常かは関係なく、両方の傾向を見ています。その中でも、正常から外れるものを異常としていったん定義をして、それが本当に脅威なのかは、後々の分析で明らかにしていきます。
なので、ここの矢印のとおり、まず可視化をして傾向をつかんで、その中で異常や正常を区別できるようなルールを作成します。そういったルールを作成して、それを自動化することで、異常を検知して自分自身に通知を受け取り詳細な分析ができる、といったサイクルを日々やっています。
では具体的にルール例を2つ挙げます。1つ目はC2通信(コマンド・アンド・コントロール)を見つけようというものです。C2通信の検知と書いてあるんですが、簡単に言うと、マルウェアが攻撃者のC2サーバーに対して通信を行うことです。
C2通信の宛先は、IPアドレスだったりドメインだったりしますが、攻撃者によっては宛先を1週間や1日でコロコロ変えてくるものもあります。また、事前にその宛先を知ることはかなり難しいので別のアプローチで検知する方法を考えないといけないよねというのが、モチベーションになっています。
なので、今回行った手法は、機械学習でC2通信を見つけようというもので、C2通信の通信の振る舞いから検知しようというのが1つのポイントになります。通信の振る舞いなので、宛先に依存せずに、情報が未知である場合にも、脅威の通信を見つけることが可能になります。
ただ、悪性の通信の振る舞いが簡単に見つかるか? というとそうでもなくて、C2通信の振る舞いと類似する正常な通信も中にはたくさんあります。なので、正常な通信の振る舞いとC2通信の振る舞いを両方検知して、その中で詳細な分析をすることで悪性・良性を判断しています。
正常な通信も悪性な通信もガンガン検知するのではなくて、できるだけ悪性なものだけを引っ張り出す……というか、検知するのが重要なポイントです。このあとパート2で別事案を紹介します。
これは機械学習でなくても検知できると思うんですが、いろいろ手法がある中でなぜこれ(機械学習)を選んだかを説明すると、下の2つが理由になります。
C2通信検知に機械学習を選んだ理由
まず、C2通信の振る舞いを定式化するのはかなり難しいので、教師になるようなデータがあれば、そのデータの傾向から検知できると楽だよねというのが1つのポイントです。
基本的にデータがないと機械学習のアプローチはできません。IIJでは過去の知見や事案に対応するデータが存在していました。評価するためのデータがあったからこそ、この機械学習のアプローチができたというのもポイントではあります。
字面だけで追ってもちょっとわかりにくいと思うので、図を持ってきました。これは簡単な図なので、本当にこういったデータでやっているかというとちょっと微妙な気がするんですが、簡単に伝わりやすいようにと思って簡略図を持ってきました。
まず左のマトリクス図は、縦が時間になっています。1時、2時から24時まで。横の軸が1分、2分と分になっています。右側の図に関しては最初はC2の通信ではなくて正常なWebブラウザの通信を表現した絵です。
マトリクスと合わせて見てみます。例えば、IIJの社員がIIJのホームページを1時1分に閲覧すると、このようにリクエストが飛びます。1回リクエストが飛ぶと、1時1分のところに1とカウントされます。こういったかたちで2回リクエストを出せば2。まったく通信を出さなければ0とマトリクスが埋まっていきます。
次にマルウェアに感染した端末だとどうなるかが右の図になるんですが、マルウェアは正常なWebサーバーにアクセスするというより、必要なのはC2サーバー側にアクセスするということです。
C2通信の例として、1つわかりやすいサンプルを持ってきました。このように、先ほどとちょっとマトリクスの表現は変わっているんですが、縦が時間で横が分。マトリクスはカウント数を色で表現しています。ヒートマップです。
このように、C2の通信は綺麗に模様が出てくるものもあればそうじゃないものもあり、正常な通信とC2の通信はパッと見てわかりやすいものもあればわかりにくいものもあるんですが、こういった模様を機械学習のモデルが判断して、異常の可能性があると私たちに通知をしてくれています。
実際に情報分析基盤の中で機械学習のモデルを組み込んで検知をする仕組みを運用しているんですが、過去の例で攻撃訓練や攻撃演習で使用された仮想のC2通信、実際に使用された標的型攻撃のC2通信とかを検知している実績があり、運用コストも比較的低いので、今はこのモデルを情報分析基盤に組み込んで検知をするという仕組みを使っています。
(次回につづく)