Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
azureOutlookC2 — Azure Outlook 命令与控制 (C2) - 从你的 Outlook 邮箱远程控制一个被入侵的 Windows 设备。针对朝鲜 APT 组织 InkySquid / ScarCruft / APT37 的威胁模拟工具。TTP:使用 Microsoft Graph API 进行 C2 操作。 | Kitploit
工具/GitHubGitHub/boku7/azureoutlookc2
云安全命令与控制红队Payload 开发API 安全
GitHubboku7/azureoutlookc2

azureOutlookC2

Azure Outlook 命令与控制 (C2) - 从你的 Outlook 邮箱远程控制一个被入侵的 Windows 设备。针对朝鲜 APT 组织 InkySquid / ScarCruft / APT37 的威胁模拟工具。TTP:使用 Microsoft Graph API 进行 C2 操作。

查看仓库
5041003年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Azure Outlook C2

基于Azure Outlook的命令与控制工具,利用Microsoft Graph API进行C2通信和数据外泄。

通过Outlook邮箱远程控制被入侵的Windows设备。

创建者:Bobby Cooke (@0xBoku) & Paul Ungur (@C5pider)

CTI威胁更新(2022年2月13日)

Elastic安全实验室发现活跃入侵活动正在野外使用SIESTAGRAPH。SIESTAGRAPH利用Microsoft Graph API通过Outlook和OneDrive进行命令与控制。请查看下方关于Azure Outlook C2通信的优秀恶意软件分析博客。

  • https://www.elastic.co/security-labs/siestagraph-new-implant-uncovered-in-asean-member-foreign-ministry
  • https://www.elastic.co/security-labs/update-to-the-REF2924-intrusion-set-and-related-campaigns

更新(2021年9月27日)

  • Azure Outlook C2现已拥有跨平台图形用户界面(GUI)!
    • 特别感谢Paul Ungur (@C5pider)教会我如何使用QT创建C2 GUI!

通过Outlook邮箱使用C2 GUI控制计算机

通过Outlook邮箱控制计算机

  • 本次更新支持原有的Outlook邮箱控制方式。

如果您有关于类似项目的信息、关于此TTP被APT/勒索软件组织在野外使用的CTI情报、防御建议、针对红队研究人员对Azure C2威胁模拟的建议,或者其他任何值得补充到本博客/README的内容,请与我联系或提交拉取请求。谢谢!

关于Azure Outlook C2

本项目包含一个植入体,它会向攻击者控制的Azure Outlook邮箱发出信标,该邮箱充当命令与控制(C2)中心,实现对被入侵设备的远程控制。攻击者C2邮箱的Azure刷新令牌在编译时硬编码到植入体中。当在Windows设备上执行时,植入体通过Microsoft Graph API访问攻击者的草稿邮箱。植入体读取攻击者草稿邮箱中的命令指令,在本地执行指令,然后通过创建新的草稿消息将命令输出返回给攻击者。植入体重复这种从攻击者邮箱被远程控制的行为,直到植入体的宿主进程退出。

为什么我要构建这个

大约半年前,我开始了在Trustwave的SpiderLabs红队工作。在一次渗透测试中,我有幸与传奇人物Stephan Borosh (rvrsh3ll|@424f424f)合作。Steve和Matt Kingstone教会了我关于Azure域名前置的所有知识,我惊叹于命令与控制流量竟然可以通过HTTPS使用诸如ajax.microsoft.com这样的合法域名进行外传,甚至使用了微软的TLS证书!但不幸的是,我刚开始红队工作时,Azure上的域名前置技术已经消亡。尽管Azure域名前置已死,但Azure上仍有许多优秀的红队技术可以使用。

Steve向我介绍了Azure设备代码钓鱼。在此期间,我深入研究了Azure和Microsoft Graph API用于红队攻击的方法。我们基于Dr. Nestori Syynimaa (@DrAzureAD)的优秀工作创建了TokenTactics工具,并撰写了博客《设备代码钓鱼的艺术》,如果您对我们的方法感兴趣可以查阅。

在创建TokenTactics并实验MS Graph API的过程中,我发现可以利用Microsoft Graph API作为C2通道。使用MS Graph API作为C2通道的方法有很多种,我并非第一个发现这一点的人。VX-Underground(由@smelly__vx创建,他也是HellsGate技术的创建者/发布者)上个月发布消息称,朝鲜高级持续威胁(APT)组织"InkySquid"(又名ScarCruft和APT37)正在使用Microsoft Graph API进行C2操作。在通过Twitter和LinkedIn发布本项目的预告后,多位DFIR专业人士评论称,这种使用Microsoft Graph API进行C2操作的技术正在被勒索软件组织在野外积极使用,时间可追溯至数月前。

