Good in study, attitude and health

  • 渗透技巧——Windows下NTFS文件的USN Journal

    0x00 前言 在上篇文章《渗透技巧——Windows下NTFS文件的时间属性》介绍了修改NTFS文件时间属性的方法和细节,以及取证上的建议。 本文将要继续研究NTFS文件另一处记录文件修改时间的位置——USN Journal,同样是分析利用思路,给出取证上的建议。 0x01 简介 本文将要介绍以下内容: 基本概念 读取USN Journal的方法 利用思路 取证建议 0x02 USN Journal的基本概念 官方文档: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/bb742450(v=technet.10) USN Journal (Update Sequence Number Journal),也称作Change Journal,用来记录NTFS volume中文件修改的信息,能够提高搜索文件的效率 每个NTFS volume对应一个USN Journal,存储在NTFS metafile的$Extend\$UsnJrnl中,也就是说,不同的NTFS volume对应的USN Journal不同 USN Journal会记录文件和目录的创建、删除、修改、重命名和加解密操作,每条记录的格式如下: typedef struct { DWORD RecordLength; WORD MajorVersion; WORD MinorVersion; DWORDLONG FileReferenceNumber; DWORDLONG ParentFileReferenceNumber; USN Usn; LARGE_INTEGER...

  • 渗透技巧——Windows下NTFS文件的时间属性

    0x00 前言 在渗透测试中,如果需要在目标系统上释放文件,将会改变父目录的时间属性(AccessTime,LastWriteTime,MFTChangeTime),如果需要覆盖目标系统上原有的文件,也会改变原有文件的时间属性(CreateTime,AccessTime,LastWriteTime,MFTChangeTime) 站在渗透的角度,需要找到修改文件时间属性的方法,用来消除痕迹 站在取证的角度,通过文件属性的异常能够找到攻击者的入侵痕迹 本文将会介绍修改文件属性的方法和细节,分享实现代码,结合利用思路给出在取证上的建议 0x01 简介 本文将要介绍以下内容: 基本概念 读取文件属性的方法 修改文件属性的方法 分享代码 利用思路 取证建议 0x02 基本概念 1、NTFS文件系统中的时间属性 包括以下四个: CreateTime(Created) AccessTime(Accessed) LastWriteTime(Modified) MFTChangeTime 前三个可通过右键->Properties获得,如下图 无法直接查看MFTChangeTime MFTChangeTime记录MFT(Master File Table)的修改时间,如果文件属性变化,就会更新MFTChangeTime 2、读取MFTChangeTime的方法 (1)通过NtQueryInformationFile读取 注: 通过WinAPI GetFileTime无法获得 (2)解析NTFS文件格式 Master File Table中的$STANDARD_INFORMATION(偏移0x10)和$FILE_NAME(偏移0x30)包含完整的文件属性 3、Win7系统默认CreateTime和AccessTime保持一致 Win7系统(以及更高版本)默认设置下,禁用了AccessTime的更新 也就是说,只读取文件的操作不会改变文件属性AccessTime,AccessTime同CreateTime保持一致,这是为了减少硬盘的读写 对应注册表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,键值NtfsDisableLastAccessUpdate 数值1代表禁用,为默认配置,数值0代表开启,修改注册表后重启系统才能生效 4、文件属性的变化规律 读取文件: 不会改变文件属性 覆盖文件: 改变4个属性 5、文件夹属性的变化规律 新建文件/删除文件/重命名文件: 改变父文件夹的AccessTime,LastWriteTime和MFTChangeTime...

  • 渗透技巧——Windows下的Remote Registry

    0x00 前言 Windows下的Remote Registry允许远程用户修改当前计算机的注册表设置 在渗透测试中,获得了管理员权限后,可以利用Remote Registry服务作为后门 我受到harmj0y博客的启发,打算对Remote Registry的后门利用方法做扩展,并且加入一些我在研究GPO的经验,整理成文。 参考资料: http://www.harmj0y.net/blog/activedirectory/remote-hash-extraction-on-demand-via-host-security-descriptor-modification/ 0x01 简介 本文将要介绍以下内容: Remote Registry的开启方法 工作组和域环境下的利用方法 防御检测 0x01 Remote Registry的正常使用 测试环境: Win7x64 192.168.112.128 1、开启Remote Registry服务 net start remoteregistry 2、添加ACL(Access Control List) 注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg (1)通过界面添加权限,指定用户 如下图 (2)通过poweshell实现 添加用户test1的完全访问权限 $acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg $person = [System.Security.Principal.NTAccount]"test1" $access = [System.Security.AccessControl.RegistryRights]"FullControl" $inheritance = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit,ContainerInherit" $propagation...

  • 渗透技巧——Windows下的Access Control List

    0x00 前言 Windows系统中的ACL(Access Control List),用来表示用户(组)权限的列表。 在渗透测试中,理解并运用ACL,尤其在后门利用(提权)方面,可供发挥的空间很大。 而站在防御的角度,如果系统被攻破,找到并清除攻击者留下的ACL后门,同样需要对ACL有一定的了解。 0x01 简介 本文将要介绍以下内容: ACL相关概念 查看ACL ACL利用(文件、注册表和域环境) ACL检测 0x02 ACL相关概念 官方文档: https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/access-control-lists ACL: Access Control List,用来表示用户(组)权限的列表,包括DACL和SACL ACE: Access Control Entry,ACL中的元素 DACL: Discretionary Access Control List,用来表示安全对象权限的列表 SACL: System Access Control List,用来记录对安全对象访问的日志 直观理解: Windows访问控制模型中会用到ACL,比如文件、注册表的权限都包括ACL,用来表示哪些用户(组)具有操作权限 例如对某个文件进行访问,系统将做以下判断: 如果没有DACL,系统将允许访问 如果存在DACL,但没有ACE,系统将拒绝所有访问 如果存在DACL,也存在ACE,那么会按照每个ACE指定允许或拒绝 实例演示 对于文件夹C:\Windows\SYSVOL\sysvol\test.com,查看文件夹属性 默认共有五条DACL,如下图 选中一条DACL,其中包含多个ACE,表示具有的权限,如下图 0x03 文件中的ACL 常用命令(icacls): 1、查看指定文件的ACL...

  • 渗透技巧——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...