Good in study, attitude and health

  • 利用JS加载.Net程序

    0x00 前言 最近James Forshaw开源了一个工具DotNetToJScript,能够利用JS/Vbs脚本加载.Net程序,很有趣。 Casey Smith和Cn33liz都对此做了进一步研究,开源了他们的利用代码。 本文将要对该技术作系统整理,帮助大家更好的认识。 0x01 简介 本文将要介绍以下内容: DotNetToJScript编译方法 DotNetToJScript使用方法 利用JS/Vbs执行shellcode 利用JS/Vbs执行powershell脚本 0x02 DotNetToJScript编译方法 DotNetToJScript下载地址: https://github.com/tyranid/DotNetToJScript 使用工具VS2012进行编译 报错1: 缺少程序集引用NDesk.Options 解决方法: 需要添加引用NDesk.Options 下载地址: http://www.ndesk.org/Options 解压缩,工程-添加引用-浏览-\ndesk-options-0.2.1.bin\ndesk-options-0.2.1.bin\lib\ndesk-options\NDesk.Options.dll 接下来,将目标框架指定为.NET Frameword 2.0,重新编译 报错2: 缺少程序集引用Linq 解决方法: 添加对System.Core.dll 3.5的引用 位置: C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll 添加引用后编译成功,分别在两个目录生成DotNetToJScript.exe和ExampleAssembly.dll 0x03 DotNetToJScript使用方法 1、生成js脚本 参数如下: DotNetToJScript.exe -o 1.js ExampleAssembly.dll 执行后,生成1.js 执行1.js,调用ExampleAssembly.dll中的public TestClass()...

  • 利用API NtQueryInformationThread和I_QueryTagInformation实现对Windwos日志监控的绕过

    0x00 前言 在上篇文章《渗透技巧——Windows日志的删除与绕过》中提到一个绕过Windows日志监控的思路:使用API NtQueryInformationThread和I_QueryTagInformation获取线程对应的服务,关闭对应日志记录功能的线程,能够破坏日志功能,并且Windows Event Log服务没有被破坏,状态仍为正在运行。本文将要对其详细介绍,分享使用c++在编写程序上需要注意的细节。 0x01 简介 本文将要介绍以下内容: 程序自身提权 遍历进程中的所有线程 根据线程tid,获取对应的进程pid 根据线程tid,获取对应的服务名称 结束线程 0x02 程序实现 开发工具: VS2012 开发语言: c++ 1、定位eventlog服务对应进程svchost.exe的pid powershell代码如下: Get-WmiObject -Class win32_service -Filter "name = 'eventlog'" | select -exp ProcessId 通过回显能够找出进程svchost.exe的pid 2、程序自身提权,以管理员权限执行 因为进程svchost.exe为系统权限,所以对其线程进行操作也需要高权限,因此,程序需要先提升至管理员权限 提权至管理员权限的代码如下: BOOL SetPrivilege() { HANDLE hToken; TOKEN_PRIVILEGES NewState; LUID luidPrivilegeLUID; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)||!LookupPrivilegeValue(NULL, SE_DEBUG_NAME,...

  • 渗透技巧——Windows日志的删除与绕过

    0x00 前言 在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户,远程登录执行等。 对于一次完整的渗透测试,通常会选择对Windows日志进行清除和绕过,而对于防御者来说,了解常用的绕过方法也有助于更好的保护自己的系统。 所以本文将要介绍常见的Windows日志清除与绕过方法,分享经验,帮助大家。 0x01 简介 本文将要介绍以下内容: Windows日志的常用清除方法 Windows日志的两种绕过方法 0x02 Windows日志 Windows日志包括五个类别: 应用程序 安全 Setup 系统 转发事件 查看方式: 1、 通过面板 位置如下: Control Panel\System and Security-View event logs-Windows Logs 如下图 2、 通过Powershell 常用命令如下: (管理员权限) 查看所有日志: Get-WinEvent 查看应用程序类别下的日志: Get-WinEvent -FilterHashtable @{logname="Application";} 0x03 Windows日志的常用清除方法 1、wevtutil.exe 操作系统默认包含,支持系统:Win7及以上 常用命令如下: (1) 统计日志列表,查询所有日志信息,包含时间,数目 wevtutil.exe gli Application...

  • Use AppDomainManager to maintain persistence

    0x00 前言 从Casey Smith@subTee学到的一个技巧:针对.Net程序,通过修改AppDomainManager能够劫持.Net程序的启动过程。 如果劫持了系统常见.Net程序如powershell.exe的启动过程,向其添加payload,就能实现一种被动的后门触发机制。 学习链接: http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html 0x01 简介 本文将要介绍以下内容: 劫持自己开发的.Net程序 劫持系统.Net程序powershell_ise.exe 一种针对Visual Studio的利用思路 0x02 相关概念 CLR: 全称Common Language Runtime(公共语言运行库),是一个可由多种编程语言使用的运行环境。 CLR是.NET Framework的主要执行引擎,作用之一是监视程序的运行: 在CLR监视之下运行的程序属于“托管的”(managed)代码 不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码 对于在CLR监视之下的程序,程序启动的初始化过程可参考如下链接: http://mattwarren.org/2017/02/07/The-68-things-the-CLR-does-before-executing-a-single-line-of-your-code/ 值得注意的地方: 如果能从程序启动的初始化过程中找到一个可供利用的位置,在程序启动之前加载我们自己的代码,那么就可以“滥用”CLR的功能,实现对程序的劫持 更理想的情况下: 如果可被劫持的程序是一个系统常用程序,随开机自启动,那么,这个方法就能作为一个持续性后门 下面介绍Casey Smith@subTee分享的后门思路:AppDomainManager 0x03 劫持自己开发的.Net程序 注: 代码引用自:http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html 1、编写示例程序 使用Visual Studio,选择c#开发环境,新建控制台应用程序,工程名:program,代码如下: using System; public class Program { public static void Main() {...

  • Use Waitfor.exe to maintain persistence

    0x00 前言 从Casey Smith‏@subTee的Twitter上获得的一个思路,利用Waitfor.exe有可能实现一种后门机制。 于是我对其做了进一步研究,并且使用Powershell写了一个后门利用的POC。 本文将要介绍Waitfor.exe在渗透测试中的利用技巧,并且分享开发POC的思路和细节。 完整POC下载地址如下: https://github.com/3gstudent/Waitfor-Persistence 0x01 简介 本文将要具体介绍以下内容: Waitfor.exe简介 利用思路 POC细节 0x02 Waitfor.exe简介 用来同步网络中计算机,可以发送或等待系统上的信号 支持系统: Windows Server 2003 Windows Vista Windows XP Windows Server 2008 Windows 7 Windows Server 2003 with SP2 Windows Server 2003 R2 Windows Server 2008 R2 Windows Server 2000 Windows Server 2012 Windows...

  • 渗透技巧——程序的降权启动

    0x00 前言 在渗透测试中,常常会遇到需要改变程序启动权限(分为提权和降权)的情况。 提权包含从普通用户权限到管理员权限和从管理员权限到system权限,而渗透测试中的降权通常是指从system权限降到普通用户权限(从管理员权限降到普通用户权限比较简单,方法很多),往往是为了操作当前用户的文件内容(如捕获桌面、操作注册表等) 本文将会介绍具体的降权方法(从system权限降到普通用户权限),理清其中的重点,并且开源一个小工具,用于判断进程权限 0x01 简介 本文将要介绍以下内容: 为什么要降权 从管理员权限降到普通用户权限的方法 从system权限降到普通用户权限的方法 利用SelectMyParent实现提权和降权 注: 测试系统: Win7 0x02 为什么要降权 使用sytem权限的进程可能会遇到以下问题: 1、无法获得当前用户的文件内容 例如无法捕获用户的屏幕 2、环境变量有差异 比如以下环境变量: APPDATA Temp Tmp USERDOMAIN USERNAME USERPROFILE cmd下可通过echo查看环境变量,例如查看环境变量APPDATA的命令为: echo %appdata% system权限下,查询到的环境变量APPDATA为C:\Windows\system32\config\systemprofile\AppData\Roaming 管理员权限下,查询到的环境变量APPDATA为C:\Users\a\AppData\Roaming 如下图 通过API SHGetSpecialFolderPath 获取指定的系统路径,如APPDATA,也能发现权限不同导致的区别 c++代码如下: #include <windows.h> #include <Shlobj.h> bool IsSystemPrivilegeCmp() { static bool isSystemPrivilege = false;...

  • Study Notes of using BGInfo to bypass Application Whitelisting

    0x00 前言 最近看到一篇有趣的文章《Bypassing Application Whitelisting with BGInfo》,介绍了如何通过BGInfo实现白名单绕过,我对此很感兴趣,于是对这部分内容做了学习整理,同时开源了一个powershell脚本,用于自动生成.bgi文件 文章地址如下: https://msitpros.com/?p=3831 0x01 简介 本文将要介绍如下内容: Bginfo简介 通过Bginfo绕过白名单的实际操作 如何使用powershell编辑二进制文件 如何开发powershell脚本自动生成.bgi文件 0x02 Bginfo Bginfo—强大的Windows系统信息显示工具,出自Sysinternals套件 下载地址: https://technet.microsoft.com/en-us/sysinternals/bb897557.aspx 注: bginfo.exe最新版本为4.22,本文测试版本为4.21 1、简介 可以自动在桌面的一个区域中显示当前Windows环境信息 面板如图 设置后,桌面显示Windows环境信息,如图 编辑要显示的信息,可将其保存为config.bgi,使用时将其导入就好 2、Bginfo命令行模式 /h 弹出帮助 如图 通过命令行设置桌面显示信息的命令如下: bginfo.exe config.bgi /timer:0 /nolicprompt /silent 3、扩展: 点击Custom可自定义桌面显示内容,如图 选择New 设置数据源,包括环境变量、注册表键值、WMI、文件、VB Script脚本 4、导入WMI查询: 添加一个WMI查询,如图 在面部添加显示内容,修改桌面,成功显示新内容,如图 5、导入VBS: 添加一个vbs查询,vbs脚本可参考: https://gist.githubusercontent.com/api0cradle/efc90f8318556f0737791b6d73a4ec8b/raw/9a46f4cdacb5752e721e1e3701308939351b4768/gistfile1.txt 该vbs脚本实现:...

  • Study Notes of using SilentCleanup to bypass UAC

    0x00 前言 最近我在James Forshaw‏的博客学到了一个Win10下绕过UAC的技巧,该方法通过脚本实现,并且目前微软还未对该绕过方法进行修复(预计在Win10 RS3修复)。经过我的学习测试,该方法同样适用于Win8,并且文中介绍的绕过思路很值得学习,因此整理成文,分享给大家。 文章地址如下: https://tyranidslair.blogspot.co.uk/2017/05/exploiting-environment-variables-in.html 0x01 简介 本文将要介绍以下内容: 绕过思路 利用方法 防御检测 0x02 绕过思路 在之前文章也分享过一些绕过UAC思路的心得,可参考以下文章: https://3gstudent.github.io/Study-Notes-of-using-sdclt.exe-to-bypass-UAC https://3gstudent.github.io/Study-Notes-Weekly-No.1(Monitor-WMI_ExportsToC++_Use-DiskCleanup-bypass-UAC) 个人认为寻找绕过UAC的方法可分为以下两个步骤: 1、寻找权限控制不严格的程序 通常具有以下特点: 以普通用户权限启动程序 程序默认以高权限启动,通常标记为Highest 2、该程序启动过程是否可被劫持 启动路径是否可被劫持 启动过程加载的问题(如dll)是否可被劫持 0x03 利用方法 对应到James Forshaw‏的方法,也是优先寻找权限控制不严格的程序——计划任务中的SilentCleanup 注: Matt Nelson之前也介绍过一个利用SilentCleanup绕过UAC的方法,目前已被修复,文章地址如下: https://enigma0x3.net/2016/07/22/bypassing-uac-on-windows-10-using-disk-cleanup/ 计划任务中的SilentCleanup: 普通用户权限即可启动 启动后自动提升为高权限 通过Powershell可以获取更多细节,代码如下: $task = Get-ScheduledTask SilentCleanup $task.Principal 注: Win7默认powershell版本2.0,不支持Get-ScheduledTask操作 如下图 Authenticated Users表示普通用户权限即可启动 RunLevel为Highest表示以高权限启动 查看启动参数,powershell代码如下:...

  • 逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe

    0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具体介绍勒索软件的实际运行流程,所以我写了这篇面向初学者的教程,希望帮助大家。 0x01 简介 本文将要介绍以下内容: 样本实际运行流程 IDA动态调试方法 具体调试tasksche.exe的过程 0x02 样本分析 测试环境: Win 7 x86 测试工具: IDA 6.8 样本下载地址: http://bbs.pediy.com/thread-217586-1.htm 经测试,该样本为WanaCrypt0r母体mssecsvc.exe释放出的敲诈者程序tasksche.exe 因此不包含“Kill Switch”开关和MS17-010漏洞利用代码 样本流程分析: 通过逆向分析,样本流程如下图 注: 样本流程图使用processon绘制,在线网址如下: https://www.processon.com/ 0x03 实际测试 1、启动IDA,加载样本文件wcry.exe 找到WinMain(x,x,x,x)函数,在初始位置下断点(快捷键F2),如下图 2、启动调试器 选择Debugger(快捷键F9) 选择Local Win32 debugger,如下图 选择Debugger-Continue process(快捷键F9),进入调试界面,如下图 3、开始单步调试 单步步入快捷键F7 单步步过快捷键F8 执行到 call sub_401225,按F7单步步入,查看该函数的反汇编代码,如下图 为了便于分析,可以输入快捷键F5查看伪代码,如下图 通过代码猜测该函数的功能如下: 调用GetComputerNameW函数获得计算机名 使用rand函数生成一个随机数 二者结合生成一个唯一的ID...

  • An interesting way of bypassing Windows Attachment Manager

    0x00 前言 最近看到了一篇文章《Bypassing Windows Attachment Manager》,作者rvrsh3ll@424f424f,文中介绍了他绕过Windows Attachment Manager的思路,很有趣。 恰好我对文中涉及到的ADS和lnk文件利用有过研究,所以,本文将结合我的一些心得,对该绕过方法做拓展介绍,并分享一个我在实际测试过程中发现的有趣问题 相关文章地址如下: 《Bypassing Windows Attachment Manager》: http://www.rvrsh3ll.net/blog/informational/bypassing-windows-attachment-manager/ 我之前的一些研究心得: 《渗透技巧——快捷方式文件的参数隐藏技巧》 《Hidden Alternative Data Streams的进阶利用技巧》 0x01 简介 本文将要介绍以下内容: Windows Attachment Manager作用 Windows Attachment Manager实现方式 Windows Attachment Manager的绕过思路 特殊文件的构造 实际测试过程中发现的有趣问题 0x02 Windows Attachment Manager 简介 自WinXp SP2开始,微软推出的新功能 用来防止文件从非信任的途径下载后可以直接执行 非信任的途径包括邮件和互联网下载 如果发现文件来自于非信任的途径,那么该文件在打开时会弹框提示用户,需要用户确认才能执行,如图 被标记为High-risk的文件格式如下: .ade,.adp,.app,.asp,.bas,.bat,.cer,.chm,.cmd,.com,.cpl,.crt,.csh,.exe,.fxp,.hlp,.hta,.inf,.ins,.isp,.its,.js,.jse,.ksh,.lnk,.mad,.maf,.mag,.mam,.maq,.mar,.mas,.mat,.mau,.mav,.maw,.mda,.mdb,.mde,.mdt,.mdw,.mdz,.msc,.msi,.msp,.mst,.ops,.pcd,.pif,.prf,.prg,.pst,.reg,.scf,.scr,.sct,.shb,.shs,.tmp,.url,.vb,.vbe,.vbs,.vsmacros,.vss,.vst,.vsw,.ws,.wsc,.wsf,.wsh 详细资料可参考: https://support.microsoft.com/en-us/help/883260/information-about-the-attachment-manager-in-microsoft-windows 实现方式...