最近一段時間,我一直在研究 windows 驅動開發,下面跟大家簡單聊聊:
為什么還要寫?因為在學習的過程中,發現很多東西還是很相同的,如果你是從事linux 開發,可能會有些啟發,如果是對windows 驅動開發有需求,可能提供一些不成熟的建議。
接下來進入正文,給大家簡單介紹一下windows 驅動。
在許多現代操作系統中,應用程序和操作系統是相互隔離的。操作系統的核心代碼運行在特權模式下,即內核模式。而應用程序運行在非特權模式下,即用戶模式。
操作系統和應用程序的關心類似于服務器和客戶端的關系,這點在windows 平臺下顯得更加突出:
幾個概念:
windows 的設計思想是將內核設計的盡可能的小,并且采用“客戶端-服務器”的結構。操作系統各個組件或者模塊是通過消息進行通信的。
嵌入式物聯網需要學的東西真的非常多,千萬不要學錯了路線和內容,導致工資要不上去!
無償分享大家一個資料包,差不多150多G。里面學習內容、面經、項目都比較新也比較全!某魚上買估計至少要好幾十。
點擊這里找小助理0元領取:加微信領取資料
3. windows 驅動框架
windows 驅動大致分為這幾類:
以 win10 為例,列出需要安裝的東西,詳細過程限于篇幅以后更新
有關Windows 驅動開發書籍,博文,教程甚少。如果有這方面需求的可以給以下幾個建議:
推薦書籍:
原文鏈接:https://mp.weixin.qq.com/s/qGydT22PNfbvhxUT4pNmJw
轉載自:嵌入式微處理器
原文鏈接:淺談Windows驅動開發
本文來源網絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯系我進行刪除。
1 文件分析
1.1 臨時目錄排查
黑客往往可能將病毒放在臨時目錄(tmp/temp),或者將病毒相關文件釋放到臨時目錄,因此需要檢查臨時目錄是否存在異常文件。
假設系統盤在C盤,則通常情況下的臨時目錄如下:
C:\Users\[用戶名]\Local Settings\Temp
C:\Documents and Settings\[用戶名]\Local Settings\Temp
C:\Users\[用戶名]\桌面
C:\Documents and Settings\[用戶名]\桌面
C:\Users\[用戶名]\Local Settings\Temporary Internet Files
C:\Documents and Settings\[用戶名]\Local Settings\Temporary Internet Files
注:[用戶名] 根據實際環境用戶得出,常見用戶名是Administrator,建議所有用戶都檢查一下。
1.2 瀏覽器相關文件
黑客可能通過瀏覽器下載惡意文件,或者盜取用戶信息,因此需要檢查下瀏覽器的歷史訪問記錄、文件下載記錄、cookie信息,對應相關文件目錄如下:
C:\Users\[用戶名]\Cookies
C:\Documents and Settings\[用戶名]\Cookies
C:\Users\[用戶名]\Local Settings\History
C:\Documents and Settings\[用戶名]\Local Settings\History
C:\Users\[用戶名]\Local Settings\Temporary Internet Files
C:\Documents and Settings\[用戶名]\Local Settings\Temporary Internet Files
1.3 最近打開文件
檢查下最近打開了哪些文件,可疑文件有可能就在最近打開的文件中,打開以下這些目錄即可看到:
C:\Users\[用戶名]\Recent
C:\Documents and Settings\[用戶名]\Recent
1.4 文件修改時間
可以根據文件夾內文件列表時間進行排序,查找可疑文件。一般情況下,修改時間越近的文件越可疑。當然,黑客也有可能修改”修改日期“。
注:點擊”修改日期“,使之按最近修改時間排序,優先檢查下”修改日期“最近的文件。
1.5 System32目錄與hosts文件
System32也是常見的病毒釋放目錄,因此也要檢查下該目錄。hosts文件是系統配置文件,用于本地DNS查詢的域名設置,可以強制將某個域名對應到某個IP上,因此需要檢查hosts文件有沒有被黑客惡意篡改。
C:\Windows\System32
C:\Windows\System32\drivers\hosts
這里以hosts文件為例,如上圖,檢查3種異常:
1.知名站點,檢查對應IP是否真的歸屬該站點,防止”釣魚“
2.未知站點,檢查該域名和IP是否惡意
3.無法訪問的安全站點,即IP是否指向127.0.0.1、0.0.0.0等本地地址、無效地址
2 網絡行為排查
2.1 重要輔助站點
1. https://www.virustotal.com/ , 國外知名安全站點,需翻墻,可查詢文件MD5、IP、域名、URL是否惡意,也可上傳文件進行病毒掃描。
2. https://x.threatbook.cn/ , 國內威脅情報站點,可查詢文件MD5、IP、域名、URL是否惡意,也可上傳文件進行病毒掃描。
3. http://beian.cndns.com/,國內站點備案查詢,所有有企業備案的國內站點可認為是可信站點。
4. http://www.alexa.com/,全球站點排行查詢,top100萬的站點可認為是可信站點(國外站點沒有備案這一說法)。
5. Google與Baidu等搜索引擎,輸入文件MD5/IP/域名,有時候可以查詢到對應病毒信息。
2.2 網絡連接排查
使用命令 netstat -ano 查看當前的網絡連接,排查可疑的服務、端口,外連的IP。
如發現netstat定位出的pid有問題,可再通過tasklist命令進一步追蹤該可疑程序。
2.3 流量分析
流量分析可以使用Wireshark,主要分析下當前主機訪問了哪些域名、URL、服務,或者有哪些外網IP在訪問本地主機的哪些端口、服務和目錄,又使用了何種協議等等。
例如,使用Wireshark觀察到,主機訪問了sjb555.3322.org這種動態域名,即可粗略猜測這是一個C&C服務器。
2.4 漏洞與補丁信息
使用命令systeminfo,查看系統版本信息以及補丁信息,確認當前系統是否存在漏洞、是否已經打了相應的補丁。
可重點關注下遠程命令執行漏洞,如MS08-067、MS09-001、MS17-010(永恒之藍)……
3 可疑進程分析
3.1 進程名字異常與偽裝
進程名字異常是指某些進程的名字是隨機產生的,因此高度可疑,例如:
某感染環境,打開任務管理器,發現有大量名字隨機的進程,如hrlB3.tmp、hrlCC.tmp、hrlCD.tmp、hrlC3.tmp、hrlC5.tmp、hrlD5.tmp、hrl6.tmp、hrlEE.tmp。不僅文件后綴不是典型的exe,名字也是隨機產生的,這種肯定是異常進程。
進程名字偽裝是指某些進程的名字偽裝成跟系統進程名字相似的名字,目的是為了混淆視聽,使經驗不足或看走眼的管理員以為是正常進程或文件。
3.2 進程信息排查
進程信息的排查推薦使用PC Hunter、Process Hacker。
PC Hunter(官網www.xuetr.com)是一個Windows系統信息查看軟件,可協助排查木馬、后門等病毒,功能包含:
1.進程、線程、進程模塊、進程窗口、進程內存、定時器、熱鍵信息查看,殺進程、殺線程、卸載模塊等功能
2.內核驅動模塊查看,支持內核驅動模塊的內存拷貝
3.SSDT、Shadow SSDT、FSD、Keyboard、TCPIP、Classpnp、Atapi、Acpi、SCSI、Mouse、IDT、GDT信息查看,并能檢測和恢復ssdt hook和inline hook
4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持對這些Notify Routine的刪除
5.端口信息查看
6.查看消息鉤子
7.內核模塊的iat、eat、inline hook、patches檢測和恢復
8.磁盤、卷、鍵盤、網絡層等過濾驅動檢測,并支持刪除
9.注冊表編輯
10.進程iat、eat、inline hook、patches檢測和恢復
11.文件系統查看,支持基本的文件操作
12.查看(編輯)IE插件、SPI、啟動項、服務、Host文件、映像劫持、文件關聯、系統防火墻規則、IME
13.ObjectType Hook檢測和恢復
14.DPC定時器檢測和刪除
15.MBR Rootkit檢測和修復
16.內核對象劫持檢測
17.其它一些手工殺毒時需要用到的功能,如修復LSP、修復安全模式等
界面如下圖所示,可重點檢查下顏色為紅色的異常項:
此外,Process Hacker也一款不錯的進程分析工具,可以通過這個工具尋找有異常網絡連接的進程,也可直接dump進程的內存空間,發現隱藏的模塊。
3.3 模塊空間檢查
找到可疑進程并不意味著該進程對應的exe文件就是病毒,有些病毒可能是將惡意dll注入到系統進程中去的。
對于可疑進程,需要將進程所加載的模塊都檢查一下,例如利用Process Hacker,雙擊可疑進程,即可查看其加載的模塊如下:
4 啟動項排查
4.1 排查Logon啟動項
黑客為了保持病毒能夠開機啟動、登錄啟動或者定時啟動,通常會有相應的啟動項,因此有必要找出異常啟動項,并刪除之。啟動項的排查,這里引入一個非常好用的工具,工具名字Autoruns(官網www.sysinternals.com)。
點擊運行Autoruns,首先檢查Logon(登錄啟動項),如下圖:
檢查是否登錄的時候啟動了異常的程序。
4.2 服務啟動項
病毒也有可能是以創建服務啟動項的方式保持長久運行,點擊Autoruns的Services功能,如下圖,檢查是否有異常的服務啟動項。
4.3 定時或計劃任務
如果有定時或計劃任務啟動項,也要檢查下(點擊Autoruns的Scheduled Tasks功能)。通常這一項是空白的,如下圖。如果有內容,則需要排查確認是否有某些應用或服務創建了這些啟動項。
4.4 其它啟動項
其它所有的啟動項,均可以在”Everything“那一欄找到,這里面的啟動項也有可能是病毒創建的,需排查之。