Good in study, attitude and health

  • 渗透技巧——Windows中net session的利用

    0x00 前言 在Windows系统中,使用net use命令能够实现远程连接网络中其他计算机的共享资源,连接建立后会创建一个net session。 在渗透测试中,如果我们获得了一台Windows主机的权限,在上面发现了net session,就可以利用这个net session,使用net session的token创建进程。 0x01 简介 本文将要介绍以下内容: 查看net session的方法 net session的利用 net session的清除 利用思路 防御建议 0x02 测试环境 COMPUTER01: Win7 x64 域内一台主机 192.168.10.2 使用帐号test1登录 DC: Server2008 R2x64 域控服务器 192.168.10.1 在DC上使用域管理员帐号Administrator通过net use远程连接COMPUTER01,如下图 0x03 查看net session的方法 1、cmd命令 net session 如下图 2、LogonSessions 下载地址: https://docs.microsoft.com/en-us/sysinternals/downloads/logonsessions 如下图 可以发现,net session的Logon type为Network 3、c++实现...

  • 域渗透——利用GPO中的计划任务实现远程执行(命令行实现原理与脚本细节)

    0x00 前言 在上篇文章《域渗透——利用GPO中的计划任务实现远程执行》介绍了利用GPO中的计划任务实现远程执行的方法,分析利用思路,通过命令行实现了GPO和计划任务的创建、修改和删除。 这篇文章将要详细介绍命令行实现的原理和脚本的开发细节,记录定位问题和解决问题的过程。 0x01 简介 本文将要介绍以下内容: 定位问题 解决思路 脚本实现细节 0x02 定位问题 测试环境:Windows Server 2008 R2 domain:test.com 测试1 通过Group Policy Management Console (GPMC) 创建GPO,添加计划任务(Immediate Task) 成功实现计划任务的远程执行 测试2: 使用命令行实现创建GPO并添加计划任务(Immediate Task),步骤如下: 1、创建一个GPO new-gpo -name TestGPO1 | new-gplink -Target "dc=test,dc=com" GpoId为d7dacd95-883c-402f-9238-9e2643f8f309,如下图 2、创建计划任务的配置文件ScheduledTasks.xml 路径为:\\test.com\SYSVOL\test.com\Policies\{D7DACD95-883C-402F-9238-9E2643F8F309}\User\Preferences\ScheduledTasks ScheduledTasks.xml的内容如下: <ScheduledTasks clsid="{CC63F200-7309-4ba0-B154-A71CD118DBCC}"> <ImmediateTaskV2 clsid="{9756B581-76EC-4169-9AFC-0CA8D43ADB5F}" name="debug" image="0" changed="2018-12-11 11:11:11" uid="{92272F3D-762C-460A-94FA-F3E3B9EBACF0}"...

  • 域渗透——利用GPO中的计划任务实现远程执行

    0x00 前言 在之前的文章《渗透基础——Windows下计划任务的使用》曾介绍过计划任务的用法。而在域环境中,通过组策略(Group Policy Object)同样能够实现计划任务的远程执行,本文将要对这个方法进行介绍,分析利用思路。 0x01 简介 本文将要介绍以下内容: GPO中的计划任务简介 通过Group Policy Management Console (GPMC) 实现计划任务的远程执行 通过命令行实现计划任务的远程执行 新建GPO实现远程执行 修改已有的GPO,实现远程执行 GPO的常用操作 0x02 简介 值得阅读的资料: http://www.harmj0y.net/blog/redteaming/abusing-gpo-permissions/ https://adsecurity.org/?p=2716 http://www.sicherheitsforschung-magdeburg.de/uploads/journal/MJS_052_Willi_GPO.pdf GPO全称Group Policy Objects,用来存储Active Directory中的策略 自Windows Server 2008开始,GPO开始支持计划任务,便于管理域中的计算机和用户 默认情况下,域用户的组策略每90分钟更新,随机偏移为0-30分钟,域控制器的组策略每5分钟更新 注: 可通过命令实现组策略的强制更新 默认组策略的保存位置:\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\,所有域内主机都能访问 注: 之前的文章《域渗透-利用SYSVOL还原组策略中保存的密码》曾介绍过这个文件位置 默认存在两个组策略,每个文件夹对应一个组策略: {6AC1786C-016F-11D2-945F-00C04fB984F9}对应Default Domain Controllers Policy {31B2F340-016D-11D2-945F-00C04FB984F9}对应Default Domain Policy 如下图 0x03 通过Group Policy...

  • Exchange Web Service(EWS)开发指南

    0x00 前言 Exchange Web Service(EWS)提供了一个访问Exchange资源的接口,我在github没有找到很合适的参考项目,于是对这方面的内容做一个系统性的整理,开源一份EWS的实现代码ewsManage,便于后续的二次开发。 0x01 简介 本文将要介绍以下内容: 使用EWS Managed API访问Exchange资源 使用EWS SOAP XML message访问Exchange资源 开源代码ewsManage ewsManage功能介绍 0x02 简介 官方文档: https://docs.microsoft.com/en-us/exchange/client-developer/exchange-server-development 两种访问Exchange资源的方法: 使用EWS Managed API 使用EWS SOAP XML message 测试环境: Exchange Server 2013 SP1 user: test1@test.com pwd: test123! url: https://test.com/ews/Exchange.asmx AutodiscoverUrl: test1@test.com 0x03 使用EWS Managed API 官方资料: https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-managed-api-client-applications 这里使用EWS Managed...

  • 渗透技巧——RecentFileCache.bcf和Amcache.hve单条记录的清除

    0x00 前言 在上篇文章《渗透技巧——Windows系统文件执行记录的获取与清除》对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。 本文作为后续,详细介绍RecentFileCache.bcf和Amcache.hve单条记录的清除方法 0x01 简介 RecentFileCache.bcf格式分析 编写程序实现RecentFileCache.bcf的单条记录清除 Amcache.hve格式分析 编写程序实现Amcache.hve的单条记录清除 0x02 RecentFileCache.bcf格式分析 简介 用来跟踪应用程序与不同可执行文件的兼容性问题,能够记录应用程序执行的历史记录 支持Win7(Win8及更高版本的系统不支持),位置: C:\Windows\AppCompat\Programs\RecentFileCache.bcf 格式分析 没有找到介绍RecentFileCache.bcf文件格式的资料,但好在格式的规律比较简单 前20字节为文件头部(header) 前16字节为固定格式,如下图 接下来是每条记录的内容,固定格式如下: 前4字节表示Unicode记录的长度 记录的内容(Unicode格式) 结束标志,0x0000 注: Unicode每个字符占用2个字节 下面使用c程序实现RecentFileCache.bcf文件的解析 定义结构体 typedef struct _BCF_HEADER { ULONG64 Flag1; ULONG64 Flag2; ULONG Unknown; } BCFHEADER, *PBCFHEADER; typedef struct _BCF_RECORD { ULONG Size; } BCFRECORD, *PBCFRECORD;...

  • 渗透技巧——Windows系统文件执行记录的获取与清除

    0x00 前言 站在渗透的角度,当获得了一台Windows主机的权限后,需要全面了解这台Windows主机的信息,文件执行记录是重要的部分。 而站在防御的角度,文件执行记录包含系统的重要信息,对其进行针对性的清除很有必要。 所以本文将尝试对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。 参考链接: https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1 https://xz.aliyun.com/t/3067#toc-5 0x01 简介 本文将要介绍以下内容: 从日志获得文件执行记录 从注册表获得文件执行记录 从文件获得文件执行记录 实例测试 利用和防御思路 0x02 从日志获得文件执行记录 1、进程创建(ID:4688) 使用条件: 系统默认关闭该功能,需要手动设置开启 Policy location: Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Advanced Audit Configuration -> Detailed Tracking Policy Name: Audit Process Creation 命令行获得日志信息: wevtutil qe security /rd:true...

  • 渗透基础——使用Go语言开发socks代理工具

    0x00 前言 在上篇文章《渗透基础——端口转发与代理》提到了使用go语言分别实现正向和反向socks代理的方法,不仅开发效率高,而且能够很方便的实现跨平台编译。 本文将要进一步介绍Windows系统和Kali系统下使用Go语言开发的完整过程,并基于开源代码,实现一个socks正向和反向代理的工具,记录细节。 0x01 简介 本文将要介绍以下内容: Windows系统下Go语言开发环境的搭建 Kali系统下Go语言开发环境的搭建 工具代码细节 开源完整实现代码 0x02 Windows系统下Go语言开发环境的搭建 测试系统: Win7x64 1、安装Go 下载安装: https://golang.org/dl 或者 https://studygolang.com/dl 2、安装git https://gitforwindows.org/ 用来下载第三方开发包 0x03 代码实现与Windows系统下的跨平台编译 1、安装第三方包 需要以下三个: golang.org/x/net/context https://github.com/armon/go-socks5 https://github.com/hashicorp/yamux 安装流程如下: (1)安装golang.org/x/net/context go-socks5依赖,否则安装时会提示: go\src\github.com\armon\go-socks5\request.go:10:2: cannot find package “golang.o rg/x/net/context” in any of: C:\Go\src\golang.org\x\net\context (from $GOROOT ) C:\Users\a\go\src\golang.org\x\net\context (from $GOPATH) 在线安装:...

  • 渗透技巧——Junction Folders和Library Files的后门利用

    0x00 前言 维基解密公布的CIA Vault 7中涉及到了Windows系统中Junction Folders和Library Files的利用 地址如下: https://wikileaks.org/ciav7p1/cms/page_13763381.html https://wikileaks.org/ciav7p1/cms/page_13763373.html Jayden Zheng对此做了分析,分享了一个Library Files的后门利用方法,并且详细介绍了如何检测Junction Folders和Library Files的恶意利用 地址如下: https://www.countercept.com/blog/hunting-for-junction-folder-persistence/ https://www.countercept.com/blog/abusing-windows-library-files-for-persistence/ 本文将基于以上参考资料,比较Junction Folders和Library Files,对Library Files的后门利用方法做进一步利用(更加隐蔽),开源一个POC,并且在检测上面分享自己的理解 0x01 简介 本文将要介绍以下内容: Junction Folders的利用方法 Library Files的利用方法 Library Files后门的进一步利用 检测和识别 0x02 Junction Folders的利用方法 Junction Folders可以简单理解为一个能够跳转到另一位置的文件夹 创建的三种常用方法: 修改注册表项 修改文件夹内的desktop.ini 使用特殊的文件名,例如test.{ED7BA470-8E54-465E-825C-99712043E01C} 对于第三种方法,特定的CLSID对应特定的文件路径 如果我们通过注册表创建一个CLSID,并指定dll路径,那么在打开该文件夹时,会加载该dll 1、实际测试 测试dll为执行计算器,可供参考的下载地址: https://github.com/3gstudent/test/raw/master/calc.dll (1)修改注册表,添加注册表项 bat命令如下: SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32...

  • 渗透基础——端口转发与代理

    0x00 前言 在渗透测试中,经常会使用到端口转发和代理。 端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。 实际应用中需要考虑两种情况: Client->Transit server->Server:Client能够正向连接Transit server。Transit server直接转发即可 Client<-Transit server->Server:Client无法正向连接Transit server,但Transit server能够反向连接Client。 如果Client要对Server的多个端口进行扫描(或是多个Server的多个端口),逐个配置转发规则很不现实。 为了提高效率,这里可以使用代理,配置一次规则即可。 本文将对常用方法和工具进行整理总结,分门别类,区分正向和反向连接,区分转发和代理,分析其中的联系和区别,并给出应用场景,以作参考。 0x01 简介 本文将要介绍以下内容: 针对Windows系统和Linux系统(Ubuntu和CentOS)下的方法 端口转发——正向连接的方法 端口转发——反向连接的方法 正向代理的方法 反向代理的方法 以上方法的应用场景 注: Go语言支持跨平台编译,所以本文更侧重于介绍Go语言实现的工具 0x02 端口转发——正向连接 0、应用场景 1.流量转发的跳板 用于隐藏真实的服务器地址 CIA Hive Beacon Infrastructure中端口转发使用的是Linux的iptables 如下图中的(2) 注: 中转服务器的搭建可参考之前的文章《CIA Hive Beacon Infrastructure复现1——使用Apache mod_rewrite实现http流量分发》和《CIA Hive Beacon Infrastructure复现2——使用Apache mod_rewrite实现https流量分发》 2.建立通道 连接内网服务器的指定端口 Client能够正向连接到Transit...

  • CVE-2017-8360(Keylogger in HP Audio Driver)利用分析

    0x00 前言 2017年5月,瑞士安全公司Modzero的安全研究员Thorsten Schroeder发现HP的Conexant音频驱动中存在Keylogger,非法记录用户的键盘输入。 本文仅在技术研究的角度,测试和分析利用方法,给出防御建议,纠正部分文章中出现的错误理解。 0x01 简介 本文将要介绍以下内容: 漏洞简要介绍 漏洞复现 利用思路 防御建议 0x02 漏洞简要介绍 可供参考的资料: https://www.modzero.ch/advisories/MZ-17-01-Conexant-Keylogger.txt 用户在安装HP的Conexant音频驱动后,将会创建计划任务,在用户登录后执行文件MicTray.exe 注: 32位程序为MicTray.exe,64位程序为MicTray64.exe 启动MicTray.exe会记录用户的键盘输入,以两种方式保存: 写入文件C:\Users\Public\MicTray.log 通过WinAPI OutputDebugString()记录内容,可被其他程序读取 0x03 漏洞复现 关于漏洞复现的参考资料: https://diablohorn.com/2017/05/12/repurposing-the-hp-audio-key-logger/ 本节会对参考资料中的内容做扩展,介绍读取OutputDebugString()中记录的方法 存在漏洞的驱动下载地址: ftp://whp-aus1.cold.extweb.hp.com/pub/softpaq/sp79001-79500/sp79420.html 该地址已经失效,单个文件的下载地址: MicTray.exe: https://www.virustotal.com/nl/file/e882149c43976dfadb2746eb2d75a73f0be5aa193623b18b50827f43cce3ed84/analysis/ MicTray64.exe: https://www.virustotal.com/nl/file/c046c7f364b42388bb392874129da555d9c688dced3ac1d6a1c6b01df29ea7a8/analysis/ 测试系统: Win7 x64(更新补丁) 记录方法1.将键盘记录内容写入文件C:\Users\Public\MicTray.log (1)添加注册表 使用MicTray.exe: reg add hklm\SOFTWARE\Wow6432Node\Conexant\MicTray\Hotkey /v CustomSettings /t REG_DWORD /d 1...