Deep Instinct | MISO https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com 未来を創造するITのミソ Fri, 16 Feb 2024 01:08:16 +0000 ja hourly 1 https://wordpress.org/?v=6.7.2 https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com/wp-content/uploads/2017/09/tdi_300-300-300x280.png Deep Instinct | MISO https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com 32 32 ディープラーニングを活用したアンチウイルス製品と従来型アンチウイルス製品を比べてみた https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com/deep-learning-anti-virus-software Tue, 02 May 2023 05:00:25 +0000 https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com/?p=15106 はじめに  近年、AI(人工知能)は色々な分野で活躍を見せており、今後のITにおいても非常に重要な要素の一つであることは皆さんもご存じかと思います。それはセキュリティ分野でも同じであり、アンチウイルス製品のシグネチャ作成…

The post ディープラーニングを活用したアンチウイルス製品と従来型アンチウイルス製品を比べてみた first appeared on MISO.]]>
はじめに

 近年、AI(人工知能)は色々な分野で活躍を見せており、今後のITにおいても非常に重要な要素の一つであることは皆さんもご存じかと思います。それはセキュリティ分野でも同じであり、アンチウイルス製品のシグネチャ作成やマルウェア解析にも応用されており既に製品化もされています。

そのような中で、AI技術の発展型ともいえる「ディープラーニング」(深層学習)を初めてセキュリティ分野に活用した『Deep Instinct』という製品があります。『Deep Instinct』と従来型のアンチウイルス製品ではどのような違いがあるのか検証するため、マルウェア検体を用いた比較検知を行いました。

 

ディープラーニングとは

 比較の前に、ディープラーニングについて少し触れたいと思います。
 ディープラーニングは、「マシンラーニング(機械学習)」と同様に人工知能の学習手法の一つです。ディープラーニングもマシンラーニングも大量のデータを使用して学習させるという点は同じですが、大量データを学習するプロセスが異なります。マシンラーニングは、大量データから人が特徴点を抽出し、人工知能によって法則やパターンを学習する手法になります。一方ディープラーニングは、大量データからニューラルネットワークに代表される階層構造に関連させて生データを100%余さず学習する方法であり、人の手を介さずに行う手法です。ディープラーニングは、マシンラーニングに比べて時間、人的コスト、人的ミス回避に優れた手法といわれています。

 

比べてみようと思ったきっかけ

 Trend MicroやSymantec、ESETなどの一般的な「EPP(Endpoint Protection Platform)」と呼ばれるセキュリティ製品は、第三者機関による試験を受けて評価されています。メジャーな製品ではいずれも高い検知性能を残していますが、EPPは一般的に”発生したウイルスを解析してシグネチャなどを生成する性質”から「過去のウイルス」が評価・検知の対象となります。

その一方で、コンピュータウイルスの世界では、依然としてEmotetが猛威を振るっています。これは過去のウイルスが暴れている訳ではなく、新たなコンピュータウイルス亜種が出現することにより、アンチウイルス製品の対応が間に合わない可能性も示唆されています。こうなると、「実はウイルス亜種が発生した際は世の中の誰かが感染しており、その感染からワクチンとなるシグネチャやパターンが作成されて、その他の人が守られる」(=初期の人は守られない)が現在の仕組みになっているのではないでしょうか。

それに対してDeep InstinctはEPPの要素が強い製品ですが、「予防ファースト」のアプローチを採用して「未知の脅威(ウイルス)」にも対応できると謳っています。

 上記のように “第三者機関で高評価を受けているメジャーな製品が未知の脅威に対応できるのか”、また、”Deep Instinctは未来のウイルスに対して予防(検知)できるのか”を確認するために、実際のマルウェア検体で比較試験を行ってみました。

 

