01阅读须知
此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。
02基本介绍
本文内容部分节选自小报童《.NET 通过 DirectorySearcher 执行 LDAP 查询》,我们会长期更新!
03原理分析
在 Windows 域环境中,LDAP是一种常见的目录服务协议,允许客户端通过查询 AD 来获取组织结构、用户信息、计算机对象等。在内网渗透和红队测试中,Active Directory 是一个重要的信息收集目标。通过 LDAP 查询,可以快速枚举域内的用户、主机、组、权限等敏感信息,为后续的横向移动和权限提升打下基础。本文将详细介绍如何使用 System.DirectoryServices 命名空间下的 DirectorySearcher 执行 LDAP 查询,并输出查询结果。
3.1 LDAP基础
轻量目录访问协议(LDAP) 是一种访问目录服务的协议。Active Directory 的目录数据可以通过 LDAP 进行查询和修改。 常见的 LDAP 查询示例如下所示。
(servicePrincipalName=*)
3.2 .NET操作LDAP
DirectoryEntry 表示建立与 Active Directory中节点的连接, 或者和其他 LDAP 服务器建立连接。而 DirectorySearcher 类则是在 DirectoryEntry 基础上执行 LDAP 查询,返回对象的集合。这两个类都属于 System.DirectoryServices 命名空间,是 .NET 框架中与 AD 交互的核心工具。比如,连接指定的域控服务器,具体代码如下所示。
DirectoryEntry entry = new DirectoryEntry("LDAP://dc=exploit,dc=org", "Administrator", "P@ssw0rd");
DirectorySearcher 通过设置 Filter 定义查询条件,通过 PropertiesToLoad 指定需要返回的属性,用于在 DirectoryEntry 基础上执行 LDAP 查询。比如,查询用户对象的代码如下所示。
DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("LDAP://dc=exploit,dc=org"));
searcher.Filter = "(objectClass=user)";
searcher.PropertiesToLoad.Add("sAMAccountName");
foreach (SearchResult result in searcher.FindAll())
{
Console.WriteLine(result.Properties["sAMAccountName"][0]);
}
代码中,首先通过 Filter 设置过滤器为 查询所有的用户。接着,再通过 PropertiesToLoad 加载指定的属性值 sAMAccountName。
下面这段代码表示创建了一个指向 当前域控制器 的连接对象, 如果 DirectoryEntry 未设置路径,默认表示当前域。
DirectoryEntry directoryEntry = new DirectoryEntry();
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
随后,处理命令行传入的参数值,第一个参数 args[0] 是 LDAP 查询过滤器,比如 (servicePrincipalName=*),第二个参数 args[1] 是需要加载的属性列表,用逗号分隔。具体代码如下所示。
directorySearcher.Filter = args[0];
if (args.Length > 1)
{
list = args[1].Split(new char[]
{
','
}).ToList<string>();
调用 FindAll() 方法执行查询,返回 SearchResultCollection 集合,每个 SearchResult 对象表示一个 LDAP 条目,如下图所示。
综上,在 Windows 域环境下,利用 DirectoryEntry 和 DirectorySearcher 可以构建功能强大的内网域环境下红队工具。
04.NET 电子报刊
我们的小报童电子报刊【.NET内网安全攻防】也开始运营,引入小报童也是为了弥补知识星球对于轻量级阅读支持的不足,为用户读者提供更佳的阅读体验。如果您对阅读体验的需求比较高,那么可以订阅这个专栏。
本次电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。
1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理
原价899,现在限时只需59元,永久买断!目前已有280+位朋友抢先预定,我们会长期更新,初步计划保持每周更新1-2篇新内容,对.NET内网安全的朋友们请尽快订阅该报刊!
感兴趣的朋友,可以点击链接:https://xiaobot.net/p/dotNetAttack