日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何通過(guò)查找惡意開(kāi)發(fā)者的線索來(lái)尋找漏洞(下)

接上篇:

創(chuàng)新互聯(lián)公司是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站與策劃設(shè)計(jì),岳西網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:岳西等地區(qū)。岳西做網(wǎng)站價(jià)格咨詢(xún):18982081108

  • 如何通過(guò)查找惡意開(kāi)發(fā)者的線索來(lái)尋找漏洞(上)
  • 如何通過(guò)查找惡意開(kāi)發(fā)者的線索來(lái)尋找漏洞(中)

內(nèi)核地址泄漏

在絕大多數(shù)漏洞利用中,攻擊者使用內(nèi)核指針泄漏原語(yǔ)來(lái)調(diào)整漏洞利用。在除CVE-2019-1458之外的所有漏洞利用中,此泄漏原語(yǔ)都是眾所周知的HMValidateHandle技術(shù)。

HMValidateHandle()是user32.dll的內(nèi)部未導(dǎo)出函數(shù),可通過(guò)isMenu()等各種函數(shù)加以利用,并且可用于獲取所有Windows版本(直到Windows10RS4)中不同Window對(duì)象的內(nèi)核地址。這項(xiàng)技術(shù)是眾所周知的,甚至早在2011年就已使用,因此大多數(shù)開(kāi)發(fā)教程都選擇專(zhuān)門(mén)解析isMenu()來(lái)查找HMValidateHandle()的地址。

令人驚訝的是,在可用于查找HMValidateHandle()的數(shù)十種不同函數(shù)中,攻擊者只是按照眾所周知的教程選擇了也使用isMenu()。更令人驚訝的是,這種常見(jiàn)的利用技術(shù)多年來(lái)仍然很有效,沒(méi)有激勵(lì)攻擊者通過(guò)選擇更諸如CheckMenuRadioItem()來(lái)嘗試“隱藏”。

該泄漏為研究人員提供了以下痕跡信息:

  • 窗口的內(nèi)核地址;
  • THREAD_INFO的內(nèi)核地址(pti字段);

在利用過(guò)程中的多個(gè)步驟中將使用此痕跡信息:

  • 在指向/創(chuàng)建偽內(nèi)核結(jié)構(gòu)時(shí)使用地址;
  • 確保研究人員的內(nèi)核地址是有效的Unicode字符串(不包含兩個(gè)連續(xù)的“\x00”字節(jié));
  • pti用于定位有效的EPROCESS,然后在令牌交換階段使用它;

與PlayBit的比較:PlayBit選擇通過(guò)直接訪問(wèn)用戶(hù)模式桌面堆來(lái)實(shí)現(xiàn)此函數(shù)。

令牌互換

該攻擊的最終目標(biāo)是根據(jù)給定的PID參數(shù)將系統(tǒng)特權(quán)授予所需的進(jìn)程,按著常規(guī)的思路實(shí)現(xiàn)這一點(diǎn)的方法是用系統(tǒng)進(jìn)程的令牌替換EPROCESS/KPROCESS結(jié)構(gòu)中的進(jìn)程的令牌。

下面有一些常用的技術(shù)可以做到這一點(diǎn),你會(huì)驚訝地發(fā)現(xiàn)有這么多不同的選項(xiàng)可以實(shí)現(xiàn)此函數(shù)。

使用Ps符號(hào)

Windows內(nèi)核包含以下函數(shù)和與進(jìn)程相關(guān)的函數(shù)的全局變量:

  • PsLookupProcessByProcessId:檢索指向進(jìn)程的EPROCESS的指針;
  • PsInitialSystemProcess:包含指向系統(tǒng)EPROCESS的指針的全局變量;
  • PsReferencePrimaryToken–返回一個(gè)指向進(jìn)程主要令牌的指針;

通過(guò)以?xún)?nèi)核模式執(zhí)行這些函數(shù),給定的shellcode可以輕松定位SYSTEM的令牌,但仍不能解決如何在所需的EPROCESS中分配令牌的問(wèn)題。

有兩種常見(jiàn)的解決方案:

  • 使用特定于版本的偏移量直接在EPROCESS中訪問(wèn)正確的偏移量;
  • 掃描EPROCESS以查找研究人員自己的指針(先前調(diào)用PsReferencePrimaryToken所知道的指針),并在找到匹配項(xiàng)后替換該條目;