在红队渗透测试期间,我曾尝试让Cobalt Strike通过MS Graph API作为C2通道工作,但未能成功,不过这仍是未来的目标。让它在Cobalt Strike上工作的难点在于,MS Graph API使用两种令牌进行通信。第一种是刷新令牌,最长有效期为90天。第二种是访问令牌,是临时令牌,有效期约一小时。直接与MS Graph API通信需要通过访问令牌进行身份验证。一旦访问令牌过期,可以使用刷新令牌获取新的访问令牌。由于我仍处于红队和Cobalt Strike开发的入门阶段,我无法弄清楚如何配置Cobalt Strike的Malleable C2配置文件来持续获取新访问令牌,并将这些不断变化的访问令牌发送到HTTPS信标请求的Authorization头中。在Twitter上发布预告后,Joe Vest、Alfie Champion和其他社区精英给了我极好的指导,让我知道如何让它与Cobalt Strike协同工作!希望未来能有本项目的Cobalt Strike后续版本 ;)

植入体执行流程

  1. 使用硬编码的攻击者刷新令牌获取MS Graph API的访问令牌。
    • 通过HTTPS TCP通信与主机graph.microsoft.com进行交互。
    • 此流量使用合法微软Web服务器返回的TLS证书进行加密。
    • 植入体使用WinInet动态链接库进行HTTPS通信。
    • 硬编码的攻击者刷新令牌有效期为90天。
      • 如果植入体被攻陷,攻击者可以撤销硬编码的刷新令牌,从而限制恶意软件逆向工程师的访问。
  2. 植入体获取MS Graph API的访问令牌后,进入无限循环。
    • 如果循环期间没有网络连接或网络连接中断,植入体将休眠3分钟后重试。
    • 植入体跟踪时间,如果超过15分钟,将获取新的访问令牌以继续通信。
  3. 循环中的第一个任务:使用MS Graph API访问令牌访问攻击者的草稿邮箱,读取最新消息以获取在受损Windows设备上执行的命令。
    • 选择草稿邮箱是为了避免通过SMTP发送电子邮件。
  4. 收到命令后,对其进行解析以确定执行哪个元命令。当前支持3个元命令:cmd、sleep、exit
    • cmd:获取元命令后的字符串,并通过生成子进程执行该命令。
    • sleep:获取元命令后的单词,并将植入体的休眠时间改为指定的值(毫秒)。
    • exit:退出/终止宿主进程。
  5. 如果元命令是cmd,植入体将创建一个子进程来执行命令,子进程将其标准输出写入管道,命令执行后子进程退出,宿主植入进程通过管道读取子进程的输出。
  6. 植入体获取已执行命令的输出后,使用MS Graph API创建一个新的草稿邮件,其中包含命令输出。
  7. 然后植入体创建第二个空白正文的草稿邮件。
    • 这允许在攻击者的草稿邮箱中记录命令输出。
    • 这为攻击者提供了一个新的草稿消息,以便输入下一个要植入体执行的命令。
  8. 命令执行完毕并将输出返回给攻击者后,植入体将休眠一段由攻击者控制的时间,然后重复此循环。

操作说明

  1. 按照我的博客《设备代码钓鱼的艺术》设置作为命令与控制基础设施的红队Azure环境:
    • Azure账户订阅
      • 创建Azure账户时,请通过将您的账户归属于您的红队组织来帮助微软DFIR团队。这有助于他们在调查您是否为真正的威胁、是否在进行威胁模拟或攻击性安全研究时节省时间。
      • 更多见解请参见Nick Carr - 微软网络犯罪情报/调查负责人。
    • Azure Active Directory租户
    • Office 365 for Azure Active Directory
    • 创建一个用户用于Outlook命令与控制邮箱
    • 安装TokenTactics PowerShell模块
  2. 使用TokenTactics获取您刚刚创建的Azure AD的租户ID:
