usb設備無簽名引發的問題

問題描述:
       平臺:win2k sp4, usb設備在管理員帳戶下安裝後,不插入設備,切換到user用戶下,再插入設備,系統自動尋找驅動,可最後出現拒絕訪問的錯誤提示框,已經在策略(gpedit.msc)裏給user用戶指派了安裝設備權限。如果設備第一次是在管理員帳戶使用下,則切換到user權限用戶下可以正常使用。

問題分析:
       經過多方面、多角度反複分析,結論如下:
 要在user下第一次可使用,必須要有正確的驅動簽名。

理由:
      Aladdin etoken在user帳戶下第一次使用,系統自動安裝驅動,以下鍵KEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/USB/Vid_0529&Pid_0600/5&1f8fd7d0&0&1及其很多子鍵得以正確創建,當註釋其inf文件中籤名行CatalogFile
[Version]
 Signature   = $CHICAGO$
 Class       = USB
 ClassGuid   = {36FC9E60-C465-11CF-8056-444553540000}
 DriverVer   = 01/04/2006,3.65.24.0
 Provider    = %MFGNAME%
 ;CatalogFile = aksup.cat
出現與我同樣錯誤,拒絕訪問。並且管理員賬戶下也可以安裝。
從安裝日誌setapi.log文件來看,以下爲安裝日誌內容:

正在從 c:/winnt/inf/oem11.inf 安裝區段 DriverInstall.NT。此時切換到管理員賬戶下也能成功安裝。

為 USB Token 安裝了一個未簽署或簽章無效的驅動程式 (c:/winnt/inf/oem11.inf)。錯誤 0x800b0003: 所指定的信任提供者不支援或不認得指定給此主題的表單。
正在將檔案 C:/a/etoken/aksup.sys 複製到 C:/WINNT/System32/Drivers/aksup.sys。
為 USB Token 安裝了一個未簽署或簽章無效的驅動程式 (C:/a/etoken/aksup.sys)。錯誤 0x800b0003: 所指定的信任提供者不支援或不認得指定給此主題的表單。
裝置安裝功能: DIF_REGISTER_COINSTALLERS。
已登錄輔助安裝程式。
裝置安裝功能: DIF_INSTALLINTERFACES。
正在從 c:/winnt/inf/oem11.inf 安裝區段 DriverInstall.NT.Interfaces。
已安裝介面。
裝置安裝功能: DIF_INSTALLDEVICE。
正在進行 USB/VID_0529&PID_0600/5&1F8FD7D0&0&1 的完整安裝。
正在處理服務新增/刪除區段 DriverInstall.NT.Services。
錯誤 5: 存取被拒。
裝置安裝完成,含有錯誤 錯誤 5: 存取被拒。
已經完成預設安裝程式,錯誤: 錯誤 5: 存取被拒。
已設定選取的驅動程式。
正在安裝 USB/VID_0529&PID_0600/5&1F8FD7D0&0&1 的 NULL 驅動程式。
裝置安裝完成,含有錯誤 錯誤 5: 存取被拒。

錯誤日誌與我的雷同。注意看稍前的日誌中提到未簽署或簽章無效的驅動程式。
另外aladdin的二個驅動文件都有簽名,並且有二個inf文件,一個驅動安裝在USB設備類下,一個在smartcardreader設備類下,而我們的二個驅動只一個有簽名,並都安裝在smartcardreader設備類下。aladdin的分開方式感覺更好。

至於採用強制操作註冊表,寫好必要的鍵值方法會失敗,原因:
其一:user賬戶下很難通過常規或非常規方法提升進程權限爲system,至少我還沒找到。rootkit的手段都無法湊效。users下不能加載自己的驅動和服務。
其二:一些註冊鍵值很難找到規律。這一串(USB/VID_0529&PID_0600/5&1F8FD7D0&0&1)倒是發現可以通過進程的參數得到:
安裝設備驅動時,系統會啓動rundll32進程,參數如下:
C:/WINNT/system32/rundll32.exe newdev.dll,DevInstall USB/Vid_096e&Pid_0401/5&1f8fd7d0&0&1USB/VID_0529&PID_0600/5&1F8FD7D0&0&1,co-install中即可容易得到。

 

發佈了27 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章