键盘布局持久化技术

admin 2022年7月13日19:39:25评论27 views字数 2399阅读7分59秒阅读模式

01 键盘布局简介

键盘布局是按键在键盘上的分布模式,决定了键位顺序。键盘布局在发展过程中,由于使用习惯的不同,各国间使用的键盘布局存在细微差别,因此在Windows系统上以国家为单位区分不同的键盘布局方案。我们最熟悉的布局模式当属美式键盘:

键盘布局持久化技术


键盘布局以动态链接库的形式存在System路径下,在系统启动时加载。本文将通过探究键盘布局文件的加载方式得到其潜在的利用方法。


02 键盘布局方案加载过程

键盘布局文件的加载由winlogon.exe完成。Windows Logon Process(即winlogon.exe),是Windows NT 用户登录程序,用于管理用户登录和退出,且以 SYSTEM 用户运行。在入口WinMain中,调用了函数UpdatePerUserSystemParameters:

键盘布局持久化技术


该函数位于user32.dll中:

键盘布局持久化技术


在函数UpdatePerUserSystemParameters中,首先调用GetActiveKeyboardName,通过查询注册表项:

计算机HKEY_CURRENT_USERKeyboard LayoutPreload


获取默认加载的键盘布局文件:

键盘布局持久化技术


在对应注册表下,保存着默认加载的键盘布局编号:

键盘布局持久化技术


该编号指向注册表

计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layouts0000804

键盘布局持久化技术


可以看到,当前默认启用的键盘布局文件是中文简体环境下的键盘布局,即美式键盘布局。在获取到当前启用的键盘布局文件名后,以此为参数调用LoadKeyboardLayoutWorker:

键盘布局持久化技术


在OpenKeyboardLayoutFile中,先调用GetKeyboardDllName判断当前语言环境,主要是为了区分出日、韩两种特殊键盘布局。各语言环境下的键盘布局可能略有差别,但是日韩因其文字的特殊性有其特定的键盘标准。接着OpenKeyboardLayoutFileWorker加载对应的DLL:

键盘布局持久化技术


OpenKeyboardLayoutFileWorker进一步调用LoadLibraryExW加载对应DLL:

键盘布局持久化技术


在加载前没有进行文件合法性相关的校验,这为恶意利用留下了空间。


03 键盘布局文件利用

1.键盘布局文件的构建

Windows支持自定义键盘布局,利用微软官方的键盘布局生成器Keyboard Layout Creator(MSKLC.exe)可以生成键盘布局文件对应的源码文件。首先加载已有键盘布局:

键盘布局持久化技术


选择当前语言地区的布局:

键盘布局持久化技术


保存源码文件:

键盘布局持久化技术


保存的结果是一个.klc文件:

键盘布局持久化技术


需要使用kbdutool.exe将.klc解析为键盘布局源码文件:

kbdutool.exe-u -i -s out.klc


生成的源码文件如下:

键盘布局持久化技术


在Layout01.C末尾添加DllMain函数:

键盘布局持久化技术


利用源码文件创建工程,在安装了WDK的环境下编译成对应系统架构的DLL,即可生成自定义布局文件。


2.键盘布局文件的安装

键盘布局的安装方式有两种:

a)由上面的分析可知,在键盘布局加载时,会直接加载Preload注册表项下保存的默认键盘布局,可以通过劫持或替换默认键盘布局DLL等方式实现安装;

b)利用input.dll导出函数InstallLayoutOrTip进行安装。

第一种安装方式简单粗暴,通过修改Preload注册表改变默认加载的键盘布局文件。下面重点看第二种安装方式:


根据MSDN的InstallLayoutOrTip调用示例,可以通过在键盘布局注册表项

计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layouts

下新增一个新编号,并添加相关字段信息:

键盘布局持久化技术


创建后,将恶意的键盘布局文件部署在system目录下,调用InstallLayoutOrTip启用目标键盘布局文件。函数第一个参数构造如下:

语言标识符(LangID):键盘布局ID(KLID)


键盘布局持久化技术


第二个参数默认为0,调用InstallLayoutOrTip启用指定布局文件,利用过程如下:

键盘布局持久化技术


安装结果:

键盘布局持久化技术


重启靶机后,恶意键盘布局文件被成功加载,弹出管理员权限cmd:

键盘布局持久化技术


安装过程需要管理员权限,且需要对相关注册表项进行更改,在防护措施不足的终端上容易被利用实现权限维持与持久化。


04 总结

键盘布局作为Windows下的特殊系统机制,其键盘布局DLL的生成与安装都有相应的工具与API,利用成本很低,是较好的权限维持方式。但是,键盘布局的利用方式同样存在其弊端,除了持久化的DLL需要放置在System目录下以外,还需要管理员权限实现安装,且行为容易被拦截。如果没有终端防护设备,通过这种方式实现的持久化与维权还是能够达到很好的效果。


参考

自定义键盘布局持久化:

https://github.com/NtQuerySystemInformation/CustomKeyboardLayoutPersistence


InstallLayoutOrTip调用示例:

https://docs.microsoft.com/zh-cn/windows/win32/tsf/installlayoutortip


键盘布局持久化技术

绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。

研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。


键盘布局持久化技术

M01N Team公众号

聚焦高级攻防对抗热点技术

绿盟科技蓝军技术研究战队

键盘布局持久化技术

官方攻防交流群

网络安全一手资讯

攻防技术答疑解惑

扫码加好友即可拉群


原文始发于微信公众号(M01N Team):键盘布局持久化技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月13日19:39:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   键盘布局持久化技术https://cn-sec.com/archives/1175600.html

发表评论

匿名网友 填写信息