您好,登錄后才能下訂單哦!
本篇文章為大家展示了針對Intel SGX平臺的滲透測試攻擊框架Sgx-Step該怎么搭建,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
工具概述
類似Intel SGX這樣的可信執行環境能夠保證目標計算機在受到網絡攻擊或入侵的時候,仍然能夠保證敏感計算不受影響。而本文所介紹的SGX-Step是一款針對Intel SGX平臺的開源測信道攻擊研究框架,SGX-Step由一個Linux內核驅動器和用戶空間庫組成,它將允許我們配置不受信任的頁表條目并完全從用戶空間環境(Enclave)中斷x86 APIC計時器。我們提出并評估了一種改進的從指令級粒度上出發的單步Enclave執行技術,并演示了SGX-Step如何來執行多種高級攻擊。
與以前的Enclave搶占方案不同,SGX-Step設計的關鍵是為了保存頁表項的物理內存位置以及本地APIC內存映射I/O配置寄存器和x86中斷描述符表(IDT)。這將允許不受信任的主機進程(攻擊者控制)輕松(i)跟蹤或修改Enclave頁表條目,(ii)配置APIC計時器的一次性/定期中斷源,(iii)觸發內部處理器中斷,(iv)以及完全在用戶空間中注冊自定義的中斷處理程序。
下圖中顯示的是我們的框架中斷和恢復SGX Enclave時的硬件和軟件操作步驟:
1、本地APIC計時器中斷抵達一個加密指令內。
2、處理器執行AEX過程,該過程安全地將執行上下文存儲在enclave的SSA幀中,初始化CPU寄存器,并將向量存儲到IDT中注冊的(用戶空間)中斷處理程序。
3、此時,任何特定于攻擊的間諜代碼都可以輕松插入。
4、代碼庫會返回至用戶空間AEP。我們修改了官方SGX SDK的不受信運行時環境,以便輕松注冊自定義AEP stub。
5、接下來,我們在執行(6)ERESUME之前,通過寫入初始計數MMIO寄存器,為下一個中斷配置本地APIC計時器。
SGX-Step需要使用到一個SGX-capabel Intel處理器以及一個Linux內核。我們將其升級為了i7-6500U/6700 CPU,并且能夠在Ubuntu 16.04(內核版本4.15.0)平臺上運行。相關的Linux內核參數如下:
Linux內核參數 | 功能 |
---|---|
nox2apic | 在內存映射I/O模式下配置本地APIC設備(以利用SGX-Step的精確單步執行功能)。 |
iomem=relaxed, no_timer_check | 過濾內核日志中不需要的警告消息。 |
isolcpus=1 | 將目標進程與一個獨立的CPU核心關聯起來。 |
dis_ucode_ldr | 禁用CPU微碼更新。 |
我們可以通過下列方式來將相應啟動參數傳遞至內核執行:
$ sudo vim /etc/default/grub # GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nox2apic iomem=relaxed no_timer_check isolcpus=1"$ sudo update-grub && sudo reboot
最后,為了復現我們的研究成果,請確保在BIOS中禁用了了C-States和SpeedStep技術。下表中列出的是該工具目前所支持的Intel CPU以及相應的單步APIC計時器間隔(libsgxstep/config.h):
模塊名稱 | CPU | 頻率 | APIC計時器間隔 |
---|---|---|---|
Skylake | i7-6700 | 3.4 GHz | 19 |
Skylake | i7-6500U | 2.5 GHz | 25 |
Skylake | i5-6200U | 2.3 GHz | 28 |
Kaby Lake R | i7-8650U | 1.9 GHz | 34 |
Coffee Lake R | i9-9900K | 3.6 GHz | 21 |
為了啟用和注冊自定義的AEP stub,我們修改了官方Intel SGX SDK的不受信運行時環境:
$ 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
SGX-Step自帶了可加載的內核模塊,支持導出IOCTL接口。運行下列命令即可構建和加載/dev/sgx-step驅動器:
$ cd kernel$ make clean load
$ 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的話,最簡單的方法就是通過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該怎么搭建,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。