Active Directory PowerShell模块收集AD信息

0x00 前言简介

Microsoft为Windows Server 2008 R2(以及更高版本)提供了多个Active Directory PowerShell cmdlet,这大大简化了以前需要将涉及到的ADSI冗长代码行放在一起的任务。

在Windows客户端上,需要安装远程服务器管理工具(RSAT并确保已安装Active Directory PowerShell模块。而在Windows服务器(2008 R2或更高版本)上的 PowerShell控制台(作为管理员)中运行如下命令:Import-Module  ServerManager ; Add-WindowsFeature RSAT-AD-PowerShell

0x01  AD的目录预览

AD PowerShell cmdlet和以下方式执行效果一样:

Import-module  activeDirectory

$UserID = “JoeUser”

Get-ADUser $UserID –property *

需要值得注意的是使用PowerShell v3版本以及高版本,你无需运行第一行命令,因为PowerShell的将识别必要的模块和自动加载它。一旦加载了Active Directory PowerShell模块,就可以像浏览文件系统那样浏览AD。命令如下:

Ps> Import-module  activeDirectory

Ps>dir ad:

Ps>set-location  ad:

Ps >set-location  “dc=lab,dc=adsecurity,dc=org”

Ps>dir

0x02 查找有用的命令(Cmdlet)

1.基本的模块和统计

发现可用的PowerShell模块:Get-Module -ListAvailable

PowerShell模块中发现cmdlet:Get-Command -module ActiveDirectory

PowerShell AD模块的Cmdlet个数:

(Get-Command -module ActiveDirectory).count

  • Windows Server 2008 R2: 76 cmdlets
  • Windows Server 2012: 135 cmdlets
  • Windows Server 2012 R2: 147 cmdlets
  • Windows Server 2016: 147 cmdlets

WINDOWS SERVER 2008 R2主要的cmdlets:

Get/Set-ADForest

Get/Set-ADDomain

Get/Set-ADDomainController

Get/Set-ADUser

Get/Set-ADComputer

Get/Set-ADGroup

Get/Set-ADGroupMember

Get/Set-ADObject

Get/Set-ADOrganizationalUnit

Enable-ADOptionalFeature

Disable/Enable-ADAccount

Move-ADDirectoryServerOperationMasterRole

New-ADUser

New-ADComputer

New-ADGroup

New-ADObject

New-ADOrganizationalUnit

WINDOWS SERVER 2012含以版本一些新的cmdlets:

*-ADResourcePropertyListMember

*-ADAuthenticationPolicy

*-ADAuthenticationPolicySilo

*-ADCentralAccessPolicy

*-ADCentralAccessRule

*-ADResourceProperty

*-ADResourcePropertyList

*-ADResourcePropertyValueType

*-ADDCCloneConfigFile

*-ADReplicationAttributeMetadata

*-ADReplicationConnection

*-ADReplicationFailure

*-ADReplicationPartnerMetadata

*-ADReplicationQueueOperation

*-ADReplicationSite

*-ADReplicationSiteLink

*-ADReplicationSiteLinkBridge

*-ADReplicationSubnet

*-ADReplicationUpToDatenessVectorTable

Sync-ADObject

2.发现全局目录 GLOBAL CATALOGS (GCS)

Forest GCs(森林全局目录):

import-module ActiveDirectory

$ADForest = Get-ADForest

$ADForestGlobalCatalogs = $ADForest.GlobalCatalogs

Domain DCs that are GCs(以域DCS的全局目录):

import-module ActiveDirectory

$DCsNotGCs = Get-ADDomainController -filter { IsGlobalCatalog -eq $True}

Domain DCs that are not GCs(以非域DCS的全局目录):

import-module ActiveDirectory

$DCsNotGCs = Get-ADDomainController -filter { IsGlobalCatalog -eq $False }

3.查找Active Directory灵活单主机操作(FSMO)角色

活动目录模块:

GET-ADForest).SchemaMaster

GET-ADForest).DomainNamingMaster

GET-ADDomain).InfrastructureMaster

GET-ADDomain).PDCEmulator

GET-ADDomain).RIDMaster

.NET调用:

