自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊鍵盤布局持久化技術(shù),你懂了嗎?

商務(wù)辦公
鍵盤布局作為Windows下的特殊系統(tǒng)機制,其鍵盤布局DLL的生成與安裝都有相應(yīng)的工具與API,利用成本很低,是較好的權(quán)限維持方式。

1.鍵盤布局簡介

鍵盤布局是按鍵在鍵盤上的分布模式,決定了鍵位順序。鍵盤布局在發(fā)展過程中,由于使用習慣的不同,各國間使用的鍵盤布局存在細微差別,因此在Windows系統(tǒng)上以國家為單位區(qū)分不同的鍵盤布局方案。我們最熟悉的布局模式當屬美式鍵盤。鍵盤布局以動態(tài)鏈接庫的形式存在System路徑下,在系統(tǒng)啟動時加載。本文將通過探究鍵盤布局文件的加載方式得到其潛在的利用方法。

1659428137_62e8dd29daabdb65dbb71.png!small?1659428138879

2.鍵盤布局方案加載過程

鍵盤布局文件的加載由winlogon.exe完成。Windows Logon Process(即winlogon.exe),是Windows NT 用戶登錄程序,用于管理用戶登錄和退出,且以 SYSTEM 用戶運行。在入口WinMain中,調(diào)用了函數(shù)UpdatePerUserSystemParameters:

1659428159_62e8dd3f1fd2134c4971f.png!small?1659428159786

該函數(shù)位于user*32.dll中:

1659428172_62e8dd4cc6666291d34b5.png!small?1659428173642

在函數(shù)UpdatePerUserSystemParameters中,首先調(diào)用GetActiveKeyboardName,通過查詢注冊表項:

計算機\HKEY_CURRENT_USER\Keyboard Layout\Preload

獲取默認加載的鍵盤布局文件:

1659428210_62e8dd7254765cb47ca23.png!small?1659428210998

在對應(yīng)注冊表下,保存著默認加載的鍵盤布局編號:

1659428236_62e8dd8c2e7c2aad6329e.png!small?1659428236853

該編號指向注冊表

計算機\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000804

1659428273_62e8ddb13f30e24aebadc.png!small?1659428273891

可以看到,當前默認啟用的鍵盤布局文件是中文簡體環(huán)境下的鍵盤布局,即美式鍵盤布局。在獲取到當前啟用的鍵盤布局文件名后,以此為參數(shù)調(diào)用LoadKeyboardLayoutWorker:

1659428310_62e8ddd6add81c72488d9.png!small?1659428311496

在OpenKeyboardLayoutFile中,先調(diào)用GetKeyboardDllName判斷當前語言環(huán)境,主要是為了區(qū)分出日、韓兩種特殊鍵盤布局。各語言環(huán)境下的鍵盤布局可能略有差別,但是日韓因其文字的特殊性有其特定的鍵盤標準。接著OpenKeyboardLayoutFileWorker加載對應(yīng)的DLL:

1659428341_62e8ddf5286d2330f43f7.png!small?1659428341823

OpenKeyboardLayoutFileWorker進一步調(diào)用LoadLibraryExW加載對應(yīng)DLL:

1659428359_62e8de0701ffffccd0afb.png!small?1659428359684

在加載前沒有進行文件合法性相關(guān)的校驗,這為惡意利用留下了空間。

3.鍵盤布局文件利用

(1)鍵盤布局文件的構(gòu)建

Windows支持自定義鍵盤布局,利用微軟官方的鍵盤布局生成器Keyboard Layout Creator(MSKLC.exe)可以生成鍵盤布局文件對應(yīng)的源碼文件。首先加載已有鍵盤布局:

1659428402_62e8de32080eaac52fbb7.png!small?1659428402671

選擇當前語言地區(qū)的布局:

1659428413_62e8de3d97792379cb64d.png!small?1659428414294

保存源碼文件:

1659428766_62e8df9e783fcbe59e282.png!small?1659428767157

保存的結(jié)果是一個.klc文件:

1659428777_62e8dfa956bba7788908a.png!small?1659428778081

需要使用kbdutool.exe將.klc解析為鍵盤布局源碼文件:

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

生成的源碼文件如下:

1659428814_62e8dfce80580fb7b5282.png!small?1659428815174

在Layout01.C末尾添加DllMain函數(shù):