比較検知の内容

 対象のOSは、普及率が高く、リスクも多く存在する Windows 10 を対象としました。比較する2製品のそれぞれに仮想ゲストを用意して、万が一にもウイルスが拡散しない環境を作りました。

 アンチウイルスは、Deep Instinctと製品Aを使用します。製品Aは、第三者評価機関である “AV-Comparatives” で高評価を出しており、加えて “AV-TEST 2021” で「最も優れたウイルス対策ソフトの1つ」に選ばれた製品です。また、製品Aは Windows 10 での2018年のシェアが50%以上あるとメーカーが公表しており、一般的なセキュリティ製品と言って差し支えないと思います。

 また、未来のウイルス(未知のウイルス)の検証を実現するために、特定の日付で検証環境(仮想ゲスト)のネットワークを切り離して、シグネチャやアプリケーションの更新が行われないようにしています。

比較製品 Deep Instinctと製品A
端末の状態 n日(n日にネットワークを切り離し比較製品のアップデートがかからないようにしている)
マルウェア検体

Windows に3種類マルウェア検体を用意

検体X
  n日から3ヶ月前に報告されている検体を30ファイル
  ※しばらく前(古い)の検体をイメージ

検体Y
  n日から1ヶ月前に報告されている検体を30ファイル
  ※少し前(少し古い)の検体をイメージ

検体Z
  n+1日に報告されている検体を30ファイル
  ※未来(未知)の検体をイメージ

環境

Deep Instinctと製品Aのそれぞれに仮想環境(仮想ゲスト)を作成

比較前にネットワークを切り離してスタンドアローン状態を維持

比較方法

検体X、検体Y、検体ZをDeep Instinctと製品Aがそれぞれ導入された仮想ゲストへ「コピー」する(検知するとコピーされず、検知できないとコピーが成功する)

ウイルスの実行は行わずにファイルの解析(静的解析)で検知を行う

手順

① 仮想ゲスト(Deep Instinctと製品Aで異なる)を起動する

② 検体X、検体Y、検体Zを異なるタイミングでローカルへコピーする

③ ウイルスが検知されてファイルがコピーされないか確認する

検体ファイルは以下のような検体X、Y、Z合わせて90種類のファイル用意しました。ファイル名に数値やアルファベットがランダムに並んでいますが、これはファイルを識別するためのハッシュ値になっています。

 

比較結果

Deep Instinct 検体X(3ヶ月前)の検知結果

検知率100%(30/30)

検体Xは「3ヶ月前に報告されている検体」です。検体Xの30ファイルすべてを検知しました。下図はDeep Instinctが検知してブロックしたことを示す画面です。

コピー後のエクスプローラの画像です。すべて検知(ブロック)しているのでファイルは何もコピーされていませんでした。

製品A 検体X(3ヶ月前)の検知結果

検知率80%(24/30)

コピー後のエクスプローラの画像です。検体Xの30ファイルの内、6ファイルが検知できずにコピーされました。

 

 

Deep Instinct検体Y(1ヶ月前)の検知結果

検知率100%(30/30)

検体Yは「1ヶ月前に報告されている検体」です。検体Yの30ファイルすべてを検知しました。

今回もすべて検知(ブロック)しているのでファイルは何もコピーされていませんでした。

製品A 検体Y(1ヶ月前)の検知結果

検知率60%(18/30)

検体Yの30ファイルの内、12ファイルが検知できずにコピーされました。

 

Deep Instinct検体Z(未来)の検知結果

検知率100%(30/30)

検体Zは「各製品の状態から翌日(1日後)に報告されている検体」です。検体Zの30ファイルすべてを検知しました。

最後もすべて検知(ブロック)しているのでファイルは何もコピーされていませんでした。

製品A 検体Z(未来)の検知結果

検知率33%(10/30)

体Zの30ファイルの内、20ファイルが検知できずにコピーされました。

 

CPU負荷・処理速度

Deep Instinctと製品Aを実行した際のCPUパフォーマンスも比べてみました。

下図がDeep Instinctで検証した際のCPU使用率です。一時的にCPUが100%に到達していますが、ピークの時間は5秒程度だったので、処理の重さは感じませんでした。

下図が製品Aを検証した際のCPU使用率です。仮想環境でリソースが制限されているということもありますが、検体をコピーした直後から大体30秒程度の間はCPUが100%に張り付いていました。

 

