关于KnockOutlook
KnockOutlook是一款基于C#开发的工具,该工具可以跟Outlook的COM对象进行交互,并且能够帮助红队安全研究人员执行各种安全操作。
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
- git clone https://github.com/eksperience/KnockOutlook.git
命令行使用
- __ __ __ ____ __ __ __
- / //_/____ ____ _____/ /__/ __ \__ __/ /_/ /___ ____ / /__
- / ,< / __ \/ __ \/ ___/ //_/ / / / / / / __/ / __ \/ __ \/ //_/
- / /| |/ / / / /_/ / /__/ ,< / /_/ / /_/ / /_/ / /_/ / /_/ / ,<
- /_/ |_/_/ /_/\____/\___/_/\_\\____/\__,_/\__/_/\____/\____/_/\_\
- Parameters:
- --operation : 指定需要执行的操作
- --keyword : 指定搜索操作的关键词
- --id : 指定保存操作的目标
- --bypass : 绕过编程访问安全设置(需要管理员权限)
- Operations:
- check : 执行各种检测以确保操作安全
- contacts : 提取每一个账号的所有联系人
- mails : 提取每一个账号的邮箱元数据
- search : 根据关键词搜索每一个邮箱
- save : 保存指定EntryID的邮件
- Examples:
- KnockOutlook.exe --operation check
- KnockOutlook.exe --operation contacts
- KnockOutlook.exe --operation mails --bypass
- KnockOutlook.exe --operation search --keyword password
- KnockOutlook.exe --operation save --id {EntryID} --bypass
功能操作
(1) 安全检测(check)
枚举Outlook安装详细信息,以便构造正确的注册表项并检索编程访问安全设置。
如果此值设置为“Warn when antivirus is inactive or out-of-date”,它将会查询WMI以查找任何已安装的防病毒产品并分析其当前状态。
(2) 联系人信息枚举(contacts)
枚举每个已配置帐户的联系人并提取以下信息:
- 完整名称(全名)
- 电子邮件地址
(3) 电子邮件枚举(mails)
枚举每个已配置帐户的邮件并提取以下元数据:
- ID
- 时间戳
- 主题
- 邮件发送者
- 邮件接收者
- 附件
(4) 搜索查询(search)
使用Outlook的内置搜索引擎在每个已配置帐户的邮箱中搜索,并返回邮件正文中包含所提供关键字的EntryID。
(5) 数据保存(save)
使用Outlook内置的另存为机制导出由其EntryID引用的邮件。
对象模型保护绕过
由于当前进程是以高级完整权限运行的,因此该工具所提供的“--bypass”选项可以与联系人信息枚举(contacts)、电子邮件枚举(mails)、搜索查询(search)以及数据保存(save)这几个功能结合使用。
KnockOutlook将尝试获取当前Outlook安全策略的快照,并以自动允许编程访问安全提示的方式对其进行篡改操作,在操作完成后还会将其恢复为初始状态。
数据输出
KnockOutlook的所有操作都会将基础数据直接输出在屏幕上。
联系人信息枚举(contacts)和电子邮件枚举(mails)操作将会把输出数据以JSON格式保存至gzip压缩文件中。
数据保存(save)操作将会把输出数据以.msg格式导出。
所有的文件名都会在运行时随机生成。
默认配置下,Outlook的安全临时目录会用来存储所有的导出文件。
项目地址
KnockOutlook:【GitHub传送门】