Powershell .NET 原生枚举命令

一定要加了域才能成功执行,不然会有红字报错。

为了之后枚举更方便,我们选择使用其他第三方模块帮助我们。

因为PowerView已经被很多第三方杀毒软件标记为病毒,所以我们不选择它。

我们转而使用微软官方支持的ADModule。https://github.com/samratashok/ADModule

导入模块

Import-Module .\\Microsoft.ActiveDirectory.Management.dll
Import-Module .\\ActiveDirectory\\ActiveDirectory.psd1

可以看到,得到的信息比之前的命令详细的多。

接下来用命令获取DC域控机的信息

可以看到,域控机的系统IP地址和域控端口都显示了出来。

我们可以导出查看域控内所有用户的信息。

Get-ADUser -Filter \* -Properties \*  导出所有AD用户的所有信息
Get-ADUser -Filter \* -Properties \* | select name 导出所有AD用户的Name字段
Get-ADUser -Identity P.atf.ssis-de -Properties \* 导出特定AD用户的所有信息

还有一些命令可以帮助我们确认哪些AD用户近期可能是活跃的,比如可以查看所有AD用户的最近一次更改密码的时间。

Get-ADUser -Filter \* -Properties \* | Select name ,@{expression={\[datetime\]:
:fromFileTime($\_.pwdlastset)}}

有些情况下,一些HelpDesk的操作人员为了方便操作,可能会把一些敏感的信息写入到AD用户的Describtion中,我们可以用如下命令进行查询。

Get-ADUser -Filter 'Description -like "\*password\*"' -Properties Description
| select name,Description

查询域内所有计算机信息

Get-ADComputer -Filter \* -Properties \*
Get-ADComputer -Filter \* | select name
Get-ADComputer -Filter 'OperatingSystem -like "\*Server 2016\*"' -Properties OperatingSystem | select Name,OperatingSystem
Get-AdComputer -Filter \* -Properties DNSHostName | %{Test-Connection -Count 1 -ComputerName $\_.DNSHostName}

获取AD域内组信息。

Get-ADGroup -Filter \* -Properties \*
Get-ADGroup -Filter \* | select Name
Get-ADGroup -Filter 'Name -like "\*admin\*"' | select Name

获取AD域内管理员组的用户信息

Get-ADGroupMember -Identity "Domain Admins" -Recursive
Get-ADPrincipalGroupMembership -Identity username

额外提一点,我们枚举Domain Admins这个组时发现的dsad_account就是我们默认的域内默认管理员用户,可以通过SID来判断,SID的前几部分都是和域相关,后面的500这个数字类似于用户ID的概念,这个500就是默认的administrator这个用户。

在EY的域内,我发现没法枚举自己账号的域内信息,研究了一下,这个工具默认只是指定了域信息为ey.net,而我的位置在pacrim这个子域内,所以一些指令需要在后面加-server指定一下子域: