导语:在之前的文章《渗透基础——活动目录信息的获取》以获取活动目录中所有用户、所有计算机和所有组为例,介绍常用的信息获取方法。但是在实际使用过程中,一些工具会被杀毒软件拦截。所以本文将要对获取方法进行补充,同时绕过杀毒软件的拦截。
0x00 前言
在之前的文章《渗透基础——活动目录信息的获取》以获取活动目录中所有用户、所有计算机和所有组为例,介绍常用的信息获取方法。
但是在实际使用过程中,一些工具会被杀毒软件拦截。
所以本文将要对获取方法进行补充,同时绕过杀毒软件的拦截。
0x01 简介
本文将要介绍以下内容:
· 使用csvde获取活动目录信息
· 使用ldifde获取活动目录信息
· 使用AdFind获取活动目录信息
· 使用C#开发的轻量级获取工具
0x02 使用csvde获取活动目录信息
说明文档:
使用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获取活动目录信息
说明文档:
使用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添加其他功能。
本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址