1659428833_62e8dfe1959d8e09d69e4.png!small?1659428834407

利用源碼文件創(chuàng)建工程,在安裝了WDK的環(huán)境下編譯成對應(yīng)系統(tǒng)架構(gòu)的DLL,即可生成自定義布局文件。

(2)鍵盤布局文件的安裝

鍵盤布局的安裝方式有兩種:

a)由上面的分析可知,在鍵盤布局加載時,會直接加載Preload注冊表項下保存的默認鍵盤布局,可以通過劫持或替換默認鍵盤布局DLL等方式實現(xiàn)安裝;

b)利用input.dll導出函數(shù)InstallLayoutOrTip進行安裝。

第一種安裝方式簡單粗暴,通過修改Preload注冊表改變默認加載的鍵盤布局文件。下面重點看第二種安裝方式:

根據(jù)MSDN的InstallLayoutOrTip調(diào)用示例,可以通過在鍵盤布局注冊表項

計算機\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts

下新增一個新編號,并添加相關(guān)字段信息:

1659428886_62e8e016616d17c3daab4.png!small?1659428887078

創(chuàng)建后,將惡意的鍵盤布局文件部署在system目錄下,調(diào)用InstallLayoutOrTip啟用目標鍵盤布局文件。函數(shù)第一個參數(shù)構(gòu)造如下:

語言標識符(LangID):鍵盤布局ID(KLID)

1659428906_62e8e02a00b438308996b.png!small?1659428906578

第二個參數(shù)默認為0,調(diào)用InstallLayoutOrTip啟用指定布局文件,利用過程如下:

1659428932_62e8e044770818a1ee843.png!small?1659428933269

安裝結(jié)果:

1659428950_62e8e056298588702440a.png!small?1659428950934

重啟靶機后,惡意鍵盤布局文件被成功加載,彈出管理員權(quán)限cmd:

1659429000_62e8e0880fed382257f6b.png!small?1659429000907

安裝過程需要管理員權(quán)限,且需要對相關(guān)注冊表項進行更改,在防護措施不足的終端上容易被利用實現(xiàn)權(quán)限維持與持久化。

4.總結(jié)

鍵盤布局作為Windows下的特殊系統(tǒng)機制,其鍵盤布局DLL的生成與安裝都有相應(yīng)的工具與API,利用成本很低,是較好的權(quán)限維持方式。但是,鍵盤布局的利用方式同樣存在其弊端,除了持久化的DLL需要放置在System目錄下以外,還需要管理員權(quán)限實現(xiàn)安裝,且行為容易被攔截。如果沒有終端防護設(shè)備,通過這種方式實現(xiàn)的持久化與維*權(quán)還是能夠達到很好的效果。

參考

自定義鍵盤布局持久化:https://github.com/NtQuerySystemInformation/CustomKeyboardLayoutPersistence

InstallLayoutOrTip調(diào)用示例:https://docs.microsoft.com/zh-cn/windows/win32/tsf/installlayoutortip

責任編輯:武曉燕 來源: ??FreeBuf.COM??
相關(guān)推薦

2024-04-07 08:23:01

JS隔離JavaScript

2022-06-06 07:58:52

勒索軟件惡意軟件解密

2022-08-19 08:06:00

MySQL數(shù)據(jù)庫解析器

2022-06-07 08:14:35

PGPAGETUPLE

2022-06-15 08:00:50

磁盤RedisRocketMQ

2021-10-10 20:36:49

Android Root權(quán)限

2022-12-08 10:49:43

2011-06-14 12:56:55

SQL Server復(fù)災(zāi)

2018-01-04 00:10:52

物聯(lián)網(wǎng)技術(shù)信息

2022-01-06 07:59:32

WebGPUOpenGL引擎

2024-05-28 10:08:05

2022-04-28 08:24:16

阿里云idaaspython

2022-10-19 08:19:32

動態(tài)基線預(yù)警

2022-05-06 08:26:32

JavaSPI機制

2024-08-12 12:30:27

2022-07-27 08:01:29

CMS垃圾回收器

2020-10-25 08:45:38

IPv6網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)

2023-06-27 07:09:39

2022-04-07 08:20:22

typeinterface前端

2022-11-28 07:10:57

點贊
收藏

51CTO技術(shù)棧公眾號