分类 权限维持 下的文章

各个大佬都在分享各种bypass av的方法,我来分享下mimikatz bypass 360的一个思路。
这个传出来也好久了,通过msbuild来执行xml的mimikatz达到绕过导出的想法。
前提:
1、能够交互方式执行cmd(推荐使用冰蝎)
2、权限能够执行debug(id:500)
3、.net 4.0
关于msbuild的介绍:
MSBuild 是 Microsoft 和 Visual Studio的生成系统。它不仅仅是一个构造工具,应该称之为拥有相当强大扩展能力的自动化平台。MSBuild平台的主要涉及到三部分:执行引擎、构造工程、任务。其中最核心的就是执行引擎,它包括定义构造工程的规范,解释构造工程,执行“构造动作”;构造工程是用来描述构造任务的,大多数情况下我们使用MSBuild就是遵循规范,编写一个构造工程;MSBuild引擎执行的每一个“构造动作”就是通过任务实现的,任务就是MSBuild的扩展机制,通过编写新的任务就能够不断扩充MSBuild的执行能力。

过程:
https://raw.githubusercontent.com/3gstudent/msbuild-inline-task/master/executes%20mimikatz.xml
将xml文件保存在本地,这里我放到目标机器的桌面上。

图片1.png
以管理员权限执行cmd:

#C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe C:\Users\123\Desktop\mimikatz.xml

图片2.png
图片3.png
没有任何提示弹窗和拦截,直接就执行了。
但是有个不太明白的情况就是如果我是执行的导出hash > 1.txt这种情况,360就会拦截,不太明白360的拦截机制是怎么判断的

#C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe mimikatz.xml "privilege::debug" "sekurlsa::logonPasswords full" exit

Dll劫持
dll劫持原理:https://silic.wiki/%E4%B9%A0%E7%A7%91%E6%97%A7%E7%AB%99:dll%E5%8A%AB%E6%8C%81

简单来说就是win应用在执行过程中会调用一些处在系统中各个位置的动态链接文件(dll),而一般开发都不会将dll的文件使用绝对路径限制死,而是利用windows自带的DLL Search Order功能来自动查找相同名称的dll文件,并可以多应用共享dll,减少重复开发。
这样也会带来种种问题,search的过程是:
应用程序当前目录→系统目录→16位系统目录→windows目录→path环境目录
知道它的加载过程那么我们只要能够获取到应用程序都加载了哪些dll文件,替换/添加自己的dll不久可以执行了恶意dll了嘛?这样就完成了一次dll劫持攻击。
Dll劫持实例:
通常可以通过process monitor来查看软件加载了哪些dll文件。
图片4.png

在列表中看到了他查询了

C:\Users\123\AppData\Local\Notepad++\plugins\..dll
C:\Users\123\AppData\Local\Notepad++\...dll

图片5.png
其中查询结果都是NO SUCH FILE也就是说不存在该dll,但是notepad++也确实是读取了dll
那么问题来了,我们将自己的payload生成dll改名放到plugins中是否能够在运行notepad++的过程中执行payload呢?测试一下。
这里值得注意的是这个dll加载的路径是一个用户appdata的路径,也就是说123用户即可向其中可读可写可执行权限,这在win中排除了windows、program files中无法写入文件的问题。
图片6.png
这里为了展示下危害使用管理员权限打开notepad++
图片7.png
可以看到执行了dll,并且是以管理员权限打开的。因为只是演示,所以并没有完整的回调notepad++正常的dll,所以note在进程中存在。
COM对象劫持
有关com组建/对象的介绍和劫持内容可以看下倾旋表哥的文章
https://payloads.online/archivers/2018-12-22/1#0x06-%E4%BB%80%E4%B9%88%E6%98%AFcom
其中通俗易懂的介绍了com组建在渗透测试中的应用(pass uac/pass av/持久化后门)。
好吧我是不会承认我说不明白到底咋回事的。
过程就是hkcu-hkcr-hklm
三段映射,应用程序对于某些command命令执行会先寻找hkcu,不存在再去寻找hkcr,而我们的权限可以操作hkcu,这样的原理就和dll劫持很相似了。
过几天有时间的话可能会写几个pass uac的实例,以及如何批量在windows上寻找pass uac的切入点。

Invoke-PSImage bypass anti-virus

https://github.com/peewpw/Invoke-PSImage

通过对png的像素快中插入powershell代码来隐藏payload。在通过ps的功能将png中的payload读取并执行。
文章在网上有很多人已经写了如何使用以及原理,所以本文只是自己做记录,日后也能想起我到底都做了什么。

PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Image .\kiwi.jpg -Out .\evil-kiwi.png


PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Image .\kiwi.jpg -Out .\evil-kiwi.png -Web

图片1.png
Cs自带生成的ps1已经被查杀了。
存在两种使用方法,第一种是将生成的png上传到目标主机,然后再执行命令。
第二种是生成png后命令采取请求远程web服务器下载缓存图片并执行,可以实现无文件落地。

图片2.png
图片3.png
可以看到已经执行了payload,如果能够配合passuac的话,就可以通过无文件落地+管理员权限执行shell。
尽管是两年前的技术,但是还是能绕过大部分的国内杀毒。