此技術(shù)需要以?xún)?nèi)核模式執(zhí)行代碼,因此除非部署了其他SMEP繞過(guò),否則它將被SMEP保護(hù)阻止。

掃描PsList

查找目標(biāo)進(jìn)程和系統(tǒng)進(jìn)程的EPROCESS的常見(jiàn)替代方法是掃描被稱(chēng)為PsList的雙鏈接進(jìn)程列表,此技術(shù)涉及的步驟為:

  • 使用泄漏的pti字段,定位初始EPROCESS;
  • 掃描PsList以查找具有目標(biāo)PID的EPROCESS;
  • 通過(guò)查找PID為4或名稱(chēng)為SYS來(lái)掃描PsList,以搜索SYSTEM的EPROCESS;
  • 提取令牌并將其放置在目標(biāo)進(jìn)程中的匹配偏移量中;

謹(jǐn)慎更新SYSTEM令牌的引用計(jì)數(shù)。

Volodya漏洞利用Arbitrary-Read原語(yǔ)搜索SYS,如Cutter所示

這種技術(shù)需要PsList的主令牌和LIST_ENTRY的偏移量,基本上要求它們都作為版本特定配置的一部分進(jìn)行存儲(chǔ)。

該技術(shù)的主要優(yōu)點(diǎn)是,盡管它仍可以在內(nèi)核模式下作為簡(jiǎn)單的shellcode執(zhí)行,如在CVE-2017-0263的利用中所做的那樣),但它也可以在用戶(hù)模式下完全實(shí)現(xiàn)。為此,你需要兩個(gè)利用原語(yǔ),一個(gè)用于任意讀取(來(lái)自?xún)?nèi)核空間),另一個(gè)用于任意寫(xiě)入(進(jìn)入內(nèi)核空間)。在用戶(hù)模式下運(yùn)行可以解決研究人員之前針對(duì)SMEP所詳述的問(wèn)題,從而使這種保護(hù)對(duì)于這種利用原語(yǔ)毫無(wú)用處。

由于令牌是一個(gè)引用計(jì)數(shù)對(duì)象,因此正確注冊(cè)剛添加的引用非常重要,這樣可以避免在提升進(jìn)程終止時(shí)出現(xiàn)藍(lán)屏死亡(BSOD)。實(shí)際上,有兩個(gè)不同的引用計(jì)數(shù):

  • 令牌是一個(gè)EX_FAST_REF對(duì)象,較低的指針位被用作引用計(jì)數(shù);
  • OBJECT_HEADER存儲(chǔ)在令牌之前,并保留另一個(gè)引用計(jì)數(shù);

由于攻擊者選擇更新后一個(gè)引用計(jì)數(shù)字段,因此需要執(zhí)行以下步驟:

  • 屏蔽掉令牌指針的引用計(jì)數(shù)位:在32位進(jìn)程中應(yīng)對(duì)齊8個(gè)字節(jié),在64位進(jìn)程中應(yīng)對(duì)齊16個(gè)字節(jié)。
  • 減去指向OBJECT_HEADER的引用計(jì)數(shù)字段所需的常量;
  • 讀取值(使用任意讀取漏洞利用原語(yǔ));
  • 相應(yīng)地增加它;
  • 回寫(xiě)更新后的值;

但是,如圖9所示,研究人員在包含此函數(shù)的所有32位漏洞利用程序中發(fā)現(xiàn)了以下漏洞:

32位漏洞利用中的引用計(jì)數(shù)更新中實(shí)現(xiàn)的漏洞

讀取引用計(jì)數(shù)值時(shí)的對(duì)齊掩碼為8字節(jié)的對(duì)齊方式,而回寫(xiě)更新后的值時(shí)使用不同的掩碼。如果令牌將存儲(chǔ)在對(duì)齊8個(gè)字節(jié)而不對(duì)齊16個(gè)字節(jié)的內(nèi)存地址中,則寫(xiě)入操作將更新漏洞的字段。

盡管CVE-2016-0040和CVE-2016-0167使用Ps技術(shù),但到目前為止,掃描PsList是研究人員發(fā)現(xiàn)的攻擊者最喜歡的執(zhí)行令牌交換的方式了,在他們的8種利用中都使用了這種方式。在其中的7個(gè)中,他們使用了用戶(hù)模式下的任意讀取和任意寫(xiě)入。

