电脑键盘记录器哪个好 keylogger键盘记录器使用方法

译者:myswsun预计稿费:100元人民币提交方式:发送邮件至林微#360.cn,或登录网页在线提交。0x00前言回顾第一部分,我们总结了Windows用户模式下键盘记录的四种方法。今天我们就来分析一下每种技术的检测方法。测试机器:0x01 SetWindowsHookEx当我们使用SetWindowsHookEx注册消...

译者:myswsun

预计稿费:100元人民币

提交方式:发送邮件至林微#360.cn,或登录网页在线提交。

0x00前言

回顾第一部分,我们总结了Windows用户模式下键盘记录的四种方法。今天我们就来分析一下每种技术的检测方法。

测试机器:

0x01 SetWindowsHookEx

当我们使用SetWindowsHookEx注册消息钩子时,系统将钩子处理程序保存在钩子链中(这是一个指针列表)。因为我们可以注册任何消息类型的钩子,所以每种消息类型都有一个钩子链。因此,我们的目标是:

钩子链在系统内存中的位置(WH _键盘和WH _键盘_LL)

如何找到钩子的进程名

关于钩链的位置,您可以参考以下内容:

1nt!_ETHREAD + 0x0 => nt!_KTHREAD + 0x088 => nt!_TEB + 0x40 => win32k!tagTHREADINFO + 0xCC => win32k!tagDESKTOPINFO + 0x10 => win32k!tagHOOK

每个结构都很清晰(感谢Windows符号)。Offset的值是我测试机的值,不同的Windows版本和build版本会有所不同(ntoskrnl和win32k.sys)。

来自nt!_ETHREAD看,肯定是GUI线程。我们可以从explorer.exe获得GUI线程或者创建自己的线程。

在上面,我们可以得到系统的所有全局钩链的位置。这个数组指针有16个tagHOOK,数组索引是WH_*消息类型的值(实际上索引=WH_*+1)。如果条目是空,我们可以找到一个全局钩子链。

从tagHook中的_THRDESKHEAD,我们可以得到设置钩子的进程的tagTHREADINFO。因此,我们可以获得进程ID和进程名称:

1processIdOfHooker = PsGetProcessId(IoThreadToProcess((PETHREAD)(*pCurHook->head.pti)));

扫描结果:

好了,找到Windows全局消息钩子就够了。当地的钩子呢?

以下是当地的一些情况:

1nt!_ETHREAD + 0x0 => nt!_KTHREAD + 0x088 => nt!_TEB + 0x40 => win32k!tagTHREADINFO + 0x198 => win32k!tagHOOK

类似于全局钩子,但是可以看到局部钩子链的位置在进程的tagTHREADINFO结构中,这是与进程相关的。DesktopInfo中的钩子链属于同一个桌面下的所有进程。

0x02轮询

我真的不知道怎么这样扫描。为什么?因为它直接从内部结构读取键的状态,所以似乎没有办法检测出来。

Getasynckeystate(),getkeyboardstate () API钩子?是的,我们可以通过API来检测,但是我不想用,因为对系统中的所有进程使用全局APIhook不是一个好方法。使用API钩子,我们可以检查键盘记录器的频率和范围。

0x03原始输入

我首先分析user32.dll的RegisterRawInputDevices函数。这个API将调用win32k.sys中的

ntuserregisterrawinputdevices

经过一些检查后,输入_RegisterRawInputDevices。

这里非常清楚。
PsGetCurrentProcessWin32Process返回win32k!tagPROCESSINFO结构体。使用WinDbg查看偏移0x1A4:这里很清楚。
psgetcurrentprocesswin 32 process返回win32k!TagPROCESSINFO结构。使用WinDbg查看偏移量0x1A4:

有指向win32k的指针!tagPROCESS_HID_TABLE .

第20-34行,验证注册的数据(HID请求)。

第36-47行,如果没有分配HID表。意思是,如果标记process info->: PHidTable是空,并且没有设备在进程中注册。

