secureworks/dcept
GitHub: secureworks/dcept
一款针对 Active Directory 的蜜令牌部署与检测工具,通过在端点内存中投放伪造凭据来识别攻击者的凭据窃取行为。
Stars: 509 | Forks: 103
# DCEPT
DCEPT (Domain Controller Enticing Password Tripwire) 是针对 Microsoft Active Directory 的基于 honeytoken 的陷阱触发器。Honeytoken 是故意散落在系统中的信息片段,以便被入侵者发现。就 DCEPT 而言,honeytoken 是仅能被从内存中提取它们的人所知晓的凭证。使用这些伪造凭证进行登录尝试意味着有人已经进入了网络,并正试图将权限提升至域管理员。
此概念验证作为开源发布,旨在惠及 Windows 系统管理员。本项目的目标是提供一款免费、简单的 honeytoken 部署工具,同时教育管理员了解此类攻击的性质。我们鼓励贡献者在我们所做工作的基础上继续构建,并欢迎反馈。DCEPT 是否帮助您的组织及时发现了入侵?我们希望收到您的来信。
有关此研究项目的更多信息,请访问:https://www.secureworks.com/blog/dcept
## 概述
DCEPT 包含三个组件。第一个是用 C# 编写的 agent,它在端点的内存中缓存 honeytoken。token 本身是无效凭证,不存在被泄露的风险。系统会定期请求 Honeytoken,并且它们在特定时间窗口内与工作站唯一关联;从而提供取证时间线。如果 honeytoken 在日后于不同的工作站上被使用,其原始出处依然可知,这可能会缩小调查范围。
第二个是 server 组件,负责生成 honeytoken 并将其分发给请求的端点。生成的 token 会与时间戳及请求它的端点一起存储在数据库中。
第三个组件充当 monitor,被动监听登录尝试。为了捕获必要的数据包,DCEPT 接口需要与 domain controller 位于同一网络。
## 快速入门
我们提供了用于 server 组件的 Docker 容器构建,使部署过程变得简单。在使用 DCEPT 之前,您的系统上必须安装 Docker。请查阅 Docker 网站以获取 [安装说明] (https://docs.docker.com/engine/installation/)。
### 配置
配置文件名为 “dcept.cfg”,必须在运行 Docker 容器之前进行修改。目前仅支持通过 rsyslog 进行通知。请将 syslog_host 配置为指向您 SIEM 的 syslog 服务器。
#### 多服务器架构
DCEPT 可以以独立模式或多服务器配置运行。默认情况下,DCEPT 作为 master 节点运行,负责生成凭证并嗅探身份验证请求。通过使用网络分流器 (network tap),单个 DCEPT 实例可以监控来自多个 DC 的流量。或者,通过将 “master_node” 选项设置为指向 master 节点,DCEPT 可以作为 slave 节点运行。在这种配置下,slave 节点进行嗅探,然后将相关数据中继到 master 节点,在那里与凭证数据库进行匹配。
### 构建 Docker 镜像
```
root@host:~# cd server
root@host:~# ./docker_build.sh
```
### 将 Docker 镜像作为容器运行
使用以下命令以交互方式运行 Docker 容器:
```
root@host:~# cd server
root@host:~# ./launcher.sh
```
使用以下命令在后台运行容器:
```
root@host:~# cd server
root@host:~# ./daemon.sh
```
### 构建 Agent
Agent 仅以 C# 源代码形式提供,旨在让网络管理员在部署到端点之前进行审计和编译。如果您在 Windows 系统上进行编译,Microsoft 免费提供 Visual Studio Express,可在 [此处] (https://www.visualstudio.com/products/visual-studio-express-vs) 下载。
#### 配置 Agent
Agent 配置是硬编码的,必须在编译前进行修改。在代码顶部,您会找到两个常量 *URL* 和 *PARAM*。URL 应指向 DCEPT 生成服务器 (Generation Server)。URL 还可以包含任意数量的目录/子目录。这纯粹是为了伪装,旨在引起黑客的兴趣,如果他们偶然发现该 URL 的话。*PARAM* 常量用于 agent 将端点主机名传递给生成服务器。参数名称也可以为了伪装目的进行更改,但请确保在生成服务器配置文件中反映这一点。
重要提示:使用诸如 “honeytoken” 之类的名称或任何其他可能向黑客暗示您正在使用 DCEPT 的名称,既违背初衷,也极不推荐。
```
// Edit this to point to your Honeytoken server URL
static string URL="http://not-a-dcept-server-wink.domain.lan/backup/auth/nonsense";
static string PARAM="machine";
```
#### 在 Ubuntu 上编译
如果您更喜欢从 Ubuntu 系统进行编译,可以使用 mono。如果您尚未安装它,可以运行以下命令来安装 mono 开发包和 C# 编译器。
```
root@host:~# apt-get install monodevelop mono-mcs
```
安装 mono 后,更改您的工作目录,然后运行以下命令来编译源代码。
```
root@host:~# mcs ht-agent.cs -r:System.Data.dll -r:System.Web.Extensions.dll -r:System.Web.Services
```
### 部署 Agent
Agent 的部署方式因组织而异,完全取决于您。强烈不建议以会在端点上留下 *有效* 域管理员凭证的方式进行部署(例如 psexec)。
#### 测试
运行以下命令在容器内获取交互式 shell。
```
root@host:~# docker exec -it dcept /bin/bash
```
Docker 容器内安装了 tcpreplay 以及用于测试的示例 pcap。当 DCEPT 运行时,在容器内执行以下命令:
```
root@host:~# tcpreplay -i /opt/dcept/example.pcap
```
标签:Active Directory, AD, Conpot, DCEPT, Honeytoken, LSASS, PE 加载器, Plaso, Windows安全, 凭证欺骗, 协议分析, 域控安全, 权限提升, 构建工具, 模拟器, 漏洞靶场, 网络安全, 蜜标, 蜜罐, 证书利用, 请求拦截, 转储凭证, 防御检测, 隐私保护