Good in study, attitude and health

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

  • Study Notes Weekly No.3(Use odbcconf to load dll & Get-Exports & ETW USB Keylogger)

    About: Use odbcconf to load dll Use powershell to get dll exports Use Event Tracing for Windows to log keystrokes from USB keyboards 目录: 介绍为什么通过odbcconf加载dll可以绕过在命令行下对regsvr32的拦截 比ExportsToC++更方便的批量输出dll导出函数的工具——ExportsToC++ 通过ETW实现对USB键盘的键盘记录,记录测试心得 0x01 Use odbcconf to load dll Reference: https://twitter.com/subTee/status/789459826367606784 简介 如图,Casey Smith在twitter分享的一个技巧,如果将执行regsvr32加载dll的代码写在.rsp文件中,再通过odbcconf.exe去调用,这样可以绕过在命令行下对regsvr32的拦截。本文将要介绍为什么可以绕过在命令行下对regsvr32的拦截。 odbcconf: 用于配置ODBC驱动和数据源 详细说明见如下链接: https://msdn.microsoft.com/en-us/library/ee388579(v=vs.85).aspx 用法如图 值得注意的是odbcconf包含一个注册dll的功能,我在之前的文章《Code Execution of Regsvr32.exe》中具体介绍过如何开发可被regsvr32调用的dll,编写一个测试dll进行测试(此处略,不再重复介绍)。 cmd下运行: odbcconf.exe /a...

  • 渗透测试中的Application Compatibility Shims

    0x00 前言 Application Compatibility是一个框架,主要用来解决应用程序在新版Windows系统上的兼容性问题。然而在渗透测试中它却有着更多的用处,本文将对公开资料进行整理,介绍在渗透测试中的具体利用技术,帮助大家更好的认识它,防御它。 0x01 简介 Shim: 相当于是在应用程序和Windows API之间的逻辑层。 当应用程序创建进程的时候,WindowsLoader首先会检查sysmain.sdb(位于%windir%\AppPatch\),如果存在已注册的sdb文件,IAT将被重定向到Shim,实现功能替换。 本文将介绍以下内容: 创建Shim文件 实际利用方法 相关开源工具 检测和防御 0x02 创建Shim文件 1.Microsoft Application Compatibility Toolkit(ACT) 下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=7352 默认修复方式种类个数为365 启动时加入/x参数可获得更多修复方式,总数807 如图 根据提示创建后生成.sdb文件,需要安装使其生效 可在Microsoft Application Compatibility Toolkit中直接选择安装,如图 0x03 实际利用方法 1.Hiding in the Registry 选择VirtualRegistry Command line填入: ADDREDIRECT(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run^HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHidden) 安装shim 启动regedit HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下键值无法查看,如图 但在cmd下执行如下命令可以查看: reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 如图 2.Hiding...

  • 故障诊断平台在渗透测试中的应用技巧

    0x00 前言 近日,Proofpoint的Matthew Mesa和Axel F发现了一种新型钓鱼方式,攻击者将故障排除包(troubleshooting pack)作为邮件附件,欺骗用户运行,隐蔽执行Payload。他们在文章中介绍了攻击者采用的方法和隐藏手段,提示用户对此提高警惕。 文章链接: https://www.proofpoint.com/us/threat-insight/post/windows-troubleshooting-platform-leveraged-deliver-malware 本文将站在技术研究的角度,介绍如何开发一个包含payload的故障排除包,并结合攻击思路分析防御方法,希望能帮助大家对这项技术有进一步的认识。 0x01 简介 Windows故障诊断平台: 英文翻译Windows Troubleshooting Platform,缩写为WTP 开发商可基于该平台编写故障排除包(troubleshooting pack),帮助用户解决遇到的PC问题 WTP结构如图 图片引用自https://msdn.microsoft.com/en-us/library/windows/desktop/dd323706(v=vs.85).aspx 简要流程如下: 检查故障排除包的数字签名,如果不可用,直接退出 依次执行检测脚本(detection scripts)、解决脚本(resolution scripts)、验证脚本(verification scripts),尝试解决故障 生成结果报告和调试报告 故障排除包: 由五个组件构成: 故障排除清单(Troubleshooting manifest) 检测脚本(detection scripts) 解决脚本(resolution scripts) 验证脚本(verification scripts) 本地化资源(localized resources) 详情如图 引用自https://msdn.microsoft.com/en-us/library/windows/desktop/dd323706(v=vs.85).aspx 0x02 开发故障排除包 官方开发工具: TSPDesigner 注: 该工具包含于Windows 7 SDK中 实际测试只有v7.0和v7.1包含此工具 Windows...

  • Netsh persistence

    About: Common commands of netsh Matthew Demaske’s way of using netshell to execute evil dlls and persist on a host Write a dll with the InitHelperDll function How to use Detection 目录: 介绍netsh的常用命令 测试Matthew Demaske分享的方法——using netshell to execute evil dlls and persist on a host 如何使用c++编写导出函数为InitHelperDll的helper dll 实际测试利用 防御和检测 Reference:...

  • Use MSBuild To Do More

    0x00 前言 最近Casey Smith@subTee更新了一系列关于”MSBuild”的研究进展,对我有很大启发。 本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧: Execute PowerShell Commands Execute PE file Execute Shellcode VisualStudio Persistence 0x01 简介 MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台 MSBuild可在未安装Visual Studio的环境中编译.net的工程文件 MSBuild可编译特定格式的xml文件 更多基本知识可参照以下链接: https://msdn.microsoft.com/en-us/library/dd393574.aspx 0x02 常规用法 1. 编译xml文件并执行代码 <?xml version="1.0" encoding="utf-8" ?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="PrintCurrentDateTime"> <Message Text="The current date and time is: $(&#91;System.DateTime&#93;::Now)." /> </Target> </Project> 保存为test.csproj...

  • Study Notes Weekly No.2(Shellcode Via JScript & VBScript)

    About: DynamicWrapperX Generate shellcode Write JS and SCT script How to use Detection 目录: 介绍如何配置使用脚本附加库DynamicWrapperX 通过JS/VBS实现对win32 API的调用 如何在js脚本中加载shellcode 结合sct的攻击思路 补充在64位下的使用方法 对该方法的检测 Reference: http://subt0x10.blogspot.com/2016/09/shellcode-via-jscript-vbscript.html 0x00 前言 Casey Smith@subTee近日更新了新的博客,介绍了如何利用脚本附加库DynamicWrapperX实现JS/VBS对win32 API的调用,我很感兴趣,于是对其进行了学习研究。本文用来记录测试心得并补充个人理解。 0x01 DynamicWrapperX简介 1. 下载获得dynwrapx.dll 下载地址: http://www.script-coding.com/dynwrapx_eng.html 注册DynamicWrapperX: regsvr32 /i dynwrapx.dll 卸载DynamicWrapperX: regsvr32 /u /i dynwrapx.dll 注: /i表示对当前用户操作,当前用户权限即可;如何不加/i,代表对所有用户操作,需要管理员权限 /s可去掉注册成功弹出的提示框 2. 通过JS/VBS来调用win32 API 注册组件后就可以通过JS/VBS来调用win32...