精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美猛男超大videosgay| 青青青伊人色综合久久| 精品国产乱码久久久久久1区2区| 99久久国产综合精品五月天喷水| 神宫寺奈绪一区二区三区| 先锋a资源在线看亚洲| 亚洲三级 欧美三级| 成人亚洲免费视频| 狠狠操一区二区三区| 国产欧美一区视频| 91av免费看| 超碰超碰超碰超碰| 亚洲一区色图| 亚洲欧美国产精品久久久久久久| 九九热免费在线观看| 黑森林国产精品av| 亚洲综合色噜噜狠狠| 日本成人三级电影网站| 亚洲免费不卡视频| 久久精品久久综合| 7777kkkk成人观看| 精品人妻伦九区久久aaa片| 精品av导航| 欧美精品电影在线播放| 丁香啪啪综合成人亚洲| 色yeye免费人成网站在线观看| 久久久五月婷婷| 国产精品国模大尺度私拍| 一区二区精品视频在线观看| 欧美日韩国产高清| 日韩在线观看高清| 美女爆乳18禁www久久久久久 | 欧美xxxxxbbbbb| 伊人久久国产| 精品美女国产在线| av在线免费观看国产| 中文字幕在线观看日本| 久久久久久亚洲综合| 国产高清一区二区三区| 97精品人妻一区二区三区香蕉| 亚洲免费中文| 97福利一区二区| 久久精品国产亚洲AV无码麻豆| 99久久夜色精品国产亚洲1000部| 夜夜嗨av色综合久久久综合网| 懂色av粉嫩av蜜乳av| 一区二区三区在线免费看 | 91亚洲人成网污www| 亚洲一区二区国产| 丰满少妇高潮一区二区| 色婷婷狠狠五月综合天色拍 | 色狠狠色噜噜噜综合网| 精品人妻一区二区三区四区在线| 国精产品一区一区三区mba下载| 免费看一级视频| 九九精品调教| 亚洲图片激情小说| 一区二区三区我不卡| 国产精品一区二区婷婷| 国产清纯美女被跳蛋高潮一区二区久久w| 国产一区二区久久久| 黄色美女一级片| 成人免费av资源| 国内精品久久国产| 青青草av免费在线观看| 久久老女人爱爱| 日韩国产在线一区| 97在线观看免费观看高清 | 亚洲伦理一区二区三区| 久久亚洲在线| 欧美另类暴力丝袜| 国产无码精品视频| 另类图片国产| 国产精品自产拍高潮在线观看| 亚洲中文一区二区三区| 国产一区在线精品| 国产精品国产精品国产专区蜜臀ah| 国产成人自拍一区| 久久先锋影音av鲁色资源| 日本一区二区三区四区在线观看 | 九九热最新视频//这里只有精品| 久久久综合久久| 另类av一区二区| 成人在线播放av| 四季av日韩精品一区| 久久久久国产精品免费免费搜索| 亚洲图片都市激情| 久色国产在线| 日本韩国欧美三级| √天堂资源在线| 久久99精品久久久久久欧洲站| 亚洲精品永久免费精品| 亚洲精品卡一卡二| av不卡在线看| 成人免费自拍视频| 日韩美女一级视频| 亚洲欧美一区二区在线观看| 黄色一级视频片| 伊人国产精品| 亚洲精品日韩久久久| 国产精品免费人成网站酒店 | 中文字幕在线观看不卡| 大陆极品少妇内射aaaaa| 韩国成人在线| 亚洲福利在线视频| 91免费公开视频| 国产亚洲网站| 1区1区3区4区产品乱码芒果精品| 亚洲三区在线观看无套内射| 国产精品久久久久四虎| 国产老熟妇精品观看| japansex久久高清精品| 亚洲人成免费电影| 久久伊人成人网| 麻豆精品一区二区| 欧美日韩在线一二三| 免费在线国产视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| caopor在线| 91精品一区二区三区综合| 欧美一区二区.| 亚洲精品18p| 国产精品久久久久久久第一福利 | 日本aa在线观看| 久久日本片精品aaaaa国产| 国产视频丨精品|在线观看| 免费无遮挡无码永久在线观看视频| 麻豆freexxxx性91精品| 欧美一区二区三区四区五区六区| 丁香花视频在线观看| 91麻豆精品国产91久久久使用方法 | 国产视频一区二区在线| 男人添女人下面高潮视频| 136福利精品导航| 美女性感视频久久久| 一区二区三区日| 国产精品欧美一区喷水| 91香蕉视频污版| 欧美美女在线| 日本亚洲欧美成人| 日韩精品123| 福利精品视频在线| 国产视频久久久久久| 欧美日韩亚洲国产精品| 96国产粉嫩美女| 国产美女在线观看| 日韩一区二区三| 午夜国产福利一区二区| 久久97超碰色| 一级黄色免费在线观看| 白嫩亚洲一区二区三区| 久久亚洲精品成人| 亚洲在线视频播放| 综合在线观看色| 天天av天天操| 亚洲欧美一级二级三级| 91精品入口蜜桃| 性xxxxfjsxxxxx欧美| 欧美成人一区二区三区片免费| 国产高清在线免费观看| 国产不卡免费视频| 免费看又黄又无码的网站| 亚洲涩涩av| 国产精品久久久久福利| 日本暖暖在线视频| 欧美一区二区三区免费| 久草视频在线免费看| a在线播放不卡| 狠狠热免费视频| 91综合久久一区二区| 91久久久久久久久| 欧美videossex| 亚洲精品国产suv| 国产精品尤物视频| 亚洲三级在线免费观看| 国产成人av片| 羞羞答答国产精品www一本 | 日本在线天堂| 欧美r级在线观看| 国产精品久久久久久久久久久久久久久久久 | 日韩精品五月天| 在线观看一区欧美| 欧美福利在线播放网址导航| 国产精品国产三级国产aⅴ9色| 国产cdts系列另类在线观看| 亚洲国产欧美久久| 狠狠躁夜夜躁人人爽视频| 亚洲视频免费在线| 少妇户外露出[11p]| 蜜臀av亚洲一区中文字幕| 中文字幕乱码免费| 欧美男男gaytwinkfreevideos| 国产日韩在线免费| 九色porny自拍视频在线观看 | 日本大片在线播放| 亚洲午夜精品久久久久久久久久久久| 亚洲无码精品在线观看| 亚洲国产日韩在线一区模特| 丁香激情五月少妇| 成人自拍视频在线观看| 最新天堂中文在线| 影音先锋久久精品| 一区二区三区我不卡| 偷拍精品福利视频导航| 亚洲自拍av在线| 在线成人视屏| 97超视频免费观看| 超鹏97在线| 亚洲天堂免费在线| 无码国产精品高潮久久99| 欧美人伦禁忌dvd放荡欲情| 欧美三日本三级少妇99| 亚洲欧洲综合另类在线| 亚洲最大成人综合网| 99久久精品国产一区| 午夜免费福利网站| 麻豆精品国产91久久久久久| 成人毛片视频网站| 激情视频一区| 69精品丰满人妻无码视频a片| 全球成人免费直播| 快播亚洲色图| 狼人精品一区二区三区在线| 亚洲综合大片69999| 欧美特黄色片| 国产精品久久久久久久久免费看| mm视频在线视频| 欧美夫妻性生活视频| 黄a在线观看| 日韩中文综合网| 第九色区av在线| 亚洲欧美在线免费| 神马久久久久| 日韩电影视频免费| 天堂网2014av| 亚洲成色999久久网站| 丁香花免费高清完整在线播放| 91精品在线一区二区| 国产精品毛片一区视频播| 欧美久久高跟鞋激| 国产精品一区二区三区在线免费观看 | 欧美成人全部免费| 成人国产免费电影| 美女久久久久久久| 性欧美猛交videos| 欧美激情亚洲另类| 国产精品69xx| 国内精品久久久久久中文字幕| 久草成色在线| 久久免费成人精品视频| 俺来也官网欧美久久精品| 性色av一区二区三区在线观看| caoporn-草棚在线视频最| 久久免费视频在线观看| 国产不卡123| 欧美在线视频一区二区| 久久野战av| 国产精品美女在线| 成人国产精品一区二区免费麻豆 | 久久99国内| 日韩精品另类天天更新| 日韩伦理一区| 日本美女爱爱视频| 亚洲三级网站| 日av中文字幕| 激情五月激情综合网| 欧美日韩久久婷婷| 成人精品免费看| 白丝女仆被免费网站| 国产三级精品三级在线专区| 貂蝉被到爽流白浆在线观看| 亚洲免费观看视频| 国产精品白浆一区二小说| 欧美性色19p| 一道本无吗一区| 日韩免费性生活视频播放| 香蕉视频911| 最近2019年手机中文字幕| 天堂亚洲精品| 日韩av成人在线观看| 91九色成人| 国产精品自拍首页| 日韩电影免费网站| 国产精品久久久久久久久电影网| 午夜在线观看免费一区| 国产成年人视频网站| 成人丝袜视频网| 国产一级久久久久毛片精品| 亚洲乱码国产乱码精品精98午夜| 久久久久久久黄色片| 欧美日韩精品是欧美日韩精品| www.五月婷婷| 影音先锋日韩有码| 国产精品蜜臀| 国产在线高清精品| 日韩欧美黄色| 国产免费xxx| 日日噜噜夜夜狠狠视频欧美人 | 在线观看毛片视频| 精品国产乱码久久| 欧美日韩在线看片| 欧美中文字幕精品| 午夜精品在线| 亚洲欧美综合一区| 亚洲日本免费| 一区二区久久精品| 久久久久久久综合| 久久精品99久久久久久| 欧美在线不卡视频| 天堂在线资源8| 久久91亚洲精品中文字幕| 日本在线中文字幕一区二区三区| 国产精品国产精品| 中文在线日韩| 婷婷丁香激情网| xnxx国产精品| 国产一级在线免费观看| 337p亚洲精品色噜噜噜| 国产一区二区三区福利| 91精品国产91久久久久久| 97品白浆高清久久久久久| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产欧美成人| 亚洲欧美日韩色| 尤物视频一区二区| 国产精品一区二区黑人巨大| 这里只有精品久久| 88xx成人永久免费观看| 久久天堂国产精品| 亚洲国产综合在线看不卡| 能看毛片的网站| 亚洲色图.com| 国产情侣一区二区| 日韩亚洲精品视频| 欧美v亚洲v综合v国产v仙踪林| 日韩中文字幕av在线| 久久天堂精品| 国产ts在线播放| 色婷婷综合久久久中文字幕| 日本国产在线| 日韩av电影国产| 最近国产精品视频| 波多野结衣作品集| 久久精品亚洲精品国产欧美| 日韩在线 中文字幕| 亚洲欧洲中文天堂| 亚洲成人av观看| 亚洲精品国产精品久久| 久久精品免费观看| 永久久久久久久| 日韩视频免费观看高清完整版在线观看 | 欧美最顶级丰满的aⅴ艳星| 日韩精选在线| 色诱视频在线观看| 日本一区二区免费在线| 一本到在线视频| 欧美成人三级视频网站| 草草视频在线一区二区| 三上悠亚久久精品| 91在线观看高清| 高潮无码精品色欲av午夜福利| 中文字幕精品网| 91视频亚洲| 成人免费观看在线| 久久精品一区二区三区不卡牛牛 | 日韩精品视频在线观看网址| xxxxxx欧美| 在线观看成人av电影| 国产成人免费网站| 永久免费看片在线播放| 国产亚洲欧洲高清| www.久久草.com| 日韩精品―中文字幕| 欧美国产日本韩| 亚洲爱情岛论坛永久| 热99精品里视频精品| 欧美韩国日本在线观看| 免费不卡的av| 91黄色激情网站| a级片国产精品自在拍在线播放| 精品欧美国产一区二区三区不卡| 日本vs亚洲vs韩国一区三区| 91人妻一区二区三区蜜臀| 日韩精品视频在线播放| 日韩一级特黄| 国产综合中文字幕| 亚洲国产精品精华液2区45| 亚洲av无码一区二区三区dv| 日韩av电影在线免费播放| 91精品国产91久久久久久密臀| 中文字幕人妻一区二区三区| 欧美视频一区二| 9999热视频在线观看| 一区二区三区四区免费视频| 成人深夜视频在线观看| 中文字幕无码乱码人妻日韩精品| 欧美精品videosex极品1| 欧美色图激情小说| 中文字幕人妻一区二区三区| 91精品国产高清一区二区三区蜜臀|