Active Directory审计工具
项目描述
关于BTA
BTA是一个开源的Active Directory安全审计框架。它的目标是帮助审计员收集他们需要的信息来回答以下问题:
谁有对给定对象(计算机、用户账户等)的权限?
谁可以读取给定的邮箱?
哪些账户有域管理员权限?
谁有扩展权限(userForceChangePassword、SendAs等)?
在AD中两个时间点之间发生了哪些变化?
该框架包括
一个可以将包含所有AD数据的ntds.dit文件转换为数据库的导入器
用于查询数据库的工具
AD挖掘框架
AD差异工具
小型实用程序(数据库列表等)
导入了全面的属性集,包括所有架构扩展(Exchange、Sharepoint等),并可查询。
每个问题都可以由AD专家作为一个挖掘器来明确化,这样就可以在整个审计过程中使用,而无需再次进行艰苦的工作。
安装BTA
快速安装
依赖项
mongodb(《apt-get install mongodb-server》)
libesedb 2012 alpha版本 [1]
https://bitbucket.org/iwseclabs/bta/downloads/libesedb-alpha-20120102.tar.gz SHA-1 2aba34b1c9703a28b8913019044efa3ff53428fb
构建它。安装它或在运行btaimport时将其安装到LD_LIBRARY_PATH中
安装
pip安装bta
从源码
依赖项
mongodb(《apt-get install mongodb-server python-pymongo》)
libesedb 2012 alpha版本 [1]
https://bitbucket.org/iwseclabs/bta/downloads/libesedb-alpha-20120102.tar.gz SHA-1 2aba34b1c9703a28b8913019044efa3ff53428fb
构建它。安装它或在运行btaimport时将其安装到LD_LIBRARY_PATH中
openpyxl(≥2.0.2)
安装
使用python setup.py install进行安装
Active Directory安全分析
目标
清理AD或AD森林,查找
不良做法
遗忘条目
后门
重新授权
BTA是一个操作工具,应该是
确定性的,可靠的
运行一个成熟的程序
协议
审计步骤
提取ntds.dit文件
将ntds.dit文件导入数据库
在数据库中查找控制点
提取
以下是在Windows 2008上运行的域控制器备份NTDS.dit文件的示例。有关更多信息或Windows 2003方法,请参阅[2]。
ntdsutil
activate instance ntds
ifm
create full c:{\bs}NTDS_saved
quit
quit
https://www.sstic.org/2012/presentation/audit_ace_active_directory/
导入
原始的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文件的压缩树
数据库写入的审计日志
在挖掘之前对表一致性进行检查
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
bta-0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 01e8c2b68f8d0a574785130ab207b77b698c1b6990a40d8434ffd4b355c13bd6 |
|
MD5 | 34a1820e306df2373dde1a33d5568b90 |
|
BLAKE2b-256 | e9517a7f94568db26efc495d710827b28cfe3fc41a4688162ee94f4bae0fe3de |
bta-0.6.linux-x86_64.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3b6d6696f6c3cad2ff64009c1cd45d66c228a61abb8d8ec3757d8f13316a0ad |
|
MD5 | 7f02a7288e1a6365e1854cbfd33b6a09 |
|
BLAKE2b-256 | 1bb36cb645b02bbb1afaab53ce56666b2dbcedc8fb0e15ed817e018c92a4210b |