第48-71行,将HID请求设置到HID表中。

剩下的就是更新标志,重启HID设备。

让我们来看看SetProcDeviceRequest函数:

系统分配一个HID请求并将其插入HID表中。

HID请求有两个列表,即包含列表、使用页面列表和排除列表。插入哪个列表取决于调用RegisterRawInputDevices的tagRAWINPUTDEVICE的dwFlags值。

对于按键记录,我使用RIDEV_NOLEGACY | RIDEV_INPUTSINK标志,因此它是一个包含列表。最后一个结构是win32k!标记过程_隐藏_请求

可以看到,usuagepage、usuage和spwndtarget是tagRAWINPUTDEVICE的参数。

对于原始输入的检测:

1.枚举系统的所有进程。

2.遍历PID->每个流程;PEPROCESS->tagPROCESSINFO->tag process _ HID _ TABLE->标记过程_隐藏_请求

3.如果我们发现条目usUsagePage = 1(通常是桌面控制)和usUsage = 6(键盘),这个过程用于键盘记录。

扫描结果:

0x04直接输入

检测直接输入时,我在注册钩子的过程中发现了一些有趣的特征。

针对MSIAfterburner.exe,我发现了一些与direct input(Mutant, Section, Key)相关的句柄。从运行的线程中,我们也能发现DINPUT8.dll(微软DirectInput库)。对于MSIAfterburner.exe,我发现了一些与directinput (mutator,section,key)相关的句柄。从运行的线程中,我们还可以找到DINPUT8.dll(微软DirectInput库)。

直接输入测试:

1.枚举系统的所有进程

2.对于每一个过程,列举所有的变异,部分和关键,以配合处理的特点。

3.如果所有的特征都匹配,我们就可以得到进程中所有线程的起始地址。如果起始地址在DINPUT8.DLL的地址room 空中,则找到键盘记录。

扫描结果:

0x05摘要

扫描模式总结如下:

本文来自心已碎♂无心醉投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/485912.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 04-02
下一篇 04-02

相关推荐

  • 魔兽大脚的宏使用方法

    在主菜单和界面设置中,有显示更多动作宏的选项。在主菜单中,可以设置宏命令绑定技能、动作、表情、呐喊等。您可以将不同的技能绑定到一个宏。宏很复杂,但是有Y,你是猪铸变态之类的基本命令。XX,第一句是;为战场和竞技场准备时间增加buff,一次按一个buffcast modifiera

    2023-07-28 23:26:01
    530 0
  • 激活苹果手机需要多久 苹果x激活使用方法

    苹果定位器未激活或可能不是原厂产品。激活的定位器到底能不能买?去年苹果***销量下滑的事实大家都有目共睹。很多业内人士分析,苹果***销量下滑的主要原因是创新度太低,价格太高。虽然苹果***销量下滑,但我们不得不承认,苹果定位器依然是数一数二的,性能依然很强大。苹

    2023-07-28 22:33:01
    209 0
  • 苹果iphonex支持无线充电吗 手机无线充电使用方法

    一年一度的苹果秋季发布会如期举行,相信人们现在还在相互讨论着昨晚会中的种种细节和槽点。没错,几乎每年的秋天,大伙茶余饭后谈论的都是苹果的新系统、新产品,这次也不例外,苹果并没有让人们失望,发布了多款定位器新品,然而今天的这篇文章我们并不是来聊什么配置或是系

    2023-07-28 20:32:01
    967 0
  • 手机解压软件哪个好 解压缩软件app使用方法

    今天整理了一期电脑必备软件,每一款都是良心软件,值得下载安装使用。这期的关键词是:必备软件。接下来,我们来看看这些电脑中必须安装的软件。当然,并不是说这些软件就是最好的。也可以选择其他有类似软件的软件。音视频播放器PotPlayer一个小巧简单的影音播放器,拥有强大

    2023-07-28 16:06:01
    140 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信