結果まとめ

確認内容 Deep Instinct  製品A

検体 X の検知率

3ヶ月前に報告されている検体

100%検知 80%検知

検体 Y の検知率

1ヶ月前に報告されている検体

100%検知 60%検知

検体 Z の検知率

翌日に報告されている検体

100%検知 33%検知

CPU負荷と処理速度(時間)

5秒程度 30秒程度

 今回の比較では、前述のような結果となりました。検体の数が少ないために偏りが発生している可能性はありますが、少なくとも以下のことが確認できたと思います。

  • Deep Instinct(ディープラーニング)は従来型アンチウイルスで検知できないウイルスを検知できた
  • Deep Instinctは製品Aに比べて処理速度が速く、CPU負荷も少ない結果になった
  • 従来型アンチウイルスは新しいウイルスほど検知率が下がる

 

最後に

 ディープラーニングは、自動運転技術、宇宙技術、医療、自動音声翻訳など様々な分野で活用されていますが、サイバーセキュリティ分野も例外ではありません。Emotetなどのウイルスの脅威に怯えることのない未来が訪れるよう、ディープラーニング技術(Deep Instinct)の更なる発展を期待します。

The post ディープラーニングを活用したアンチウイルス製品と従来型アンチウイルス製品を比べてみた first appeared on MISO.]]>
Deep Instinctの端末管理をREST APIで効率化する https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com/deep-instinct-rest-api Mon, 26 Dec 2022 04:30:31 +0000 https://alb-owned-https-576747877.ap-northeast-1.elb.amazonaws.com/?p=14442 はじめに 本稿では、「Deep Instinct」を運用するにあたって、REST APIにより端末管理を効率化するテクニックを紹介します。 Deep Instinctとは 「Deep Instinct」は、ディープラーニ…

The post Deep Instinctの端末管理をREST APIで効率化する first appeared on MISO.]]>
はじめに

本稿では、「Deep Instinct」を運用するにあたって、REST APIにより端末管理を効率化するテクニックを紹介します。

Deep Instinctとは

「Deep Instinct」は、ディープラーニングを活用したエンドポイントセキュリティのソリューションです。既知の脅威だけではなく、未知の脅威も99%以上の高い検知率で予防することができます。脅威の検知、隔離というプロセスが全て自動化されているため、運用管理の工数を削減することができます。

下図が「Deep Instinct」の概要イメージですが、クラウド上の「D-Appliance」と接続することが前提となっています。また、管理コンソールと呼ばれる設定や検知された情報の参照も、「D-Appliance」へのアクセスが必要です。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

そのため、どの端末にエージェントが導入されたか、また、検知された情報を確認するには、このクラウド上のサービスへ都度アクセスする必要があります。

また、端末情報の管理もこちらで行うため、追加で情報を付与したり、人事異動や使用者変更等に伴う付与情報の一斉変更をしたり、といったことが必要となってきます。

ところが、現状の「D-Appliance」の管理コンソール上では、端末へユーザーが付与出来る情報はコメント欄のみとなっており、更新は1台ずつしか実施出来ない仕様となっております。

 

REST APIを使うことのメリット

こういった課題への対応として、「Deep Instinct」にはAPIコネクターとしてREST APIでの連携が実装されており、これを利用して、端末情報の取得、更新といった運用を効率的に行うことが出来るようになっております。

「Deep Instinct」の詳細については、下記の弊社サイトにて案内しています。

ディープラーニングを活用したサイバー攻撃対策「Deep Instinct」

 

REST APIを使うための設定手順

まずは、REST APIを使うために設定を行います。

管理コンソールにログインし、「Settings」―「Integration & Notification」―「API Connectors」を選択します。

 

 

 

 

 

 

 

 

 

「API Connectors」画面が表示されますので、「Add Connector」をクリックします。

 

 

 

 

 

 

 

 

「Add API Connector」画面が表示されますので、それぞれ以下の情報を入力し、「Create」をクリックします。

「Name」:TEST(任意のコネクター名)

