精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入Linux | 如何在任意進程中修改內存保護(含PoC)

存儲 存儲軟件
在現代操作系統中,每個進程都有自己的虛擬地址空間(從虛擬地址映射到物理地址)。此虛擬地址空間由內存頁(某些固定大小的連續內存塊)組成,每個頁都有保護標志,用于確定允許此頁面訪問的類型(讀取,寫入和執行)。

 前言

最近,我們遇到一個非常具體的問題:改變任意進程的內存區域的保護標志。這項任務看似微不足道,但是我們著實遇到了一些麻煩,在此過程中也學到了關于Linux機制和內核開發相關的東西。以下是一些簡要概述,其中包括了當時采取的三種方案,每次也在尋求更好解決方案。

[[254657]]

 

概述

在現代操作系統中,每個進程都有自己的虛擬地址空間(從虛擬地址映射到物理地址)。此虛擬地址空間由內存頁(某些固定大小的連續內存塊)組成,每個頁都有保護標志,用于確定允許此頁面訪問的類型(讀取,寫入和執行)。這種機制依賴于架構頁表(有趣的是,在x64架構中,你不能使頁面只寫(write-only),就算你特意從操作系統請求,它也總是可讀的)。

在Windows中,你可以使用VirtualProtect或VirtualProtectEx這兩個API更改內存區域的保護。后者讓我們的任務變得非常簡單:它的***個參數hProcess是“要改變內存保護的進程的句柄”(參見MSDN.aspx))。

另一方面,在Linux中,我們并不那么幸運:更改內存保護的API是系統調用mprotect或pkey_mprotect,并且兩者始終在當前進程的地址空間上運行。 我們現在回顧一下在x64架構上的Linux中解決此任務的方法(我們假設是root權限)。

而在Linux中,我們就沒那么幸運了,更改內存保護的API是系統調用(mprotect或pkey_mprotect),并且兩者始終在當前進程的地址空間上運行。所以現在我們來回顧一下在Linux x64架構上解決此問題的方法(假設是root權限)。

方案一:代碼注入

如果mprotect總是作用于當前進程,那么我們就需要讓目標進程從它自己的上下文中調用它。這稱為代碼注入,可以通過許多不同的方式實現。我們選擇使用ptrace機制實現它,其允許一個進程“觀察并控制另一個進程的執行”(參見手冊),包括更改目標進程的內存的能力。此機制用于調試器(如gdb)和跟蹤程序(如strace)。使用ptrace注入代碼所需的步驟如下:

1. 通過ptrace附加到目標進程。如果進程中有多個線程,那就終止所有其他線程

2. 找到可執行內存區域(通過檢查/proc/PID/maps)并在那里寫操作碼(hex:0f 05)

3.根據調用約定修改寄存器:首先將rax更改為mprotect的系統調用號(即10)。然后三個參數(起始地址,長度和所需的保護)分別存儲在rdi,rsi和rdx中。***,將rip更改為步驟2中使用的地址

4. 恢復進程直到系統調用返回(ptrace允許你跟蹤系統調用的進入和退出)

5. 恢復被覆蓋的內存和寄存器,從進程中分離并恢復正常執行

這種方法是***個也是最直觀的方法,但是我們之后發現Linux中的另一種叫seccomp的機制會工作得更好。它是Linux內核中的一個安全工具,允許進程自己進入某種封閉狀態,除了read,write,_exit和sigreturn之外,它不能調用任何系統調用。不過也可以選擇任意系統調用及其參數來僅僅過濾指定的系統調用。

因此,如果進程啟用了seccomp模式并且我們嘗試將mprotect調用到其中,那么內核將終止進程,因為不允許此系統調用。所以我們要尋求更好的解決方案……

方案二:模仿內核模塊中的mprotect

由于seccomp,用戶態中每個解決方案都不可行,因此下一個方法肯定存在于內核態中。在Linux內核中,每個線程(用戶線程和內核線程)都由名為task_struct的結構表示,并且當前線程(任務)可通過指針訪問。內核中mprotect的內部實現使用指針current,所以我們首先想到的是將mprotect的代碼復制粘貼到我們的內核模塊,并用指向目標線程的task_struct的指針替換每次出現的current。

