技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
Sharp4Keyloger:一款通过 API 函数实现 Windows 键盘日志记录的工具
dot.Net安全矩阵
安全工具
130浏览 · 2025-02-24 08:09
返回文档
在红队渗透测试中,信息收集是最重要的初期阶段之一。通过精确地获取目标系统上的信息,红队能够识别潜在的攻击路径,并为后续的攻击提供有价值的数据。在这其中,键盘记录器(Keylogger)作为一种常见的攻击手段,可以有效地收集用户输入的信息,帮助攻击者获取目标用户的敏感数据,如登录凭据、系统操作命令等。
本文将探讨
Sharp4Keyloger.exe
在内网渗透中的应用,以及如何通过利用键盘记录器工具,收集关键数据。我们将重点分析其在红队渗透阶段的实际使用场景,并探讨其技术实现方法。
0x01 钩子(Hook)
钩子(Hook)是一种 Windows 操作内置的监控和拦截机制,通过程序拦截和处理操作系统或应用程序中的特定事件或消息,钩子通常用于监视和修改系统行为,可以获取或改变事件流,而无需直接修改目标程序的源代码。在系统中,钩子可以用于监控键盘、鼠标、窗口消息等各种系统事件。
1.1 原理和类型
钩子的工作原理基于事件流拦截,当系统或应用程序发生事件时,钩子会被触发,程序可以通过钩子回调函数获取事件信息,并决定是否继续传递该事件或修改事件。具体流程而言,大致上可分为安装钩子、处理事件、事件传递、卸载钩子。
1
安装钩子:钩子通过调用 SetWindowsHookEx 函数来安装。这个函数允许应用程序指定一个回调函数,操作系统会在事件发生时调用这个回调函数。
2
处理事件
:当键盘输入或者鼠标点击等事件发生时,钩子的回调函数被调用,应用程序可以通过该函数对事件进行处理、修改或记录。
3
事件传递
:钩子回调函数可以决定是否将事件传递给下一个钩子,主要通过 CallNextHookEx函数实现。如果钩子不调用 CallNextHookEx,则后续钩子或系统的默认处理程序将不会收到该事件。
4
卸载钩子
:钩子完成任务后,通过调用 UnhookWindowsHookEx 函数卸载钩子,释放资源。
在 Windows 系统中,钩子分为多种类型,主要有键盘钩子、鼠标钩子、消息钩子、系统钩子。其中,系统钩子允许应用程序拦截系统级别的事件,如系统通知、窗口切换、应用程序启动等。
0x02 钩子关联的API函数
Windows 操作系统包含了大量的 API 函数可以帮助用户安装钩子和卸载,通常运行时可以拦截键盘和鼠标事件。特别是 SetWindowsHookEx 和 CallNextHookEx 这两个函数能够在全局范围内处理键盘、鼠标输入事件。
2.1 SetWindowsHookEx
SetWindowsHookEx 函数用于安装钩子。此函数主要用于创建钩子链,允许应用程序拦截和处理事件,具体函数的签名如下所示。
参数 idHook,表示指定希望安装的钩子类型,比如 WH_KEYBOARD_LL 用于拦截低级别键盘输入(LowLevelKeyboardProc)。参数 lpfn 表示钩子回调函数指针,当事件发生时,系统会调用此回调函数。参数 hMod 表示钩子句柄,如果安装钩子成功,返回一个钩子句柄,否则返回 IntPtr.Zero。
2.2 CallNextHookEx
CallNextHookEx 函数用于将事件传递给下一个钩子或钩子链中的下一个处理程序。这是钩子处理链的一部分,用于确保事件能够继续传递到其他钩子或系统, 具体函数的签名如下所示。
参数 hhk,表示当前钩子的句柄,通常是通过 SetWindowsHookEx 返回的句柄。参数 nCode 用于指定事件类型,通常是键盘事件、鼠标事件等。如果是 WH_KEYBOARD_LL,则为键盘事件的类型。返回值取决于钩子的实现。一般来说,将返回下一个钩子的处理结果
2.3 UnhookWindowsHookEx
UnhookWindowsHookEx 函数用于卸载已经安装的钩子。调用此函数可以移除之前通过 SetWindowsHookEx 安装的钩子。 具体函数的签名如下所示。
参数 hhk,表示要卸载的钩子的句柄,通常是 SetWindowsHookEx 返回的句柄,如果卸载钩子成功,返回 true ,否则返回 false 。可以通过 Marshal.GetLastWin32Error() 获取更多的错误信息。
0x03 调用键盘钩子
下面这段代码实现了一个 键盘钩子,它会监听所有键盘按键事件,并将按下的键记录到文件。记录过程中会排除 Caps Lock 和 Backspace 键。
首先, 定义了一个 键盘钩子回调函数。_proc 是一个委托,指向 HookCallback 方法,将用作钩子的回调。
接着,定义了一个静态变量 _hookID 来存储钩子句柄。钩子句柄是设置钩子时操作系统返回的一个值,用于卸载钩子或后续操作。
并且,定义了低级键盘钩子的回调签名。此处的 LowLevelKeyboardProc 会处理按键事件。
随后,定义一个 SetHook 方法设置钩子。通过调用 Windows API 函数 SetWindowsHookEx 来安装钩子,具体的代码如下所示。
此处的 proc 是回调函数,就是自定义的 HookCallback 函数,它会在键盘事件发生时被调用,GetModuleHandle(curModule.ModuleName) 方法获取当前进程的模块句柄,用于指定钩子所在的 当前进程,0U 代表钩子应用于所有的Windows进程。
跟进 HookCallback 函数,此函数是键盘钩子的回调函数,拦截和监控记录的操作均位于此函数内实现,比如我们会调用 WriteFile 函数将键盘的值转换后保存到日志文件中。具体代码如下所示。
该函数传递的参数中 nCode 是钩子接收到的消息类型,比如,按键按下、按键释放等操作。而且这里检查 nCode >= 0 和 wParam == (IntPtr)256,确保事件是键盘按下KEYDOWN 事件。另外, vkCode == 20 || vkCode == 8 用于排除
Caps Lock
(20)和
Backspace
(8)按键。如果是这两个按键之一,则不进行后续操作。
0x04 调用键盘钩子
这里重点介绍一下方法体内调用的 WriteFile 函数,主要目的是在监听键盘事件时,处理不同的按键输入并将其写入文件。它根据不同的按键或按键组合(如Shift、CapsLock、数字键盘等),决定输入字符的输出,关于该函数的代码实现如下所示。
4.1 处理特殊按键
ToWrite 变量是输入的按键名称,首先不记录 Shift 键, 对于
Return
(回车键)按键,输出换行符, 对于
OEMPeriod
(句号键)按键,输出句号字符。代码如下所示。
4.2 数字键处理
对键盘上的常规数字做处理转换, 如果按下了
Shift
键,会输出对应的特殊字符(如 D1 输出 1,按下 Shift 时输出 !),具体代码如下所示。
4.3 字母键大小写处理
对于字母按键(如 a, b 等),如果按下了
Shift
键或
CapsLock
开关打开,则输出大写字母,否则输出小写字母。具体代码如下所示。
最终,决定好要记录的字符 appendText 后,使用 File.AppendAllText 方法将字符追加到指定的文件中,运行时如下图所示。
0x05 小结
综上,键盘记录在渗透测试中的作用不可忽视,不仅能帮助攻击者获取目标用户的敏感数据,还能为进一步的攻击提供丰富的信息。在信息收集阶段,Sharp4Keyloger 键盘记录器作为一个有效的工具,能够监控用户输入并记录下来,包括登录凭证、系统命令、敏感信息等。
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
近期热点
一周
月份
季度
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
暂无相关信息
暂无相关信息
优秀作者
1
一天
贡献值:18800
2
T0daySeeker
贡献值:18700
3
1174735059082055
贡献值:15000
4
Yale
贡献值:14000
5
1674701160110592
贡献值:13000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
姓*户
贡献值:8600
9
熊猫正正
贡献值:8000
10
lufei
贡献值:8000
目录
0x01 钩子(Hook)
1.1 原理和类型
0x02 钩子关联的API函数
2.1 SetWindowsHookEx
2.2 CallNextHookEx
2.3 UnhookWindowsHookEx
0x03 调用键盘钩子
0x04 调用键盘钩子
4.1 处理特殊按键
4.2 数字键处理
4.3 字母键大小写处理
0x05 小结
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板