您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何解決Windows下的PC客戶端常見漏洞,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
0X00 為什么寫這篇文章
對于小白來說,web安全方面似乎已經有了很完備的知識體系和漏洞發掘流程,剛剛入門的朋友總是喜歡選擇web方向來作為自己的發展方向,因為針對web系統的滲透測試似乎獲得的成就感要更高,也有很多小白認為web似乎更好學,然而對于PC客戶端漏洞發掘,因為涉及到了一些計算機和操作系統底層的知識,很多人都不敢去碰,而實際上PC客戶端的漏洞比大家想象中要容易的多,甚至你并不需要精通匯編語言就能很容易的挖到PC客戶端漏洞,不過匯編語言是PC客戶端漏洞發掘的基礎,還是需要學好它。
另外,挖掘PC客戶端漏洞和挖掘WEB漏洞是一樣的,都需要細心和耐心,你要學會關注每一個細節,了解系統和軟件是如何協同工作的。本文主要講Windows下的PC客戶端漏洞發掘,為了淺顯易懂,不涉及ROP等高級內存威脅和內存溢出技術,大佬請繞道。
0×01 工具
“工欲善其事,必先利其器” 。
PC客戶端漏洞挖掘主要是逆向工程和進程監控為主。
逆向工程方面我推薦兩個工具,一個是靜態分析之王:IDA pro,另一個是動態調試里面很好用的:Ollydbg(推薦大家用吾愛破解論壇版本的)這兩個逆向分析工具一查就可以查到,在這里就不多介紹了。
進程監控工具主要分為進程本地行為監控和進程網絡行為監控。
本地行為監控工具我推薦:ProcessExplorer進程監控和Autoruns進程監控,這兩個工具知名度不高,但是很好用。
ProcessExplorer進程監控
Autoruns進程監控工具
本地監控工具里還有一種工具是專門監控注冊表的工具,這里推薦幾個:
Process Monitor:一個強大的注冊表監視工具,可以添加過濾規則,很方便。
Regshot:一個注冊表備份和比對工具,可以通過保存快照和比對快照的方式來找出注冊表中哪些值發生了變化。
RegfromApp:也是一個進程監控工具,可以選擇一個進程之后跟蹤其對注冊表的修改。
網絡行為監控工具當然首推大名鼎鼎的Wireshark啦,當然還有一個工具很小眾但是很好用,是歲月聯盟的工具,叫WSExplorer(進程抓包)。
Wireshark
歲月聯盟的進程抓包工具WSExplorer,非常方便,左側是進程,右側是抓到的數據包。
有了以上這些工具,我們便可以對程序在我們的計算機上做了些什么了如指掌,知己知彼方能百戰百勝,便可以開始下一步的漏洞發掘了。
0×02 缺陷
對于開發者來說,開發一款完全沒有漏洞的程序是不可能的,特別是這個程序的體量及其龐大時,則其必定存在漏洞,我們需要知道的就是哪些位置容易出現漏洞。
客戶端的授權認證漏洞:
一般正版的客戶端軟件都設有授權認證模塊,這些授權認證方式所需要達成的目的無非就是“買了的人能用,沒買的人不能用”,一般驗證采用注冊碼的形式并與個人計算機的機器碼相互綁定,或者與某種個人認證機制相互綁定,以達到驗證的目的。授權認證漏洞可以導致軟件和功能被破解,盜版程序流通等嚴重后果。授權認證漏洞往往是開發者在開發時沒有注重授權認證的保密性以及安全性所導致的。
客戶端的網絡服務漏洞:
這類漏洞一般是由于客戶端在發送數據包或接收時沒有進行嚴格的認證造成的,可導致無條件調用高級權限的服務。
客戶端功能邏輯漏洞:
這類漏洞一般是由客戶端功能設計不合理導致的,可以導致無授權的訪問等嚴重后果。
客戶端溢出漏洞:
這類漏洞包含屬于逆向工程中比較高難度的一塊,主要是由于開發時對內存的錯誤管理,或者程序本身的執行邏輯漏洞導致的。
本文僅介紹前三種漏洞。
0×03 實戰
客戶端功能邏輯漏洞:
挖掘這類漏洞應主要關注客戶端功能之間的邏輯,與Web邏輯漏洞類似。但是不同的是,功能邏輯漏洞也包括在反編譯之后的部分,一般情況下通過修改關鍵call函數之上的跳轉邏輯來進行漏洞挖掘,主要成因是客戶端邏輯過于簡單,采用了較少的邏輯判斷。這種漏洞在具有完備功能的客戶端上并不常見。
客戶端的授權認證漏洞:
1.基于本地注冊表的破解:
某些軟件雖然使用網絡進行授權驗證,但是由于其試用次數設計的驗證缺陷,可以導致通過修改注冊表來實現多次數的試用,導致“不付費也能用”,即出現了授權認證漏洞。下面這款客戶端程序即是如此,我們在剛剛打開它的時候會提示試用次數還剩29次。
現在我們打開Process Monitor,使用過濾功能添加白名單使Pm僅顯示該進程的相關信息。
添加過濾白名單,僅顯示該進程。
關鍵部位做了處理。
之后停止所有捕獲,關閉并重啟客戶端,多次重復后我們監控到每次客戶端打開時,會自動做一次RegsetValue(注冊表值修改),如下:
經過測試后,發現剩余試用次數是用整數30減去注冊表中一個名為Nowtimes的鍵下面的值。
于是我們編寫一個BAT腳本,修改該客戶端指向的那個值,并讓他在客戶端啟動時自動運行,即可鎖定試用次數為30次,不會減少。
Reg add HKCU\Software\客戶端名字\一個位置 /v Nowtimes /t REG_DWORD /d 0 /f
這個漏洞的成因主要是因為試用次數認的方法太簡單了,不聯網不加密直接寫進注冊表中,并且鍵名還那么淺顯易懂叫做“Nowtimes”,這種存在在注冊表的漏洞發掘和利用方法還是比較簡單的,但是問題是這樣的漏洞還蠻多的,所以大家在挖掘時注意關注注冊表。另外如果注冊表禁止監控,我們可以用REGshot來保存前后的快照進行比對分析。
2.基于網絡授權驗證的hosts欺騙破解
這一部分內容需要用到一部分逆向工程的知識。這次破解的客戶端沒有設置試用機制,我們轉而把眼光放到它的網絡驗證模式上來,看看到底這個客戶端的網絡授權驗證方式是如何工作的。
關鍵位置打碼處理
隨便輸一個注冊碼進去
隨便輸入一個注冊碼然后確定,根據彈出的錯誤窗口來定位到客戶端的注冊檢測驗證的函數處。拖入OLLYdbg查找字串“注冊碼有誤”,并跟蹤到匯編窗口。
于是我們得到了注冊授權的服務器地址。為了進一步驗證,我們使用wireshark來分析這個客戶端注冊時的網絡請求。
<>可以看出客戶端攜帶著我們的機器碼和幾個其他數據請求了服務器的/verifycheck/login.php
再回到我們的匯編窗口中,我們可以看到幾個unicode的編碼,疑似服務器的返回,記錄下來。
直接用瀏覽器訪問,可以發現返回值和匯編窗口的記錄值中的一條相同,所以我們猜測可以構造一個假服務器,修改主機的hosts文件來實現請求重定向,讓我們的服務器返回注冊成功的信息。
修改hosts文件,將服務器域名綁定到我們自己的假服務器的ip地址
在服務器上構造不同的payload,可以得到客戶端不同的反應,說明漏洞成功了一半。
至此我們可以排除掉其他的payload,從而確定一個格式化日期返回值是注冊成功的標志。所以我們構造一個格式化時間,并且重新打開客戶端輸入任意注冊碼注冊,即可看到注冊成功的窗口。
最終的payload
這一漏洞的成因為客戶端軟件在校驗注冊碼返回時的數據太過簡單,進而非常容易構造注冊成功的返回。并且客戶端的反編譯能力也非常差,敏感信息在反編譯后直接就能夠看到。在挖掘這一類漏洞時,我們需要一些逆向工程的基本知識,以及計算機網絡的一些基礎知識,重點關注客戶端與網絡服務器之間的通訊數據,利用抓包工具來進行漏洞挖掘。
客戶端的網絡服務漏洞:
由于想拿來做例子的漏洞廠商還沒有修復,所以這里不放例子了。網絡服務漏洞發掘主要采用客戶端網絡請求分析的方式,主要的工具就是前面提到的進程抓包工具以及Wireshark, 大部分網絡服務漏洞起因是由于在客戶端的網絡請求中沒有采取驗證方式或者采取了安全性非常低的驗證方式,從而使得任何人都可以以客戶端合法的名義來請求這個網絡服務,實現沒有權限的調用私有網絡服務接口。常常出現在客戶端vip付費資源的試聽服務,客戶端付費的查詢功能接口處等,不安全的客戶端請求可以被攔截并分析,進而實現越權調用無權限的資源或接口。在挖掘這類漏洞時,我們需要更多的關注客戶端的網絡傳輸層面上的東西,盡可能的分析客戶端的每一個通過網路服務器實現的功能,來進行漏洞挖掘。
以上就是如何解決Windows下的PC客戶端常見漏洞,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。