可能你已經猜到了,復制C代碼并不是那么簡單,其中有大量我們無法訪問的,未導出的函數,變量和宏。某些函數聲明在頭文件中導出,但內核不會導出它們的實際地址。如果內核是由kallsyms支持編譯的,那么這個特定的問題就可以解決,然后通過文件/proc/kallsysm導出所有內部符號。

盡管存在這些問題,我們仍以mprotect的本質進行嘗試,甚至僅用于教育目的。因此,我們開始編寫一個內核模塊,它獲取mprotect目標PID和參數,并模仿其行為。首先,我們需要獲取所需的內存映射對象,它表示線程的地址空間:

 

現在我們有了內存映射對象,就需要深入挖掘。Linux內核實現了一個抽象層來管理內存區域,每個區域由結構vm_area_struct表示。為了找到正確的內存區域,我們使用函數find_vma,它通過所需的地址搜索內存映射。

vm_area_struct包含字段vm_flags,其以與結構無關的方式表示存儲器區域的保護標志,vm_page_prot以體系結構相關的方式表示。單獨更改這些字段不會真正地影響頁表(但會影響proc/PID/maps的輸出,我們已經嘗試過)。 你可以點擊這里獲取更多內容。

在深入研究內核代碼之后,我們發現了真正改變內存區域保護所需的最基本工作:

1. 將字段vm_flags更改為所需的保護

2. 調用函數vma_set_page_prot_func來根據vm_flags字段更新vm_page_prot

3. 調用函數change_protection_func更新頁表中的保護位。

這段代碼雖然有效,但它有很多問題,首先,我們只實現了mprotect的基本部分,但原始函數比我們做的要多得多(例如通過保護標志分割和連接內存區域)。其次,我們使用兩個內核函數,這些函數不是由內核導出的(vma_set_page_prot_func和change_protection_func)。我們可以使用kallsyms來調用它們,但是這很容易出問題(將來可能會更改它們的名稱,或者會改變內存區域的整個內部實現)。所以我們想要一個更通用的解決方案,不考慮內部結構。

方案三:使用目標進程的內存映射

這種方法與***種方法非常相似,因為我們希望在目標進程的上下文中執行代碼。但在這里,我們會用自己的線程中執行代碼,同時使用目標進程的“內存上下文”,這意味著:我們會使用其地址空間。

通過幾個API可以在內核態下更改地址空間,我們使用了use_mm。如文檔明確指出的那樣,“此例程僅用于從內核線程上下文中調用”。這些是在內核中創建的線程,不需要任何用戶地址空間,因此可以更改其地址空間(地址空間內的內核區域在每個任務中以相同的方式映射)。

在內核線程中運行代碼有一種簡單方法,就是內核的工作隊列接口,它允許你使用特定例程和特定參數來安排工作。我們的例程獲取所需進程的內存映射對象和mprotect的參數,并執行以下操作(do_mprotect_pkey是內核中實現mprotect和pkey_mprotect系統調用的內部函數):

 

當我們的內核模塊在某個進程(通過一個特殊的IOCTL)獲得更改保護的請求時,它首先找到所需的內存映射對象,然后使用正確的參數來調度工作。這個方案仍有一個小問題:函數do_mprotect_pkey_func不由內核導出,需要使用kallsyms獲取。與前一個解決方案不同,這個內部函數不太容易發生變化,因為它與系統調用pkey_mprotect有關,而且我們無需處理內部結構。

如果你有興趣,可以在github中找到這個PoC內核模塊的源代碼。

責任編輯:武曉燕 來源: FreeBuf
相關推薦

2018-12-03 11:05:20

內存代碼Linux

2019-12-16 10:43:38

Linux內存消耗進程

2019-11-06 15:58:54

Linux內存消耗進程

2018-07-27 05:08:58

2021-08-30 06:59:07

x86處理器內存

2023-03-05 16:40:07

linux進程內存

2023-01-30 14:27:14

Linux進程

2018-05-31 11:58:06

Linux進程Early OOM

2010-08-05 16:08:12

輕松掌握DB2 9.5

2015-10-22 13:07:29

USB設備權限Linux

2023-01-27 09:17:02

操作系統虛擬化內存

2018-06-05 08:51:04

Linux結束進程中止程序

2019-12-16 09:10:38

Linux中央處理器進程

2019-12-16 11:00:04

LinuxCPU進程

2022-05-27 11:59:22

Linux內存CPU

2018-10-08 08:20:25