root@kitploit:~
PS C:\Users\boku\Desktop\TokenTactics-main> Import-Module .\TokenTactics.psd1
PS C:\Users\boku\Desktop\TokenTactics-main> Get-TenantID -domain theharvester.world
1d5551a0-f4f2-4101-9c3b-394247ec7e08
  1. 将您的租户ID添加到azureOutlookC2.c文件中的char tenantId[]变量中。
  2. 使用TokenTactics通过C2邮箱用户对您自己进行设备代码钓鱼,获取Azure刷新令牌:
root@kitploit:~
# 将TokenTactics模块导入PowerShell会话
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# 启动设备代码钓鱼请求以获取'user_code'
PS C:\Users\boku\> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. 访问microsoft.com/devicelogin,输入TokenTactics返回的user_code,并使用C2邮箱用户登录。
  2. 在运行TokenTactics的PowerShell会话中,复制成功设备代码钓鱼后返回的刷新令牌。
    • 如果您需要更多关于TokenTactics工作原理的信息,请参阅《设备代码钓鱼的艺术》
  3. 将您的刷新令牌添加到azureOutlookC2.c文件中的char refreshToken[]变量中。
root@kitploit:~
void main() {
    // 变量
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^在此处放入您的刷新令牌并编译
  1. 编译azureOutlookC2.c。
root@kitploit:~
# 使用x64 MinGW编译:
bobby.cooke$ cat compile.sh
x86_64-w64-mingw32-gcc -m64 -mwindows -Os azureOutlookC2.c -o azureOutlookC2.exe -lwininet
bobby.cooke$ bash compile.sh
  1. 在Windows设备上执行azureOutlookC2.exePE文件。
  2. 攻击者在攻击者电脑上打开浏览器,登录outlook.office.com,从您的邮箱控制运行植入体的Windows设备。

初始项目目标

  • 创建一个可行的概念验证,使用Microsoft Graph API作为C2通道,并能够从我的电子邮件控制一台计算机。

本项目的定位

  • 本项目是一个概念验证,演示了攻击者如何将Microsoft Graph API用于C2操作。
  • 该项目旨在供其他攻击性安全研究人员学习参考。
  • 我个人尚未想出任何有效防御或检测此C2通道的方法。我希望将其提供给比我更出色的防御专家后,能够催生一些优秀的防御技术。

本项目的非定位

  • 本项目本身并非一个完全功能性的C2,尚不能用于OPSEC安全的渗透测试。

来自防御者的检测与防御思路(如有补充请提交拉取请求)

Mehmet Ergene (@Cyb3rMonk)的检测建议

  1. "对连接到Graph API的应用程序进行基线分析,并检查异常情况可能是一种思路。不过很容易被绕过。"
  2. "一如既往,检测信标流量。(我会进行改进以覆盖Graph API及类似内容)"

F-Secure - 由Alfie Champion分享

  • "微软就是这样一个组织示例,它已主动采取措施保护组织免受其服务被滥用。最近它开发了检测和阻止Azure应用程序恶意使用的能力。具体来说,F-Secure观察到,C3框架中使用的任何应用程序(如OneDrive365和Outlook365 (O365))现在都会被检测为恶意,并在大约三小时内被微软禁用。"

鸣谢/参考资料

  • Sektor7恶意软件开发课程
  • @passthehashbrwn - 使用mingw进行动态负载生成
  • Raphael Mudge - Red Team Ops with Cobalt Strike (2 of 9): Infrastructure
  • Raphael Mudge - Red Team Ops with Cobalt Strike (3 of 9): C2
  • Microsoft Graph REST API v1.0
  • Microsoft WinInet
  • StackOverFlow - 创建进程并捕获标准输出
  • Microsoft - 创建具有重定向输入和输出的子进程

类似项目/研究/博客

F-Secure C3 - 自定义命令与控制

  • "C3的构建就是为了满足这一需求。它是一个允许红队快速开发和利用非传统命令与控制通道(C2)的工具。"
  • 再见OFFICE365命令与控制——我们几乎不认识你
  • F-Secure C3 - 自定义命令与控制 GitHub仓库

Callidus 由Chirag Savla开发

  • "它(Callidus)使用C#语言基于.NET Core框架开发。允许操作员利用O365服务建立命令与控制通信通道。它使用Microsoft Graph API与O365服务通信。"
  • 3xpl01tc0d3r/Callidus GitHub仓库
  • Callidus介绍 - 博客文章

Azure应用代理C2 - Adam Chester (@_xpn_)

  • Azure应用代理C2 - 研究博客
下载工具