「Tenants」:All Tenants

「Permission」:Read and Remendiation

 

 

 

 

 

 

 

 

 

 

以下のようにConectorが作成されれば準備は完了です。

ここで作成された「API Key」は次の作業で使用するため、値をコピーしておきます。

 

 

 

 

 

 

 

 

 

REST APIを使ってみる

さっそくREST APIを使ってみましょう。

Deep Instinctでは、REST APIの実行サイトも用意されており、まずはこちらで試してみましょう。

接続している管理コンソールのサイトの「/api/v1/」にアクセスすることでAPIサイトへアクセス出来ます。

 例)https://xxxx.deepinstinctweb.com/api/v1/

画面上部の「Authorize」をクリックします。

「Available authorizations」画面が表示されますので、「Value」欄に先程コピーした「API Key」を入力し、「Authorize」をクリックします。

 

 

 

 

 

 

 

 

認証が成功すれば、以下のような画面が表示されますので、「Close」をクリックします。

 

 

 

 

 

 

 

では、端末に関する操作をしてみましょう。Deep Instinctでは「Devices」がそれにあたります。

まずは端末情報の取得を行います。

端末情報の取得は一番上の「GET /devices/」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

 

 

「Try it out」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

 

 

「Execute」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

実行結果として、「Response body」に取得した端末情報が表示されます。また、「Download」をクリックすることで、ファイルをダウンロードすることが出来ます。

次に、コメント欄の更新を行います。コメント欄への操作は一番下の「PUT  /devices/{device_id}/comment」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

 

 

「Try it out」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

コメントの内容、端末の情報(DeepInstinctで管理されているID)を入力し、「Execute」をクリックします。

 

 

 

 

 

 

 

 

 

 

 

実行した内容と実行結果が表示されます。

レスポンスコードが「204」であることから、コメントのアップデートが成功したことが確認出来ます。

 

 

 

 

 

 

 

 

 

 

 

実際に更新された内容を管理コンソールから確認した結果です。

 

 

 

 

 

 

 

このようにREST APIを利用して、コメントを更新することが出来ました。

上記で紹介したWeb画面からでは1台ずつしか更新出来ませんが、こういった情報をもとに、複数端末の情報を更新するバッチの作成が容易に行うことが出来、Deep Instinctでの端末管理を効率的に行うことが可能です。

以下にCSVファイルを読み込んで複数端末のコメント欄を更新するバッチファイルのサンプルソースを提示しますので参考にしてみて下さい。

また、それ以外にも検知されたイベントの取得など、Deep InstinctにREST APIを連携することでより運用しやすくなります。この機会に利用してみてはいかがでしょうか。

 

REST APIを利用した複数端末のコメント情報を更新するバッチファイルのサンプルソース

※「# プロパティ」以下にある「$Url」と「$ApiKey」は、正しい情報を記載ください。

# 例外(try catch)を捕まえるために「stop」にする
$ErrorActionPreference = “stop”

# モジュール(自身)が存在するフォルダーに移動する
Set-Location $PSScriptRoot

function Main() {
$RestAPI = New-Object RestAPI

# ———+———+———+———+
# csvファイルを読み込んで、デバイスのコメントの更新を行う。
Write-Host “———+———+———+———+rncsvファイルを読み込んで、デバイスのコメントの更新を行う”
[PSCustomObject]$Datas = Import-Csv .\RestAPIUpdate.csv -Encoding OEM
Write-Host $(Write-Output $Datas | Format-Table -AutoSize | Out-String)
$RestAPI = New-Object RestAPI($ApiKeyTenant1)
foreach ($Data in $Datas) {
# Write-Host “id =” $Data.id “, comment =” $Data.comment
$RestAPI.Body = Convertto-Json @{“comment” = $Data.comment; }
$rc = $RestAPI.Exec(“devices/” + $Data.id + “/comment”, “Put”)
$RestAPI.ToString()
Write-Host “$(Get-Date -Format “yyyy/MM/dd HH:mm”) Code = $rc”
}
$RestAPI = $null

return $rc
}

