pacsec 2017 neural networkを⽤いた...攻撃者がどのようにlateral movementを ってい...
TRANSCRIPT
Neural Networkを⽤いたAPT Lateral Movement の検知
朝⻑ 秀誠 JPCERTコーディネーションセンター
PacSec 2017
Copyright ©2017 JPCERT/CC All rights reserved.
⾃⼰紹介
JPCERTコーディネーションセンター 分析センター マルウエア分析、フォレンジック調査
マルウエアの分析結果やテクニカルレポートはJPCERTのWebページやGithubで公開 https://www.jpcert.or.jp/magazine/acreport.html https://github.com/JPCERTCC/aa-tools
※ マルウエアアナリストでデータサイエンティストではありません
1
朝⻑ 秀誠 (Shusei Tomonaga)
Copyright ©2017 JPCERT/CC All rights reserved.
マルウエアの侵⼊を完全に防ぐことは難しい
感染拡⼤(Lateral Movement)を早期に検知する⽅法に注⽬
ホスト上のプロセスの挙動を記録し、分析する技術の開発が進む
EDR(Endpoint Detection and Response)製品の流⾏?
2
APTインシデント検知の現状
Copyright ©2017 JPCERT/CC All rights reserved. 3
本⽇話す内容
Lateral Movement を検知する⽅法の提案
Copyright ©2017 JPCERT/CC All rights reserved.
アプローチ
攻撃者がどのようにLateral Movementを⾏っているか知らないことが多い
Lateral Movementの⽅法を調査し、検知⽅法を検討する
4
Lateral Movementを検知するためには、攻撃者がどのように攻撃を⾏っているか知る必要がある
Copyright ©2017 JPCERT/CC All rights reserved.
本プレゼンテーションの⽬次
5
1 Lateral Movementの調査
2 Lateral Movementパターン
3 機械学習を⽤いた Lateral Movementの検知
4 検知システム
Copyright ©2017 JPCERT/CC All rights reserved. 6
1 Lateral Movementの調査
2 Lateral Movementパターン
3 機械学習を⽤いた Lateral Movementの検知
4 検知システム
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movementの調査
以下の5つの攻撃キャンペーンのC&Cサーバとマルウエアの通信を調査
APT10 (named by FireEye) APT17 (named by FireEye) Dragon OK (named by Palo Alto) Blue Termite (named by Kaspersky) Tick (named by Symantec)
7
調査⽅法
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movementの調査
実際に攻撃者が実⾏したコマンドから、どのようにLateral Movementを⾏うのかを調査
8
調査⽅法
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CC対応の主なAPT攻撃
BKDR_ChChes (APT10)
Asruex
Elirks
Tick
Blue Termite
Scanbox
Winnti
APT17
2013 2014 20151 4 7 10 1 4 7 10 1 4 7 10
20161 4 7 10
9
Copyright ©2017 JPCERT/CC All rights reserved.
調査したコマンドの概要
コマンド実⾏総数: 16,866
調査した感染端末延べ数: 645
10
調査結果の概要
Copyright ©2017 JPCERT/CC All rights reserved.
調査したコマンドの概要
コマンド実⾏総数: 16,866
調査した感染端末延べ数: 645
11
調査結果の概要
Windowsコマンド実⾏数: 14,268
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movementで攻撃者が使うツール
なぜ攻撃者はWindowsコマンドと正規のツールを使⽤するのか?
それらはウイルス対策ソフトで検知されない12
攻撃者は攻撃ツールだけでなくWindowsコマンドと正規のツールも使⽤する
Copyright ©2017 JPCERT/CC All rights reserved. 13
1 Lateral Movementの調査
2 Lateral Movementパターン
3 機械学習を⽤いた Lateral Movementの検知
4 検知システム
Copyright ©2017 JPCERT/CC All rights reserved. 14
AD/ ファイルサーバ
標的組織1. 侵⼊
2. 初期調査3. 探索活動
4. 感染拡⼤
5. 情報送信
APTインシデントおよびLateral Movementの概要
6. 痕跡削除
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movement: 初期調査
最も実⾏されることが多いコマンド: tasklist
感染したホストが解析環境だった場合、攻撃者はすぐにログアウトする
15
• 感染した端末の情報を収集する
初期調査
Copyright ©2017 JPCERT/CC All rights reserved.
初期調査で使⽤されるWindowsコマンド Rank Command Count
1 tasklist 327 2 ver 182 3 ipconfig 145 4 net time 133 5 systeminfo 75 6 netstat 42 7 whoami 37 8 nbtstat 36 9 net start 35
10 set 29 11 qprocess 27 12 nslookup 11
16
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movement: 探索活動
• ネットワーク内ホストやリモートホストに保存されている情報を調査
探索活動
17
最も実⾏されることが多いコマンド: dir — 攻撃者は、感染したホストに保存されている
機密情報を調査する
ローカルネットワークの調査にはnetを使⽤する
Copyright ©2017 JPCERT/CC All rights reserved.
探索活動で使⽤されるWindowsコマンドRank Command Count
1 dir 4466 2 ping 2372 3 net view 590 4 type 543 5 net use 541 6 echo 496 7 net user 442 8 net group 172 9 net localgroup 85
10 dsquery 81 11 net config 32 12 csvde 21
18
Copyright ©2017 JPCERT/CC All rights reserved.
netコマンド net view
接続可能なドメインのリソース⼀覧取得
net user ローカルおよびドメインのアカウント管理
net localgroup ローカルのグループに所属するユーザ⼀覧取得
net group 特定ドメインのグループに所属するユーザ⼀覧取得
net use リソースへのアクセス
19
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movement: 感染拡⼤
• 他のマルウエアを感染させたり、他のホストにアクセスする
感染拡⼤
20
最も実⾏されることが多いコマンド: at — atコマンドはWindows 10, Windows 8.1などではサ
ポートされていない — もし、atコマンドが使えない場合は、schtasks
パスワードダンプツールは必ず使⽤される
Copyright ©2017 JPCERT/CC All rights reserved.
感染拡⼤に使⽤されるWindowsコマンド
21
Rank Command Count1 at 445 2 move 399 3 schtasks 379 4 copy 299 5 ren 151 6 reg 119 7 wmic 40 8 powershell 29 9 md 16
10 cscript 9 11 runas 7 12 sc 6
Copyright ©2017 JPCERT/CC All rights reserved.
Windowsコマンドを使ったリモートコマンド実⾏
22
at command
> at \\[IP Address] 12:00 cmd /c "C:\windows\temp\mal.exe"
schtasks command
> schtasks /create /tn [Task Name] /tr C:\1.bat /sc onstart /ru System /s [IP Address]
Copyright ©2017 JPCERT/CC All rights reserved.
Windowsコマンドを使ったリモートコマンド実⾏
23
wmic command
> wmic /node:[IP Address] /user:”[User Name]” /password:”[PASSWORD]” process call create “cmd /c c:\Windows\System32\net.exe user”
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movement: 痕跡削除
• 攻撃者の使⽤したファイルおよびログの削除
痕跡削除
24
最も実⾏されることが多いコマンド: del
イベントログの削除にはwevtutil
Copyright ©2017 JPCERT/CC All rights reserved.
痕跡削除に使⽤されるWindowsコマンドRank Command Count
1 del 844 2 taskkill 80 3 klist 73 4 wevtutil 23 5 rd 15
25
Copyright ©2017 JPCERT/CC All rights reserved.
• 攻撃者の攻撃パターンを調査
• 攻撃者はLateral MovementにWindowsコマンドを
使⽤する
• Windowsコマンドを監視することでLateral
Movementを検知できる
26
ここまでのまとめ
Copyright ©2017 JPCERT/CC All rights reserved.
ブラックリスト⽅式
スコアリング⽅式
機械学習27
不正なWindowsコマンドの実⾏を監視する⽅法
Copyright ©2017 JPCERT/CC All rights reserved. 28
ブラックリスト⽅式
攻撃者が使⽤する可能性があるWindowsコマンドが実⾏されたことを検知
Command executed by the attacker
at
whoami
del
net use
Command
at
schtasks
klist
net use
…
Black List
whoami
tasklist
deldir
Command executed by the attacker
False NegativeDETECTED!
Copyright ©2017 JPCERT/CC All rights reserved.
net useやschtasks、atコマンドが実⾏されたことを検知
アプリケーションやユーザが実⾏する可能性がある
29
ブラックリスト⽅式
攻撃者がブラックリストのコマンド実⾏しない 限り検知することはできない
問題
Copyright ©2017 JPCERT/CC All rights reserved. 30
スコアリング⽅式
実⾏されたWindowsコマンドをスコアリングして、閾値以上のコマンドが実⾏された場合に検知
Command Score
at 50
schtasks 50
whoami 10
net use 30
del 5
tasklist 10
Score sheet
at
whoami
del
net use
Calculation result
50 + 30 + 10 + 5 = 95
Threshold = 90
DETECTED!
Command executed by the attacker
Copyright ©2017 JPCERT/CC All rights reserved. 31
スコアリング⽅式
Windowsコマンドを重要度に応じてスコアリング
スコアを作成する負担⼤(更新を続ける必要がある) スコアが低いコマンドは攻撃者が実⾏してもわからない
問題
実⾏されたWindowsコマンドをスコアリングして、閾値以上のコマンドが実⾏された場合に検知
Copyright ©2017 JPCERT/CC All rights reserved.
32
機械学習
機械学習を⽤いて不正なWindowsコマンドを検知
Machine Learning
at
whoami
del
net use
Result
DETECTED!
Command executed by the attacker
Copyright ©2017 JPCERT/CC All rights reserved. 33
機械学習
機械学習を⽤いて不正なWindowsコマンドを検知
以降、この⽅法について検討した結果を紹介
Copyright ©2017 JPCERT/CC All rights reserved. 34
1 Lateral Movementの調査
2 Lateral Movementパターン
3 機械学習を⽤いた Lateral Movementの検知
4 検知システム
Copyright ©2017 JPCERT/CC All rights reserved.
教師あり学習 教師なし学習 強化学習
35
機械学習
機械学習とは、⼈⼯知能における研究課題の⼀つで、⼈間が⾃然に⾏っている学習能⼒と同様の機能をコンピュータで実現しようとする技術・⼿法
のことである。 - Wikipedia※ -
※ https://ja.wikipedia.org/wiki/機械学習
今回使うもの
Copyright ©2017 JPCERT/CC All rights reserved.
学習データ収集
データの前処理
データ分析
評価・最適なアルゴリズムを決定36
機械学習のアルゴリズム選定の流れ
Copyright ©2017 JPCERT/CC All rights reserved.
Lateral Movementの調査に使⽤した5つの攻撃キャンペーンのデータを使⽤
APT10 (named by FireEye) APT17 (named by FireEye) Dragon OK (named by Palo Alto) Blue Termite (named by Kaspersky) Tick (named by Symantec)
37
学習データの収集
Copyright ©2017 JPCERT/CC All rights reserved.
学習データ収集
データの前処理
データ分析
評価・最適なアルゴリズムを決定38
機械学習のアルゴリズム選定の流れ
Copyright ©2017 JPCERT/CC All rights reserved. 39
データの前処理> cd \intel\logs > whoami > klist > net use > klist purge > ping -n 1 10.1.44.16 > ping -n 1 10.1.2.16 > net use \\10.1.2.16 > dir \\10.1.2.16\c$\users > copy bb.bat \\10.1.2.16\c$\windows\system32\ > net time \\10.1.2.16 > at \\10.1.2.16 12:27 bb.bat > dir \\10.1.2.16\c$\windows\system32\inf.txt > move \\10.1.2.16\c$\windows\system32\inf.txt . > del \\10.1.2.16\c$\windows\system32\bb.bat
何を学習するのか?
Copyright ©2017 JPCERT/CC All rights reserved. 40
データの前処理> cd \intel\logs > whoami > klist > net use > klist purge > ping -n 1 10.1.44.16 > ping -n 1 10.1.2.16 > net use \\10.1.2.16 > dir \\10.1.2.16\c$\users > copy bb.bat \\10.1.2.16\c$\windows\system32\ > net time \\10.1.2.16 > at \\10.1.2.16 12:27 bb.bat > dir \\10.1.2.16\c$\windows\system32\inf.txt > move \\10.1.2.16\c$\windows\system32\inf.txt . > del \\10.1.2.16\c$\windows\system32\bb.bat
ホスト上で実⾏されたコマンド (引数なし)
実⾏されたコマンド群を1つの
データとする
Copyright ©2017 JPCERT/CC All rights reserved. 41
データの前処理
at whoamidel net use
tasklist dir netsh
whoami schtasks echo
dir del echo whoami
Command Set 1
Command Set 2
Command Set 3
Command Set 4
Copyright ©2017 JPCERT/CC All rights reserved.
教師データの作成
学習対象のコマンドtasklist ver ipconfig net time cd systeminfo netstat whoami nbtstat net start set qprocess
nslookup fsutil net view type net use echo net user net group net localgroup dsquery net config csvde
net share quser net session query user tracert nltest at move schtasks copy ren reg
wmic powershell md cscript runas sc netsh wusa icacls del taskkill klist
wevtutil rd
42
対象とするコマンドはLateral Movement の調査で確認した攻撃者が実⾏することが
多いコマンド50個に限定
Copyright ©2017 JPCERT/CC All rights reserved. 43
教師データの作成
Copyright ©2017 JPCERT/CC All rights reserved.
学習データ収集
データの前処理
データ分析
評価・最適なアルゴリズムを決定44
機械学習のアルゴリズム選定の流れ
Copyright ©2017 JPCERT/CC All rights reserved.
決定⽊ ランダムフォレスト
ニューラルネットワー
ク
ベイジアンネットワー
クk平均法 SVM
45
データ分析
アルゴリズム例
Copyright ©2017 JPCERT/CC All rights reserved.
決定⽊ ランダムフォレスト
ニューラルネットワー
ク
ベイジアンネットワー
クk平均法 SVM
46
データ分析
評価対象
Copyright ©2017 JPCERT/CC All rights reserved.
T F0.2 0.8
47
ベイジアンネットワーク
「原因」と「結果」の因果関係をグラフ構造と、お互いに及ぼす影響を確率で表現であらわした
確率モデル
⾬が降った
草が濡れた
スプリンクラー動作
Rain T FF 0.4 0.6
T 0.01 0.99
Sup Rain T FF F 0 1
F T 0.8 0.2
T F 0.9 0.1
T T 0.99 0.01
Copyright ©2017 JPCERT/CC All rights reserved. 48
ベイジアンネットワーク
「原因」と「結果」の因果関係をグラフ構造と、お互いに及ぼす影響を確率で表現であらわした
確率モデル
ある変数の値が求まったときに、未観測の変数の確率分布を求められる
未来の予測ができる
Copyright ©2017 JPCERT/CC All rights reserved.
あるコマンドが実⾏された際に、その実⾏が攻撃かどうかを予測する
ネットワークモデルを学習によって作成 49
ベイジアンネットワークを⽤いた不正コマンドの検知
at
攻撃
net use
Copyright ©2017 JPCERT/CC All rights reserved.
50
ベイジアンネットワークを⽤いた不正コマンドの検知
作成されたモデル
Copyright ©2017 JPCERT/CC All rights reserved. 51
ベイジアンネットワークを⽤いた不正コマンドの検知
作成されたモデル> net use \\10.1.2.16 > copy bb.bat \\10.1.2.16\c$\windows\system32\ > at \\10.1.2.16 12:27 bb.bat
マルウエア実⾏の流れ
Lateral Movementの流れが学習によって 適切にモデル化されている
Copyright ©2017 JPCERT/CC All rights reserved. 52
ニューラルネットワーク
⼈間の脳の動きを模したネットワークモデル 画像認識に使⽤されることが多い
3 Input Output 1 2 3
4 5 6 7 8 9Handwritten digits
Neural Network
Copyright ©2017 JPCERT/CC All rights reserved. 53
ニューラルネットワークを⽤いた不正コマンドの検知
実⾏されたコマンドをインプット 不正の有無をアウトプット
Input Output
Neural Network
at
whoami
del
net useTrue or
False
Attack?
Copyright ©2017 JPCERT/CC All rights reserved.
ニューラルネットワークの設計 Feedforward(全結合) neural network Input: 50個のコマンド Output: 攻撃判定(True or False)
54
Affine BatchNorm ReLU Affine Soft
maxCommand
Set
3-layers
True
False
Copyright ©2017 JPCERT/CC All rights reserved. 55
ニューラルネットワークによる学習結果
0.4
0.5
0.6
0.7
0.8
0.9
1
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
accu
racy
epoch
Copyright ©2017 JPCERT/CC All rights reserved.
課題
56
・学習によって作成したモデルがブラックボックスである、どのような基準で判定されているかを知ることができない ・学習結果によって判定基準が変化する
ニューラルネットワークの問題
Copyright ©2017 JPCERT/CC All rights reserved.
ニューラルネットワークの判定基準
ネットワークの可視化 変数重要度 アクティベーション最⼤化 (Activation Maximization) 感度分析 (Sensitivity Analysis) LIME (Local Interpretable Model-Agnostic Explanations)
57
ニューラルネットワークの判定基準を知るための様々な研究が⾏われている
今回使うもの
Copyright ©2017 JPCERT/CC All rights reserved. 58
ニューラルネットワークの変数重要度
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
dsqu
ery
cscr
ipt
nets
h tra
cert
nlte
st
nslo
okup
w
usa
nbts
tat
ren
fsut
il se
t ec
ho
nets
tat
copy
w
evtu
til
icac
ls
net_
shar
e m
ove
net_
sess
ion
md cd
sc
htas
ks
csvd
e ne
t_st
art
net_
time
type
ve
r sy
stem
info
w
hoam
i ip
conf
ig
task
list
klis
t qp
roce
ss
runa
s ne
t_us
e re
g sc
net_
conf
ig
rd
net_
user
ta
skki
ll w
mic
qu
ser
del at
pow
ersh
ell
net_
loca
lgro
up
net_
view
ne
t_gr
oup
quer
y
atta
ck
command
Copyright ©2017 JPCERT/CC All rights reserved.
学習データ収集
データの前処理
データ分析
評価・最適なアルゴリズムを決定59
機械学習のアルゴリズム選定の流れ
Copyright ©2017 JPCERT/CC All rights reserved.
評価指標再現率 (Recall) 答えが正の中で、予測が正とさ
れたもの適合率 (Precision) 正しいと判断した中で、答えも
正しいのものF尺度 (F-measure)
予測精度の評価指標
60
Recall= 𝑇𝑃/𝑇𝑃+𝐹𝑁
Precision= 𝑇𝑃/𝑇𝑃+𝐹𝑃
F-measure= 2𝑅𝑒𝑎𝑙𝑙∗𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛/𝑅𝑒𝑐𝑎𝑙𝑙+𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛
Copyright ©2017 JPCERT/CC All rights reserved.
結果
アルゴリズム recall precision F-measure
ベイジアンネットワーク 0.994343 0.683800 0.810337ニューラルネットワーク 0.965517 0.967742 0.966628
決定⽊ 0.839154 0.960347 0.895669ランダムフォレスト 0.915388 0.975964 0.944705
61
1,000回繰り返した平均値
Copyright ©2017 JPCERT/CC All rights reserved.
ベイジアンネットワーク• False Negativeが少ない
ニューラルネットワーク• バランスの良いアルゴリズム
ランダムフォレスト• False Positiveが少ない
62
結果
Copyright ©2017 JPCERT/CC All rights reserved. 63
1 Lateral Movementの調査
2 Lateral Movementパターン
3 機械学習を⽤いた Lateral Movementの検知
4 検知システム
Copyright ©2017 JPCERT/CC All rights reserved. 64
システム概要
Copyright ©2017 JPCERT/CC All rights reserved.
システム概要 (クライアント)
65
• cmd.exe経由で実⾏されたコマンドを収集
cmdlogs.bat (Shell Script)
• 収集されたログをサーバに送信• 分析結果を確認し、アラート表⽰
Invoke-DetectLM.ps1 (PowerShell)
Copyright ©2017 JPCERT/CC All rights reserved.
システム概要 (サーバ)
66
• ログを収集
Elasticsearch
• ログを可視化
Kibana
• Elasticsearchのログを収集し機械学習で不審なコマンド実⾏検知
DetectLM.py (Python)
Copyright ©2017 JPCERT/CC All rights reserved.
DetectLM.py (Python)
ニューラルネットワークでログ分析
Elasticsearchとのデータやり取りはREST API
67
Elasticsearchのログを収集し機械学習で不審な コマンド実⾏を検知する
Copyright ©2017 JPCERT/CC All rights reserved. 68
Alert Level
クライアントから送信されたログ
異常判定
Alert Level 0
No
Alert Level 1
Yes
ユーザ確認
Alert Level 2
NoYes
Copyright ©2017 JPCERT/CC All rights reserved.
• デフォルト
Level 0
• 機械学習で不審と判断されたログ
Level 1
• ユーザが報告した異常ログ
Level 2
69
Alert Level
ログには3段階の検知レベルを設定
Copyright ©2017 JPCERT/CC All rights reserved.
クライアントへの通知
意図したものであった場合は、Ignore Flagが設定される70
機械学習で異常判定したログ(Alert Level:1)はユーザに通知される
Copyright ©2017 JPCERT/CC All rights reserved.
Kibana Dashboard
71
Copyright ©2017 JPCERT/CC All rights reserved.
Demo
72
Copyright ©2017 JPCERT/CC All rights reserved.
今後の予定
アルゴリズムのアップデート• 現在のアルゴリズムは時系列データや、実⾏数
を考慮していない• コマンドの中には順番に実⾏しなければならな
いものがある• 時系列データを使⽤したアルゴリズムにアップ
デート予定
73
Copyright ©2017 JPCERT/CC All rights reserved.
まとめ
Lateral MovementにはWindowsコマンドが使⽤される
不正なWindowsコマンドを検知することでLateral Movementを検知することが可能
機械学習を使⽤して不正なWindowsコマンド検知することを補助することができる
74
Copyright ©2017 JPCERT/CC All rights reserved. 75
Thank you
Q&A
https://github.com/JPCERTCC/DetectLM