公式ブログ*-*イベント雑記セキュリティ関連トピック旅行記#DDOS#IT業界#サイバー犯罪#マルウェア2014年7月25日アンチウイルスの魔法の方程式どんなシステムもベースには独自のアルゴリズムがある。アルゴリズムがなければシステムもない。あるが、どれでもいい。大事なのは、最高の結果を出すために、何らかのルールに従うことだ。当社製品のアルゴリズムについてよく聞かれるが、特に多いのは、未来の脅威を競合他社よりもうまく検知するうえで、どんなアルゴリズムを使っているのか、という質問だ。明らかな理由から、当社の魔法の方程式について詳細までお話することはできないが、技術がテーマの今回の記事(これまでの記事で一番専門的な内容のはずだ)では、当社の技術開発室のドアを少しだけ開けて、中の様子を簡単に紹介する。詳しく知りたいという人は、下のコメント欄にどんどん質問を寄せていただきたい。当社では演繹法によって未知のマルウェアを検知している。全体から入って個々の結論に至るということだ。すべてのマルウェアが、x、y、zというアクションを実行するとしよう。あるファイルがx、y、zを実行したとすると、そのファイルに悪意がありそうだ、ということになる。実際はそこまで単純な話ではない。特定のアクションを実行したからといって、そのオブジェクトをマルウェアだと断定することはできない。結局のところ、どんなコマンドも有益なことを実行するために作成されたのだまず、特定のアクションを実行したからといって、そのオブジェクトをマルウェアだと断定することはできない。その最たる例がマスターブートレコード(MBR)へのアクセスだ。このコマンドを使うものがすべてマルウェアというわけではない。平和的な目的でこのコマンドを使うアプリケーションも多いからだ。他のアクションについても同じことが言える。結局のところ、どんなコマンドも「有益な」ことを実行するために作成されたのだ。良いものと悪いものを分けるという単純なやり方は、ここでは役に立たない。無害なプログラムとマルウェアの割合と構成を調べるのは効果的だ。当社ではこれをやっている。あるオブジェクトで何が起きているのか、隣のオブジェクトで何が起きているのかを調べ、その結果を分析し、有害/無害の全体的な状況(「味方」の数と「敵」の数)と、その後の処置について、根拠に基づいた決定を下す。そのために使っているのが、「SR」という慎ましい名前の技術だ。昔、同じような名前の歯磨き粉があったが、間違えないでほしい。Rating(セキュリティ評価)」の略だ。簡単に言うと、SRは多くの枝に分かれた自己学習型の重みづけシステムで、ルールに基づいた評価とエミュレーションのプロセスによって、オブジェクトの本質を正確に見極める。Labの魔法の方程式:自己学習型の重みづけシステムが、評価とエミュレーションでオブジェクトの本質を見極めるTweetSRはオブジェクトが生成したイベントの構成と密度、そして表面上の属性(名称、サイズ、場所、圧縮など)を分析する。した属性の1つ1つについて、複数のルールを組み合わせて危険度(0~100%)を評価する。最初に作られたルールのセット(今では500以上ある)は、さまざまな系統の80,000種類以上の悪質プログラムを人間の手で調べた結果生まれた。現在はほとんどのルールが自動で作成されており、人間のエキスパートは自己学習型のアルゴリズムを微調整しているだけだ。テストや管理を簡単にするために、ルールはいくつかのグループに分かれている(「インターネット」「パスワード」「レジストリ」など)。オブジェクトが1つまたは複数のルールに引っかかれば、相応の措置が適用される。ルールの一番単純な例がこちらだ。Yesオブジェクトの総合的な危険度は、ルールデータベース全体を使ったチェックで評価された個々の危険度の合計となる。別の言い方をするなら、典型的な人工ニューラルネットワークということだ。たくさんのセンサーから信号を収集して、その質的・数的な特徴を分析し、関連性を調べて危険度を判定する。してSR技術の活用が2007年に始まった(特許US7530106)。それ以来、当社はこの技術の改良を続けている。お察しのこととは思うが。当初、一番の問題だったのは、分析対象のファイルが有意でないイベントを大量に生成し、そのせいで、ファイルに悪意があるという誤った結果が出る場合があったことだ。Delphiアプリケーションを立ち上げると、意味のないイベントが最大500個も生成される。これらはDelphi言語で書かれたアプリケーションすべてに共通の内容で、ファイルの真の意図を読み取れるような情報はまったくない。この「雑音」によってコンピューターのリソースが浪費されるだけでなく、分析がはるかに難しくなってしまう。プログラムは有意でないイベントを大量に生成することがある。そこで、それを除外する方法を考え出したそこで、雑音をすべて取り除くフィルターを作成した。通常のルールと違ってブール属性で十分だ。このおかげで、作業は大幅に簡素化され、スピードアップした。結果、ルールにはAPI関数の名称と、その引数のマスクだけが含まれることになった。(*,-NULL-,-NULL-)関数の最初の引数に何らかの意味があり、他の部分はそうでなかった場合、そのイベントは重要でないものと見なされる。重要でないイベントのフィルタリングルールは、3つの方法で自動生成している。1つめは、ショウジョウバエ方式だ。World」という文字を表示する単純なアプリケーションを準備する。その際には、このツールの一般的なDLLをできる限り使用する。コンパイル済みアプリケーションをエミュレーターで起動して、生成された「ショウジョウバエ的」イベントをすべて「重要でない」フィールドに入力する。2つめは、パック型ショウジョウバエ方式だ。1つめの方法とよく似ているが、ここではパッカーやプロテクターのふるまいに注目する。このために、アセンブラ言語で書かれたダミーを、さまざまなパッカーやプロテクターとともに処理して、エミュレーターにかける。・・・あとはご推察のとおり、重要でないイベントを除外する。3つめは統計的な方法だ。安全なファイルと悪意あるファイルの両方を大量に分析し、両タイプのファイルのふるまいで頻繁に確認されるAPI呼び出しを特定する。これは先に挙げた2つを補完する方法であり、ショウジョウバエ的イベントが生成される見込みがまったくない場合に有効だ。この方法の用例としてわかりやすいのは、GUI割り当て関数とメモリ割り当て関数が生成する非重要イベントを特定する場合だろう。それ(重要でないイベントのフィルタリングルールを自動生成すること)は、一番簡単な課題の1つにすぎなかった。ここからもっと話がおもしろくなる・・・SRの最初のバージョンは、保護された1台のコンピューター上で動作していたため、実質的に他とのつながりがなかった。これでは全体像を把握できず、どのルールがトリガーされたのかも(それに頻度や正確さも)わからないし、評価をすぐ変更することもできない。効果を高める余地があったのだ。Network(KSN)だ。当時全速力で開発が進められていたKSNには、すでに専門システムであるAstraeaが追加されていた(保護されたコンピューターから送られてくる大量の信号を分析し、マルウェアの世界的状況について合理的な結論を出すシステムだ)。2009年には、SRの次期バージョンSR2(US8640245)をリリースすることができた。NetworkとAstraeaに統合された。これで当社はビッグデータを手に入れるとともに、そのデータを掘り下げて分析していくことが可能になった。セキュリティ業界において成功をつかむための魔法のレシピだ!まとめると、(1)死んだ(効果のない)ルールを削除する、(2)ルールを一時的に無効にする、またはテストする、(3)特殊な係数を使ってルールの評価をほぼリアルタイムで修正する、ことが可能になった。係数データベースのサイズは信じられないくらいに小さい(キロバイト単位)。このデータベースのアップデートは、2009年当時でさえコンピューターのインターネット接続にほとんど影響しなかった。Astraeaによって、危険度を計算するための統計フレームワークも広がり、計算には各種エミュレーターの信号だけでなく、KSNに接続されたその他多数のセンサーが発する信号も使われるようになった。過去にクラウド(KSN)で下された判定も利用できるため、エミュレーションのプロセスを省くことができる。1つ、うれしいボーナスがある。データが少ない(が、それでも怪しい動きをする)未知の「種」を、ストリームから確実に選び出し、人の手で分析できるのだ。本当に重要なのは、Astraeaがルールを自動的に修正する点だ。人間のエキスパートが必要になるのは、適用される数学モデルの有効性を定期的に評価するときと、それを最適化するときしかない(特許出願US20140096184)。賢い技術は自分で仕事をかたづける。技術は人間の手を借りず未来の脅威と戦うTweetグローバルなビッグデータを活用できるようになったことで、昔からの課題を解決する新しいアイデアがただちに浮かんだ。当社は、製品で初めて誤検知が見つかったときから、SRを使って誤検知に取り組んできた。誤検知に関して本当の意味で前進があったのは、2011年のことだった。誤検知を一気に削減可能な新機能をいくつか公にしたのだ。正規ソフトウェアがまったく無害な目的で実行するアクションも多い。インストーラーはSystem32フォルダーのファイルを削除する。この動作の評価を自動調整していては、名誉を不当に傷つけることになり、真の悪意を見落としてしまう。一挙両得というわけにはいかないので、妥協が必要だ。そこで、危険度の計算のメカニズムを3つの部分に分けることにした。先ほど説明した計算:そのふるまいが危険で、発生頻度が高いほど、危険度の評価が高くなる。ある種のホワイトリストルール:具体的な状況やファイルに適用される通常ルールのアクションを、無効化または修正する。正規アプリケーションの検知ルール:正規アプリケーションの典型的なふるまいが見られる場合は危険度を下げ、場合によっては安全という評価を下す。Noneこの例では明らかにレジストリキーにアクセスされていることがわかるが、これは単にNotepad++がDLLを渡しているだけだ。ルールの引数はFalseを削除するが、メインのルールは一定であり、このキーを変更しようとする別の試行があると、意図されたとおりに動作する。2011年には、さらに別の便利な機能を導入した(我々は無駄な時間を過ごすことなどない)。先ほど触れたように、SRではルール同士が連携せずに動作していた。Autorunキーに追加、といった複雑な相互依存性を調べることができなかった。そのような相互依存性を追跡できれば、個々のイベントの危険度を合計しただけの評価よりも正確な評価が可能になるかもしれない。そこでSR2では、イベントの相関付けを可能にして、未知のマルウェアをさらに正確に検知することを目指した。我々はこれを2つの方法で行った。未来の脅威と有利に戦うためには、イベントの分析だけでなく、イベントの関連付けが欠かせない1つめの方法として、ルールのグループか個別のルールかをORとANDで決定するビットマスクを作成した。主な記述は、ふるまいの分類のビット索引だ。ふるまいの詳細に基づいてマルウェアをクラスタ化するために考えられたものだが、同様のアプローチを危険度評価の改良にも適用できる。RULE540)といった関数を実装できる。したマスクの良いところは、コンパクトさと動作の速さだ。柔軟性に欠けるのが難点だが。2つめの方法は、SRの計算の後に全体分析を実施する特別なスクリプトの開発だ(特許US8607349)。このスクリプトは、個別に開始することも、ルールがトリガーされたときに開始することもできる。以前トリガーされたルールやルールのグループに関する統計が蓄積されたデータベースに、各スクリプトがアクセスできる。その結果、次の3つが可能になった。いった複雑なロジックを使用する、(2)ニューラルネットワークを最大限に活用する、(3)スクリプトを使用して、より正確なSR評価だけでなく、後続のスクリプトに適用可能な新しい情報を得る。10個のルールを分析した結果、最初のスクリプトが「アプリケーションが他のプログラムのパスワードを取得しようとしている」と判断したとする。2番目のスクリプトは「アプリケーションが何かをインターネットに送信する」と判断した。3番目のスクリプトは「アプリケーションがパスワードに興味を示し、かつ何かをインターネットに送信した場合、危険度の評価が+100%となる」と判断する。スクリプトはどんなルールとでも使用でき、最後のルールが何らかのアルゴリズムのトリガー的なものになる。以下がスクリプトの例だ。AddSR(-20);end;end.この例では、スクリプトがファイル作成の動作を評価している。ファイルがディスクのルートで作成されたことが確認されると、SRでの危険度評価は20%となる。ファイルの拡張子に応じて、「+」か「-」の符号で評価が追加される。この例から、スクリプトの主な利点がよくわかる。チェックの結果に基づいて個々のSR危険度を割り当てることで、関数の引数について複合的な評価を実行できることだ。危険度評価を上げるチェックもあれば、下げるチェックもあるため、複合的なチェックと複合的な分析が可能となり、検知ミスのさらなる抑制を見込める。当社はすでに2015年版の個人向け製品ラインを世に送り出し始めている。長きにわたって考え抜いた末、ローカルのSRを廃止して、危険度の計算をすべてクラウドに移すことにした。このアプローチは、多くの利点をただちにもたらす。分析の質を落とすことなく、コンピューターで必要とされるリソースを減らせるのだ。処理はすべてクラウドで実行されるのだから。判定の配信の遅れについては、埋め合わせできるだろう。・・・実際のところ遅れはほとんどない。1,000分の1秒にも満たない時間なので、特別なソフトウェア以外にはわからないだろう。ユーザーの皆さんも気づかないはずだ。これでおわかりいただけたと思う。Coca-Colaのような「秘密の」魔法の方程式を、6,000文字程度で簡単に説明した。この技術を詳しく説明しようとしたら、数日はかかるだろう。詳しく知りたい人は下のコメント欄で知らせてほしい。ブログで一番技術的な内容の記事。一読の価値ありTweet本ブログを無料購読するには、メールアドレスをご登録ください。新着記事をメールでお知らせします。Lab」にメールアドレスを提供することに同意します。この同意の取り消しは、購読に関連して受け取るメールの下部にある[購読の解除]リンクよりいつでも可能であることを承知します。処理に必要なロジックが含まれます。プレジデント!先日、パリ平和フォーラムのためにパリを訪れた。各国の政府、企業、その他組織が一堂に会し、世界をより良きものとするための方法を模索し話し合う年次イベントだ。Portalの無料版が利用可能となった。100Kasperskyは、特許に関して革新的な企業であると評価された。Innovatorsに選ばれた。Center@サイバージャヤ@プトラジャヤ@マレーシア今回はマレーシアのプトラジャヤを訪れた。同国の行政新首都として1995年に開発が始まった新しい都市だ。Centerが開設される。2019年7月19日シンガポール、インターポールKasperskyとインターポールは、サイバー犯罪に対抗するための協定を5年間延長することに合意した。公式見解を示すものではありません。月を選択2019年12月2019年10月2019年8月2019年7月2019年6月2019年3月2019年2月2019年1月2018年12月2018年11月2018年10月2018年7月2018年6月2018年4月2018年3月2018年1月2017年10月2017年9月2017年8月2017年7月2017年6月2017年5月2017年3月2017年2月2017年1月2016年12月2016年11月2016年10月2016年9月2016年8月2016年7月2016年6月2016年5月2016年4月2016年3月2016年2月2016年1月2015年12月2015年11月2015年10月2015年9月2015年8月2015年7月2015年6月2015年5月2015年4月2015年3月2015年2月2015年1月2014年12月2014年11月2014年10月2014年9月2014年8月2014年7月2014年6月2014年5月2014年4月2014年3月2014年2月2014年1月2013年12月2013年11月2013年10月2013年9月2013年8月2013年7月2013年6月2013年5月2013年4月2013年3月2013年2月2013年1月2012年12月2012年11月2012年10月2012年9月2012年8月タグ*-*イベント雑記セキュリティ関連トピック旅行記プライバシーポリシーウイルスを報告Kasperskyカスペルスキー公式ブログソーシャルメディアFacebookTwitterInstagramLinkedinYoutubeFlickrRSSホームユージンについてメディアイベント読みものビデオブログTagsお問い合わせ。