成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

攻擊UEFI運(yùn)行時(shí)服務(wù)和Linux

安全 黑客攻防 網(wǎng)站安全
由于EFI運(yùn)行時(shí)服務(wù)通常位于4GB以下,因此它們?cè)诟邇?nèi)存EFI引導(dǎo)系統(tǒng)上提供了一種進(jìn)入Linux的方法。

[[182247]]

前言

具有物理訪問權(quán)限的攻擊者能夠在許多具有DMA-直接內(nèi)存訪問的完全修補(bǔ)的計(jì)算機(jī)上攻擊固件。一旦在UEFI/EFI運(yùn)行時(shí)服務(wù)中執(zhí)行代碼,就可以使用腳本來(lái)控制正在運(yùn)行的Linux系統(tǒng)。

Linux 4.8內(nèi)核完全隨機(jī)化了內(nèi)核的物理內(nèi)存地址。如果計(jì)算機(jī)擁有足夠大的內(nèi)存,內(nèi)核很有可能隨機(jī)化到4G以上的地址空間上。這意味著DMA硬件攻擊僅能夠攻擊32位的地址(4GB),如PCILeech,不能直接攻擊Linux內(nèi)核。

 

由于EFI運(yùn)行時(shí)服務(wù)通常位于4GB以下,因此它們?cè)诟邇?nèi)存EFI引導(dǎo)系統(tǒng)上提供了一種進(jìn)入Linux的方法。

什么是EFI運(yùn)行時(shí)服務(wù)?

PC上的UEFI,mac上的EFI是現(xiàn)代化的BIOS。UEFI是統(tǒng)一的可擴(kuò)展固件接口的縮寫。UEFI負(fù)責(zé)檢測(cè)硬件和配置設(shè)備,以便于將控制移交給正在加載的操作系統(tǒng)。

UEFI的兩個(gè)主要組件是引導(dǎo)服務(wù)和運(yùn)行時(shí)服務(wù)。操作系統(tǒng)上很早就調(diào)用ExitBootServices。隨后引導(dǎo)服務(wù)就不再使用。

即使在操作系統(tǒng)加載和運(yùn)行后,EFI Runtime Services仍然保持運(yùn)行。它們提供操作系統(tǒng)可以調(diào)用的各種功能。UEFI規(guī)范指定了運(yùn)行時(shí)服務(wù)應(yīng)該向操作系統(tǒng)提供的一組固定的函數(shù),如下所示。

UEFI規(guī)范指定了運(yùn)行時(shí)服務(wù)應(yīng)該向操作系統(tǒng)提供的一組固定的函數(shù)

UEFI運(yùn)行時(shí)服務(wù)

最初,運(yùn)行時(shí)服務(wù)功能的位置通過運(yùn)行時(shí)服務(wù)表傳送到操作系統(tǒng)。每個(gè)函數(shù)的物理地址是64位/8字節(jié)長(zhǎng),并以小端存儲(chǔ)的形式保存在內(nèi)存中。然而,到目前為止,所有系統(tǒng)的內(nèi)存地址都在32位范圍內(nèi)。物理內(nèi)存地址似乎是完全不變的,即在重新啟動(dòng)之間不發(fā)生隨機(jī)化。

Linux隨后將這些地址映射到虛擬地址空間,并用相應(yīng)的虛擬地址覆蓋表中的初始地址。初始表和被Linux修改后的表的如下所示。

初始表和被Linux修改后的表

EFI Runtime服務(wù)表,原始在左邊,Linux修改的為右邊。

攻擊

如果我們使用DMA用自己的代碼覆蓋EFI運(yùn)行時(shí)服務(wù)表會(huì)發(fā)生什么?或者,如果我們修改EFI運(yùn)行時(shí)服務(wù)表的指針,讓它指向之前插入的攻擊代碼,這又會(huì)發(fā)生什么?

當(dāng)操作系統(tǒng)調(diào)用EFI運(yùn)行時(shí)服務(wù)時(shí),會(huì)在目標(biāo)系統(tǒng)上執(zhí)行代碼-例如當(dāng)它讀取一個(gè)EFI變量。在特殊上下文中獲得執(zhí)行代碼,其中較低的內(nèi)存頁(yè)面在虛擬地址與物理地址之間以1:1映射。在正常的虛擬地址中是可以訪問到Linux內(nèi)核的。在ring0/supervisor模式下執(zhí)行。

然而,調(diào)用Linux內(nèi)核中的所有函數(shù)是不可能的。一些函數(shù)會(huì)調(diào)用失敗,因?yàn)長(zhǎng)inux已經(jīng)為運(yùn)行時(shí)服務(wù)設(shè)置了特殊的EFI上下文。針對(duì)這種情況,可以在Linux內(nèi)核中patch 一個(gè)“隨機(jī)”的鉤子函數(shù)。當(dāng)“正常”內(nèi)核線程命中該鉤子時(shí),被hook的內(nèi)核代碼將會(huì)被執(zhí)行.

目標(biāo)系統(tǒng)運(yùn)行Ubuntu 16.10,連接著攻擊硬件的PCILeech。右視圖為PCILeech

目標(biāo)

已經(jīng)在一臺(tái)具有8GB內(nèi)存的聯(lián)想T430和一臺(tái)具有32G內(nèi)存的 Intel NUC Skull Canyon做過了測(cè)試。T430的ExpressCard插槽用于獲得DMA訪問,在NUC上,在“BIOS”中設(shè)置Thunderbolt模式為“Legacy” – 允許通過Thunderbolt3 / USB-C進(jìn)行DMA訪問。

