渗透基础——活动目录信息的获取2:Bypass AV

0x00 前言


在之前的文章《渗透基础——活动目录信息的获取》以获取活动目录中所有用户、所有计算机和所有组为例,介绍常用的信息获取方法。

但是在实际使用过程中,一些工具会被杀毒软件拦截。

所以本文将要对获取方法进行补充,同时绕过杀毒软件的拦截。

0x01 简介


本文将要介绍以下内容:

  • 使用csvde获取活动目录信息
  • 使用ldifde获取活动目录信息
  • 使用AdFind获取活动目录信息
  • 使用C#开发的轻量级获取工具

0x02 使用csvde获取活动目录信息


说明文档:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc732101(v=ws.11)

使用csvde导出的文件格式为csv,可以使用Microsoft Excel查看

默认只能在以下系统使用,例如:

  • Windows Server 2003
  • Windows Server 2008
  • Windows Server 2003 R2
  • Windows Server 2008 R2
  • Windows Server 2012,
  • Windows Server 2003 with SP1
  • Windows 8

1.导出当前域内活动目录信息示例

导出当前域内所有信息:

csvde -f all.csv

导出当前域内所有用户信息:

csvde -f user.csv -r "(&(objectCategory=person))"

导出当前域内所有机器信息:

csvde -f machine.csv -r "(&(objectCategory=computer))"

导出当前域内所有组信息:

csvde -f group.csv -r "(&(objectCategory=group))"

导出当前域内所有管理员组的用户信息:

csvde -f admin.csv -r "(&(objectCategory=group)(name=Domain Admins))"

导出当前域内所有OU信息:

csvde -f ou.csv -r "(&(objectCategory=organizationalUnit))"

导出当前域内所有的域用户名:

csvde -f username.csv -r "(&(objectCategory=person))" -l SamAccountName

导出当前域内所有的计算机名:

csvde -f machinename.csv -r "(&(objectCategory=computer))" -l name

2.从域外远程导出活动目录信息示例

导出远程域内所有信息:

csvde -s 192.168.1.1 -a test\admin Password -f all.csv

0x03 使用ldifde获取活动目录信息


说明文档:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731033(v=ws.11)

使用ldifde导出的文件格式为LDIF,可以使用notepad.exe查看

1.导出当前域内活动目录信息示例

导出当前域内所有信息:

ldifde -f all.txt

导出当前域内所有用户信息:

ldifde -r "(&(objectCategory=person))" -f user.txt

导出当前域内所有机器信息:

ldifde -r "(&(objectCategory=computer))" -f machine.txt

导出当前域内所有组信息:

ldifde -r "(&(objectCategory=group))" -f group.txt

导出当前域内所有管理员组的用户信息:

ldifde -r "(&(objectCategory=group)(name=Domain Admins))" -f admin.txt

导出当前域内所有OU信息:

ldifde -r "(&(objectCategory=organizationalUnit))" -f ou.txt

导出当前域内所有的域用户名:

ldifde -r "(&(objectCategory=person))" -l SamAccountName -f username.txt

导出当前域内所有的计算机名:

ldifde -r "(&(objectCategory=computer))" -l name -f machinename.txt

2.从域外远程导出活动目录信息示例

导出远程域内所有信息:

ldifde -s 192.168.1.1 -a test\admin Password -f all.txt

0x04 使用AdFind获取活动目录信息


下载地址:

https://www.joeware.net/freetools/tools/adfind/

1.导出当前域内活动目录信息示例

导出当前域内所有信息:

adfind.exe -h 127.0.0.1>all.txt

导出当前域内所有用户信息:

adfind.exe -h 127.0.0.1 -f objectcategory=person>user.txt

导出当前域内所有机器信息:

adfind.exe -h 127.0.0.1 -f objectcategory=computer>machine.txt

导出当前域内所有组信息:

adfind.exe -h 127.0.0.1 -f objectcategory=group>group.txt

导出当前域内所有管理员组的用户信息:

adfind.exe -h 127.0.0.1 -f "(&(objectCategory=group)(name=Domain Admins))">admin.txt

导出当前域内所有OU信息:

adfind.exe -h 127.0.0.1 -f objectcategory=organizationalUnit>ou.txt

导出当前域内所有的域用户名:

adfind.exe -h 127.0.0.1 -f objectcategory=person SamAccountName>username.txt

导出当前域内所有的计算机名:

adfind.exe -h 127.0.0.1 -f objectcategory=computer name>machinename.txt

2.从域外远程导出活动目录信息示例

导出远程域内所有信息:

adfind.exe -h 192.168.1.1 -u test\admin -up Password>all.txt

0x05 使用C#开发的轻量级获取工具


SharpView通过.Net实现了PowerView中关于获取活动目录信息的功能,功能很完整,但是会被杀毒软件拦截。

而我们通过调用命名空间System.DirectoryServices,能够很容易实现简单的功能,满足基本需求,并且通常情况下不会被杀毒软件拦截。

这里可以使用之前的代码ListUserMailbyLDAP.cs作为模板,修改查询语句即可。

我以AdFind的基础功能作为参照,实现了一个轻量级的工具,完整的代码已上传github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpADFindDemo.cs

SharpADFindDemo可以在.Net3.5或.Net4的Windows系统下直接编译

编译方法如下:

C:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe SharpADFindDemo.cs /r:System.DirectoryServices.dll
or
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe SharpADFindDemo.cs /r:System.DirectoryServices.dll

支持导出以下AD信息:

  • user,所有域用户信息
  • machine,所有域计算机信息
  • group,所有域组信息
  • ou,所有域OU信息
  • username,只导出域用户名
  • machinename,只导出域计算机名
  • groupname,只导出域组名
  • ouname,只导出域OU名

这里需要注意的是默认导出的最大数目为1000个

0x06 小结


本文对活动目录信息的获取方法进行了补充,介绍了3个常用工具,使用C#开发了一个轻量级获取工具SharpADFindDemo,后续可以此为模板,结合SharpView添加其他功能。


LEAVE A REPLY

Written on January 11, 2021