网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

网络安全工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 网络安全工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

Sgx-Step:针对英特尔Intel SGX平台的渗透测试攻击框架

文章来源:牛创网络 发布时间:2019-12-09 10:28:27 围观次数:
分享到:

摘要:受信任的执行环境(如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时的硬件和软件操作步骤:

blob.png

1.本地APIC计时器中断到达加密指令。


  2.处理器执行AEX进程,该进程将执行上下文安全地存储在安全区的SSA帧中,初始化CPU寄存器,并将向量存储到IDT中注册的(用户空间)中断处理程序中。


  3.此时,可以轻松插入任何特定于攻击的间谍代码。


  4.代码库将返回到用户空间AEP。 我们修改了官方SGX SDK的不受信任的运行时环境,以轻松注册自定义AEP存根。


  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 =宽松,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状态和SpeedStep技术。 下表列出了该工具当前支持的Intel CPU以及相应的单步APIC计时器间隔(libsgxstep / config.h):

模块名称CPU 频率APIC计时器间隔

Skylake   i7-6700 3.4 GHz19

Skylake   i7-6500U 2.5 GHz25

Skylake    i5-6200U 2.3 GHz28

Kaby Lake Ri7-8650U 1.9 GHz 34

Coffee Lake Ri9-9900K 3.6 GHz21

1.修复并安装SGX SDK


  为了启用和注册自定义AEP存根,我们修改了官方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

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


本文由 牛创网络 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:Sgx-Step Intel SGX平台 渗透测试攻击框架

上一篇:CVE-2019-12181 Serv-U FTP Server 本地提权漏洞(Metasploit)利用工具
下一篇:BaseQuery:一个强大的搜索工具,用于数据泄露搜索

热门资讯

鼠标向下滚动