T430非常簡(jiǎn)單,只需插入PCILeech設(shè)備并調(diào)用pcileech.exe kmdload -kmd linux_x64_efi命令。PCILeech將搜索EFI運(yùn)行時(shí)服務(wù)表并hook它。然后要求用戶執(zhí)行某些操作來(lái)觸發(fā)已hook過的服務(wù)。

NUC是不同的。PCILeech在找到目標(biāo)之前如果遇到不可讀的內(nèi)存就會(huì)失敗。幸運(yùn)的是,運(yùn)行時(shí)服務(wù)表的地址是靜態(tài)的,在重新啟動(dòng)之間不會(huì)改變。這適用于所有已測(cè)試的系統(tǒng)。找到地址最簡(jiǎn)單的方法是通過在同一系統(tǒng)或相似系統(tǒng)上以EFI模式用USB引導(dǎo)啟動(dòng)Linux。一旦啟動(dòng)就調(diào)用命令cat /sys/firmware/efi/runtime來(lái)查看運(yùn)行時(shí)服務(wù)表的物理地址。一旦知道地址是0x3b294e18,我們可以調(diào)用命令

  1. pcileech.exe kmdload -kmd linux_x64_efi -min 0x3b294000 -max 0x3b295000 

顯示被攻擊的運(yùn)行時(shí)服務(wù)表

備注

如果你也想試試,可以查看Github上的PCILeech。

雖然漏洞總是在運(yùn)作,但是攻擊并不是100%穩(wěn)定的。有時(shí),搜索運(yùn)行時(shí)服務(wù)表會(huì)失敗,有時(shí)很難觸發(fā)對(duì)運(yùn)行時(shí)服務(wù)表的調(diào)用。有時(shí)目標(biāo)系統(tǒng)也會(huì)崩潰。

結(jié)論

在Linux 4.8操作系統(tǒng)上,如Ubuntu 16.10。由于可以利用PCILeech,所以不再是完全安全的。 即使你的筆記本電腦可能沒有一個(gè)ExpressCard插槽,但是如果擰開后蓋,它可能會(huì)有一個(gè)mini-PCIe或M.2插槽。

操作系統(tǒng)將重要的數(shù)據(jù)放在高于32-bit/4GB的地址上并不能阻止DMA攻擊。32位硬件(如PCILeech)會(huì)攻擊低于4GB的代碼和數(shù)據(jù)。其他惡意硬件也可能攻擊多達(dá)到64位地址空間。

操作系統(tǒng)應(yīng)該啟用VT-d來(lái)保護(hù)自身和固件(例如運(yùn)行時(shí)服務(wù))免受惡意設(shè)備的攻擊。

責(zé)任編輯:趙寧寧 來(lái)源: 安全客
相關(guān)推薦

2022-01-19 08:50:53

設(shè)備樹Linux文件系統(tǒng)

2015-07-20 15:44:46

Swift框架MJExtension反射

2022-11-04 09:09:54

Linux服務(wù)器

2020-04-21 15:20:12

微服務(wù)架構(gòu)實(shí)踐

2020-04-06 11:47:44

Linux命令腳本

2024-03-21 09:15:58

JS運(yùn)行的JavaScrip

2025-07-01 07:00:00

AICFO安全主管

2019-07-12 09:30:12

DashboardDockerDNS

2021-09-11 15:38:23

容器運(yùn)行鏡像開放

2019-10-14 09:14:37

Linuxbash命令

2020-08-11 08:59:20

容器虛擬化技術(shù)

2023-07-28 10:42:43

2020-12-07 13:31:43

GoMutex開發(fā)者

2021-08-18 08:32:09

代碼運(yùn)行時(shí)間示波器

2013-11-26 16:49:55

Android開發(fā)運(yùn)行時(shí)KitKat

2023-01-03 09:10:21

2024-03-20 10:46:00

云原生容器

2021-08-27 00:21:19

JSJust源碼

2023-02-12 12:00:57

2023-08-29 08:20:35

Kubernete跨云容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美乱大交xxxxx另类电影 | 亚洲成人一区二区 | 亚洲毛片在线观看 | 国产成在线观看免费视频 | 自拍视频网| 国产精品欧美精品 | 污视频免费在线观看 | www.4567| 亚洲国产精品99久久久久久久久 | 亚洲一区二区三区国产 | 国产黄色在线观看 | 日本午夜一区二区三区 | 麻豆va| 亚洲午夜精品一区二区三区他趣 | 精品美女在线观看 | 黄网站色大毛片 | 精品久久久精品 | 成人在线视频网址 | 黑人久久久 | 国产精品一区在线 | 久久亚洲一区二区 | 免费能直接在线观看黄的视频 | 欧美日韩精品免费观看 | 四色成人av永久网址 | 国产精品高清在线 | 久久成人国产 | 亚洲一区二区精品视频在线观看 | 国户精品久久久久久久久久久不卡 | 久久33 | 中文字幕一区二区三区精彩视频 | 91精品久久久久久久久久 | 亚洲成人一区二区三区 | 国产精品视频久久 | 欧美精品一区二区在线观看 | 人人玩人人添人人澡欧美 | 久久久欧洲| 91久色| 中文字幕亚洲区 | 视频一区二区中文字幕日韩 | 欧美成人a∨高清免费观看 色999日韩 | 国产成人精品久久 |