-
渗透技巧——快捷方式文件的参数隐藏技巧
0x00 前言 最近,phrozensoft在博客中介绍了关于快捷方式的利用技巧,实现了将应用程序存储在快捷方式当中,当用户打开快捷方式时,通过vbs脚本释放应用程序并运行。 我对此很感兴趣,因为快捷方式的参数默认存在长度限制,最大为260,并且我在研究jsrat的过程也遇到过这个问题(最后通过调用sct文件解决了长度限制问题) phrozensoft分享了Delphi格式的POC代码,本文将要对其进行测试,研究lnk的文件格式,开发出对应powershell实现的POC代码,简单分析该技术的利用和防御方法 phrozensoft博客地址: https://www.phrozensoft.com/2016/12/shortcuts-as-entry-points-for-malware-poc-part-2-19 0x01 简介 Delphi 是Windows平台下著名的快速应用程序开发工具 Borland公司研发 也可以在LINUX平台上开发应用,其在LINUX上的对应产品Kylix 常用版本: Borland Delphi 7 Delphi 2010 0x02 Delphi POC测试 phrozensoft博客中也分享了其他功能的poc,如生成lnk文件的python脚本,本文暂不介绍,只测试其中的Delphi POC 环境搭建: 测试系统:Win7 x86 Delphi版本:Delphi 2010 注: 使用Delphi 7会存在编译不通过的错误,提示“File not found System.sysutils.dcu” 换用Delphi 2010后,poc作细微修改编译通过 1.新建工程 打开Delphi 2010 选择File-New-Other-Console Application 直接复制poc代码,提示错误,如图 2.修改poc 经测试,System.SysUtils需要更改为SysUtils 编译通过,如图 3.编译 选择Project-Build All Projects...
-
渗透测试中的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...
-
渗透测试中的ClickOnce
0x00 前言 最近Casey Smith@subTee在《Mimikatz Delivery via ClickOnce with URL Parameters》中介绍了如何在ClickOnce程序中传入URL参数,实现执行mimikatz的技巧,并分享了一个POC 我对此很感兴趣,于是做了进一步的学习和研究 本文将会记录学习心得,介绍ClickOnce的使用方法,总结基于ClickOnce的攻击技巧和防御措施 博客地址: http://subt0x10.blogspot.com/2016/12/mimikatz-delivery-via-clickonce-with.html POC地址: https://gist.github.com/subTee/bd446efeacf656c67f5c17ca0787f15b 0x01 简介 ClickOnce: ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于Windows的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行 使用用ClickOnce主要解决了程序部署中的几个问题: 更新应用程序的困难 使用 Microsoft Windows Installer 部署,每次应用程序更新时,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后会从新的并行文件夹重新安装完整的、更新后的应用程序。 对用户的计算机的影响 使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。 安全权限 Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限 简单理解,ClickOnce部署的优点: 简化安装和更新应用程序的过程 可以自动更新 支持从Web更新 更安全,仅授予应用程序所必需的权限,通常为Intranet区域 详细介绍可参考如下链接: https://msdn.microsoft.com/zh-cn/cn/library/142dbbz4(v=vs.90).aspx...
-
Powershell tricks::Hide Process by kd.exe
0x00 前言 Pierre-Alexandre Braeken在SecTor2016上做了一个很棒的演讲——HACK MICROSOFT BY USING MICROSOFT SIGNED BINARIES 他对自己开源的工具PowerMemory做了介绍,将powershell同使用微软签名的程序相结合,可以绕过Device Guard和杀毒软件的拦截 演讲视频地址: https://sector.ca/sessions/hack-microsoft-by-using-microsoft-signed-binaries/ PowerMemory项目地址: https://github.com/giMini/PowerMemory/ 0x01 简介 PowerMemory内包含的脚本很多,其中一个比较有趣的脚本是Hide-Me.ps1,通过借助kb.exe来实现对进程的隐藏 本文将对该脚本进行测试,介绍进程隐藏的原理,修改原脚本,分析利用和防御方法。 0x02 相关概念 PCB(process control block): 进程控制块,是系统为了管理进程专门设置的一个数据结构 PCB的组织方式: 线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。这种方式适用于系统中进程数目不多的情况 索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等 链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等 不同操作系统的PCB结构不同 Windows下的PCB是EPROCESS结构 进程链表是一个双向环链表 EPROCESS结构: 每个进程都有一个EPROCESS结构,里面保存着进程的各种信息和相关结构的指针 注: Windows各版本的EPROCESS结构存在差异 EPROCESS结构位于系统地址空间,所以访问这个结构需要有ring0的权限 注: Windows开启Local kernel debugging模式后,可进入ring0,使用内核态调试器 基本的内核态调试器有以下两种: kd.exe(KD) 命令行模式 常用于调试内核态的应用程序和驱动程序,调试用户态的应用程序,或者监视操作系统自身的行为等 windbg.exe(WinDbg) 界面模式 可以为Windows内核、内核态驱动程序以及用户态应用程序提供完整的源代码级调试 通过kd.exe可以查看EPROCESS结构,命令行参数如下:...
-
DLL劫持漏洞自动化识别工具Rattler测试
0x00 前言 最近,来自SensePost的Chris Le Roy开源了一款工具:Rattler,可用来自动识别DLL是否存在预加载漏洞(也可以理解为DLL劫持漏洞,文中该名词均采用DLL劫持漏洞)。虽然DLL劫持漏洞已不再是新技术,可追溯到2010年,但是我对自动化很是感兴趣,于是对此做了进一步研究。 本文将理清DLL劫持漏洞原理,实例分析,测试自动化工具Rattler,分享心得,并测试一个存在该漏洞的软件——Explorer Suite安装包 注: Explorer Suite安装包内包含CFF Explorer,免费,常用来编辑PE文件格式,最后更新于2012年11月18日,是比较小众的一款工具。 对于分析PE文件格式,建议使用作者另一款更专业的工具:Cerbero Profiler Chris Le Roy介绍Rattler的博客地址: https://sensepost.com/blog/2016/rattleridentifying-and-exploiting-dll-preloading-vulnerabilities/ Chris Le Roy在BSides Cape Town上也介绍了Rattler,简介如下: http://www.bsidescapetown.co.za/speaker/chris-le-roy/ 0x01 简介 DLL劫持漏洞根源 程序在调用DLL时未指明DLL的完整路径 SafeDllSearchMode 从WindowsXPSP2开始,SafeDllSearchMode默认开启,SafeDllSearchMode的存在是为了阻止在XP时代存在的DLL劫持漏洞 注: 强制关闭SafeDllSearchMode的方法: 创建注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode 值设为0 程序在调用DLL时,如果未指明DLL的完整路径,那么系统会按照一套固定的搜索顺序寻找DLL 如果SafeDllSearchMode开启,程序会依次从以下位置查找DLL文件: The directory from which the application loaded The system directory The 16-bit system...
-
Study Notes of using dnx.exe / rcsi.exe to bypass Decvice Guard UMCI
0x00 前言 在Windows 10 Enterprise和Server 2016引入的新功能Decvice Guard是一种白名单机制,可用来阻止未授权的代码执行。 简单的理解,只要是不包含微软数字签名的程序,均无法用来执行代码。 然而,如果能够找到带有微软签名的程序,那么就能绕过Decvice Guard对应用程序的拦截,实现代码执行。 目前已知的方法有: 1、WinDbg/CDB 可用来执行shell code 作者:Matt Graeber@mattifestation 地址:http://www.exploit-monday.com/2016/08/windbg-cdb-shellcode-runner.html 2、CSI.exe 可用来执行c#代码 作者:Casey Smith@subTee 地址:https://twitter.com/subTee/status/796737674954608641 3、dnx.exe 可用来执行c#代码 作者:Matt Nelson@enigma0x3 地址:https://enigma0x3.net/2016/11/17/bypassing-application-whitelisting-by-using-dnx-exe/ 4、rcsi.exe 可用来执行c#代码 作者:Matt Nelson@enigma0x3 地址:https://enigma0x3.net/2016/11/21/bypassing-application-whitelisting-by-using-rcsi-exe/ 0x01 简介 Matt Nelson@enigma0x3在最近分享了他绕过Decvice Guard的两种方法,这是继Matt Graeber@mattifestation和Casey Smith@subTee后的第三和第四种绕过方法,本文将重现这两个过程,完成他留给读者的两个作业,优化dnx.exe的环境搭建步骤,分享学习心得。 链接如下: https://enigma0x3.net/2016/11/17/bypassing-application-whitelisting-by-using-dnx-exe/ https://enigma0x3.net/2016/11/21/bypassing-application-whitelisting-by-using-rcsi-exe/ 0x02 dnx.exe dnx.exe内置于.NET Execution environment,包含数字签名,可用来执行c#代码 首先搭建dnx.exe的使用环境 参考资料: https://blogs.msdn.microsoft.com/sujitdmello/2015/04/23/step-by-step-installation-instructions-for-getting-dnx-on-your-windows-machine/...
-
War3地图“漏洞”分析介绍
0x00 前言 最近腾讯电脑管家团队对利用《魔兽争霸3》漏洞传播的“萝莉”蠕虫进行了分析,介绍了“萝莉”蠕虫的运行流程。接着该“蠕虫”的作者在其网站对此做了澄清,我们暂且不八卦这个事件,只在技术层面分析一下这个《魔兽争霸3》漏洞到底是什么,如何利用以及如何防御。 “萝莉”蠕虫分析地址: http://www.freebuf.com/news/120136.html “蠕虫”的作者博客地址: https://blog.loxve.com/ 0x01 简介 该《魔兽争霸3》漏洞的流程如下: 1.攻击者上传修改过的魔兽地图,等待其他玩家进入房间游戏 2.玩家进入房间后,由于本地没有该地图,所以会自动下载该地图 3.地图同步后,玩家进入游戏,触发地图中的脚本,该脚本在启动目录写入bat文件 4.玩家电脑重启后,启动目录中的bat文件被执行,成功加载payload 0x02 相关概念 JASS 是《魔兽争霸3》的脚本语言,用于控制地图的进程和行为, 是魔兽游戏和地图的基础 正常的地图编辑中摆放的单位(Unit), 设置的触发(Trigger)等最终都会被翻译成JASS语言,保存在地图文件中,在游戏运行时被调用 HkeW3mModifier 是一个修改MPQ格式文件的工具,可用来修改加密过的mpq文件,带有强大的资源搜索功能,可以搜索出魔兽地图中大部分资源、重建列表,智能解压相关贴图 可用来查看和编辑地图中包含的文件资源 操作说明: 下载HkeW3mModifier.exe,选择地图,点击分析文件查看地图中包含的文件列表,如图 其中,war3map.j包含地图的逻辑控制代码,右键解压war3map.j后可查看其中的代码,部分代码如图 war3map.j中的文件结构 1、变量声明 声明了脚本文件中使用的全局变量 Lost Temple中的变量声明如下: //*************************************************************************** //* //* Global Variables //* //*************************************************************************** globals // Generated trigger gg_trg_Melee_Initialization = null endglobals function InitGlobals takes...
-
Study Notes Weekly No.4(Use tracker to load dll & Use csi to bypass UMCI & Execute C# from XSLT file)
About: use tracker to load dll use csi to bypass Application Whitelisting execute C# from XSLT file 目录: 介绍利用tracker.exe加载dll的方法 如何利用csi.exe绕过Windows Device Guard 在XSLT文件转换过程中执行C#代码 0x01 use tracker to load dll Reference: https://twitter.com/subTee/status/793151392185589760 简介: Casey在Twitter分享的一个技巧,利用tracker.exe能够创建进程,注入dll,特别的是tracker.exe来自于SDK中,包含微软的数字签名,本文将要分享利用该技巧的一些心得,补充一个直接利用tracker.exe加载dll的技巧 Tracker.exe: Tracker.exe is used to start a process and inject FileTracker.dll into it just after creation. The...
-
Joomla 3.4.4-3.6.3 Account Creation &Privilege Escalation测试记录
0x00 简介 涉及漏洞: CVE-2016-8869 CVE-2016-8870 利用上述漏洞,攻击者可以注册特权用户 POC: https://github.com/XiphosResearch/exploits/tree/master/Joomraa https://www.exploit-db.com/exploits/40637/?rss 分析文章: http://paper.seebug.org/88/ http://paper.seebug.org/86/ 注: 0x01和0x02内容节选自分析文章 http://paper.seebug.org/88/ http://paper.seebug.org/86/ 0x01 CVE-2016-8870 漏洞影响 网站关闭注册的情况下仍可创建用户 影响版本 3.4.4 to 3.6.3 漏洞原理 存在两个用于用户注册的方法: 位于components/com_users/controllers/registration.php中的UsersControllerRegistration::register() 位于components/com_users/controllers/user.php中的UsersControllerUser::register() 相对于UsersControllerRegistration::register(),UsersControllerUser::register()的实现中并没有这几行代码: // If registration is disabled - Redirect to login page. if (JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0) { $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false)); return false; } 这几行代码是检查是否允许注册,也就是说如果我们可以用UsersControllerUser::register()这个方法来进行注册就可以绕过这个检测...
-
隐写技巧——利用JPEG文件格式隐藏payload
0x00 前言 继续对图片隐写技巧的学习,这次是对JPEG文件格式的学习和理解。同PNG文件的格式对比,JPEG文件相对简单,读取其中隐藏payload的方式大同小异,两者区别在于文件格式不同,可供利用的细节存在差异。 本文相关工具: 16进制编辑器:Hex Editor 隐写检测:Stegdetect 下载地址: https://github.com/abeluck/stegdetect 编辑Exit信息:MagicEXIF 下载地址: http://www.magicexif.com/ 分析JPEG图片格式:JPEGsnoop 下载地址: http://www.impulseadventure.com/photo/jpeg-snoop.html 0x01 相关概念 JPEG文件 JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写 支持有陨压缩 不支持透明 不支持动画 非矢量 JEPG同JPG的区别 JPEG既可作为扩展名,又能代表文件格式 JPG是JPEG的简写,代表扩展名 JPEG和JPG基本上是没有区别的,它们的格式也是通用的 色彩模型 采用YCrCb色彩模型,更适合图形压缩,而不是RGB Y表示亮度 Cr表示红色分量 Cb表示蓝色分量 人眼对图片上的亮度Y的变化远比色度C的变化敏感. 如果每个点保存一个8bit的亮度值Y, 每2x2个点保存一个CrCb值, 图象在肉眼中的感觉不会起太大的变化,而且节省一半的空间 RGB模型4个点需要4x3=12字节 YCrCb模型4个点需要4+2=6字节 [R G B] -> [Y Cb Cr] 转换: Y...