CN104573484A - 一种高安全性密码口令框 - Google Patents
一种高安全性密码口令框 Download PDFInfo
- Publication number
- CN104573484A CN104573484A CN201410850831.8A CN201410850831A CN104573484A CN 104573484 A CN104573484 A CN 104573484A CN 201410850831 A CN201410850831 A CN 201410850831A CN 104573484 A CN104573484 A CN 104573484A
- Authority
- CN
- China
- Prior art keywords
- password
- hook
- keyboard
- module
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种高安全性密码口令框,其在应用层使用保护键盘低级钩子捕获用户的按键,该保护键盘钩子处于钩子链的顶端,且在捕获到按键后不调用CallNextHookEx函数将消息传给后面的钩子。本发明提供的密码口令框具有高安全性,既能抵抗键盘记录器的攻击又能保证用户口令在内存中是以密文形式传输,即使黑客截取到信息,也不能恢复用户的真实口令。
Description
技术领域
本发明涉及一种网络信息安全技术,具体涉及一种密码口令框技术。
背景技术
一般windows系统的密码框通过一些键盘记录器和星号查看器就可以获取到用户输入的口令,这极大的影响到用户的账号安全。
针对该情况,人们提出在用户输入口令后通过加密的方式加密口令,以此来保护用户通过密码框输入口令的安全性,但是即使在用户输入口令后通过加密的方式加密口令,一些网络不法分子也可以在加密口令之前通过远程注入程序代码的方式通过发送windows消息WM_GETTEXT获取到加密之前的明文口令。
由此可见,提供一种密码口令框的安全性,避免输入口令的泄漏是本领域亟需要解决的问题。
发明内容
针对现有密码口令框安全性差的问题,本发明的目的在于提供一种高安全性的密码口令框,防止用户口令泄漏。
为了达到上述目的,本发明采用如下的技术方案:
一种高安全性密码口令框,所述口令框在应用层使用保护键盘低级钩子捕获用户的按键,该保护键盘钩子处于钩子链的顶端,且在捕获到按键后不调用CallNextHookEx函数将消息传给后面的钩子。
在本发明的优选实例中,所述口令框中包括保护键盘钩子模块SafeHook.dll和密码模块,所述保护键盘钩子模块SafeHook.dll在有其它进程安装针对口令框的键盘钩子时,向口令框发送消息,使口令框重新安装局部钩子,并更新到本口令框进程空间的模块输入节中。
进一步的,所述密码口令框包含:
键盘驱动模块,所述键盘驱动一直存在一个记录线程RawInputThread,该线程中有一个等待操作IRP Pending,等待来自键盘的输入数据,当有个键盘按键按下时,这个等待操作将会完成,记录线程将对得到的数据进行处理,分发给合适的应用进程,这时记录线程RawInputThread又会立即调用ntlZwReadFile要求读取数据,又进入下一个等待,周而复始开始循环;
密码框进程模块,所述密码框进程模块中设置有保护键盘钩子模块SafeHook.dll和密码模块,在Windows系统从消息队列中取出键盘消息,分配到密码框进程所在的消息队列中,SafeHook.dll模块会对收到的键盘消息设置键盘钩子保护,通过更新系统函数的地址使键盘钩子处于钩子链的顶端,由此每次输入一个字符时,就会截获这个输入字符,对输入字符进行加密操作,直接对密码框中输入字符进行保护操作;
其他相关进程模块,所述其他进程模块做为密码口令框的辅助进程,实现密码框进程载入safeHook.dll模块的功能。
本发明提供的方法能够使得口令框的键盘钩子函数一直处于钩子链的顶端,有效的实现密码口令框的高安全性,既能抵抗键盘记录器的攻击又能保证用户口令在内存中是以密文形式传输,即使黑客截取到信息,也不能恢复用户的真实口令。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明中密码口令框的框架示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
为了实现密码口令框的高安全性,本密码口令框在应用层使用保护键盘低级钩子捕获用户的按键,由于windows系统的钩子消息是链状的,先装的钩子在最前面,前面的钩子通过调用CallNextHookEx函数将消息传给后面的钩子,如果在前面的钩子中捕获到按键后不调用此函数,后面的钩子就永远不能获得消息。
由此,本密码口令框中的保护键盘钩子函数处于钩子链的顶端,且在捕获到按键后不把钩子消息传给后面的钩子,从而防止用户密码被窃取。
为了使密码口令框中的保护键盘钩子函数处于钩子链的顶端,采用输入表挂钩的方式对调用SetWindowsHookEx的行为进行监控,针对windows系统中的函数动态调用方式,程序调用LoadLibrary动态加载User32.dll,再调用GetProcAddress获取函数地址。把系统的SetWindowsHookEx、LoadLibrary和GetProcAddress在输入表中的地址替换为挂钩函数的地址。
输入表挂钩(IAT Hook)实际上修改程序模块中的IAT导入表(importAddress Table),使API地址重定向。基本原理是这样的:模块文件结构(EXE/DLL),有一个IAT表,保存着该模块用到的API函数的地址,在调用该函数(即挂钩函数)时会先跳转到该IAT表中查找该API具体的函数地址,再跳转到该具体的地址执行API函数。
SetWindowsHookEx函数,即安装一个应用进程钩子到系统钩子链中,调用API函数SetWindowsHookEx是把一个应用程序定义的钩子子程安装到钩子链表,SetWindowsHookEx函数总是在钩子链的顶端安装钩子子程。当指定类型的钩子监视的事件发生时,系统就调用与这个钩子关联的钩子链的顶端的钩子子程。每一个钩子链中的钩子子程都决定是否把这个事件传递到下一个钩子子程。钩子子程传递事件到下一个钩子子程需要调用CallNextHookEx函数。
Windows系统中的函数调用方式为动态调用,即应用层使用API函数加载和卸载动态库的方式来调用函数。函数LoadLibary的中文含义是载入指定的动态库,并将它映射到当前进程使用的地址空间,一旦载入,即可访问动态库内保存的资源,函数LoadLibrary的目的是加载相应的动态库到应用层。
函数GetProcAddress,即检索指定函数在动态库中的输出函数地址,函数GetProcAddress的目的是获取动态库中的函数地址,由于SetWindowsHookEx函数是windows系统的API函数,因此要动态调用该函数,首先需要加载windows系统动态库User32.dll,该动态库是windows用户界面相关的一整套应用程序接口,它随着windows系统安装的时候释放到系统目录下。调用该动态库后,再通过调用函数GetProcAddress获取到函数SetWindowsHookEx的地址。
针对上述方案,本发明在具体实现时,在密码口令框中设置保护键盘钩子模块SafeHook.dll,通过该模块使密码口令框中的保护键盘钩子函数处于钩子链的顶端(如图1所示)。
该模块的实现包括三个钩子函数:
(1)Void Hook_SetWindowsHookEx(idHook,dwThreadID)
该函数的功能为当目标钩子的ID等于idHook并且密码框所在线程ID等于dwThreadID时,则发送消息给密码框所在的进程
(2)Void Hook_GetProcAddress(lpProcName)
功能:若lpProcName==“SetWindowsHookEx”则发送消息。
该函数的功能为调用函数的名称为”SetWindowsHookEx”时,则发送消息给密码框所在的进程
(3)Void Hook_LoadLibrary()
功能:更新加载模块输入节中的3个函数的地址
该函数的功能为更新系统函数SetWindowsHookEx、GetProcAddress、和LoadLibrary的地址为该SafeHook.dll中的以上三个函数的地址
通过该保护键盘钩子模块SafeHook.dll对密码口令框的键盘钩子进行保护时,如果有其它进程安装针对密码口令框的键盘钩子时,SafeHook.dll程序内部自定义一个消息WM_HOOKMESSAGE,有其他进程调用SetWindowsHookEx,该函数有四个参数,第一个参数为安装钩子子程的类型,第二个参数为钩子子程处理函数的地址,第三个参数载入DLL的进程句柄,第四个参数为安装钩子子程的所在线程的ID,如果目标钩子的钩子类型与Hook_SetWindowsHookEx中的idHook相同,并且安装钩子子程所在的线程的ID与Hook_SetWindowsHookEx中dwThreadID相同,则通过调用windows API函数SendMessage发送消息WM_HOOKMESSAGE给密码框所在的进程。
密码框所在的进程在接受到消息WM_HOOKMESSAGE后,重新调用SetWindowsHookEx函数安装钩子子程到密码框所在的进程中,这样对于新安装的钩子,总是处在钩子链的顶端。
函数Hook_LoadLibrary的功能是更新系统函数SetWindowsHookEx、GetProcAddress和LoadLibrary的地址为SafeHook.dll中Hook_SetWindowsHookEx、Hook_GetProcAddress和Hook_LoadLibrary函数的地址,更新的方法为首先遍历密码框所在的进程的所有模块,查找windows系统动态库User32.dll模块的地址空间,然后针对该模块,依次遍历该模块的信息,该模块信息中包含系统函数SetWindowsHookEx、GetProcAddress、LoadLibrary的地址信息,这样根据函数名称查找到相应的函数的地址,通过调用系统函数WriteProcessMemory将相应的系统函数的地址修改为SafeHook.dll中的相应的三个函数的地址。
基于上述的保护键盘钩子模块SafeHook.dll,本方案提供的密码口令框的系统架构包含三个模块(如附图1所示):
1、键盘驱动模块
当用户在键盘上按下一个键时,windows系统就会得到一个键盘消息,windows系统是如何得到这个消息的,这就是键盘驱动模块的任务,键盘驱动会一直存在一个记录线程RawInputThread,该线程中会有一个等待操作IRPPending,等待来自键盘的输入数据,当有个键盘按键按下时,这个等待操作将会完成,记录线程将对得到的数据进行处理,分发给合适的应用进程,这时记录线程RawInputThread又会立即调用ntlZwReadFile要求读取数据,又进入下一个等待,周而复始开始循环。
2、密码框进程模块
Windows系统从消息队列中取出键盘消息,分配到密码框进程所在的消息队列中,这时SafeHook.dll模块会对收到的键盘消息设置键盘钩子保护,通过更新系统函数的地址使键盘钩子处于钩子链的顶端,这样每次输入一个字符时,就会截获这个输入字符,对输入字符进行加密操作,直接对密码框中输入字符进行保护操作。
3、其他相关进程模块
其他进程模块做为密码口令框的辅助进程,实现密码框进程载入safeHook.dll模块的功能。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (3)
1.一种高安全性密码口令框,其特征在于,所述口令框在应用层使用保护键盘低级钩子捕获用户的按键,该保护键盘钩子处于钩子链的顶端,且在捕获到按键后不调用CallNextHookEx函数将消息传给后面的钩子。
2.根据权利要求1所述的一种高安全性密码口令框,其特征在于,所述口令框中包括保护键盘钩子模块SafeHook.dll和密码模块,所述保护键盘钩子模块SafeHook.dll在有其它进程安装针对口令框的键盘钩子时,向口令框发送消息,使口令框重新安装局部钩子,并更新到本口令框进程空间的模块输入节中。
3.根据权利要求2所述的一种高安全性密码口令框,其特征在于,所述密码口令框包含:
键盘驱动模块,所述键盘驱动一直存在一个记录线程RawInputThread,该线程中有一个等待操作IRP Pending,等待来自键盘的输入数据,当有个键盘按键按下时,这个等待操作将会完成,记录线程将对得到的数据进行处理,分发给合适的应用进程,这时记录线程RawInputThread又会立即调用ntlZwReadFile要求读取数据,又进入下一个等待,周而复始开始循环;
密码框进程模块,所述密码框进程模块中设置有保护键盘钩子模块SafeHook.dll和密码模块,在Windows系统从消息队列中取出键盘消息,分配到密码框进程所在的消息队列中,SafeHook.dll模块会对收到的键盘消息设置键盘钩子保护,通过更新系统函数的地址使键盘钩子处于钩子链的顶端,由此每次输入一个字符时,就会截获这个输入字符,对输入字符进行加密操作,直接对密码框中输入字符进行保护操作;
其他相关进程模块,所述其他进程模块做为密码口令框的辅助进程,实现密码框进程载入safeHook.dll模块的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410850831.8A CN104573484A (zh) | 2014-12-31 | 2014-12-31 | 一种高安全性密码口令框 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410850831.8A CN104573484A (zh) | 2014-12-31 | 2014-12-31 | 一种高安全性密码口令框 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104573484A true CN104573484A (zh) | 2015-04-29 |
Family
ID=53089524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410850831.8A Pending CN104573484A (zh) | 2014-12-31 | 2014-12-31 | 一种高安全性密码口令框 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104573484A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069351A (zh) * | 2015-07-23 | 2015-11-18 | 浪潮电子信息产业股份有限公司 | 一种应用程序登录信息防盗取的装置及方法 |
WO2019237863A1 (zh) * | 2018-06-12 | 2019-12-19 | 杨力祥 | 一种非立即数跳转的保护方法及对应计算装置 |
CN112800409A (zh) * | 2021-01-08 | 2021-05-14 | 杭州雾联科技有限公司 | 一种绕过登录保护的方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101625A (zh) * | 2007-08-07 | 2008-01-09 | 江雨 | 一种输入数据的安全处理方法及装置 |
CN101114323A (zh) * | 2006-07-28 | 2008-01-30 | 上海山丽信息安全有限公司 | 监控键盘钩子的装置 |
CN102254121A (zh) * | 2011-07-05 | 2011-11-23 | 北京神州绿盟信息安全科技股份有限公司 | 数据处理方法、装置及系统 |
CN102393894A (zh) * | 2011-09-30 | 2012-03-28 | 飞天诚信科技股份有限公司 | 一种提高用户信息输入安全性的方法和装置 |
CN102831344A (zh) * | 2012-07-27 | 2012-12-19 | 北京奇虎科技有限公司 | 一种进程的处理方法和装置 |
-
2014
- 2014-12-31 CN CN201410850831.8A patent/CN104573484A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114323A (zh) * | 2006-07-28 | 2008-01-30 | 上海山丽信息安全有限公司 | 监控键盘钩子的装置 |
CN101101625A (zh) * | 2007-08-07 | 2008-01-09 | 江雨 | 一种输入数据的安全处理方法及装置 |
CN102254121A (zh) * | 2011-07-05 | 2011-11-23 | 北京神州绿盟信息安全科技股份有限公司 | 数据处理方法、装置及系统 |
CN102393894A (zh) * | 2011-09-30 | 2012-03-28 | 飞天诚信科技股份有限公司 | 一种提高用户信息输入安全性的方法和装置 |
CN102831344A (zh) * | 2012-07-27 | 2012-12-19 | 北京奇虎科技有限公司 | 一种进程的处理方法和装置 |
Non-Patent Citations (2)
Title |
---|
曹四化: "基于用户意愿的访问控制模型研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
王海晨 等: "基于Windows平台的安全密码框研究与实现", 《信息安全与通信保密》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069351A (zh) * | 2015-07-23 | 2015-11-18 | 浪潮电子信息产业股份有限公司 | 一种应用程序登录信息防盗取的装置及方法 |
WO2019237863A1 (zh) * | 2018-06-12 | 2019-12-19 | 杨力祥 | 一种非立即数跳转的保护方法及对应计算装置 |
CN110597571A (zh) * | 2018-06-12 | 2019-12-20 | 杨力祥 | 一种非立即数跳转的保护方法及对应计算装置 |
CN112800409A (zh) * | 2021-01-08 | 2021-05-14 | 杭州雾联科技有限公司 | 一种绕过登录保护的方法、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110619220B (zh) | 对神经网络模型加密的方法及装置、存储介质 | |
CN104980920B (zh) | 智能终端建立通信连接的方法及装置 | |
US10657262B1 (en) | Method and apparatus for securing embedded device firmware | |
KR101018435B1 (ko) | 사용자 단말기의 보안 관리 장치 및 방법 | |
CN106295328A (zh) | 文件检测方法、装置及系统 | |
CN105978917A (zh) | 一种用于可信应用安全认证的系统和方法 | |
CN104077533A (zh) | 一种操作敏感数据的方法和设备 | |
CN103095457A (zh) | 一种应用程序的登录、验证方法 | |
CN108418785B (zh) | 密码调用方法、服务器及存储介质 | |
CN1869927B (zh) | 设备控制器、控制设备的方法及其程序 | |
CN106169042A (zh) | 管理权限的方法及装置 | |
CN112528296B (zh) | 漏洞检测方法、装置和存储介质及电子设备 | |
CN109697370A (zh) | 数据库数据加解密方法、装置、计算机设备和存储介质 | |
CN103036852B (zh) | 一种实现网络登录的方法以及装置 | |
CN104915602A (zh) | 一种Android平台下的PIN码保护方法 | |
CN104994095A (zh) | 一种设备认证方法、客户端、服务器及系统 | |
CN104573484A (zh) | 一种高安全性密码口令框 | |
CN107729760B (zh) | 基于Android系统的CSP实现方法及智能终端 | |
CN101854359A (zh) | 基于虚拟化计算的权限控制方法 | |
CN107977581A (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN104883341A (zh) | 应用管理装置、终端及应用管理方法 | |
CN105099991B (zh) | 在移动终端中抓取网络数据包的方法及装置 | |
CN102983969A (zh) | 一种操作系统的安全登录系统及安全登录方法 | |
CN105335673A (zh) | 一种信息安全处理方法和信息安全处理装置 | |
CN105453104A (zh) | 系统保护用文件安全管理装置和管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |