溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

針對Intel SGX平臺的滲透測試攻擊框架Sgx-Step該怎么搭建

發(fā)布時間:2021-11-11 15:50:32 來源:億速云 閱讀:201 作者:柒染 欄目:編程語言

本篇文章為大家展示了針對Intel SGX平臺的滲透測試攻擊框架Sgx-Step該怎么搭建,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

工具概述

類似Intel SGX這樣的可信執(zhí)行環(huán)境能夠保證目標計算機在受到網(wǎng)絡攻擊或入侵的時候,仍然能夠保證敏感計算不受影響。而本文所介紹的SGX-Step是一款針對Intel SGX平臺的開源測信道攻擊研究框架,SGX-Step由一個Linux內核驅動器和用戶空間庫組成,它將允許我們配置不受信任的頁表條目并完全從用戶空間環(huán)境(Enclave)中斷x86 APIC計時器。我們提出并評估了一種改進的從指令級粒度上出發(fā)的單步Enclave執(zhí)行技術,并演示了SGX-Step如何來執(zhí)行多種高級攻擊。

與以前的Enclave搶占方案不同,SGX-Step設計的關鍵是為了保存頁表項的物理內存位置以及本地APIC內存映射I/O配置寄存器和x86中斷描述符表(IDT)。這將允許不受信任的主機進程(攻擊者控制)輕松(i)跟蹤或修改Enclave頁表條目,(ii)配置APIC計時器的一次性/定期中斷源,(iii)觸發(fā)內部處理器中斷,(iv)以及完全在用戶空間中注冊自定義的中斷處理程序。

下圖中顯示的是我們的框架中斷和恢復SGX Enclave時的硬件和軟件操作步驟:

針對Intel SGX平臺的滲透測試攻擊框架Sgx-Step該怎么搭建

1、本地APIC計時器中斷抵達一個加密指令內。

2、處理器執(zhí)行AEX過程,該過程安全地將執(zhí)行上下文存儲在enclave的SSA幀中,初始化CPU寄存器,并將向量存儲到IDT中注冊的(用戶空間)中斷處理程序。

3、此時,任何特定于攻擊的間諜代碼都可以輕松插入。

4、代碼庫會返回至用戶空間AEP。我們修改了官方SGX SDK的不受信運行時環(huán)境,以便輕松注冊自定義AEP stub。

5、接下來,我們在執(zhí)行(6)ERESUME之前,通過寫入初始計數(shù)MMIO寄存器,為下一個中斷配置本地APIC計時器。

項目構建&運行

SGX-Step需要使用到一個SGX-capabel Intel處理器以及一個Linux內核。我們將其升級為了i7-6500U/6700 CPU,并且能夠在Ubuntu 16.04(內核版本4.15.0)平臺上運行。相關的Linux內核參數(shù)如下:

Linux內核參數(shù)功能
nox2apic在內存映射I/O模式下配置本地APIC設備(以利用SGX-Step的精確單步執(zhí)行功能)。
iomem=relaxed, no_timer_check過濾內核日志中不需要的警告消息。
isolcpus=1將目標進程與一個獨立的CPU核心關聯(lián)起來。
dis_ucode_ldr禁用CPU微碼更新。

我們可以通過下列方式來將相應啟動參數(shù)傳遞至內核執(zhí)行:

$ sudo vim /etc/default/grub  # GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nox2apic iomem=relaxed no_timer_check isolcpus=1"$ sudo update-grub && sudo reboot

最后,為了復現(xiàn)我們的研究成果,請確保在BIOS中禁用了了C-States和SpeedStep技術。下表中列出的是該工具目前所支持的Intel CPU以及相應的單步APIC計時器間隔(libsgxstep/config.h):

模塊名稱CPU頻率APIC計時器間隔
Skylakei7-67003.4 GHz19
Skylakei7-6500U2.5 GHz25
Skylakei5-6200U2.3 GHz28
Kaby Lake Ri7-8650U1.9 GHz34
Coffee Lake Ri9-9900K3.6 GHz21

1、修復和安裝SGX SDK

為了啟用和注冊自定義的AEP stub,我們修改了官方Intel SGX SDK的不受信運行時環(huán)境:

$ git submodule init$ git submodule update$ ./install_SGX_driver.sh # tested on Ubuntu 16.04$ ./patch_sdk.sh$ ./install_SGX_SDK.sh    # tested on Ubuntu 16.04

2、構建和加載/dev/sgx-step

SGX-Step自帶了可加載的內核模塊,支持導出IOCTL接口。運行下列命令即可構建和加載/dev/sgx-step驅動器:

$ cd kernel$ make clean load

3、構建并運行測試應用

$ cd app/bench$ NUM=100 STRLEN=1 make parse   # alternatively vary NUM and use BENCH=1 or ZIGZAG=1$ # (above command defaults to the Dell Inspiron 13 7359 evaluation laptop machine;$ # use DESKTOP=1 to build for a Dell Optiplex 7040 machine)$ # use SGX_SDK=/home/jo/sgxsdk/ for a local SDK installation$ # use M32=1 To produce a 32-bit executable

在項目中使用SGX-Step

如果你想在自己的項目中使用SGX-Step的話,最簡單的方法就是通過git子模塊來使用:

$ cd my/git/project$ git submodule add [email protected]:jovanbulck/sgx-step.git$ cd sgx-step # Now build `/dev/sgx-step` and `libsgxstep` as described above

接下來,進入app目錄并查看Makefiles,我們將會看到一個客戶端應用程序與libsgxstep以及其他本地SGX SDK/PSW包建立了連接。

上述內容就是針對Intel SGX平臺的滲透測試攻擊框架Sgx-Step該怎么搭建,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI