Good in study, attitude and health

  • 《Lateral Movement — SCM and DLL Hijacking Primer》的利用扩展

    0x00 前言 《Lateral Movement — SCM and DLL Hijacking Primer》介绍了三个dll(wlbsctrl.dll、TSMSISrv.dll和TSVIPSrv.dll)可以通过SCM(Service Control Manager)实现远程执行。本文将要扩展这三个dll的用法,分别介绍提权和后门利用的方法 文章链接: https://posts.specterops.io/lateral-movement-scm-and-dll-hijacking-primer-d2f61e8ab992 0x01 简介 本文将要介绍以下内容: 利用wlbsctrl.dll实现的提权 利用TSMSISrv.dll和TSVIPSrv.dll实现的后门 利用MF.dll实现的后门 0x03 wlbsctrl.dll的利用 1、原文中的用法 IKEEXT(IKE and AuthIP IPsec Keying Modules)服务在启动时会加载wlbsctrl.dll,但Windows系统默认配置下该dll不存在,如果我们将自己的dll放在这个位置,在服务启动时就能加载该dll POC: https://github.com/djhohnstein/wlbsctrl_poc 测试系统: Win7 x64 这里使用的dll不需要指定导出函数,所以可以直接使用之前我的测试dll: https://github.com/3gstudent/test/raw/master/calc_x64.dll 本地执行的用法: (需要管理员权限) copy calc_x64.dll C:\Windows\System32\wlbsctrl.dll sc query IKEEXT sc stop IKEEXT sc start IKEEXT 远程执行的用法: copy...

  • 对APT34泄露工具的分析——HighShell和HyperShell

    0x00 前言 最近APT34的6款工具被泄露,本文作为分析文章的第二篇,仅在技术角度对其中的HighShell和HyperShell进行分析 参考资料: https://malware-research.org/apt34-hacking-tools-leak/amp/ 0x01 简介 本文将要介绍以下内容: 对HighShell的分析 对HyperShell的分析 小结 0x02 对HighShell的分析 对应泄露文件的名称为Webshells_and_Panel中的HighShell 其中的文件为HighShell.aspx,是针对Windows服务器的webshell 默认访问页面如下图 Login框为红色,需要输入连接口令 正确的口令为Th!sN0tF0rFAN 输入正确的口令后,点击Do it,刷新页面,成功登录,如下图 Login框变为绿色 该工具的公开线索: https://unit42.paloaltonetworks.com/unit42-twoface-webshell-persistent-access-point-lateral-movement/ HighShell同paloaltonetworks在文中提到的TwoFace的页面相同 0x03 对HyperShell的分析 对应泄露文件的名称为Webshells_and_Panel中的HyperShell 下面包含7个文件夹: ExpiredPasswordTech HyperShell Image Libraries packages ShellLocal StableVersion 1.ExpiredPasswordTech 包括3个文件: error4.aspx,功能与HighShell.aspx相同,但登录口令未知 ExpiredPassword.aspx,适用于Exchange的webshell MyMaster.aspx,生成字符串:NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a 2.HyperShell 包含多个文件,是各个webshell的源码文件 其中包含另一个可用的webshell,相对路径:.\Webshells_and_Panel\HyperShell\HyperShell\Shell\simple.aspx 连接口令:MkRg5dm8MOk 如下图 3.Image 图片文件夹 4.Libraries 包含多个依赖文件 5.packages...

  • 对APT34泄露工具的分析——PoisonFrog和Glimpse

    0x00 前言 最近APT34的6款工具被泄露,本文仅在技术角度对其中的PoisonFrog和Glimpse进行分析 参考资料: https://malware-research.org/apt34-hacking-tools-leak/amp/ 0x01 简介 本文将要介绍以下内容: 对PoisonFrog的分析 对Glimpse的分析 小结 0x02 对PoisonFrog的分析 对应泄露文件的名称为posion frog 包括两部分文件: agent,包含文件poisonfrog.ps1,是通过powershell实现的木马程序 server side,对应木马控制端,使用Node.js开发 1、agent实现的功能 1. 在%public%\Public文件夹下释放三个文件 dUpdater.ps1 hUpdater.ps1 UpdateTask.vbs 释放文件的具体功能如下: (1)dUpdater.ps1 生成一个当前系统的专有标志 读取当前系统的代理设置 通过HTTP协议从c2服务器下载文件 根据下载文件的内容进行下一步操作,包括执行命令,上传文件和下载文件 (2)hUpdater.ps1 生成一个当前计算机的专有标志 创建以下文件夹 %public%\Public<id> %public%\Public<id>\reveivebox %public%\Public<id>\sendbox %public%\Public<id>\done 通过DNS A记录从c2服务器接收控制命令 执行命令并回传结果 (3)UpdateTask.vbs 内容如下: command0 = "Powershell.exe -exec bypass -file C:\Users\Public\Public\hUpdater.ps1"...

  • 渗透测试中的Node.js——利用C++插件隐藏真实代码

    0x00 前言 在之前的文章《渗透测试中的Node.js——Downloader的实现》开源了一个使用Node.js实现Downloader的代码,简要分析在渗透测试中的利用思路。 Node.js的语法简单易懂,所以Node.js代码也很容易被分析。 为了增加Node.js代码被分析的难度,我的思路是利用Node.js的一个功能,将payload以C++插件的形式进行封装。 这样不但能够增加Node.js代码被分析的难度,而且可以用C++代码来实现payload,已有的C++代码经过简单的修改即可使用,减小二次开发的成本。 0x01 简介 本文将要介绍以下内容: C++插件简介 搭建C++插件的开发环境 C++插件代码实例 利用思路 防御建议 0x02 C++插件简介 Node.js C++插件是用C++编写的动态链接库,可以使用require()函数加载到Node.js中。利用V8提供的API,可以实现JavaScript和C++的互相调用,打通JavaScript和C++之间的接口。 官方文档: https://nodejs.org/api/addons.html 使用实例: 编译成功一个C++插件,导出方法为:hello 使用Node.js调用C++插件导出方法的代码如下: const addon = require('./addon.node'); addon.hello(); 执行代码 node.exe test.js 0x03 搭建C++插件的开发环境 1、Windows开发环境 测试系统:Win7sp1 x64 需要安装以下工具: .NET Framework 4.5.1或更高版本 Python 2.7 Visual Studio 2015或更高版本 具体搭建流程如下: 1.安装.NET Framework 4.5.1 https://www.microsoft.com/en-US/download/details.aspx?id=5842...

  • 渗透测试中的Node.js——Downloader的实现

    0x00 前言 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。 我最近在一篇文章中学到了利用Node.js绕过主动防御的技巧,于是对Node.js的语法进行了学习,开源一个Downloader的实现代码,分享脚本开发中需要注意的细节。 Node.js绕过主动防御的学习地址: https://bbs.pediy.com/thread-249573.htm 0x01 简介 本文将要介绍以下内容: 基本概念 利用Node.js实现的文件释放 利用Node.js实现的downloader 利用思路 防御建议 0x02 基本概念 Node.js同JavaScript的区别 JavaScript是一门语言 Node.js是一个基于Chrome V8引擎的JavaScript运行环境 虽然在Windows平台下,二者的脚本文件后缀名都是.js,但二者之间的区别很大,语法也不同 Node.js的使用 官方文档: https://nodejs.org/api/ 中文资料: http://www.runoob.com/nodejs/nodejs-tutorial.html 下载地址: https://nodejs.org/en/download/ 在Windows平台下,Node.js代码保存在.js后缀名的文件中,通过node.exe加载执行 Node.js支持第三方包,可通过npm命令安装模块,实例如下: 安装web框架模块express: npm install express 使用模块express: var express = require('express'); 注: 本文涉及的代码均不使用第三方包,只使用安装包中的node.exe 0x03 利用Node.js实现的文件释放 实现思路: 将exe文件做base64编码存储在文件中,释放时先读取文件进行解码,最后写入文件 1. 读取文件内容,做base64编码并输出到data.txt function base64_encode(file)...

  • 域渗透——DNS记录的获取

    0x00 前言 在域渗透中,对域环境的信息搜集很关键,如果我们获得了域内管理员的权限,那么如何能够快速了解域内的网络架构呢?DNS记录无疑是一个很好的参考。 本文将要介绍在域渗透中,获得DNS管理员权限后,获取DNS记录的方法 0x01 简介 本文将要介绍以下内容: 通过DNS Manager获取DNS记录 通过dnscmd获取DNS记录 域内远程读取DNS记录的方法 0x02 通过DNS Manager获取DNS记录 测试系统: Windows Server 2008 R2 x64 选择Administrative Tools -> DNS 在Forward Lookup Zones下找到当前域名,能够显示当前域内的DNS记录,包括主机名和对应的IP 如下图 0x03 通过dnscmd获取DNS记录 dnscmd: 用来管理DNS服务器的命令行接口,支持远程连接 默认安装的系统: Windows Server 2003 Windows Server 2008 Windows Server 2003 R2 Windows Server 2008 R2 Windows Server 2012...

  • 模拟可信目录的利用技巧扩展

    0x00 前言 在上篇文章《通过模拟可信目录绕过UAC的利用分析》对通过模拟可信目录绕过UAC的方法进行了分析,本文将结合自己的经验,继续介绍模拟可信目录的另外三种利用技巧,最后给出防御建议 0x01 简介 本文将要介绍以下内容: 利用模拟可信目录绕过Autoruns 利用模拟可信目录欺骗ShimCache 利用模拟可信目录伪造正常的UAC弹框 0x02 利用模拟可信目录绕过Autoruns 绕过原理: Autoruns默认不显示带有微软签名的文件,如果文件包含微软签名,默认不会显示在Autoruns面板 在Windows系统的启动位置写入模拟可信目录下的文件,由于被识别为正常带有微软签名的文件,默认将不会显示在Autoruns面板 经过测试,并不适用于所有的启动位置,具体测试如下: 创建模拟的可信目录,添加测试文件: md "\\?\c:\windows " md "\\?\c:\windows \system32" copy c:\test\putty.exe "\\?\c:\windows \system32\notepad.exe" copy c:\test\calc.dll "\\?\c:\windows \system32\atl.dll" 1、注册启动项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 系统启动时启动文件"C:\Windows \System32\notepad.exe",添加注册表的命令如下: reg add hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v RunTest /t REG_SZ /d "\"c:\windows \system32\notepad.exe\"" 注: "在cmd下转义后用\"表示 Autoruns检测注册表项,将其识别为notepad.exe,如下图 但在系统开机时启动的是正常notepad.exe,而不是putty.exe,失败 2、注册启动项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的Userinit 查询原注册表项:...

  • 通过模拟可信目录绕过UAC的利用分析

    0x00 前言 从@CE2Wells的博客学到的一个技巧,通过模拟可信目录能够绕过UAC,本文将对结合自己的经验对这个方法进行介绍,添加自己的理解,分享测试中的细节 文章地址: https://medium.com/tenable-techblog/uac-bypass-by-mocking-trusted-directories-24a96675f6e 0x01 简介 原理介绍 实现细节 实际测试 利用分析 0x02 原理介绍 1、Long UNC 在之前的文章《Catalog签名伪造——Long UNC文件名欺骗》曾介绍过exe文件使用Long UNC后能够欺骗系统,将其识别为另一个文件 例如: type putty.exe > "\\?\C:\Windows\System32\calc.exe " 如下图 这个方法同样适用于文件夹 例如: md "\\?\c:\windows " 新创建的文件夹能够欺骗系统,将其识别为另一个文件夹 如下图 2、默认能够绕过UAC的文件 需要满足以下三个条件: 程序配置为自动提升权限,以管理员权限执行 程序包含签名 从受信任的目录("c:\windows\system32")执行 3、普通用户权限能够在磁盘根目录创建文件夹 例如,普通用户权限能够在c盘下创建文件夹 4、dll劫持 exe程序如果在启动过程中需要加载dll,默认先搜索exe程序的同级目录 综上,满足了绕过UAC的所有条件 实现的思路如下: 找到一个默认能够绕过UAC的文件,例如c:\windows\system32\winsat.exe 使用Long UNC创建一个特殊的文件夹"c:\windows \",并将winsat.exe复制到该目录 执行winsat.exe,记录启动过程,发现启动时需要加载同级目录下的WINMM.dll 编写payload.dll,指定导出函数同c:\windows\system32\winmm.dll相同,并命名为"c:\windows \system32\WINMM.dll"...

  • 渗透技巧——Windows command line process auditing的绕过

    0x00 前言 command line process auditing是Windows的一项功能,开启该功能后,ID为4688的日志将会记录进程创建时的命令行参数 本文将要介绍通过修改进程参数绕过日志记录的方法,测试开源工具SwampThing,分享实现SwampThing的C语言代码,分析利用思路,给出防御建议 SwampThing的地址: https://github.com/FuzzySecurity/Sharp-Suite/blob/master/SwampThing 0x01 简介 本文将要介绍以下内容: 实现原理 开启command line process auditing的方法 测试SwampThing 通过c++实现SwampThing 利用思路 防御建议 0x02 实现原理 方法上同创建傀儡进程类似,区别在于这个方法只修改新进程的CommandLine参数 关于傀儡进程的技术细节,可参考之前的文章: 《傀儡进程的实现与检测》 实现思路: 通过CreateProcess创建进程,传入参数lpCommandLine,传入参数CREATE_SUSPENDED使进程挂起 修改新进程的Commandline参数 通过ResumeThread唤醒进程,执行新的Commandline参数 如果新进程没有退出,再将Commandline参数还原 在具体实现上,还需要考虑以下问题: 1、进程的选择 启动的进程需要能够加载Commandline参数,例如cmd.exe,powershell.exe,wmic.exe等 2、修改远程进程的Commandline参数 通过NtQueryInformationProcess找到远程进程的基地址,计算偏移获得Commandline参数的位置,再分别通过ReadProcessMemory和WriteProcessMemory对Commandline参数进行读写 补充: 修改当前进程的Commandline参数可参考: https://github.com/3gstudent/Homework-of-C-Language/blob/master/MasqueradePEBtoCopyfile.cpp 0x03 开启command line process auditing 官方文档: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing 该功能默认关闭,需要手动配置来开启 1、执行gpedit.msc进入组策略 2、开启进程审核功能 英文系统:...

  • 域渗透——Kerberoasting

    0x00 前言 Kerberoasting是域渗透中经常使用的一项技术,本文将参考公开的资料,结合自己的理解,详细介绍Kerberoasting的原理和实现,以及一个后门利用的方法,最后给出防御建议。 参考资料: http://www.harmj0y.net/blog/powershell/kerberoasting-without-mimikatz/ http://www.harmj0y.net/blog/redteaming/from-kekeo-to-rubeus/ https://malicious.link/post/2016/kerberoast-pt1/ https://malicious.link/post/2016/kerberoast-pt2/ https://malicious.link/post/2016/kerberoast-pt3/ https://adsecurity.org/?p=3458 https://adsecurity.org/?page_id=183 https://blog.netspi.com/faster-domain-escalation-using-ldap/ https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spns-setspn-syntax-setspn-exe.aspx 0x01 简介 本文将要介绍以下内容: Kerberoasting相关概念 Kerberoasting的原理 Kerberoasting的实现 Kerberoasting的后门利用 Kerberoasting的防御 0x02 基本概念 SPN 官方文档: https://docs.microsoft.com/en-us/windows/desktop/AD/service-principal-names 全称Service Principal Names SPN是服务器上所运行服务的唯一标识,每个使用Kerberos的服务都需要一个SPN SPN分为两种,一种注册在AD上机器帐户(Computers)下,另一种注册在域用户帐户(Users)下 当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下 当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下 SPN的格式 serviceclass/host:port/servicename 说明: serviceclass可以理解为服务的名称,常见的有www, ldap, SMTP, DNS, HOST等 host有两种形式,FQDN和NetBIOS名,例如server01.test.com和server01 如果服务运行在默认端口上,则端口号(port)可以省略 查询SPN 对域控制器发起LDAP查询,这是正常kerberos票据行为的一部分,因此查询SPN的操作很难被检测 (1) 使用SetSPN Win7和Windows...