渗透基础——活动目录信息的获取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添加其他功能。