枚举器是一个工具,用来帮助自动化在渗透测试期间枚举目标或目标列表这一通常繁琐的任务。
enumerator的Python项目详细描述
枚举器
贡献者:
- erik dominguez(irc:maleus twitter:@maleus21)(原始概念 以及脚本作者, maleus @ overflowsecurity com )- http://overflowsecurity.com
- 史蒂夫科沃德(irc:felux twitter:@sugarstackio)- http://sugarstack.io
枚举器是一个工具,用来帮助自动化那些经常乏味的 在渗透过程中枚举目标或目标列表的任务 测试:
枚举器是围绕kali linux发行版构建的。把这个用在另一个上面 Linux发行版,请确保安装了以下工具:
- nmap
- nikto,dirb(http枚举)
- hydra(ftp枚举)
- Enum4Linux(NetBIOS枚举)
此时不支持Windows。
可用的服务模块
- ftp(hydra ftp登录枚举,nmap ftp nse脚本)
- http(nikto scan,dirb目录枚举)
- NetBIOS(Enum4Linux扫描)
- rpc(showmount输出)
- ssh(hydra ssh登录枚举,nmap ssh nse ssh主机密钥 枚举)
更改日志
v0.1.4 -添加了ssh服务模块,将所有bruteforce选项更改为 使用"tiny"凭据文件而不是"micro",还原为NMAP TCP扫描 选项,小错误修复。
v0.1.3 -枚举器现在采用文件路径或单个主机 要使用的参数。
v0.1.2 -重构服务分类规则 服务模块和更新的类genericservice以验证新服务 规则。已创建processmanager以处理与流程相关的任务。
v0.1.1 -纠正了带工艺的注水系统的问题,现在 已移动到使用multiprocessing.pool()。
安装
虽然不是必需的,但建议为枚举器创建virtualenv 以避免与所需包的不同版本发生冲突。如果 您不熟悉virtualenv,请按照 指南
使用pip 安装所需的库:
(venv) $ pip install enumerator
或者,如果已克隆枚举器存储库:
(venv) $ python setup.py install
用法
要运行,枚举器接受两个参数中的一个;指向 包含IP地址列表的文本文件,每行一个。
- -f , --文件 -带有IP地址列表的文本文件的路径, 每行一个。
- -s , --单个 -单个IP地址。
(venv) $ enumerator -f /root/Desktop/hosts.txt
(venv) $ enumerator -s 10.1.1.215
然后枚举器将使用nmap异步开始扫描。一旦nMAP 完成后,分析nmap结果并将其传递给系统, 基于一组简单的规则,委托进一步的服务级别 枚举到 lib/ 中找到的特定于服务的模块。每一项服务 模块定义要运行的特定枚举应用程序,并将运行 针对目标的每个过程,将任何结果写入文件以供审查。
目前,枚举器的输出非常少,所以可以肯定地说 枚举器脚本完成后,所有主机都已完全 扫描。未来版本的枚举器将有更好的时间 枚举进度的报告。结果保存在 results/ 中, 每个主机都有自己的文件夹,所有枚举都在其中 枚举器完成后,将保存进程输出以供查看。
扩展枚举数
枚举器被设计为(相对地)易于扩展为 服务枚举!按照以下步骤添加您自己的附加 服务枚举:
创建新的服务模块:
- 在 lib/ 中为您的服务模块和相关文件创建文件夹。
- 在文件夹中创建服务模块文件和初始化 在上面创建。
- 服务模块的语法应与现有服务相同 模块。
- 服务定义是一组特殊的key:value规则 对服务进行分类。详情如下。
- 进程 应包含要运行的文本命令。跟随 任何变量字符串的命名参数语法。
- 将 scan() 方法中的 params 字典更新为 匹配 进程中设置的参数化字符串变量
- 在lib/delegator.py中,导入新模块和 现有模块导入。
- 在lib/delegator.py中,实例化服务模块并添加 反对服务模块列表。
为了测试新创建的服务模块,更容易 通过直接调用模块进行测试,而不是运行枚举器。 确保新的服务模块遵循与 现有的模块脚本位于脚本的最底部。更新那些 调用以匹配新服务模块所需的语法。奔跑, 从枚举器的根目录中使用以下语法, 根据需要替换名称和输入参数:
(venv) $ python -m enumerator.lib.<service>.<service> <ip> <port> <output directory>
更新现有服务模块:
- 要向现有模块添加新的服务枚举命令, 只需使用要调用的命令更新 进程 。务必 在 scan() 调用中传递任何命名参数。
创建和更新服务定义
服务定义 服务。两个键, 服务 和 端口 可用于定义 服务。下面是两个例子以及它们的翻译方法:
- 服务:ftp -值应该出现在nmap中 "服务"价值。
- 服务:http、-proxy或端口:8081 -值应为 在"service"中,值 'proxy' 应该 不 在"service"中,或者 值 'port' 应包含值 '8081'
更新nmap进程命令行参数:
一般来说,编辑这些定义的参数可能会对 影响服务枚举模块,因此请注意 被改进的!可配置 nmap 选项,如TCP连接类型 语法,端口范围当然可以修改以适合特定的用途 案例。这些更改在 进程的 lib/nmap.py 中进行。 在脚本顶部附近定义的常量。