4 億を超えるエンドポイントを有するアバストは、AI (人口知能)と機械学習を利用して世界中のアバスト セキュリティソフト ユーザーを保護しています。アバストには非常に膨大な量の統計的数字が集まります。1 か月間に阻止するマルウェア攻撃は 35 億件を超え、アバストのセキュリティクラウドは 1 か月に 2,000 億以上の URL と 3 億個の新規ファイルをチェックします。マルウェアが進化するにつれて、弊社の脅威研究所チームは脅威を継続的に検出し、お客様に最新情報を提供することにより、プロテクションを常に強化し、サイバー犯罪者の一歩先を歩み続けています。
しかしながらビッグ データと自動化がすべてというわけではありません。高度な技能を備えた脅威研究所メンバーたちが縁の下の力持ちとして日々働き続けることにより、サイバー犯罪との闘いに人間的な要素を加えています。
本日は、舞台裏で働く脅威研究所アナリストの一日がどんなものか、皆さんと一緒に少しのぞいてみたいと思います。
午前 8 時 6 分
オフィスにはアバスト脅威研究所の全スタッフが揃います。朝日の差し込むオフィスの壁には、色とりどりの数字やチャート、地図などが描かれた大きなスクリーンがあります。世界の動向、脅威やその他のアクティビティに関する統計データを一覧できるこのスクリーンは、脅威をめぐる環境が常に変化していることを思い起こさせます。
コーヒーも用意できました。さあ、仕事開始です。
午前 9 時 9 分
定期的なチェック、そして細かな分析を行っていると、すぐに別の仕事に呼ばれました。弊社の自動システムのひとつが、2 日前に始まった特異な傾向の中に潜在的な脅威を見つけたのです。この発見を受けてアナリストたちは警戒態勢に入ります。サイバーキャプチャー、挙動監視シールド、ヒューリスティック データベースにこの傾向の具体的なケースがないか探し始めました。その背後にあるものを見つけ、それが悪意があるのか、あるいは無いのかを確認し、悪意のあるものである場合は弊社のユーザーを確実に保護するための作業に入ります。
私たちの手法は単純ですが、簡単ではありません。発見し、分析し、それに対する保護の方法を考え出します。その後、実際にその保護方法を製品に組み込むのです。今回のような新たな発見は保護提供プロセスの中でも最も重要な部分です。
多数の小規模な脅威は、弊社の AI とビッグ データ システムで対応が自動的におこなわれますが、今回発見された、この傾向はどちらかというと「顕著なもの」であると判断がなされたため、チームはスタッフによる人的調査を開始します。私たちはアクティビティからコードを取り出し、悪意のあるものである可能性がある URL や署名がバイナリにないか探し始めます。
これは誤認警報であるか、あるいは少なくとも自動システムを使って対処できるものであるのかといった可能性も含め、調査と分析を進める必要があります。
午前 9 時 19 分
一部の脅威 (マルウェア、ウイルスなど) は世界に繰り返し出現するという特徴を持ちます。今回、脅威と思われているこの特異性が以前に出現したことがあるものではないか確認する必要があります。悪意のあるコードを繰り返し目にすることがありますが、形を変えて戻ってくる可能性もあります。元の形態を見つけるには、複数のレイヤーに目を通す必要があります。私はこの作業に取りかかります。
毎日の仕事にはいくつか定期的な作業がありますが、一日の作業がまったく同じということはありません。私が分析する案件はそれぞれ異なりますし、作業方針も常に変わります。
午前 9 時 47 分
バイナリを観察し、検出ソフトウェアを実行したところ、このコードには見覚えのあるものが見つかりました。古くからよく使われているコードに新たな「ひとひねり」を加えたものです。
悪意のあるリンクをクリックさせるというのは、10 年以上前から使われている方法です。そして、私たち人間は注意深くはないとしても、疑い深いという性質があります。しかし人によってはメールを受け取って、「リンクをクリックしてください」、「この zip ファイルを解凍してください」などと求められると、そのとおり実行してしまうことも事実です。
今回見つかった詐欺では、取引相手である合法的な企業であるかのように装って請求書を送りつけるようです… しかし、実は請求書ではなく、マルウェアなのです。
当初は悪質なウェブフォームに個人情報を入力させようとする単純なフィッシングのように見えましたが、実は相手のコンピュータと、それに接続されているすべてのコンピュータを感染させるマルウェアにリンクされていたのです。
午前 10 時 12 分
非常に多くの悪質な脅威の問題点は、共通のコードから作られていることです。まるでゾンビのように、変異し続けて繰り返し現れます。脅威が同じものに見える場合、弊社のお客様は保護されます。しかし、わずかに形を変えて戻ってきた場合、私たちは素早く対処し、アンチウイルスが最新の状態であることを確認してお客様を保護する必要が生じます。
午前 10 時半
私は Windows プラットフォームで Windows バイナリに焦点を絞って作業を行います。脅威研究所には悪意のある Javaスクリプトや Android を専門に扱うチームもありますが、今回の脅威には、彼らの手助けは不要なようです。私はスクリプトを分析して、悪意のあるコードがどのようにしてコンピュータに展開されるかを確認します。
もうひと頑張りでこの脅威がどのコードに基づいているかを見つけ出すことができます。そのコードが分かれば、それと闘うシグネチャー/検出メカニズムを記述して、ユーザーのソフトウェアに直接配信することができます。
午前 11 時 21 分
私は昨日発見された詐欺を担当している同僚と話をして、その後どうなったか聞きました。彼女の話では、ある大手銀行の顧客を標的にしたフィッシング攻撃を私たちが阻止できたとのことでした。その銀行では、最近ではほぼ標準になっている2要素認証を、オフィスの内外のすべてのコンピュータで使用しています。
しかし、攻撃者はログイン情報を取得するアプリを作成しました。そして、ユーザーを騙してそのアプリを Android スマートフォンにダウンロードさせたのです。そのアプリは、ログインのための確認コードが含まれているテキストを読み取ります。
私たちは、手遅れになる前に何とかこの脅威を捕らえ、この悪意のあるアプリをダウンロードしたユーザーには、アバスト アンチウイルス ソフトウェアを用いて直ちに削除するよう勧めることができました。この攻撃により、会社は数百万ドル、あるいは数十億ドルもの損害を被る可能性がありました。
私たちは自分が成し遂げた仕事を誇りに思いました。
午前 11 時 34 分
今日の脅威は非常に複雑かつ狡猾なものであることが分かってきました。悪意のあるものであることはすでに明らかですが、さらに詳しく調べて、隠されている構成ファイルを入手することができます。そのファイルは暗号化された形でバイナリのどこかにあるはずです。構成ファイルには、他の悪意のあるサーバーやスクリプトのURLなど、他の情報が含まれていることが少なくありません。
私はアセンブリコードをデバッグしているのですが、構成ファイルはまだ見つかりません。そこでスクリプトを書いて診断を実行することにしました。
午前 11 時 56 分
私は診断の結果が届くのを待つ間、別のプロジェクトの仕事をしています。
私は一部の脅威をこれまでより迅速に検出する方法に取り組んでおり、アバストではそれを行うための新しいシステムを設計しています。今は、これに役立つルール (コード) を作成中です。私たちは皆、システムを高速化し、より優れた仕事をする方法を考案するという難題に取り組むのが大好きです。
正午(ランチ)
ランチタイムです!
私はキッチンに立ちトースターでパニーニが焼けるのを待っています。隣に立った同僚と、2017 年 5 月に発生した悪名高い WannaCry 攻撃について話しをします。
あの攻撃のニュースが広まる前に、私たちは特定の指標から、何かが起こりつつあることが分かりました。私たちは脅威が広がり、被害が拡大するのを目にして、分析を開始しました。挙動監視シールド (コンピュータ内の挙動を観察する技術) により、WannaCry の発生が公に発表される前に、弊社はお客様が影響を被るのを防ぐことができました。
これはアバスト セキュリティソフトの新たなる勝利でした!
午後 12 時 37 分
私が食器を洗っているときに、最近入社したばかりのホンザが昼ご飯を食べていました。ホンザは、私がどうやってこの部門の仕事に就いたのかと質問をします。
「適切なタイミングに、適切な場所にいる必要があるんだと思うな」と私は笑って答えました。
私は高校時代にコーディングの勉強を始めました。私はプログラマーのリバースエンジニアリング技術をテストするために作られた「crackme」プログラムでリバースエンジニアリングを行うのが好きでした。
大学院を卒業した数年後に、ある友達がアバストの求人に応募し、アバストで働き始めました。彼は私が crackme プログラムをいくつか解いたことがあるのを知っていました。つまり、私はソフトウェアの保護の仕組みが分かっていました。そこで、私もこの仕事に応募することにしたのです。
おしゃべりはこのぐらいにして、仕事に戻ります!
午後 1 時 14 分
とうとう診断の結果が出ました。ゴールは間近だと感じます。
しかし、ここからが最も困難な部分です。私はコードのサンプルを分析し、アルゴリズムをリバースエンジニアリングして、ファイルの具体的な構成がどのようなものか明らかにしようと試みています。添付書類を開いてしまったユーザーを保護するためにブロックする必要がある URL をコードの中に見つけることができるかもしれません。
私が手作業で探している間、いくつかの内部ソフトウェアも実行されています。コードを分析し、OllyDbg (Olly Debugger ソフトウェア) と呼ばれるデバッガーを使用してコードをリバースエンジニアリングしようと試みます。この作業の成り行きによっては、IDA Pro (インタラクティブな逆アセンブラ) を使用する可能性もあります。
私は自分が何を探しているか分かっています。私はその周りを回っていますが、まだそれを手にしてはいません。この作業を行う場合は常に、これまでに行ったことを台無しにしてしまう可能性のある過ちを犯さないようにすることが大きな課題となります。
永遠に隠れ続けることは不可能です。私は適切な場所を探す必要があるだけです。
午後 2 時 38 分
この仕事はちょっと時間がかかりそうです。コードは非常に複雑で、そのために困難が生じます。脅威のソース コードを理解するのに、とにかく時間がかかるのです。
多くの人はバイト コードにコンパイルされる C# などの言語でプログラミングできます。このコードはインターネットからダウンロードできるツールを用いて簡単にリバースエンジニアリングが可能で、制作者によって書かれたのとほぼ同等の高いレベルでコード全体を確認できます。
通常はある程度の難読化 – コードをコードの内部に隠すこと - が行われていますが、クラスや変数の名前変更と、その他のいくつかの確認を行った後で、プレーン テキストのコードに戻すことができます。
しかし、このコードは C# ではなく C++ で書かれており、多数のクラスが使われているため、リバースエンジニアリングが難しくなっています。作業はゆっくり、注意深く行う必要があります。ほとんど命令ごとにデバッグしている状態です。
午後 4 時 10 分
見つかりました!
同僚と協力して、バイナリ コードの奥深くで暗号解読ルーチンを見つけました。私は、今日中には見つからないという予感がしていました。しかし、私たちはメモリのトラッキングに集中し、思ったとおり、とうとう見つけることができました!
この脅威は、今年の前半に弊社が捕らえたものと類似したものでした。誰かがそれを、このマルウェア展開のベースとして使用したことは明らかです。ソースと識別情報は多数のコードに埋め込まれており、その中にはあたかも正当なものに見えるよう装ったコードも含まれていました。
午後 4 時 15 分
次の手順は、お客様のためにアラートとプロテクションの準備を迅速に整えることです。弊社では必ずそれぞれのケースに応じた適切な検出手法を選択し、お客様にお届けしています。コードによっては自動的に作成して配信できるものもありますが、今回の場合は私とチームとでカスタムメイドの定義 (コードとデータ) を記述する必要があります。
午後 4 時 50 分
私たちは新しい定義をバックエンドに送り、全ユーザーのコンピュータに送信する前に、誤検出を避けるためにソフトウェアで数種類のテストを実行しました。
午後 5 時 7 分
非常に迅速な配信が可能なストリーミングアップデートで定義を配信できる段階になりました。所要時間はほんの数分です。その後、悪意のあるバイナリにフラグを付けることができます。また、私たちは一部のコードの変更も行いましたが、この変更については適切なテストを行う必要があり、VPS (仮想プライベート サーバー) 全体をアップデートすることによって提供されます。これには、より多くの時間がかかります。
ファイルを実際に開いてしまい、ファイルが展開されたというユーザーのフラグはまだ見つかっていないため、このケースは「感染」なしで解決できる可能性があります。リンクをクリックしたというだけで生涯の貯えを騙し取られた人の話を聞くのは悲しいことです。
私は自分の仕事がうまく行ったのを見ると、非常にうれしくなります。悪意のあるコードをブロックすることで満足感を感じます。一日中 PC の前に座って画面を見続ける私の仕事は退屈だと考える人もいるかもしれませんが、脅威を見つけて、それを捕らえた人が他に誰もいないとき、私は世界最高の気分になります!
午後 6 時
退社時間です! 今日は良い一日でした。何らかの問題にその日のうちに対処できるのはまれなことです。さて、明日はどのような一日になるのでしょうか…?