您好,登錄后才能下訂單哦!
如何分析Windows 10中的關鍵漏洞CVE-2019-0726,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
微軟在今年一月份發布的更新,讓公眾對DHCP客戶端中的關鍵漏洞CVE-2019-0547有了一個新的認識。這個漏洞的CVSS評分非常高,而且微軟也沒有立即發布相關的可利用性評價,因此用戶也很難決定是否需要立即更新他們的系統。但是某些研究人員認為,這個漏洞在不久的將來很可能會被大量網絡犯罪分子利用。
因此,為了更好地檢測針對DHCP漏洞的攻擊以及相關的漏洞,并更新我們的產品,我們需要深入了解所有的細節。而我們要做的第一件事,就是網絡偵察。
一開始我們打算使用搜索引擎來尋找關于該漏洞的信息,但并沒有找到太多的細節,而且大部分內容都是來自MSRC網站發布的安全公告。不過在瀏覽這些安全公告的過程中,我們發現我們面對的是Window10(版本1803)中客戶端和服務器端系統的一個內存崩潰漏洞,當攻擊者向DHCP客戶端發送專門設計的響應信息時,就會觸發該漏洞。
我們可以看到,MSRC給出的評分為2,被利用的可能性比較小,這意味著這個漏洞可能無法被利用,或者利用難度大。不過,我們還是想通過自己的分析,看看這個漏洞到底是什么情況。
在這個網站中,我們下載了這個安全更新補丁(.msu文件),將其解壓,然后查找跟客戶端處理DHCP響應相關的文件。但是這很困難,因為這個補丁包里面包含的是當月修復的所有漏洞補丁,而不是針對單個漏洞的補丁。在大量的文件中,我們用過濾器找到了幾個匹配的代碼庫,然后對系統的版本進行了比較。其中,dhcpcore.dll庫是最接近的:
實際上,只有DecodeDomainSearchListData這個函數進行了較大的改動,如果你熟悉DHCP協議的話,你就會知道它其實很少使用函數。
DHCP中的域名搜索選項號為0x77(119),它允許服務器再客戶端上設置DNS后綴,但不適用于Windows設備,因為之前的Windows系統會忽略這個選項。在必要的時候,可以通過組策略來配置DNS的名稱后綴。不過Windows 10在新版本1803中引入了針對域名搜索選項的處理庫。
DecodeDomainSearchListData的處理過程如下:首先從服務器端接收信息,然后根據域名搜索選項的配置來解碼數據。針對輸入,它接收封裝好的數據數組,并輸出一個以空字節結尾的字符串,這個字符串包含由逗號分隔的域名列表。比如說,該函數會對下面這個域名后綴進行轉換:
.eng.apple.com
.marketing.apple.com
eng.apple.com,marketing.apple.com
DecodeDomainSearchListData會在UpdateDomainSearchOption的處理過程中被調用,并將返回的結果列表寫入注冊表鍵的"DhcpDomainSearchList"參數中:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{INTERFACE_GUID}\
然后將主參數存儲至特定的網絡接口:
DecodeDomainSearchListData函數會進行兩次數據傳遞。第一次,它會執行除設置輸出緩沖區進入點之外的所有操作,即計算保存返回數據所需要的內存大小。第二次,它會為數據分配內存,并進行數據填充。這個函數大約有250條指令,主要任務就是處理傳入的字節流。它還會檢查緩沖區的大小,如果大小為零,則不會為緩沖區分配內存,并完成執行然后返回錯誤信息:
因此,只有當目標緩沖區大小為零時,才可以觸發漏洞。
首先,我們可以使用重解析點來確保非空輸入數據生成并輸出一個空字符串:
設置一個服務器來響應內容請求,并讓未更新的客戶端出現訪問沖突。在每一個步驟中,函數完成一部分域名解析時,就會將這部分數據復制到目標緩沖區:
1).eng.2).eng.apple.3).eng.apple.com.
接下來,當數據中出現大小為0的域名時,函數就會將目標緩沖區中的句號改為逗號:
4).eng.apple.com,
然后繼續解析:
5).eng.apple.com,marketing.6).eng.apple.com,marketing.apple.7).eng.apple.com,marketing.apple.com.8).eng.apple.com,marketing.apple.com,
輸入數據解析完成后,剩下的就是用空字符替換最后的逗號:
9).eng.apple.com,marketing.apple.com
當攻擊者發送如上所述的緩沖區數據時會發生什么呢?我們可以看到,它包含的列表是有一個空字符串組成的。那么在函數第一次計算輸出數據大小后,由于數據并沒有包含非零域名,所以大小為零。在第二次傳遞時,它會給數據分配堆內存塊,并復制數據。但解析函數會立即遇到指示域名結尾的空字符,并將句號改為逗號。
因此,如果想要利用這個漏洞CVE-2019-0726,攻擊者必須要在DHCP客戶端上執行遠程堆噴射,并對堆內存分布要有完整控制權。否則,將數據寫入未選中的地址會導致svchost.exe進程崩潰。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。