SlideShare a Scribd company logo
1 of 38
Download to read offline
!
大和セキュリティ!!
Virtual rootkit !!
黒林檎(r00tapple)
自己紹介?
最近、仮想rootkitよりハイブリッドrootkitの方が興味
あります。(?)
発表資料ver原稿ベース

http://www.slideshare.net/murashimamasahiro/virtual-
rootkit
virtual rootkitの脅威
!
!
仮想化技術ってだいぶ昔からあります。
!
最近はどこでも仮想化技術を取り入れています。
要するに今回はそこらへんの脅威のお話です。
!
!
!
最初に..。
仮想化技術が普及している今、仮想化技術に対す
る脅威を認識していなければ行けない(感じがする)
欠点として仮想化によるオーバーヘッド、ハード
ウェアの制約(仮想化支援機構必須)など..
利点としてVMMはOSがいかなる状況にあっても
保護を継続してくれるという利点がある。
!
!
セキュアか?
ハイパーバイザーを悪用したマルウェア(BluePill)
など脅威はあったが仮想化のセキュリティへの
応用は既に成されておりセキュアであると言え
る。

しかし、VMM自体への攻撃を懸念しなければな
らない。
[例..]
VT escape attack
hypervisor rootkit など
懸念すべき攻撃とは?
VM escape attack?
!
CPUID Flood attack ?
!
CPUID Brute-Force attack ?
!
VMへの脆弱性への攻撃?
What’s VM escape attack ?
ゲストからホストへのエスケープを可能にする。
ゲスト仮想マシン内のローカルの攻撃者は、制
限された仮想環境をエスケープし、ハードウェ
アに直接アクセスする。
非特権ドメイン(domU)を管理することができ
る特権ドメイン(dom0)の権限を持つホストシス
テム上で任意のコードを実行することができる
攻撃
What’s CPUID Flood attack?
SYN Floodと考え方は一緒でDoS攻撃の手法の
一つで接続を大量に試みる攻撃
!
/while(1)的なもん
.section .text .global main
main :
movl $0x8000000A , %eax
cpuid
jmp main
!
VM自体の脆弱性(1)
VMの脆弱性(2)
!
..上記はVMのバージョン情報抽出してるだけってい
うね(汗)
[本題]
Hypervisorってな∼に?
[ペアメタル ハイパーバイザー]
[説明]{
世間一般に言われて
いるハイパーバイザー
はこちら。
}
Hypervisorってな∼に?(2)
[説明]{
hypervisorは..
ウェブプロキシ
をイメージすると
良いです。
}
[ホスト型 ハイパーバイザー]
ring -1とは何か?
右図を見てもkernel modeの
ring 0が最高権限とされてい
ます。
ring -1とは”Intel || AMD”が
ハードウェア仮想サポートに
よって作成した概念をまと
めた要な物です。
HyperJacking !
Hyperjackingとは?
UNIXのvfork()システムコール命令のように2
つの異なるスレッドを実行しているオペレー
ションシステムを実行します。
HyperJackingへの道のり
[1]対象に悪意あるkernelドライバをインストール	

!
[2]低レベル仮想化支援命令にアクセス。	

!
[3]悪意あるhypervisor用メモリー空間を作成	

!
[4]新しいVMのための記憶空間を作成	

!
[5]新しいVMへ動作中0Sを移動	

!
[6]新しいVMからのコマンドをすべてトラップに掛け悪質なhypervisorを定着させる
Hyperjackingソース抜粋
現在のオペレーションシステムからの値を使用して、	

VMCS中のホスト状態フィールドの初期化を要求する部分。
static void _hyperjack_init_vmcs_host_fields()	

{	

	

 uint32_t selector;	

	

 uint32_t base;	

	

 uint32_t msr_lo, msr_hi;	

	

 uint32_t host_rsp, host_rip;	

//メモリセグメント、ベースレジスタ、コントロールレジス
タ	

	

 x86_get_es(selector);	

	

 __vmwrite(HOST_ES_SELECTOR, selector);	

	

 x86_get_cs(selector);	

	

 __vmwrite(HOST_CS_SELECTOR, selector);	

.....	

//vm-exitハンドル…”on_vm_exit()”	

host_rsp = 0xdeadbeef;	

	

 __vmwrite(HOST_RSP, host_rsp);	

	

 host_rip - 0xdeadbeef;	

	

 __vmwrite(HOST_RIP, host_rip);	

}
っていうか(笑)
物理メモリーを共有するのでHypervisorって	

