首先看一下EventID 4662的样子

0x01  什么情况下会产生该日志呢?

该日志出现在对Active Directory Object设置SACL时会出现

0x02  为什么要监控该日志呢?

1、非法人员入侵后的异常提权(更多安全审核监控建议详见https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/appendix-a-security-monitoring-recommendations-for-many-audit-events

2、运维过程中的错误操作溯源

0x03  该日志中每一项的含义是什么?

详细的日志含义请参考微软官网(https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4662

0x04  需要重点关注哪些字段?

Account Name:具体操作对象是谁? 个人认为高低权限帐号均应被监控,万一是低权限帐号被提权呢?

Access Mask:具体的操作类型是什么?

Note  GUID:具体操作的对象是什么?这里我们打算展开说一下

0x05  GUID

UUID的二进制编码因系统而异。许多系统完全以大端序(big-endian)编码UUID。Microsoft在其COM/OLE库中对UUID进行编组,使用混合端格式,其中UUID的前三组是小端序/小尾序(little-endian),后两组是大端序/大尾许(big-enaian),这也是为什么日志中显示出来的GUID要通过ldap filter是需要进行转换(前三组每个部分都需要更改(反转)字节顺序,而后两组不需要),例如日志中的“bf967a86-0de6-11d0-a285-00aa003049e2”放到ldap 搜索里要转换成“\ 86 \ 7a \ 96 \ bf \ e6 \ 0d \ d0 \ 11 \ a2 \ 85 \ 00 \ aa \ 00 \ 30 \ 49 \ e2”。

但是这里存在一个问题,我们一般会将日志集中(具体工具看个人习惯),然后通过例如storm此类工具进行日志分析,分析的过程中我们肯定不能一边分析一边去转换日志中的guid,然后再去查询每个guid的含义,这样会大大降低日志检索的时效性,于是我们想到了去离线这些GUID的含义,于是翻遍微软所有文档,没有一个地方有统一的汇总,看来只能自己搞了。

0x06  如何离线存储所有GUID以及对应的Object

首先,该GUID对应AD中的属性名称是schemaIDGUID,我们从AD的图形界面看到的也是八进制的格式。

我们尝试通过Powershell去检索该属性对应的值,发现出来的结果也是10进制的

这里我们需要的GUID相差甚远,所以我们需要想办法转译他们,进行人工翻译:

#将架构信息全部保存

$Schema = [ADSI]("LDAP://CN=Schema,CN=Configuration,DC=xxx,DC=xxx")

$CNs = $Schema.Children

#循环遍历所有对象的schemaIDGUID

foreach($CN in $CNs){
$name = $CN.adminDisplayName
$guidstring = $null
$a = $CN.schemaIDGUID -split " "
$b = $a.Length
for ($i = 0; $i -lt $b; $i++) {
$c = $a[$i]
#转成十进制
$number = [Convert]::ToInt32("$c", 10)
   #转成十六进制 
$number = $number.ToString('X')
#这块有个比较恶心的地方,Powershell输出的十六进制如果开头是0,则会去掉该0,直接显示下一个数字,下面的判断其实可以优化,可以去掉第一个if,只要不足2位直接添加0即可
if ($number -eq "") {
$number = ""
}
if ($number.Length -lt "") {
$number = "" + $number
}
#将每组10进制转换16进制后的字符进行拼接
$guidstring += $number
}
#将拼接的字符转为16进制,然后再转成guid的形式
[System.Byte[]]$byte = ($guidstring -split '(..)' | ? {$_} | % { [System.Convert]::ToInt64($_, 16)})
[System.Guid]$guid = new-object System.Guid(, $byte)
#在屏幕中输出guid以及该object对应的名称,当然也可以直接输入到文本中进行保存
Write-Host $guid,$name

通过以上方式,我们就可以得到全部架构对象的schemaIDGUID属性了,我们可以将其组成一个List,方便我们写日志监控时对日志中的guid进行快速匹配,从而清楚的了解“到底修改了什么?”

 

域控安全-EventID 4662&Powershell将Schema下Objects的schemaIDGUID属性离线保存的更多相关文章

  1. DW(四):Azure域控服务器配置

    polybase集群要求使用相同的域账号,本节介绍选择用Azure虚拟机搭建自己的内网DNS服务器和域控 创建虚拟网络polybase,创建名为DNS的子网,如下图: 创建虚拟机,选择polybase ...

  2. 一次完整的从webshell到域控的探索之路

    前言 内网渗透测试资料基本上都是很多大牛的文章告诉我们思路如何,但是对于我等小菜一直是云里雾里. 于是使用什么样的工具才内网才能畅通无阻,成了大家一直以来的渴求. 今天小菜我本着所有师傅们无私分享的精 ...

  3. windows server 2008额外域控提升为主域控

    windows server 2008额外域控提升为主域控 ---图形界面操作方法 https://blog.csdn.net/tladagio/article/details/79618338 wi ...

  4. 域控场景下windows安全日志的分析--审计认证行为和命令的历史记录

    https://www.cnblogs.com/KevinGeorge/p/8563458.html 一.域控windows安全日志基本操作 1.打开powershell或者cmd 1 #gpedit ...

  5. Windows Server 2012部署第一台域控

    windows server 2012在部署DC方面有了一些改变,不但在操作上有一些改变,而且有了新的DC克隆的功能.本文就先来体验一下如何将一台windows server 2012 RTM服务器提 ...

  6. 服务器搭建域控与SQL Server的AlwaysOn环境过程(四)配置AlwaysOn

    0 引言 这一篇才真正开始搭建AlwaysOn,前三篇是为搭建AlwaysOn 做准备的. 步骤 1.3 配置AlwaysOn 请先使用本地用户Administrator登录这两个集群节点并执行下面的 ...

  7. Windows server 2012 利用ntdsutil工具实现AD角色转移及删除域控方法

    场景1:主域控制器与辅助域控制器运行正常,相互间可以实现AD复制功能.需要把辅助域控制器提升为主域控制器 ,把主域控制器降级为普通成员服务器:这种场景一般应用到原主域控制器进行系统升级(先转移域角色, ...

  8. 域渗透——获得域控服务器的NTDS.dit文件

    0x00 前言 在之前的文章<导出当前域内所有用户hash的技术整理>曾介绍过通过Volume Shadow Copy实现对ntds.dit文件的复制, 可用来导出域内所有用户hash.本 ...

  9. 001.AD域控简介及使用

    一 AD概述 1.1 AD简介 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系. 当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可 ...

随机推荐

  1. 读书笔记——吴翰清《白帽子讲Web安全》

    目录 第一篇 世界观安全 一 我的安全世界观 第二篇 客户端脚本安全 一 浏览器安全二 跨站脚本攻击(XSS)三 跨站点请求伪造(CSRF)四 点击劫持(ClickJacking)五 HTML5 安全 ...

  2. 6. concat_ws用法

    select  CONCAT_WS('-', e.audit_one_name, e.audit_second_name) from t_audit_item_name e  where e.id= ...

  3. docker系列详解<一>之docker安装

    1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核版本 $ ...

  4. Selenium系列(二) - 控制浏览器操作的详细解读

    如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...

  5. JavaScript(9)--- 跨域

    JavaScript(9)--- 跨域 一.跨域原理(同源策略) 在项目搭建的初期,因为现在项目基本上都是前后端分离,所以不可避免地会遇到跨域问题,而造成跨域的罪魁祸首就是浏览器的同源策略.所以要解决 ...

  6. Webpack抽离第三方类库以及common解决方案

    前端构建场景有两种,一种是单页面构建,另一种是多入口构建多页面应用程序(我视野比较小,目前就知道这两种),下面我们针对这两种场景总结了几种抽离第三方类库以及公共文件的解决方案. 如果有哪些地方优化不周 ...

  7. 计网-ping服务命令与ICMP协议

    目录 一.IP协议的助手 —— ICMP 协议(网络层协议) 二.ping —— 查询报文类型的使用 三.traceroute —— 差错报文类型的使用 参考:从Wireshark抓包软件角度理解PI ...

  8. 【笔记3-26】Python语言基础

    编译型语言和解释型语言 编译型语言 C 先编译 解释型语言 Python 边执行边编译 Python的介绍 吉多·范罗苏姆 1991 解释型语言 Life is short you need Pyth ...

  9. 工作日志,Excel导入树结构数据

    目录 1. 前言 2. 需求分析 2.1 需求难点 2.2 解决难点 2.3 表格设计 3. 功能实现 3.1 一个分枝 3.2 一个分枝多个树叶 3.3 多个分枝多个树叶 4. 代码事例 4.1 目 ...

  10. 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流

    1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...