安全控件
0x01 定義
? ? 簡單說,安全控件是一種為了提升賬戶安全性,防止賬戶密碼等私密信息被木馬或病毒竊取的客戶端程序,安全控件大多小巧,可以通過 ActiveX 或者手工下載的方式安裝。
0x02?使用安全控件
? ? 隨著移動互聯網的普及和網上支付的盛行,越來越多的惡意軟件病毒木馬針對用戶的鍵盤鼠標操作進行記錄,從而竊取用戶的賬號密碼等。因此,如何讓用戶的帳號信息輸入更安全,如何防止木馬和病毒盜取用戶帳號信息成為互聯網信息安全的首要問題,在這樣的背景下,要求我們必須通過安全控件這種技術手段加強對用戶帳號信息的安全保護。
安全控件一般通過以下方式保護用戶輸入信息的安全:
1) ?模擬密碼框( ( 防止讀取密碼框) ) ;
2) ?模擬( ( 屏幕) ) 鍵盤( ( 防止監聽鍵盤輸入) ) ;
3) ?掃描后臺程序,檢測 k Hook ?程序。
? ? ?關于鉤子( Hook ): :鉤子(Hook)是盜號密碼的常用伎倆,日常生活中,魚鉤是用來釣魚的,一旦魚咬了鉤,鉤子就一直鉤住魚了,任憑魚在水里怎么游,也逃不出魚鉤的控制。同樣的,Windows 的鉤子 Hook 也是用來鉤東西的,比較抽象的是他是用來鉤 Windows 事件或者消息的。最常見的就是鼠標和鍵盤鉤子,用 Hook 鉤子鉤住鼠標、鍵盤,當你的鼠標、鍵盤有任何操作時,通過 Hook 就能知道他們都做了什么了。
0x03?安全控件現狀
? ?目前各家網銀、第三方支付公司等所使用的安全控件存在明顯的安全隱患,不能很好的保護用戶的帳號信息安全,主要體現在:
1) ?安全控件面對內核級到應用級的多種鉤子無能為力;
2) ?內存動 態捕獲的木馬更是防不勝防;
3) ?軟鍵盤 保護 技術,沒有有效的防止后臺錄 、截 屏軟件工作。
? ? ? ?Windows 系統是建立在事件驅動的機制上的,也就是整個Windows 系統都是通過消息的傳遞來實現的。而鉤子是 Windows 系統中非常重要的系統接口,用它可以截獲并處理傳遞給其他應用程序的消息,來完成普通應用程序難以實現的功能。鉤子可以監視系統或進程中的各種事件消息,截獲發往目標窗口的消息并進行處理。
? ? ? ?因此,可以在系統中安裝自定義的鉤子,監視系統中特定事件的發生,完成特定的功能,比如截獲鍵盤、鼠標的輸入,屏幕取詞,日志監視等等。可見,利用鉤子可以實現許多特殊而有用的功能,很多黑客也正是利用了鉤子技術制作出各式各樣的木馬,用于竊取用戶的帳號信息。為了避免各種鉤子程序獲取用戶帳號信息,安全控件就必須優先于各種鉤子程序處理用戶的輸入信息以及用戶端屏幕顯示(屏顯)。
? ? ? ?可以確認目前的各種鉤子程序主要通過兩種方式獲取用戶的帳戶信息:第一類是鍵盤類 Hook 程序,包括從應用層到核心層多種 Hook 方式;第二類是屏顯Hook 程序。常見的類型有:COM 接口調用【IE COM 接口 】、API Hook【Windows Procedure--(WM_CHAR, WM_KEYDOWN )、API 函數(PostMessage)hook 】、消息鉤子【SendMessage(WM_GETTEXT) ?、SetWindowsHookEX(WH_KEYBOARD)、SetWindowsHookEx(WH_KEYBOARD_LL)】、API 調用【GetKeyboardState 、GetAsyncKeyState 、GetKeyState】、標準設備過濾驅動【鍵盤過濾驅動(FDO)】、鍵盤類驅動【針對 PS/2 鍵盤類驅動(kbdClass)Dispatch
Routine Hook;、針對 USB 鍵盤類驅動(hidusb、usbhub 】、Inline Hook、OBJECT Hook 、IDT Hook、端口讀寫 、屏幕顯示類
0x04 工作原理
鍵盤消息處理原理
? ? ? ?對于采用 PS2 接口的鍵盤,鍵盤事件是通過鍵盤中斷來實現的。當有一個鍵被按下或者抬起,就會引發一個中斷事件,此時, CPU 會查找并調用相關中斷服務處理函數進行處理,中斷函數處理后便會調用上層驅動設置的回調函數(如果存在 )進行鍵盤事件已完成的向上傳遞過程。而對于采用 USB 接口的鍵盤,則較為復雜。讀取 kbdclass 設備的 IRP 請求,會被轉化成針對 USB 設備的 URB 請求塊,傳輸方式設置為中斷或批量傳輸方式,并通過 USB 總線驅動投遞到 USB 物理總線上。當按鍵時, USB 控制器(像鍵盤這種 legacy 設備,會使用 UHCI 類型控制器進行管理)會過設置與操作系統共享的內存塊中的數據結構,也即 TD 塊( Transfer Descriptor ),并中斷操作系統進行處理。而操作系統中斷調用對應中斷服務處理函數進行該數據的處理,并完成 URB 請求,繼而完成對應的 IRP請求并向上層驅動傳遞。
鍵盤消息傳遞安全漏洞分析
ring0 按鍵攔截過濾技術
A. Attach 到鍵盤類驅動( kbdClass )的設備棧上( PS/2 和 USB ),進行
鍵盤數據過濾;
B. 針對 PS/2 鍵盤實現 i8042ptr 的過濾驅動;
C. 針對 USB 鍵盤實現的過濾驅動( hidusb 等);
D. 針對 PS/2 鍵盤類驅動( kbdClass ) Dispatch Routine Hook ;
E. 針對 USB 鍵盤類驅動( hidusb 、 usbhub 等) Dispatch Routine Hook ;
F. KbdClassServiceCallBack Routine Hook ( PS/2 和 USB );
G. 針對 PS/2 鍵盤的 PSIDT Hook ;
H. 針對 PS/2 鍵盤的 IOAPIC 編程;
I. 針對 PS/2 鍵盤的 I/O
ring3 按鍵攔截過濾技術
A. WM_GETTEXT 消息
B. Hook PostMessage API
C. SetWindowsHookEx 設置消息鉤子
? WH_KEYBORAD
? WH_KEYBORAD_LL
? 其他消息鉤子
D. RawInput
E. GetKeyboardState ?和 GetAsyncKeyState API
歡迎大家分享更好的思路,熱切期待^^_^^ !
總結
- 上一篇: 王者荣耀服务器不稳定,王者荣耀延迟460
- 下一篇: 我国汽车的电磁辐射与电a磁兼容现状分析