オペレーティングシステムのメモリに対して	

フルアクセス権を持っている事になるので	

それらを任意に変更することができるんじゃね?	

!
※(勿論対策案出てますよ結構前から!)
‘命令’||’用語’説明
[動作モード]	

	

 -vmx root モード	

	

 -vmx-non-root モード	

[VMCS]	

	

 -仮想マシン用の情報領域	

	

 	

 -動作条件	

	

 	

 -レジスタ情報	

[vmx命令]	

	

 -vmxon/vmxoff	

 //vmx操作の有効化・無効化	

	

 -vmread/vmwrite	

 //VMCS領域の書き込みと読み込み	

	

 -vmclear 	

  	

 //vmcs用メモリ領域の初期化	

	

 -vmcall	

 	

 //ゲストOSからVMMへ推移
Hypervisor rootkit !
Hypervisor rootkit
結論から言うとhypervisor rootkitって技術的に難
しい。
←32bit用/64bit用の設定
.hで定義する必要
があります。

成功度自体も..(ry
しかし脅威に違いは無い
Open SSLのウェブサイト改ざん被害の際にも
Hypervisorを狙われた訳ですから、脅威に違い
は無い。
!
攻撃者からしても…、’ring0 < ring -1’権限が
高いので出来るなら奪いたい。
!
攻撃者 vs その他etc !!
Microsoftがwindows serverに仮想化実装を施そう
という話が出た時にはMicrosoftはハードウェアレ
ベルで許可されていないハイパーバイザーの検出
をする事にAMD・Intelと話合うなど脅威として
の認識は昔からされていた。



ベンダーの対策ソフトも結構出てますので興味が
あれば後で出す物を検索してみてください。
MBR rootkitについて
[MBR(マスターブートレコード)]	

MBR(マスターブートレコード)はOSを見つける為にBIOSに指示する	

ハードドライブの一部であり、コンピューター起動時に	

初期ブート・シーケンスを実行しBIOSから引き継ぐ重要な物です。	

(ハードディスクの先頭セクタにあるブートレコード)	

rootkitにはこのプロセスを感染させる事でその存在を隠し	

システムを引き継ぐために送信されたデータを変更する事で	

ハードウェアとOSの間で自分自身をInjectionする事がある。	

※これはbootkitとも呼ばれていてる事もあります。
Hypervisorについて
[hypervisor(ハイパーバイザー)]	

MBRを紹介した例として..	

hypervisor rootkitにもMBR rootkitに似ている物があります。	

それはbootプロセス間に悪意あるハイパーバイザーを作成するために	

ブートローダーを修正するrootkitも存在するから。	

そしてOSを破壊しユーザーへの表示と再起動なしで実行中仮想マシン	

へ移行出来る。	

これらはCPUに組み込まれた仮想化支援機能を使用する事により可能	

です。
Hypervisor入門
!
[3つの主な関数命令]	

!
vmx-init() – VT-x機能を検出及び初期化	

!
vmx-fork() – ゲストOSとホストハイパーバイザー	

	

 ..を実行中システムにfork	

!
on_vm_exit() – VM終了イベント処理など..	

!
!
!
vmx_init()
[vmx_init()]	

CPUIDとMSR(モデル固有レジスタ)	

VMXのCR4を有効	

VMCSC(仮想マシンコントロールストア)で物理メモ
リページ割り当て	

VMX動作の許可---vmx_on命令を持ったプロセッ
サー
vmx_fork()
コード及びスタック(ハイパーバイザー用データ)
を割り当て	

現在実行中のオペレーションシステムをVMへ移
行	

実行中OSの状態をVMに設定	

設定した実行コントロールがvm終了を最小化する
様に例外やI/Oアクセスなどを無視	

VM実行においてOSの実行を継続する。
on_vm_exit()
VM終了イベントの処理	

CPUID、CR0-CR4アクセス、RDMSR/ WRMSR	

のような手順については、期待される動作をエミュレート 	

CPUID命令のコマンドを使用しバックドアを実装などに	

使われる。	

その他一般的なrootkit機能を提供する。
vmx_on()命令
VTが対応しているか確認
vmcs_alloc()/vmcs_free()関数
vmcsメモリを初期かしvmcsリビジョンを設定
hyperjack()関数
vmcs != NULLでないなhyperjack()を実行
検出(1)
[方法としては..]	

デバッグレジスタを使いハイパーバイザーにブレークポ
イントを設置する事が出来ます。	

!
カーネルメモリを変更しカーネル内の関数フック。	

!
プロセッサーがvmx non-rootモードで動作してるか調べ
る	

!
vm-を作成するためにvmxを使用し	

vm-exitイベントが発生し起きた遅れを検出。
検出(2)
再起動して再ロードする事でバックドアや変更を探すために	

フォレンジックする事で、メモリにInjectionされハードドライブ
上のファイル構造を変更しないHypervisor rootkitで無ければ	

検出は可能。	

!
勿論メモりにInjectionされハードドライブ上のファイル構造を	

変更しないHypervisor rootkitの場合は再起動する事で	

再起動後の存続は不可能。
既存検知ソフトウェア(1)
[Slabbed-or-not]	

特定ハイパーバイザー下で実行されているか検出する物。	

検出される物としては..	

■Xen(PVM or HVMモード ハイパーバイザーのバージョン
■Vmware(ハイパーバイザーの種類 仮想化されたハードウ
アモデルの検出)	

※ハードウェアモデル(hyper-v / KVM / bhyve..など)
既存検知ソフトウェア(2)
※ハードウェアモデル(hyper-v / KVM / bhyve..など)	

!
[Hooksafe]	

ハイパーバイザーの物理メモリーを使用し仮想環境内の	

rootkitを検出し削除又はブロックする事が出来る	

ハイパーバイザーベースのシステム。
ご清聴有り難うございます

More Related Content

Similar to Kobe virtualrootkit

Similar to Kobe virtualrootkit (6)

【FKEYセミナー 20150205】「クラウドセキュリティで注意すべき5つのこと」 講師:山口 亮介 氏(ニフティ株式会社 エバンジェリスト)
【FKEYセミナー 20150205】「クラウドセキュリティで注意すべき5つのこと」 講師:山口 亮介 氏(ニフティ株式会社 エバンジェリスト)【FKEYセミナー 20150205】「クラウドセキュリティで注意すべき5つのこと」 講師:山口 亮介 氏(ニフティ株式会社 エバンジェリスト)
【FKEYセミナー 20150205】「クラウドセキュリティで注意すべき5つのこと」 講師:山口 亮介 氏(ニフティ株式会社 エバンジェリスト)
 
2019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.02019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.0
 
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナーランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
 
20171110 dev festa_vr
20171110 dev festa_vr20171110 dev festa_vr
20171110 dev festa_vr
 
Mickey pac sec2016_final_ja
Mickey pac sec2016_final_jaMickey pac sec2016_final_ja
Mickey pac sec2016_final_ja
 
楽しいVR空間を作る技術と支える技術 #osc19do
楽しいVR空間を作る技術と支える技術 #osc19do楽しいVR空間を作る技術と支える技術 #osc19do
楽しいVR空間を作る技術と支える技術 #osc19do
 

More from 黒 林檎 (11)

Wi-Fi電球ハッキング-バックドア経由での操作-
Wi-Fi電球ハッキング-バックドア経由での操作-Wi-Fi電球ハッキング-バックドア経由での操作-
Wi-Fi電球ハッキング-バックドア経由での操作-
 
実践IoTペンテスト
実践IoTペンテスト 実践IoTペンテスト
実践IoTペンテスト
 
IoTSecJP
IoTSecJPIoTSecJP
IoTSecJP
 
総サイバーセキュリティザックさんの代打~ネットワークカメラのハック~
総サイバーセキュリティザックさんの代打~ネットワークカメラのハック~総サイバーセキュリティザックさんの代打~ネットワークカメラのハック~
総サイバーセキュリティザックさんの代打~ネットワークカメラのハック~
 
IoTSecJP(公開版)
IoTSecJP(公開版)IoTSecJP(公開版)
IoTSecJP(公開版)
 
続・IoT診断
続・IoT診断続・IoT診断
続・IoT診断
 
IoT診断入門
IoT診断入門IoT診断入門
IoT診断入門
 
Searching for Black Spots in the Great Big Onion [Avkansai特別プレゼン]
Searching for Black Spots in the Great Big Onion [Avkansai特別プレゼン]Searching for Black Spots in the Great Big Onion [Avkansai特別プレゼン]
Searching for Black Spots in the Great Big Onion [Avkansai特別プレゼン]
 
私立キャンプ
私立キャンプ私立キャンプ
私立キャンプ
 
Line(私立キャンプ)
Line(私立キャンプ)Line(私立キャンプ)
Line(私立キャンプ)
 
スライド
スライドスライド
スライド
 

Kobe virtualrootkit