[普通]键盘记录监控软件的运行原理和应对措施

作者(passion) 阅读(1044次) 评论(0) 分类( 软件)

介绍

在这篇文章里,我会介绍键盘记录者的运行原理以及防范它的一些建议措施。我希望这篇文章能够帮助大家理解基于钩子的间谍软件是如何工作的以及如何来对付它。键盘记录软件是非常严重的安全威胁,它们通常会通过捕捉用户的击键来监控用户动作。这类软件可以被用来做一些有意目的的事情如盗窃信用卡或其他帐号以及密码。键盘记录通常被木马使用,它们安静的工作在后台,扑捉所有用户的击键,然后记录在非常隐蔽的文件中通过邮件或FTP发送给监视你的人。

一般键盘记录间谍软件结构原理

一般键盘记录间谍软件有三个模块组成:主模块,钩子过程模块以及FTP模块。主模块会先安装一个全局WH_CBT钩子,然后当每一次用户击键时钩子都会回报给主模块。主模块的作用是记录所有回报的击键数据,保存为文件。当记录文件达到一个预定大小时主模块就会命令FTP模块上传记录文件到FTP服务器。模块之间一般使用windows消息来进行通讯。

 

主模块窗口进程代码

 
 
 
 


全局WH_CBT钩子

  一个系统范围钩子的作用是安装进所有正在运行的进程中,在信息达到目标窗口程序前监控到该信息。钩子过程通常被用来监控系统不同类型的事件如击键等。你可以通过调用Win32 API函数SetWindowsHookEx来安装一个钩子过程并指定调用该过程的钩子类型。一个WH_CBT钩子过程会在窗口取得焦点并在击键事件从系统消息队列被清除之前被调用。
一个全局钩子过程会在所有应用程序中被调用,所以该钩子过程必须驻留在一个独立于应用程序的DLL中来进行钩子过程的安装。

DLL共享内存区域

一个DLL共享内存区域是对所有DLL实例都可见的一个内存变量。键盘记录软件的主模块在此钩子过程DLL共享内存区域存贮它的窗口句柄,而这个DLL共享区域可以使所有钩子过程实例都会把窗口消息回报给主模块。

钩子过程共享内存区域以及输出功用代码

 
 



主模块InstallHook 代码

 

隐藏

一个间谍程序必须懂得隐藏踪迹不被发现。有三个主要区域是需要用到隐藏技术:文件系统,任务管理器以及防火墙。

任务管理器隐藏

ADS(Alternate Data Streams)是一个NTFS特性,能够使你把文件数据送于存在的文件中而不影响它们的功能,大小,并且不会在文件浏览工具如Windows Explorer中显示。使用本地文件浏览技术是不可能发现具有ADS的文件的。一旦ADS被注入文件,就可以通过使用传统的命令如type来执行ADS。文件运行后和没有注入ADS前的原文件看起来没有区别,在一般进程查看工具如系统任务管理器中是不能察觉到的。使用这种方式不仅可以隐藏文件,同时可以隐藏非法进程的执行。换句话说如果你是使用NTFS那么你是不可能不通过其他特别工具就发现你系统里的ADS文件的。ADS特性是不能够被取消或禁用的,目前为止还没有办法来限制利用这种技术对用户已经拥有访问权限的文件进行隐藏的可能性。

你可以通过一下来手动执行ADS

Inject spy.exe to svchost.exe 
"type spy.exe > c:\windows\system32\svchost.exe:spy.exe" 

Run spy.exe
"start svchost.exe:spy.exe"



防火墙隐藏

很多防火墙软件都会探测和阻止未授权的程序访问网络。键盘记录软件的主模块使用FTP模块上传记录信息的文件到一个FTP服务器。所以可以通过把FTP模块DLL注入到已经安装的允许访问网络的应用程序中来躲过防火墙的防御。DLL注入就是指迫使一个被信任的正在运行的进程接受一个它从来都不需要的DLL文件。比如把FTP模块注入到IE或火狐等浏览器进程中。DLL注入可以,瞒过大多数的防火墙软件的侦测,特别是当FTP服务器监听的是80端口(HTTP端口)时防火墙更是难以察觉。这个钩子过程DLL可以通过函数SetWindowsHookEx自动的加载到所有正在运行的进程中。

钩子过程模块DllMain代码

 

启动

把间谍软件写入下面注册表就可以在系统启动时随机启动,这个是间谍软件常用的

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run


« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:ASP.NET附加数据库文件的方式,如何发布到IIS7而不导致SQLServer出错
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img