•Get the Current Domain:
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name


 [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain().Name
• Get the Computer’s Site:
[System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite()
• List All Domain Controllers in a Domain:
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers
• Get Active Directory Domain Mode:
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainMode
• List Active Directory FSMOs:
([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).SchemaRoleOwner


([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).NamingRoleOwner


([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).InfrastructureRoleOwner


([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).PdcRoleOwner


([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).RidRoleOwner

•Get Active Directory Forest Name:

 [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name

• Get a List of Sites in the Active Directory Forest:

 [array] $ADSites = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Sites

• Get Active Directory Forest Domains:

[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Domains

• Get Active Directory Forest Global Catalogs:

[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs

• Get Active Directory Forest Mode:

[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().ForestMode

• Get Active Directory Forest Root Domain:

[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().RootDomain

4.FSMO角色从一个DC移动到另一个DC

get-command -module activedirectory -noun *Master*

•Moving FSMO Roles:

 Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole RIDMaster

Move-ADDirectoryServerOperationMasterRole -Identity $DCName -

OperationMasterRole DomainNamingMaster

Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole PDCEmulato

•Seizing FSMO Roles:

Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole PDCEmulator –FORCE

0x03 Active Directory PowerShell模块Cmdlet示例

1.Get-RootDSE

获取有关LDAP服务器(域控制器)的信息并显示其内容,结果中有一些有趣的信息,比如DC运行的操作系统信息。

 

2.Get-ADForest

提供有关运行该命令计算机所在的Active Directory森林信息。

 

3.Get-ADDomain

提供有关当前所在域的信息

4.Get-ADDomainController

提供特定于域控制器的计算机信息,通过cmdlet命令,可轻松查找到特定站点中的所有DC或运行OS版本信息。

 

5.Get-ADComputer

提供了关于AD中大多数计算机对象的信息,使用“-Prop *”参数运行的命令可以显示所有标准属性信息。

6. AD计算机的统计

$Time = (Measure-Command `

{[array] $AllComputers = Get-ADComputer -filter * -properties

Name,CanonicalName,Enabled,passwordLastSet,SAMAccountName,LastLogonTimeSt

amp,DistinguishedName,OperatingSystem }).TotalMinutes

$AllComputersCount = $AllComputers.Count

Write-Output “There were $AllComputersCount Computers discovered in

$DomainDNS in $Time minutes… `r “

7.Get-ADUser

提供了想要了解有关AD用户的大部分内容信息,使用“-Prop *”参数运行的命令可以显示所有标准属性信息。

 8. AD用户的统计

import-Module ActiveDirectory

$DomainDNS = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name

[array]$AllUsers = Get-ADUser -filter * -properties

Name,DistinguishedName,Enabled,LastLogonDate,LastLogonTimeStamp,LockedOut,msExchHom

eServerName,SAMAccountName

$AllUsersCount = $AllUsers.Count

Write-Output “There were $AllUsersCount user objects discovered in $ADDomainDNSRoot … “

[array] $DisabledUsers = $AllUsers | Where-Object { $_.Enabled -eq $False }

$DisabledUsersCount = $DisabledUsers.Count

[array] $EnabledUsers = $AllUsers | Where-Object { $_.Enabled -eq $True }

$EnabledUsersCount = $EnabledUsers.Count

Write-Output “There are $EnabledUsersCount Enabled users and there are $DisabledUsersCount

Disabled users in $DomainDNS “

9.Get-ADGroup

提供有关AD组的信息,运行如下命令可查找所有安全组:
Get-ADGroup -Filter {GroupCategory -eq ‘Security}

10.Get-ADGroupMember

枚举并返回组成员信息,使用”-Recursive”参数可包括嵌套组的所有成员。
Get-ADGroupMember ‘Administrators’ -Recursive

11.查找非活动计算机

以下示例查找非活动(旧版本)计算机和用户:在过去10天内未更改其密码的帐户。请注意,这是一个测试示例。对于实际的生产环境,将此建议更改为计算机的60到90天,用户的180到365天的策略。

 

12.查找非活动用户

13.枚举域信任

14.获取活动目录的实施日期

15.获取AD密码策略

16.获取AD站点信息
请注意Windows 2012模块中包含站点的cmdlet(Get-ADReplicationSite *)。

17. 获得tombstonelifetime信息

18.AD的回收信息

Requires Forest Functional Mode = Windows Server 2008 R2

• Enable the Recycle Bin (as Enterprise Admin)

Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory

Service,CN=Windows NT,CN=Services,CN=Configuration,DC=DOMAIN,DC=COM’ –Scope

ForestOrConfigurationSet –Target ‘DOMAIN.COM’

• Find all Deleted Users

$DeletedUsers = Get-ADObject -SearchBase “CN=Deleted Objects,DC=DOMAIN,DC=COM” -Filter

{ObjectClass -eq “user”} -IncludeDeletedObjects -Properties lastKnownParent

• Restore all Deleted Users

$DeletedUsers | Restore-ADObject

• Restore users deleted on a specific date

$ChangeDate = Get-Date (“1/1/2015″)

Get-ADObject -Filter { (whenChanged -eq $changeDate) -and (isDeleted -eq $true) -and (name -ne

“Deleted Objects”) -and (ObjectClass -eq “user”) } -IncludeDeletedObjects -Properties * | RestoreADObject

19.DOMAIN RID STATS(域 rid 统计)

 

20.备份域GPO
请注意,这需要安装组策略PowerShell模块,该模块与Active Directory模块分开。

21.查找AD Kerberos服务帐户

22. 服务账号脚本

https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Find-PSServiceAccounts

使用SPNS在AD中发现服务:SQl

列出SQL服务:

https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers

 

23.列出域控制器
Get-ADDomainController-filter * | `select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | `format-table -auto

24.DOMAIN CONTROLLERS DISCOVERY(域控制器的发现)

• Discover PDCe in domain(发现域的PDCe
Get-ADDomainController –Discover –ForceDiscover –Service “PrimaryDC” –
DomainName “lab.adsecurity.org”
• Discover DCs in a Site(发现站点的DCs
Get-ADDomainController –Discover –Site “HQ”
• Find all Read-Only Domain Controllers that are GCs(查找所有作为GCs的只读域控制器)
Get-ADDomainController –filter `
{ (isGlobalCatalog –eq $True) –AND (isReadOnly –eq $True) }

25.AD数据库完整性检查

Write-Output "Checking the NTDS database for errors (semantic database

analysis) `r "

Stop-Service ntds -force

$NTDSdbChecker = ntdsutil "activate instance ntds" "semantic database

analysis" "verbose on" "Go" q q

Start-Service ntds

Write-Output "Results of Active Directory database integrity check: `r "

$NTDSdbChecker

26.Get-ADReplicationPartnerMetadata

Windows Server 2012及更高版本,此命令用于显示目标DC复制伙伴的复制元数据

 

27.Get-ADReplicationPartnerFailure

提供有关DC复制失败状态的信息,此命令显示AD复制错误的描述,CMDLETS (2012)

 

28.Get-ADReplicationUptodatenessVectorTable

跟踪域控制器之间的复制状态,CMDLETS (2012)

29.AD Web服务(ADWS)

需要在目标DC上运行AD Web服务(ADWS)(TCP 9389

Get-ADDomainController –Discover –Service “ADWS”

 

30.REPADMIN(目录复制工具) VS. POWERSHELL

REPADMIN

PowerShell

 

2012 Cmdlets

/FailCache

Get-ADReplicationFailure

/Queue

Get-ADReplicationQueueOperation

/ReplSingleObj

Sync-ADObject

/ShowConn

Get-ADReplicationConnection

/ShowObjMeta

Get-ADReplicationAttributeMetadata

/ShowRepl
/ReplSum

Get-ADReplicationPartnerMetadata

/ShowUTDVec

Get-ADReplicationUpToDatenessVectorTable

/SiteOptions

Set-ADReplicationSite

 

2008 R2 Cmdlets

/ShowAttr

Get-ADObject

/SetAttr

Set-ADObject

/PRP

Get-ADDomainControllerPasswordReplicationPolicy

Add-ADDomainControllerPasswordReplicationPolicy

 

Remove-ADDomainControllerPasswordReplicationPolicy

 

Get-ADAccountResultantPasswordReplicationPolicy

 

Get-ADDomainControllerPasswordReplicationPolicyUsage

 



 

转载于:https://www.cnblogs.com/backlion/p/9267100.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

anaconda对应python版本_Python基础——如何查看python版本、如何查看多个python版本

前言初学者来说,安装python过程是存在一定难度的。在安装过程中,可能安装了多个python版本,可能安装了anaconda导致有自带的python,同时本身电脑也安装了官方下载的python也茫然不知。导致可能有以下情况发生:1.pip in…

MATLAB统计与回归

11.1 前言統計的技巧與資料分析常常形影不離。一般統計使用加法、累加法、平均值,中間值等等,由於處理的對象是矩陣資料,故其基本統計之技巧已經廣為應用,其觀念也會在正常之運作中出現。統計學中比較特殊應用者為機率、亂數、常態…

yii2通过url访问类中的方法_每日学点---nginx变量使用方法详解(3)

也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串。我们来看一个例子:location /test { set $orig_args…

python语言format用法_详解Python中的format格式化函数的使用方法

format函数实现字符串格式化的功能 基本语法为: 通过 : 和 {} 来控制字符串的操作 一、对字符串进行操作 1. 不设置指定位置,按默认顺序插入 ①当参数个数等于{}个数的时候 str_1 "小明{}小美,可是小美{}小明".format("喜欢", &quo…

ps安装了可以打开但开始里面找不到_PS2018打开了钢笔压力但却没有压感的解决方法...

1.首先应确定是否安装数位板的驱动,如果驱动出现问题也可以试着重装一下。2.(这里以Photoshop CC 2018为例)接下来检查这个“始终对‘大小’使用‘压力’”按钮是否打开,如果是关闭的,试着打开。3.随后F5进入“画笔”选…

t检验的p值对照表_论文数据分析实战 | 如何对汇总数据进行t检验

在SPSS统计分析交流群中有学员在阅读论文的过程中看到下面的这张表格:这张表中记录了第16届世界男子篮球锦标赛中国队与前8名球队进攻指标比较的结果,其中这份表格并没有给出详细的P值,而只是告诉我们P值小于多少。在这种只有汇总数据&#x…

for命令不跳过空白行_Java程序员必备:查看日志常用的linux命令

iwenhou趁周末,复习一下鸟哥的linux私房菜,看了文件内容查阅部分,做个笔记,哈哈,希望对你有帮助哦。catcat : 由第一行开始显示文件所有内容参数说明cat [-AbEnTv] 参数: -A : 相当于-vET 的整合参数&#…

Java并发编程笔记之Semaphore信号量源码分析

JUC 中 Semaphore 的使用与原理分析,Semaphore 也是 Java 中的一个同步器,与 CountDownLatch 和 CycleBarrier 不同在于它内部的计数器是递增的,那么,Semaphore 的内部实现是怎样的呢? Semaphore 信号量也是Java 中一个…

设计模式--命令模式

实验16:命令模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解命令模式的动机,掌握该模式的结构; 2、能够利用命令模式解决实际问题。 [实验任务]:多次撤销和重复的命令模式 某系…

wxpython界面切换_Python图形界面开发—wxPython库的布局管理及页面切换

前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C 编写)封装实现。GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验。虽然在GUI的控件和窗口布局上可以使用坐标,但更多…

javah找不到类文件

这样即可,在src目录下寻找类,类要写全,即包名.类名 转载于:https://www.cnblogs.com/Java-Starter/p/9283830.html

python卸载opencv_20.Windows python,opencv的安装与卸载

本机Windows7系统,之前安装了Python3.5的版本,后来因为要装opencv,而opencv只支持Python2.7的版本,所以需要将Python3.5进行卸载。在控制面板-卸载程序,将Python卸载后删除其注册表等残留文件 下载Python2.7&#xff0…

LinuX 硬盘分区细节详谈 【 整理至 LinuxSir BY FreeXploiT 】

系统引导过程及硬盘分区结构论述作者: zhy2111314来自: LinuxSir.Org ouc.edu.cn摘要: 本文是理论性文档,主要讲述系统引导过程以及硬盘的物理结构;正文一、系统引导过程简介系统引导过程主要由以下几个步骤组成(以硬盘…

破解WEP密钥过程全解(上)

WLAN技术出现之后,“安全”就成为始终伴随在“无线”这个词身边的影子,针对无线网络技术中涉及的安全认证加密协议的攻击与破解就层出不穷。现在,因特网上可能有数以百计,甚至以千计的文章介绍关于怎么攻击与破解WEP,但…

bfc是什么_一次弄懂css的BFC

前言BFC在css的学习中是重要的但不易理解的概念,BFC也牵扯了很多其他问题,如浮动、定位、盒模型等,因此弄懂BFC是很有必要的。本文对BFC进行总结,希望对你有所帮助。BFC是什么?先看看MDN的定义:块格式化上下…

ES6模块的import和export用法总结

ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如sea…

windows网关详解 【了解网关的重要性,增加网络性能】【FreeXploiT综合文】

理解Windows中的路由表和默认网关 每一个Windows系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息。路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信都受到路由表的控制。 理解路由表 你可以运行 route …

隐藏该监视器无法显示模式_【春星开讲 | 9137】达芬奇4K调色监看的好伙伴——明基PD2720U专业显示器...

近几年来,4K制作成为影视行业的一个热词,从标清到高清,从高清到超高清,从2K到4K,影视前期拍摄设备和后期制作流程都在发生着剧烈的变革。单就我所从事的影视调色行业而言,4K调色也是很多调色师梦寐以求但也…

了解WWW服务与HTTP协议 【入门与应用】

轻松认识HTTP协议的概念和工作原理 当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如:www.microsoft.com,但是在浏览器的地址栏里面出现的却是:http://www.microsoft.com,你…

flex 下对齐_flex布局

基本概念在父元素上启用display:flex 开启弹性布局,子元素叫flex item,父元素叫flex container父元素的属性flex-dirention属性有4个值.box { flex-direction: row | row-reverse | column | column-reverse; }row(默认值)&#x…