Linux進程端口號

2021-07-16 08:00:00

開發VSCode編輯器

2013-06-20 10:25:56

2011-01-26 13:26:32

Linux進程

2009-12-09 10:07:19

Linux靜態路由
點贊
收藏

51CTO技術棧公眾號

久久男人的天堂| 在线观看一区二区视频| 国产伦精品一区二区三毛| 日本一本高清视频| 精品国产一区二区三区| 欧美精品粉嫩高潮一区二区| 九九热只有这里有精品| 国产一区精品| 国产精品一区二区久久不卡| 欧美一级成年大片在线观看| 日韩国产第一页| 在线精品视频一区| 欧美三级资源在线| av免费观看大全| 蜜桃视频在线观看免费视频网站www| 国产91色综合久久免费分享| 国产精品久久久久久久久久久久| 欧美片一区二区| 成人精品影院| 亚洲黄页网在线观看| 天堂av8在线| gay欧美网站| 亚洲亚洲精品在线观看| 中文字幕久精品免| 国产鲁鲁视频在线观看免费| 成人免费视频免费观看| 成人h视频在线| 少妇一级淫片日本| 中文亚洲欧美| 久久久久久久久久av| 秋霞欧美一区二区三区视频免费| 欧美男男freegayvideosroom| 日韩精品在线一区| 中文字幕12页| 日韩综合久久| 欧美三片在线视频观看 | 国产又黄又粗的视频| 欧洲亚洲一区二区三区| 亚洲精品在线免费观看视频| 色男人天堂av| 欧美亚洲人成在线| 欧美日韩欧美一区二区| 日韩免费高清在线| 成人美女黄网站| 欧美日韩国内自拍| 尤物av无码色av无码| 91福利在线免费| 亚洲在线一区二区三区| 久久亚洲国产成人精品无码区| а√天堂8资源在线官网| 国产精品久久久久久妇女6080 | 黄色av一区| 色妞久久福利网| 99国产精品无码| 97精品一区| 不卡伊人av在线播放| 精品国产视频在线观看| 真实国产乱子伦精品一区二区三区| 日韩小视频网址| 欧美爱爱免费视频| 欧美 日韩 国产精品免费观看| 久久国产精品久久久久| 欧美国产日韩综合| 亚洲精品资源| 国产97在线|日韩| 黄色网址中文字幕| 男女男精品视频网| 成人av资源在线播放| www日本在线| av综合在线播放| 免费久久久一本精品久久区| 国产中文字幕在线视频| 亚洲欧洲av另类| 久久久天堂国产精品| 超免费在线视频| 欧美性生活大片免费观看网址| 日本va中文字幕| 国产91欧美| 日韩女同互慰一区二区| 精品夜夜澡人妻无码av | 91大学生片黄在线观看| 91吃瓜在线观看| 在线观看欧美日本| 91欧美一区二区三区| 蜜臀av一区| 中文字幕欧美精品在线| 一级黄色录像视频| 国产精品亚洲产品| 国产女精品视频网站免费| 国产福利免费视频| 久久亚洲精精品中文字幕早川悠里| 亚洲国产精品综合| 日本片在线看| 在线精品国精品国产尤物884a| 日韩精品aaa| 久久爱www成人| 欧美精品情趣视频| 免费无码国产精品| 高清在线观看日韩| 午夜精品一区二区在线观看的| 中文字幕伦理免费在线视频 | 日本一本不卡| 欧美国产极速在线| 国产精品无码一区| 成人性生交大片免费 | 一区二区视频欧美| 国产精品久久久av久久久| 亚洲精品无遮挡| 国产精品午夜春色av| 成人免费视频91| 国产精品视频一区视频二区| 日韩电影第一页| 免费中文字幕在线| 青娱乐精品在线视频| 久久精品国产精品国产精品污 | 欧美性大战久久久久久久 | 精品久久ai电影| x99av成人免费| 国产性生活视频| av网站免费线看精品| 免费在线观看污污视频| 久久久人成影片一区二区三区在哪下载| 日韩视频在线永久播放| jizzjizzjizz国产| 丝袜亚洲另类丝袜在线| 国产精品区一区| 成人直播在线| 欧美精品日韩综合在线| 蜜桃传媒一区二区亚洲| 9色精品在线| 国产精品视频免费观看| 3d玉蒲团在线观看| 欧美一区二区在线观看| 91导航在线观看| 免费成人在线视频观看| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 欧美大片在线观看一区二区| 青青草华人在线视频| 秋霞午夜鲁丝一区二区老狼| 日本一区视频在线| 自由日本语热亚洲人| 日韩精品中文字幕视频在线| 日本一级一片免费视频| 99re8在线精品视频免费播放| 男人的天堂狠狠干| 国产亚洲精品美女久久| 久久久久亚洲精品国产| 免费观看毛片网站| 性久久久久久久久| 好吊一区二区三区视频| 亚洲一区日韩在线| 日本成人黄色| 久久婷婷五月综合色丁香| 自拍偷拍免费精品| 国产深喉视频一区二区| 伊人婷婷欧美激情| 黑人玩弄人妻一区二区三区| 极品少妇一区二区三区| 韩国精品一区二区三区六区色诱| 啊啊啊久久久| 亚洲人免费视频| 自拍偷拍福利视频| 亚洲欧洲www| 成年人小视频在线观看| 日韩视频一区| 日产国产精品精品a∨| 成人综合网站| 欧美伦理91i| 日韩一级中文字幕| 在线亚洲精品福利网址导航| 香蕉成人在线视频| 国产精品一区二区无线| 久久久久久久久久久99| 国产传媒欧美日韩成人精品大片| 国产欧美在线观看| 色yeye免费人成网站在线观看| 亚洲电影免费观看高清完整版在线观看| 久久国产精品免费看| 国产精品免费看片| 精品国产免费久久久久久婷婷| 国产日韩1区| 亚洲欧洲精品一区二区| av成人综合| 国产91免费观看| av理论在线观看| 国产午夜精品理论片a级探花| 中文字幕欧美人妻精品| 一区二区三区精品久久久| 国产精品揄拍100视频| 久久精品99国产精品日本| 男人天堂手机在线视频| 精品一区二区三区中文字幕老牛| 91久久久精品| 欧美黑人一区| 欧美剧在线观看| 国产精品一区二区三区四区色| 日韩一区二区电影网| 天干夜夜爽爽日日日日| 亚洲精品国产无天堂网2021| 泷泽萝拉在线播放| 国产成人福利片| 亚洲综合欧美在线| 99av国产精品欲麻豆| 中文字幕中文字幕在线中心一区 | 成人精品三级| 欧美极品美女电影一区| 在线观看av的网站| 日韩精品福利在线| 亚洲国产日韩在线观看| 欧美色视频在线| 久久精品一二区| 亚洲综合激情小说| 性爱在线免费视频| 久久久国产午夜精品| 中文字幕99页| 国产成人午夜精品5599| 999这里有精品| 日韩不卡一二三区| 18禁免费无码无遮挡不卡网站| 欧美日韩亚洲国产精品| 一区二区三区欧美成人| 欧美偷拍自拍| 品久久久久久久久久96高清| 欧美wwwsss9999| 国产精品v欧美精品∨日韩| 成人av在线播放| 国产欧美日韩91| 懂色aⅴ精品一区二区三区| 国产成人精品久久亚洲高清不卡| 爱啪啪综合导航| 高清一区二区三区四区五区| 欧洲一区二区三区| 欧美国产第二页| 黄网站在线观| 欧美高清自拍一区| 黄网av在线| 高清一区二区三区四区五区| 波多一区二区| 久久久噜噜噜久久久| 美洲精品一卡2卡三卡4卡四卡| 久久国产精品久久精品| 91精品久久久久久粉嫩| 欧美多人乱p欧美4p久久| 美女日批视频在线观看| 久久青草福利网站| 欧美freesex黑人又粗又大| 97视频在线看| 日韩精品av| 国产z一区二区三区| 亚洲第一二三四区| 国产精品久久久久久久久久久新郎 | 国产精品久久久久久久免费观看| 伊人狠狠色丁香综合尤物| 99国产精品免费视频观看| 中国人体摄影一区二区三区| 91麻豆精品国产91久久久平台 | 精品视频在线一区二区| 久久网福利资源网站| 91精选在线| 97精品一区二区视频在线观看| 三妻四妾的电影电视剧在线观看| 欧美在线视频一二三| 欧美精选视频一区二区| 成人欧美一区二区三区黑人孕妇| 久久99成人| 国内成+人亚洲| 国产伦精品一区二区三区视频| 日韩尤物视频| 91精品秘密在线观看| 成人午夜视频免费观看| 国产欧美午夜| 欧美自拍小视频| 国产在线观看一区二区| av在线播放网址| 日本一区二区免费在线| 一区视频免费观看| 天涯成人国产亚洲精品一区av| 亚洲欧美一二三区| 欧美一区二区三区公司| 人成在线免费视频| 少妇精69xxtheporn| 美洲精品一卡2卡三卡4卡四卡| 国产精品9999| 日韩综合一区二区三区| 欧美一区二区三区四区五区六区| 婷婷亚洲五月| 青青草原av在线播放| 国产一区二三区| 中文字幕在线看高清电影| 亚洲视频一区在线| 综合网在线观看| 日韩一区二区三区在线| 你懂的好爽在线观看| 欧美精品在线网站| 秋霞国产精品| 狠狠色狠狠色综合人人| 99视频精品全部免费在线视频| 一二三四视频社区在线| 麻豆成人久久精品二区三区红| 中国特级黄色大片| 日韩一区在线看| 日韩精品一区二区亚洲av观看| 337p日本欧洲亚洲大胆色噜噜| av在线1区2区| 欧美一级电影免费在线观看| 免费精品一区| 午夜精品美女久久久久av福利 | 亚洲一级片网站| 91免费国产在线观看| 国产精品白嫩白嫩大学美女| 欧美无砖专区一中文字| 天天摸天天干天天操| 欧美xxxx14xxxxx性爽| 91亚洲视频| 美日韩精品免费| 在线成人欧美| 欧美69精品久久久久久不卡| 国产精品污www在线观看| 天天综合网入口| 亚洲大胆人体av| 怡红院在线观看| 成人午夜黄色影院| 第一会所sis001亚洲| 亚洲成熟丰满熟妇高潮xxxxx| 成人午夜激情在线| 国产一级大片在线观看| 欧美一区二区三区视频免费播放| 在线视频自拍| 国产精品久久久久秋霞鲁丝| 伊人久久大香线蕉av不卡| 僵尸世界大战2 在线播放| 国产成人亚洲综合色影视| 久艹在线观看视频| 欧美日韩国产一区| 午夜免费视频在线国产| 国产精品av在线播放| 国产亚洲电影| 国产a级片免费观看| 久久免费看少妇高潮| 你懂的国产视频| 亚洲国产另类久久精品| 国产精品蜜芽在线观看| 精品一区二区三区国产| 91久久亚洲| 国产精品久久久免费观看| 精品国产乱码久久久久久婷婷 | 日本一区二区三区久久| 中文字幕欧美日韩va免费视频| 看片一区二区| 亚洲欧美日韩不卡| 国产毛片精品视频| 欧美黄色免费在线观看| 欧美sm美女调教| 97人澡人人添人人爽欧美| 国产专区一区二区三区| 中文国产一区| 麻豆精品免费视频| 欧美亚洲动漫制服丝袜| 幼a在线观看| 亚洲综合小说区| 亚洲国产精品一区| av在线网站观看| 欧美亚洲禁片免费| 黄色网址在线免费| 国产精品久久久久久久久久久久午夜片 | 国产一区二区三区黄网站| 亚洲精品国产suv一区88| 成人激情综合网站| 久久久久久久久久久久久久av| 亚洲区在线播放| 欧美激情啪啪| 国产视频在线观看网站| 久久免费国产精品| 国产一区二区麻豆| 孩xxxx性bbbb欧美| 欧美热在线视频精品999| 免费精品99久久国产综合精品应用| 一区二区三区波多野结衣在线观看| 五月婷婷深深爱| 国产精品亚洲综合天堂夜夜| 欧美1区2区3区| 添女人荫蒂视频| 欧美人xxxx| 妞干网免费在线视频| 亚洲一区二区三区精品动漫| 国产91精品入口| 成人黄色免费网| 欧美极品xxxx| 日韩久久综合| 亚洲图片综合网| 欧美日韩国产天堂| 福利影院在线看| 一区二区三区一级片| 91麻豆产精品久久久久久| 国产又粗又长又大视频| 欧美亚州一区二区三区| 一区二区三区在线电影| 国产免费看av| 日韩欧美国产三级电影视频| 欧美xnxx|