Skip to content

yige666/CAudit

Repository files navigation

Example

显示可用模块

./main.py -h

使用全部扫描插件

./main.py AD scan --all -D dc.test.lab --dc-ip 20.0.0.100 -U administrator -P 123.com

使用指定的扫描插件

./main.py AD scan --plugin no_recycle_bin_dc nver_expire_priv_act -D dc.test.lab --dc-ip 20.0.0.100 -U administrator -P 123.com

使用 Docker

使用前先拉最新镜像

docker pull amulab/center

运行

docker run --rm -it amulab/center

为了方便使用可以先设置别名

alias center='docker run --rm -it amulab/center'

再使用center命令运行

插件编写规范

创建插件

插件脚本需存放在对应模块目录中,脚本文件名以Plugin_[模块类型]_[扫描类型]_模块名称.py命名,任何不以Plugin_开头的文件都会被忽略

模块类型与模块目录名称对应,扫描类型可以选择Exploit/Scan,具体是脚本功能而定。

下图中,AD模块存在2个插件,漏洞利用类型test1脚本和No_Pre_Auth脚本,**BAK_**文件会被忽略不加载。

p2

扫描插件编写

  • 插件类需以Plugin开头
  • 插件类需要继承模块基类(具体视模块而定)
  • 重写displayaliasp_type字段(各个字段的含义可以看PluginBase中的注释)
  • 重写run_script()插件入口函数

如下图定义扫描插件PluginADNoPreAuth,继承PluginADScanBase,重写display等字段。 重写run_script()函数(这个函数是所有插件的入口函数),并将结果以字典形式返回。返回结果的结构在PluginBase也有注释

p3

漏洞利用插件编写

  • 插件类需以Plugin开头
  • 插件类需要继承模块基类(具体视模块而定)
  • 重写displayaliasp_type字段(各个字段的含义可以看PluginBase中的注释)
  • 重写reg_argument()函数注册插件所需参数
  • 重写run_script()插件入口函数

如下图创建AD插件,重写相关字段后在reg_argument()函数中注册插件所需参数,获取参数的值在run_script()函数args参数中,以args.[定义的参数]这种形式获取,最后将结果输出。

p6

扫描结果返回

所有插件的返回结果以如下图形式返回,每个字段含义如下: status: 插件运行状态,1=成功;0=失败;-1=插件报错 data:插件运行结果,以字典形式存储

p4

示例返回结果如下:

p5

目录结构

  • doc (帮助文档的图片)
  • logs (工具执行的日志文件)
  • modules (模块目录,存放工具其他框架)
  • plugins (插件目录,存放扫描/漏洞利用插件)
  • template (模板目录,存放html输出结果的模板)
  • utils (工具用到的函数目录)

plugins

plugins目录下的每一个子目录都代表一个具体的场景模块,每个模块目录中都存在一个__init__.py脚本,该脚本中定义了模块名称、插件注册函数、模块基类。

utils

这个目录存放的是插件可能用到的函数。最常用的是打印到控制台类output

问题

  1. 'lib' has no attribute 'openssl_add_all_algorithms'
pip3 install cryptography==38.0.4

About

集权设施扫描器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.0%
  • HTML 3.0%