與PlayBit的比較:在他們的所有示例中,研究人員會(huì)經(jīng)??吹絇layBit使用Ps函數(shù)進(jìn)行令牌交換。這個(gè)決定迫使攻擊者采取了一些SMEP繞過(guò)措施,將它們集成到CVE-2016-7255和CVE-2018-8453的后續(xù)漏洞中。這種設(shè)計(jì)選擇說(shuō)明了為什么攻擊者不愿意將適當(dāng)?shù)娜我庾x取原語(yǔ)作為漏洞利用的一部分。PlayBit始終使用0x300或0x600作為搜索上限,不是對(duì)EPROCESS中的令牌偏移使用特定于版本的配置,而是始終掃描EPROCESS進(jìn)行搜索。

值得注意的是,PlayBit在不同漏洞利用中使用的內(nèi)存損壞技術(shù)也被Duqu2.0使用,并在微軟于2015年發(fā)布的VB演講中進(jìn)行了分析。通過(guò)這種內(nèi)存損壞,它們可以觸發(fā)一些內(nèi)存讀取/寫(xiě)入操作。

PlayBit漏洞掃描EPROCESS以搜索令牌,如Cutter所示

盡管研究人員還可以從其他方面來(lái)討論這個(gè)問(wèn)題,例如每個(gè)攻擊者在開(kāi)發(fā)過(guò)程中喜歡使用的不同系統(tǒng)調(diào)用,對(duì)Windows和ScrollBars之類(lèi)的已創(chuàng)建對(duì)象的命名約定。但研究人員相信上面的列表已經(jīng)清楚地證明了研究人員方法的效率或有效性。從上面的列表可以看出,幾乎每個(gè)漏洞的每個(gè)方面都可以通過(guò)幾種不同的方式實(shí)現(xiàn)。盡管如此,研究人員所發(fā)現(xiàn)的兩個(gè)攻擊者在各自使用的攻擊方法上都非常一致,每個(gè)人都堅(jiān)持自己喜歡的方式。

在整個(gè)研究過(guò)程中,研究人員希望專(zhuān)注于漏洞編寫(xiě)者本身,無(wú)論是Volodya,PlayBit還是其他人。但是,研究人員認(rèn)為,通過(guò)查看漏洞利用開(kāi)發(fā)者的客戶(hù)群,也有很多值得學(xué)習(xí)的東西。Volodya的客戶(hù)列表各不相同,包括Ursnif等銀行木馬開(kāi)發(fā)者,GandCrab,Cerber和Magniber等勒索軟件開(kāi)發(fā)者,以及Turla,APT28和Buhtrap等APT組織,這些組織最初從事網(wǎng)絡(luò)犯罪,后來(lái)都發(fā)展為網(wǎng)絡(luò)間諜活動(dòng)。有趣的是,研究人員可以看到Volodya的零日漏洞更有可能賣(mài)給PT組織,而一日漏洞是由多個(gè)犯罪軟件組織購(gòu)買(mǎi)的。由于沒(méi)有更多的信息,研究人員只能假設(shè)一旦安全行業(yè)檢測(cè)到零日漏洞,該漏洞便被回收并以較低的價(jià)格出售。

APT的客戶(hù)Turla,APT28和Buhtrap都通常來(lái)自于俄羅斯,而且有趣的是,即使是這些高級(jí)團(tuán)隊(duì)也購(gòu)買(mǎi)了漏洞利用程序,而不是內(nèi)部開(kāi)發(fā)。這些事實(shí)進(jìn)一步加強(qiáng)了研究人員的假設(shè),即書(shū)面漏洞(written exploit)利用可以被視為惡意軟件的被利用的前奏。

下表總結(jié)并顯示了來(lái)自于Volodya的CVE,以及使用這些漏洞發(fā)現(xiàn)的客戶(hù)或惡意軟件組。標(biāo)有藍(lán)色的CVE為零日漏洞,自然更昂貴。左側(cè)突出顯示的組被視為APT。

Volodya的客戶(hù)和他們使用的CVE

綜上所述,研究人員在檢查了一段時(shí)間內(nèi)的漏洞樣本后發(fā)現(xiàn),他們還不能討論還沒(méi)有發(fā)現(xiàn)的零日漏洞。此外,研究人員只能?chē)L試將示例的日期追溯到被捕獲之前的時(shí)期,但可悲的事實(shí)是,研究人員通常會(huì)確定在野外首次發(fā)現(xiàn)這種攻擊行為的日期。此外,值得一提的是,Volodya在開(kāi)發(fā)CVE-2015-2546的第一個(gè)漏洞時(shí),從一開(kāi)始就已經(jīng)非常專(zhuān)業(yè)了。例如,它有一個(gè)唯一的任意編寫(xiě)原語(yǔ),研究人員無(wú)法跟蹤到任何其他漏洞利用指南。