# RestAPI呼び出し
class RestAPI {
# ———+———+———+———+
# プロパティ
[String]$Url = “https://xxxx.xxxx.deepinstinctweb.com”
[String]$Uri = “/api/v1/”
[string]$Api = “”
[string]$Method = “”
hidden [string]$ApiKey = “***********************************************”

[object]$Headers = $null
[object]$Body = $null
[object]$Response = $null
[int]$StatusCode = 0
[string]$StatusDescription = “”

# ———+———+———+———+
# コンストラクタ
RestAPI([String]$Url_, [String]$Uri_, [String]$Api_, [String]$Method_, [string]$ApiKey_) {
$this.Url = $Url_
$this.Uri = $Uri_
$this.Api = $Api_
$this.Method = $Method_
$this.ApiKey = $ApiKey_
$this.SetApiKey()
}

RestAPI([String]$Api_, [String]$Method_, [string]$ApiKey_) {
$this.Api = $Api_
$this.Method = $Method_
$this.ApiKey = $ApiKey_
$this.SetApiKey()
}

RestAPI([String]$Api_, [String]$Method_) {
$this.Api = $Api_
$this.Method = $Method_
$this.SetApiKey()
}

RestAPI([string]$ApiKey_) {
$this.ApiKey = $ApiKey_
$this.SetApiKey()
}

RestAPI() {
$this.SetApiKey()
}

SetApiKey() {
# Headersの作成
$this.Headers = @{“accept” = “application/json”; “Authorization” = $this.ApiKey; “Content-Type” = “application/json”; }
}

# ———+———+———+———+
[void]ToString() {
Write-Host “Uri =” $($this.Url + $this.Uri + $this.Api)
Write-Host “Method =” $this.Method
Write-Host “Headers =” $(Write-Output $this.Headers | Format-Table -AutoSize | Out-String)
Write-Host “Body =” $this.Body
Write-Host “StatuCode =” $this.StatusCode # $(if ($this.StatusCode -eq 200) { “正常” } else { “異常” })
Write-Host “StatusDescription =” $this.StatusDescription
if (-not ([string]::IsNullOrEmpty($this.Response))) {
Write-Host “Response =” $(Write-Output $this.Response.Content | ConvertFrom-Json | Format-Table -AutoSize | Out-String)
}
}

# ———+———+———+———+
# 実行
[int]Exec([string]$Api_, [string]$Method_) {
$this.Api = $Api_
$this.Method = $Method_
return $this.Exec()
}

[int]Exec() {
# Uri
$AppUri = $this.Url + $this.Uri + $this.Api

# Body
$Body_ = $null
if (-not ([string]::IsNullOrEmpty($this.Body))) {
$Body_ = [System.Text.Encoding]::UTF8.GetBytes($this.Body)
# $Body_ = $this.Body
}

$this.StatusCode = 0
$this.StatusDescription = “”
$this.Response = $null
try {
# $Response = Invoke-RestMethod -Method Get -Uri $AppUri -Headers $Headers -ContentType ‘application/json’
# Write-Host “Invoke-WebRequest -Method $this.Method -Uri $AppUri -Headers $this.Headers -Body $Body_ -ContentType ‘application/json'”
$this.Response = Invoke-WebRequest -Uri $AppUri -Method $this.Method -Headers $this.Headers -Body $Body_ -ContentType “application/json”
$this.StatusCode = $this.Response.StatusCode
$this.StatusDescription = $this.Response.StatusDescription
}
catch [System.Net.WebException] {
$this.StatusCode = $_.Exception.Response.StatusCode.value__
$this.StatusDescription = $_.Exception.Response.StatusDescription
throw $_
}

return $this.StatusCode
}
}

$rc = Main
exit $rc

CSVファイルとしては、以下のようにデバイスIDと更新するコメントの内容を記載したものを用意します。

id,comment
1111,”コメント更新1”
1112,”コメント更新2”

The post Deep Instinctの端末管理をREST APIで効率化する first appeared on MISO.]]>