跳转到主要内容

Active Directory审计工具

项目描述

关于BTA

BTA是一个开源的Active Directory安全审计框架。它的目标是帮助审计员收集他们需要的信息来回答以下问题:

  • 谁有对给定对象(计算机、用户账户等)的权限?

  • 谁可以读取给定的邮箱?

  • 哪些账户有域管理员权限?

  • 谁有扩展权限(userForceChangePasswordSendAs等)?

  • 在AD中两个时间点之间发生了哪些变化?

该框架包括

  • 一个可以将包含所有AD数据的ntds.dit文件转换为数据库的导入器

  • 用于查询数据库的工具

    • AD挖掘框架

    • AD差异工具

    • 小型实用程序(数据库列表等)

导入了全面的属性集,包括所有架构扩展(Exchange、Sharepoint等),并可查询。

每个问题都可以由AD专家作为一个挖掘器来明确化,这样就可以在整个审计过程中使用,而无需再次进行艰苦的工作。

安装BTA

快速安装

依赖项

安装

  • pip安装bta

从源码

依赖项

安装

  • 使用python setup.py install进行安装

Active Directory安全分析

目标

  • 清理AD或AD森林,查找

    • 不良做法

    • 遗忘条目

    • 后门

    • 重新授权

  • BTA是一个操作工具,应该是

    • 确定性的,可靠的

    • 运行一个成熟的程序

协议

审计步骤

  1. 提取ntds.dit文件

  2. ntds.dit文件导入数据库

  3. 在数据库中查找控制点

提取

以下是在Windows 2008上运行的域控制器备份NTDS.dit文件的示例。有关更多信息或Windows 2003方法,请参阅[2]

ntdsutil
activate instance ntds
ifm
create full c:{\bs}NTDS_saved
quit
quit

导入

  • 原始的ntds.dit文件不可用。

  • 将一个ntds.dit导入一个MongoDB数据库

  • 能够并行导入多个ntds.dit

示例

ntds2db -C ::mydb /path/to/ntds.dit
ntds2db /path/to/*.dit  --multi             \
  --C-from-filename                         \
     "::%s" "basename rmext 'DB' swap plus"

分析

  • 查询数据库

    • 分析数据库的控制点:btaminer

    • 分析两个数据库之间的差异:btadiff

分析控制点

  • 挖掘结晶专业知识

    • 管理员账户列表

    • 具有扩展权限的账户列表

    • 具有密码错误的账户列表

    • 各种时间线的列表

btaminer -t ReST -C ::AD1 Schema --timelineCS created

Analysis by miner [Schema]
==========================

+---------------+-----------------------+
| Date          | Affected class schema |
+===============+=======================+
| 2009-02-11 18 | 234                   |
| 2011-12-20 00 | 267                   |
| 2011-12-22 14 | 3                     |
| 2011-12-23 18 | 46                    |
+---------------+-----------------------+

分析差异

  • diff

    • 在时间不同的两个导入之间的diff(目前是原始的)

    • 噪声过滤

$ btadiff --CA ::ADclean --CB ::ADbackdoor --ignore-defaults
===============
Starting diffing sd_table
---------------
AB,101: [] *sd_refcount['14'=>'15']
AB,108: [] *sd_refcount['39'=>'41']
A ,229: []
A ,372: []
AB,423: [] *sd_refcount['3'=>'2']
 B,424: []
 B,425: []
 B,428: []
---------------
Table [sd_table]: 160 records checked, 2 disappeared, 3 appeared, 3 changed
===============
[...]
===============
Starting diffing datatable
---------------
AB,3586: [DC001] *logonCount['116'=>'117'], *lastLogon['130052518207794051L'=>'130052535716737649L']
AB,3639: [RID Set] *rIDNextRID['1153'=>'1154']
AB,8784: [A:[gc]/B:[gc  DEL:346bf199-8567-4375-ac15-79ec4b42b270]] +isDeleted,
         *name["u'gc'"=>"u'gc\\nDEL:346bf199-8"], *dc["u'gc'"=>"u'gc\\nDEL:346bf199-8"]
AB,8785: [A:[DomainDnsZones]/B:[DomainDnsZones  DEL:58b2962b-708c-4c93-99ff-0b7e163131f9]]
         +isDeleted, *name["u'DomainDnsZones'"=>"u'DomainDnsZones\\nDE"],
         *dc["u'DomainDnsZones'"=>"u'DomainDnsZones\\nDE"]
AB,8786: [A:[ForestDnsZones]/B:[ForestDnsZones  DEL:87f7d8a2-4d05-48d0-8283-9ab084584470]]
         +isDeleted, *name["u'ForestDnsZones'"=>"u'ForestDnsZones\\nDE"],
         *dc["u'ForestDnsZones'"=>"u'ForestDnsZones\\nDE"]
 B,8789: [snorky insomnihack]
 B,8790: [gc]
 B,8791: [DomainDnsZones]
 B,8792: [ForestDnsZones]
---------------
Table [datatable]: 7636 records checked, 0 disappeared, 4 appeared, 5 changed
===============

其他功能

  • 可以以不同的格式生成报告

    • 实时转储

    • ReST文档

    • CSV文件的压缩树

  • 数据库写入的审计日志

  • 在挖掘之前对表一致性进行检查

作者

  • 空中客车集团CERT

  • 空中客车集团创新

  • 空中客车DS网络安全

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

bta-0.6.tar.gz (66.6 KB 查看哈希值

上传时间

构建分布

bta-0.6.linux-x86_64.tar.gz (158.6 KB 查看哈希值

上传时间

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面