在對(duì)漏洞利用程序進(jìn)行分析以及對(duì)研究人員收集的數(shù)十個(gè)惡意軟件示例進(jìn)行分析期間,研究人員注意到了一個(gè)有趣的變化。早期的Volodya漏洞是作為嵌入到惡意軟件中的源代碼出售的,而后期的漏洞利用程序則作為接受某個(gè)API的外部實(shí)用程序來(lái)出售,這種變化可能表明Volodya正在采取更多的反檢測(cè)措施。

在2015年至2019年的這段時(shí)間內(nèi),研究人員還注意到Volodya的技術(shù)技能有了顯著改善。隨著該組織變得更好和更有經(jīng)驗(yàn),Volodya開(kāi)始使用更有效的任意讀寫(xiě)原語(yǔ),他們甚至修復(fù)了這些原語(yǔ)之間的錯(cuò)誤。

CVE-2015-2546和CVE-2016-0165,而且,隨著大型函數(shù)被拆分為較小的子例程,漏洞利用代碼變得更加模塊化。此外,他們?cè)诟鞣N結(jié)構(gòu)中搜索和訪問(wèn)特定偏移量的技術(shù)也得到了改進(jìn),并且在最近的實(shí)現(xiàn)中,它可以更好地處理Windows次要版本中的更改,因此變得更加動(dòng)態(tài)和安全。

這不僅顯示了攻擊者的學(xué)習(xí)能力愈來(lái)愈強(qiáng),也暗示了他們的技能也在提高。查找并可靠利用Windows內(nèi)核漏洞的能力確實(shí)不是那么簡(jiǎn)單。相比之下,研究人員可以看到PlayBit在2015-2018年期間在這個(gè)市場(chǎng)上非常活躍,他們的重點(diǎn)是出售一日漏洞,其中之一是Volodya的零日漏洞(CVE-2016-7255)。

總結(jié)

研究人員的研究方法是對(duì)漏洞利用開(kāi)發(fā)者的特征進(jìn)行線索識(shí)別,然后再將這些特征用作唯一的搜索簽名。在追蹤Volodya和PlayBit的漏洞時(shí),研究人員兩次使用了這項(xiàng)技術(shù)。有了這兩個(gè)成功的測(cè)試示例,研究人員相信該研究方法可用于搜索其他漏洞利用程序開(kāi)發(fā)者。研究人員建議其他研究人員嘗試本文講的技術(shù),并將其用作其武器庫(kù)中的其他工具。

在此研究過(guò)程中,研究人員重點(diǎn)研究了APT攻擊和流行的惡意軟件(尤其是勒索軟件)中不同惡意軟件家族所使用或嵌入的漏洞。

研究人員能夠反復(fù)使用研究人員的技術(shù)來(lái)跟蹤由兩個(gè)不同攻擊者編寫(xiě)和出售的16種WindowsLPE漏洞,這一點(diǎn)非常令人驚訝??紤]到其中有15個(gè)是在2015-2019年的時(shí)間范圍內(nèi),因此可以假設(shè)它們構(gòu)成了漏洞利用市場(chǎng)的重要份額,尤其是WindowsLPE漏洞。

最后,研究人員不可能知道Windows內(nèi)核零日漏洞的總量。話雖如此,研究人員仍然可以通過(guò)回顧所捕獲的漏洞窺一斑而知全豹。去年,卡巴斯基報(bào)告,有一個(gè)攻擊者傳播了一個(gè)漏洞利用框架,其中包括另外3個(gè)零日漏洞。將這些數(shù)字加起來(lái),研究人員發(fā)現(xiàn)15個(gè)零日漏洞中有8個(gè)(占“市場(chǎng)份額”的一半以上)僅來(lái)自于兩個(gè)開(kāi)發(fā)團(tuán)隊(duì)。這意味著研究人員的研究技術(shù)有可能被用來(lái)追蹤可見(jiàn)市場(chǎng)中的許多攻擊者。

本文翻譯自:https://research.checkpoint.com/2020/graphology-of-an-exploit-volodya/


本文標(biāo)題:如何通過(guò)查找惡意開(kāi)發(fā)者的線索來(lái)尋找漏洞(下)
文章出自:http://www.5511xx.com/article/dhgpcgi.html