Total Pageviews

Monday, 11 May 2020

APT攻击,Advanced Persistent Threat

APT攻击,即高级可持续威胁攻击,也称为定向威胁攻击,指某组织对特定对象展开的持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性,通常会运用受感染的各种介质、供应链社会工程学等多种手段实施先进的、持久的且有效的威胁和攻击。
中文名
APT攻击
外文名
Advanced Persistent Threat
别    称
定向威胁攻击
目    的
破坏某组织的关键设施等
特    点
针对性强、持续攻击等
所属领域
计算机技术

概念

编辑
对于APT攻击比较权威的定义是由美国国家标准与技术研究所( NIST)提出的,该定义给出了APT攻击的4个要素,具体如下。
(1)攻击者:拥有高水平专业知识和丰富资源的敌对方。
(2)攻击目的:破坏某组织的关键设施,或阻碍某项任务的正常进行
(3)攻击手段:利用多种攻击方式,通过在目标基础设施上建立并扩展立足点来获取信息。
(4)攻击过程:在一个很长的时间段内潜伏并反复对目标进行攻击,同时适应安全系统的防御措施,通过保持高水平的交互来达到攻击目的。

入侵方式

编辑
APT入侵客户的途径多种多样,主要包括以下几个方面。
一、以智能手机、平板电脑和USB等移动设备为目标和攻击对象继而入侵企业信息系统的方式。
二、社交工程的恶意邮件是许多APT攻击成功的关键因素之一,随着社交工程攻击手法的日益成熟,邮件几乎真假难辨。从一些受到APT攻击的大型企业可以发现,这些企业受到威胁的关键因素都与普通员工遭遇社交工程的恶意邮件有关。黑客刚一开始,就是针对某些特定员工发送钓鱼邮件,以此作为使用APT手法进行攻击的源头。
三、利用防火墙、服务器等系统漏洞继而获取访问企业网络的有效凭证信息是使用APT攻击的另一重要手段。
总之,高级持续性威胁(APT)正在通过一切方式,绕过基于代码的传统安全方案(如防病毒软件、防火墙IPS等),并更长时间地潜伏在系统中,让传统防御体系难以侦测。 [1] 

攻击阶段

编辑
APT攻击可以分为三个环节,每个环节又会有一些具体的工作内容。这三个环节其实是混杂互相交织在一起的,并没有严格的分界线的,这里分开,主要是为了从技术环节做更好的分析。另外每个环节,攻击者都可能发起多次甚至持续多年而并非单独一次,这取决于攻击者意愿、被攻击的目标价值、攻击者已经得手的情况而定。
1. 攻击前奏
在攻击前奏环节,攻击者主要是做入侵前的准备工作。
2. 入侵实施
在入侵实施环节,攻击者针对实际的攻击目标,展开攻击。
3. 后续攻击
在后续攻击环节,攻击者窃取大量的信息资产或进行破坏,同时还在内部深度的渗透以保证发现后难以全部清除。 [2] 

主要特征

编辑
APT攻击具有不同于传统网络攻击的5个显著特征:针对性强、组织严密、持续时间长、高隐蔽性和间接攻击。
1针对性强
APT攻击的目标明确,多数为拥有丰富数据/知识产权的目标,所获取的数据通常为商业机密、国家安全数据、知识产权等。
相对于传统攻击的盗取个人信息,APT攻击只关注预先指定的目标,所有的攻击方法都只针对特定目标和特定系统,针对性较强。
2组织严密
APT攻击成功可带来巨大的商业利益,因此攻击者通常以组织形式存在,由熟练黑客形成团体,分工协作,长期预谋策划后进行攻击。他们在经济和技术上都拥有充足的资源,具备长时间专注APT研究的条件和能力。
3持续时间长
APT攻击具有较强的持续性,经过长期的准备与策划,攻击者通常在目标网络中潜伏几个月甚至几年,通过反复渗透,不断改进攻击路径和方法,发动持续攻击,如零日漏洞攻击等。
4高隐蔽性
APT攻击根据目标的特点,能绕过目标所在网络的防御系统,极其隐藏地盗取数据或进行破坏。在信息收集阶段,攻击者常利用搜索引擎、高级爬虫和数据泄漏等持续渗透,使被攻击者很难察觉;在攻击阶段,基于对目标嗅探的结果,设计开发极具针对性的木马等恶意软件,绕过目标网络防御系统,隐蔽攻击。
5间接攻击
APT攻击不同于传统网络攻击的直接攻击方式,通常利用第三方网站或服务器作跳板,布设恶意程序或木马向目标进行渗透攻击。恶意程序或木马潜伏于目标网络中,可由攻击者在远端进行遥控攻击,也可由被攻击者无意触发启动攻击。 [3] 

检测难点

编辑
与传统网络攻击相比,APT攻击的检测难度主要表现在以下几方面:
1)先进的攻击方法。
攻击者能适应防御者的入侵检测能力,不断更换和改进入侵方法,具有较强的隐藏能力,攻击入口、途径、时间都是不确定和不可预见的,使得基于特征匹配的传统检测防御技术很难有效检测出攻击。
2)持续性攻击与隐藏。
APT通过长时间攻击成功进入目标系统后,通常采取隐藏策略进入休眠状态;待时机成熟时,才利用时间间隙与外部服务器交流。在系统中其并无明显异常,使得基于单点时间或短时间窗口的实时检测技术和会话频繁检测技术也难以成功检测出异常攻击。
3)长期驻留目标系统,保持系统的访问权限。
攻击者一旦侵入目标系统便会积极争取目标系统或网络的最高权限,实现程序的自启功能。同时,攻击者会在目标网络中基于已控制的网络主机实现横向转移和信息收集,规避安全检测,扩大被入侵网络的覆盖面,寻找新的攻击目标。一旦其找到了想要攻击的最终目标和适当传送信息的机会,攻击者便会通过事先准备好的隐藏通道获取信息、窃取数据或执行破坏活动,且不留任何被入侵的痕迹。 [3] 
参考资料
  • 1.  什么是APT攻击  .中国信息产业网[引用日期2013-04-25]
  • 2.  郭南. 解读高级持续性威胁[J]. 信息安全与通信保密, 2014, (11):71-72  .超星[引用日期2019-05-29]
  • 3.  董刚, 余伟, 玄光哲. 高级持续性威胁中攻击特征的分析与检测[J]. 吉林大学学报(理学版), 2019, (2):339-344  .超星[引用日期2019-05-29]
  • from https://baike.baidu.com/item/APT%E6%94%BB%E5%87%BB/5030382
  • ---------------------------------------
  • 什么是 APT 攻击?

  • APT是黑客以窃取核心资料为目的,针对客户所发动的网络攻击和侵袭行为,是一种蓄谋已久的“恶意商业间谍威胁”。这种行为往往经过长期的经营与策划,并具备高度的隐蔽性。APT的攻击手法,在于隐匿自己,针对特定对象,长期、有计划性和组织性地窃取数据,这种发生在数字空间的偷窃资料、搜集情报的行为,就是一种“网络间谍”的行为。
    APT攻击是一个集合了多种常见攻击方式的综合攻击。综合多种攻击途径来尝试突破网络防御,通常是通过Web或电子邮件传递,利用应用程序或操作系统的漏洞,利用传统的网络保护机制无法提供统一的防御。除了使用多种途径,高级定向攻击还采用多个阶段穿透一个网络,然后提取有价值的信息,这使得它的攻击更不容易被发现。
    整个攻击生命周期的七个阶段如下:
    第一阶段:扫描探测
    在APT攻击中,攻击者会花几个月甚至更长的时间对"目标"网络进行踩点,针对性地进行信息收集,目标网络环境探测,线上服务器分布情况,应用程序的弱点分析,了解业务状况,员工信息等等。
    第二阶段:工具投送
    在多数情况下,攻击者会向目标公司的员工发送邮件,诱骗其打开恶意附件,或单击一个经过伪造的恶意URL,希望利用常见软件(如Java或微软的办公软件)的0day漏洞,投送其恶意代码。一旦到位,恶意软件可能会复制自己,用微妙的改变使每个实例都看起来不一样,并伪装自己,以躲避扫描。有些会关闭防病毒扫描引擎,经过清理后重新安装,或潜伏数天或数周。恶意代码也能被携带在笔记本电脑、USB设备里,或者通过基于云的文件共享来感染一台主机,并在连接到网络时横向传播。
    第三阶段:漏洞利用
    利用漏洞,达到攻击的目的。攻击者通过投送恶意代码,并利用目标企业使用的软件中的漏洞执行自身。而如果漏洞利用成功的话,你的系统将受到感染。普通用户系统忘记打补丁是很常见的,所以他们很容易受到已知和未知的漏洞利用攻击。一般来说,通过使用零日攻击和社会工程技术,即使最新的主机也可以被感染,特别是当这个系统脱离企业网络后。
    第四阶段:木马植入
    随着漏洞利用的成功,更多的恶意软件的可执行文件——击键记录器、木马后门、密码破解和文件采集程序被下载和安装。这意味着,犯罪分子现在已经建成了进入系统的长期控制机制。
    第五阶段:远程控制
    一旦恶意软件安装,攻击者就已经从组织防御内部建立了一个控制点。攻击者最常安装的就是远程控制工具。这些远程控制工具是以反向连接模式建立的,其目的就是允许从外部控制员工电脑或服务器,即这些工具从位于中心的命令和控制服务器接受命令,然后执行命令,而不是远程得到命令。这种连接方法使其更难以检测,因为员工的机器是主动与命令和控制服务器通信而不是相反。
    第六阶段:横向渗透
    一般来说,攻击者首先突破的员工个人电脑并不是攻击者感兴趣的,它感兴趣的是组织内部其它包含重要资产的服务器,因此,攻击者将以员工个人电脑为跳板,在系统内部进行横向渗透,以攻陷更多的pc和服务器。攻击者采取的横向渗透方法包括口令窃听和漏洞攻击等。
    第七阶段:目标行动
    也就是将敏感数据从被攻击的网络非法传输到由攻击者控制的外部系统。在发现有价值的数据后,APT攻击者往往要将数据收集到一个文档中,然后压缩并加密该文档。此操作可以使其隐藏内容,防止遭受深度的数据包检查和DLP技术的检测和阻止。然后将数据从受害系统偷运出去到由攻击者控制的外部。大多数公司都没有针对这些恶意传输和目的地分析出站流量。那些使用工具监控出站传输的组织也只是寻找"已知的"恶意地址和受到严格监管的数据。
  • from https://www.zhihu.com/question/28881041
  • -----------------------
  • https://github.com/kbandla/APTnotes
  • https://github.com/aptnotes/data
  • -------------------------
  • https://www.yunaq.com/
  • -------------------------

小议 APT 攻击中的C2架构

这篇博客,想讲一些 APT 攻击中有趣的C2架构。
长期的攻防对抗中,C2技术也是在变化的,本篇博客长期更新,以后看到新的C2架构,再补上。

0x01 什么是C2

C2 全称为Command and Control,命令与控制。放在汉语语义中,既是动词也是名词。除了APT, C2还被广泛应用于僵尸网络,本文中所指的C2,只针对APT 场景。
作动词解释
  • APT 攻击中的恶意软件,往往不能自动进行活动,通常需要通过网络与攻击者进行交互。这种情况下,Command and Control理解为恶意软件与攻击者进行交互
做名词解释
  • 所有的入侵、攻击,都是攻击者使用技术手段,通过基础设施对受害者造成影响。Command and Control作名词解释的话,就是攻击者的“基础设施”。

有什么用?

任何网络入侵都可以划分为七个阶段:探查、武器化、载荷投递、漏洞利用、驻留、命令控制和恶意活动( KILL CHAIN 模型 )。电脑被入侵后,往往会在网络建立C2通道。 APT 攻击通常不以破坏为目的,基本都是窃密、监听。所以 APT 恶意软件尤其需要建立C2通道进行手动交互,而不是自动活动。这是第一个用处:指令下发。




攻击者通过某种方式突破了防御边界,或是漏洞利用,或是钓鱼,又或是社工伪装。不管何种方式,投递的载荷不会太大,受限于空间,通常通过网络拉取二段exploit进行驻留。其次,APT 恶意软件,都带有间谍属性,在活动的时候会回传一些文件或者数据。这是第二个用处,资源下发和数据上传。
C2 架构也就可以理解为,恶意软件通过什么样的方式获取资源和命令,以及通过什么样的方式将数据回传给攻击者。

0x02 C2技术

HTTP/HTTPS、FTP

HTTP/HTTPS 是最常见的C2架构。优势有以下几点:
  • 应用层网络协议,成熟稳定、简单易用。
  • HTTP 允许任何类型的数据对象的传输,配合GET、POST、HEAD满足大多数命令交互需求。
  • 基于HTTP/HTTPS的web应用开发成熟,可在短时间开发、部署。
  • Domain-IP模式,方便基础设施的迁移。
  • 常见流量类型,往往不会引起防火墙和IDS注意。
以office 钓鱼为例,攻击者通过恶意宏或者漏洞利用,使用cscript、wscript或者powershell 从远端 HTTP 服务器拉取后门,进行安装执行。这种使用的HTTP的攻击策略,占已知披露 APT 事件的百分之九十。
因为HTTP是明文传输,恶意软件进行数据上传时,往往会对内容进行处理时,简单的如base64,xor;强度大一点的会使用非对称加密算法进行处理。




但是HTTP通信需要IP或者域名,如果资产被拉入黑名单,很容易被IDS检测出来。所以,某些APT 恶意软件使用了DGA生成算法。

DGA

DGA 在僵尸网络中应用广泛,APT 攻击中也曾使用。
攻击者可以生成用作域名的伪随机字符串,根据时间或者其他种子因素的变化而变化。攻击者根据算法,可以确定正在请求的域名,进行注册、解析。这种动态变化的域名可以很好规避黑名单安全策略。加大发现攻击的难度。APT28、APT32、APT34等都曾使用过这项技术。
以APT34某次攻击为例(hash:bbde33f5709cb1452ab941c08acc775e):




样本是 powershell 脚本,根据代码逻辑,生成的域名由六部分组成,mumbai-m.siteB007为固定部分,其余根据主机信息,网络信息以及请求次数动态变化。

DNS隧道技术

刚才说到DGA对黑名单的绕过,但是终究要走HTTP, 有什么方法可以躲过HTTP流量审计且不易发现?
DNS 隧道技术很合适。
相关概念请看 这里
DNS服务器根据域名的层级,进行分级查询。所谓"分级查询",就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址。
DNS 隧道技术就是使用了DNS分层查询的特性。举个例子,如何使用在 exploit.pi4net.com 使用隧道技术:
DNS服务器收到查询 exploit.pi4net.com 的请求,并首先尝试查找域扩展名 .com ,然后查找 pi4net.com ,但无法在其数据库中找到 exploit.pi4net.com ,它会将请求转发给 pi4net.com ,并询问它是否知道这条域名的记录。这时, pi4net.com 可以返回查询到exploit.pi4net.com 的ip; 也可以返回任意字符串,这个字符串,可以用作C2指令。虽然默认空间是60个字符,但是协议本身和DNS服务器配置允许该数据空间超过这个上限。
这种技术在 APT 攻击中比较少见,Trojan.Win32.Ismdoor.gen木马使用过这种技术。








针对该恶意软件家族的分析,移步至 这里

FTP

FTP 与 HTTP 类似,主要进行多段 Payload 下发、数据上传。和 HTTP 一样常见。APT 28 、APT 37、APT 38等都经常使用。技术门槛低,不再赘述。

社交平台

除了协议层进行通信外, web 应用的也可以作为C2架构。目前看到有多个 Actor 通过 facebook 、 twitter 等社交平台搭建C2。这种使用社交平台的C2易于搭建,一切指令封装到加密的平台通信里面。可轻易绕过黑名单,绕过流量审计。
以 ROKRAT 恶意软件为例,在某次 APT 攻击中曾使用 Twitter 下发C2命令:




某个样本中(hash:033284841a9c8edbbad3422a0ae82566),发现了7个不同的Twitter API令牌(包含Consumer Key、Consumer Secret、Token以及Token Secret)。恶意软件检查Twitter时间线上的最后一条信息来接收指令,指令包括执行命令、移动文件、删除文件、终止进程、下载并执行文件。
这种方式,隐蔽性高,很难从流量上发现威胁。但局限性也明显,只能传递简单指令,作资源分发,数据上传不是很好用。恶意软件使用的Twitter API,可以发布推文。资源加密后base64一下,以字符串的形式进行分发?

各种云盘

社交平台主要进行指令下发,与之类似的攻击策略,Actor 会使用云盘进行资源下发。
云盘和社交平台类似,隐蔽性强,不易发现。不同的是,一个常用于指令,一个常用于资源。
同样是 ROKRAT ,一些变种中,会使用云盘作为数据上传地址。
某样本中(hash:7a751874ea5f9c95e8f0550a0b93902d),内置了四个国外网盘的地址,分别是pcloud、box、dropbox、yandex;解密得到云盘的API Key,使用API向网盘中上传数据:








这里插一句,与云盘类似,APT 37 使用的 KARAE 恶意软件,通过 torrent 分发。这种方式只在2016年见过几例,比较罕见。




MDM

之前的几种,常见于PC,移动端上,自然有独特的C2方式。针对IOS,在2018年7月有一个使用MDM的例子比较独特,攻击者部署了一个开源移动设备管理( MDM )系统来控制注册设备。MDM相关概念请看 这里。简单来说,有了MDM服务器可以在IOS设备上部署应用。攻击者使用BOptions边加载技术向合法应用程序添加功能,主要是IM软件WhatsApp和Telegram,然后由MDM部署到目标设备上,用于获取通讯记录,SMS信息,各种应用数据以及聊天记录等等。


未越狱的IOS的安全性其实挺高的,使用 MDM 来获得安装权限也算别出心裁。但是这种攻击有两个难点:
  • 获得 MDM 资格
  • 用户需要信任攻击者的证书
默认的企业开发者账号没有开通MDM服务,需要申请开通MDM服务成为Vendor,这无疑加大了攻击者攻击的成本。
受害者需要信任攻击者颁布的证书,点击设置 -> 通用 -> 设备管理 -> 信任证书才可以真正的进行攻击,或许是使用社工的方式诱惑受害者执行操作。但这无疑降低了攻击的成功率。




安卓平台比IOS开放,当然C2选择的灵活性也比较大,比较独特的就是,使用GCM、PUBUNB等消息推送服务进行C2通信。

消息推送服务

消息推送服务作为C2使用,常见于安卓平台。
恶意软件传递给攻击者后,最为重要是实现长期驻留以及远程可控。移动平台不像PC操作空间那么大,实现的方案有限。基本都是安装后抹掉桌面图标,加上各种自唤醒技巧,高级点的攻击会利用root漏洞来获取更大的操作空间。
C2架构上,除了通用HTTP,消息推送服务是安卓平台比较有特点的通信方式。
应用想推送消息给用户,只需将信息发送给消息推送服务器,然后推送服务器将消息转发给用户。较为健全的生态是Google Play 的 GCM。
EST 18年4月披露的 APT 组织 Reaper 的移动攻击活动中,部分样本采用了GCM 作为C2通道。(样本hash:d6abaa07f7e525153116c98412115b2e):








恶意软件执行后,将收集设备信息,例如电话号码、通话记录、位置以及设备文件信息。压缩加密后上传远程服务器:




但是,上传上传通道是采用的HTTP。整体的架构就是:
  • GCM 进行命令下发
  • HTTP 进行数据上传
因为安卓平台的开放性,出现了许多类似于 GCM 的消息推送服务提供商。 后续样本中,出现了使用 PubNub 消息推送服务的样本:




其实使用消息推送并不只在安卓平台。windows 平台上也有恶意软件使用消息推送服务进行命令数据传输。

TCP 数据报文

将C2指令封装到 TCP 报文中,常见于linux 服务器的恶意软件。在头部设置flag,混杂模式监听本地流量,当遇到特定帧结构的数据报文时,执行操作。比如“ext4” 后门:




“ext4”二进制文件相对较小,仅为9511字节,由简单的函数组成。使用libpcap库来监听本机流量。恶意软件被被配置为每小时运行一次。运行时进行监听流量,回调给 my_packet_handler 进行处理,对payload XOR解码后,如果字符串以anti:开头,则剩余的部分将传递给execl运行 bash 命令。












0x03 归纳

其实说那么多,C2 方式有这么三类:
  • 传输协议层
  • 应用协议层
  • 应用服务层
Command and Control, 如果是远程命令控制,一定是基于网络,这是毋庸置疑的。
借 OSI 七层模型,由下到上进行梳理。

传输协议层

传输协议层,特指TCP、UDP。对应的之前所讲的“ext4”后门的例子。
使用这层协议的恶意软件,不打个人终端,主要目标是关键基础设施的服务器,尤以 linux 为甚。原因有两个:
  • 设备必须暴露在公网,传输协议层的恶意软件,都是被动监听。为了隐蔽性,往往不进行主动链接。
  • 个人终端上有更好的C2方案。
其实不只是TCP、UDP,自数据链路层上,都可用户进行C2命令传输,处于内网渗透通信,使用 ARP 也不是不可能。但是如果网际数据传输,必须要传输层以上协议才可以。

应用协议层

应用层协议操作空间要比传输层协议大得多。
C2 架构比较常用的:HTTP/HTTPS、FTP、DNS、SMTP等等。
在长期的发展过程中,也延伸出许多技术。使用应用层协议进行C2通信最重要的是隐蔽性、其次才是传输效率和适用场景。
常见的对抗技术,包括但不限于:
  • 黑名单
  • 防火墙规则
  • 内外网隔离
  • 流量审计等
应用协议层上面,稳定性、可扩展性最强的无疑是HTTP/HTTPS,FTP,可以胜任所所有的入侵场景。同时也是比较容易进行检测的。
黑名单策略可以过滤掉大部分请求,所以在一些样本中看到了 DGA 的使用。为了对抗防火墙,又有使用DNS隧道技术的样本出现。而这些技术,各有优缺,只能使用固定场景。
  • 传输文件:
  • 如果进行文件下发和数据上传,最常见的选择是http、ftp。为了增加隐蔽性,某些样本加上DGA.
  • 指令下发:
  • 指令下发,不需要太多的流量载荷。一些样本追求隐蔽性,使用DNS隧道技术。
但是真实环境中更复杂,如果遇到内外网隔离的状况。则需要借助其他的协议。
  • 网际通信
  • 在一些隔离环境中,邮件服务器常常被列为白名单。可以使用SMTP协议,进行内外网的通讯。
  • 局域网内通信
  • 局域网内一般会有IDS进行检测,动作太大会被发现,除了常规使用的通信方法外,LPR、RAW网络打印协议也是比较好的选择。

应用服务层

基于之前所讲的哪些协议,上层有许多的应用服务。比如社交平台,网盘,消息推送服务等。
使用这些应用服务可以一劳永逸解决上述多数问题。
这些应用的域名和IP都被标注了白名单,并且多数都有 API 可以使用。针对特定平台,比如IOS,也发现了MDM攻击。将下发的文件、指令以及上传的数据封装在应用流量里面,既能躲避流量审计,又有不错的容错率。一件多雕,所以近几年,使用这种架构的 APT 攻击越来越多。
其实实际运用也有一定的局限,社交平台和消息服务往往都有数据限制,因此常被用于指令下发。而网盘之类的服务,自带文件属性,常被用于数据上传、资源下发。

0x04 总结

受限于各个 APT 组织的技术能力和经济能力,目前看到的C2架构,主流的是 HTTP 。为了对抗黑名单、防火墙、流量审计,近两年基于应用服务的C2越来越多,这是可见的趋势。
不排除某些实力强悍的 APT 组织具有不易被检测的C2通信方式可能。以后看到新的C2架构,再更新上来。
-----
第三方服务用作C2相关资源汇总 
----------------------------------------

  • C2工具
    • CS 3.14
      • 自定义流量特征:DNS/HTTP/HTTPS/SMB和TCP
      • Payload加载流程:shellcode/Loader/Stageless/beacon
      • DNS:如果用到dns通道默认参数必须修改(容易被设备检测),不要用DNS做数据通道
      • HTTP(S):不要在uri中的文件后缀设置js、css等静态文件,效果:付费证书>免费证书>自签名证书 (Let's Encrypt 免费 3个月过期,开自动续)
  • Redirector
    • DNS socat|iptables|ssh(tmux和screen选一个)
    • Apache|Nginx
    • Tips:
      • 建议使用多个判断过来请求,拒绝使用默认uri,对抗全网C2扫描
      • 仅允许目标相关IP访问,对抗云沙盒
      • 限定访问时间段,只在某个时间段请求payload
      • 不要把非payload的uri重定向到google等高信誉域名
      • 建议:在www.aaa.com搭建来养域名,使用c2.aaa.com的二级域名做C2
    • Domain Fronting(隐藏IP、域名的方式)
      • Google App Engine| Amazon |Azure|Aliyun CDN
      • 可见层:DNS、TLS
      • 不可见层:HTTPS
      • URL(高信誉) SNI(高信誉) HOST(C2)
      • https://github.com/vysecurity/DomainFrontingLists
      • 代替方案:HTTP pipelining( >http 1.1 )
        • 和 domain fronting 效果相同
        • 利用同一个tcp连接发送不同的host的http包
        • tips:good domain + bad domain 包一层同时发过去
    • 第三方服务用作C2
      • Office365、Pastebin、Slack、Facebook、Dropbox、Gmail、Twitter..
      • 缺点:需要硬编码到第三方服务
      • 第三方服务用作C2相关资源汇总
  • 邮件钓鱼(SMTP)
    • 域名:同C2域名选择
    • 高信誉的邮件发送者:Mailchimp、Sendgrid
    • 正确配置SPF、DKIM\DMARC
    • SSL证书
    • 发送时间和频率
    • 一键部署
    • 钓鱼邮件框架:Gophish (https://github.com/gophish/gophish)
  • 隐蔽性和安全性
    • 权限最小化:使用iptalbes限定组件通讯,SSH进行端口转发
    • Teamserver:限制端口只能本地访问,限制beacon监听端口只能redirector访问
    • Tips:VPS容易被GFW拦截?
      • 解决方案:V2ray + Nginx + CLoudflare + Freenom+ Websocket 搭建代理
  • 基础设施监控系统

邮件钓鱼之前期信息收集与侦查

  • 面临的技术挑战:
    • 邮件网关 mail gateway
    • 浏览器
    • EDR、IDS
  • Mail Gateway
    • ANTI-SPAM
      • SPF
      • DKIM
      • 新注册域名
      • 生僻域名后缀
      • 敏感关键字
    • 特性:
      • 邮件退信默认开启
      • MTA默认不开启 Recipient Validation
    • 结论:当我们发送一封钓鱼邮件给一个不存在的邮箱账户时,如果能收到NDR,证明钓鱼邮件通过了邮件网关安全审查(BACKSCATTER ATTACK)
    • BYPASS ANTI-SPAM
      • 通过上述结论,探测,fuzzing ANTI-SPAM 引擎规则
      • 稳定触发NDR的办法:
        • 正文大于10M
        • 收件人超过5000个
    • BYPASS ANTI-MALWARE
    • NDR
  • 总结 image

钓鱼样本制作

  • 钓鱼邮件类型
    • 恶意的chm文档:利用easy,但目前比较难过杀软,免杀效果差
    • 带有恶意宏代码的office文档:易于混淆(结合图片模糊之类),但需要手动开宏,进程链可疑
    • 白加黑钓鱼:利用带签名的白程序,通过DLL劫持的方案加载恶意DLL;比较容易过AV,但需要解压执行
    • LNK文件钓鱼:链接对象是Powershell,进程链完善
    • PPT钓鱼样本:PPT超链接,弹出“安全声明”,不用启动宏,但必须全屏播放,启用才执行;不推荐使用
    • 漏洞利用的钓鱼邮件:效率高,同样成本也高
  • 写工具自动化生成恶意lnk,关键函数:
    • IShellLink::SetIconLocation()
    • IShellLink::SetShowCmd() 窗口显示
    • IShellLink::SetArguments()
    • IShellLink::SetPath()
    • ...
  • LNK钓鱼邮件制作
    • 钓鱼简历的编写:内容可选浮夸,让HR打开看完后大概率删除,防止提给技术人员
    • LNK图标的显示:改成各个系统都能默认显示的通用图标
    • 如何隐藏行为:SetShowCmd() 最小化窗口
    • Word文档存放:
      • 联网下载Word文档
        • (New-Object System.Net.WebClient).DownloadFile(url, file_path);
        • 数据还原引擎
          • 协议内容还原:tcp、http、smtp
          • 文件内容还原:office、pdf、zip
          • 加壳程序还原:upx
          • 加密算法数据还原:base64
      • 本地释放Word文档
        • 将Word塞到COMMAND_LINE_ARGUMENTS
          • ARGUMENT用于LNK中存储命令行参数
          • StringData结构,CountCharacters
          • IShellLink::SetArguments()
          • 塞入数据的最大值是 explorer.exe 对命令行参数长度的限制
          • 实测得出 0x7FC2(31KB)
        • 将Word塞到lnk文件的尾部(推荐使用
          • 尾部可以追加任意大小的word、PE、PowerShell
          • select -last 1 定位到最后一个对象,以“\n”划分对象
          • select -index 1 也可以
    • 杀软对抗
      • 短文件名 POWERS~1.EXE
      • 代码混淆 参考赛门铁克的paper
      • 安全类进程检测
        • 虚拟机-取证工具-杀软检测-调试器
        • 常规手法
          • 进程名检测
          • 窗口标题检测
        • 新姿势
          • 遍历进程,获取进程对应的版权信息,与黑名单列表比对
          • 优点:升级版本也不变,通用
        • 如何根据PID获取进程的全路径:ProcessExplorer
        • x86不太可行,x64可以
        • 绕过PCHunter 0RING hook
        • 检测后行为,通知攻击者,及时善后处理

内网横向移动

  • 内网侦查
    • 经典主被动内网侦查方式
      • 主动扫描
        • 设备资产识别
        • 可用服务采集
        • 脚本检测
      • 被动搜集
        • 监听广播消息
      • 雷区警示
        • 风险面:Network ACL封锁、受控主机HIDS、HoneyPot、NIDS
      • 方法对比
  • 域内信息侦查 * 类域 * *nix * Windows AD
    • 定位域控(域内主机)
      • 时间服务器
        • net time /domain
        • w32tm /query
      • DNS服务器
        • Get-DnsClientServerAddress 查询本机 DNS SERVER 设置
        • 向DNS server 查询 Domain Name A记录对应地址
      • 域控定位器
        • DC Locator Process
        • 产生DNS查询,沿用DC Locator的机制很安全
        • Kerberos认证,KDC
        • GC
        • 查询工具
          • nltest 提取域控信息的过程
          • net
          • dsquery 通过对LDAP进行查询
        • dsquery/ADSISearcher使用明文的LDAP协议,容易被IDS捕获
    • 定位域控(域外主机)
      • DNS排查
        • Scan UDP/53
        • Query DNS FQDN from DNS
        • Query Locators from DNS
      • LDAP(S)& GC(S)
        • 扫描端口,利用特性筛查域名
        • 匿名读取部分LDAP元数据
        • 读取LDAP证书信息
        • GC服务 查询 TCP/3268 TCP/3269
        • 防御:可以关闭匿名绑定
      • 查询LDAP(S)服务
        • ADexplorer:GUI,一些cmdlet
        • Get-ADUser
        • Powerview:大量cmdlet
      • Kerberos
        • AS-REQ & AS-REP
        • KDC TGT票据
        • 基于AS协议的用户枚举
          • KERBEROSUSERENUM(a-team github)
          • MSF模块
        • ASREPROAST
          • Session Key,使用用户的NTHASH加密
          • John/HashCat 可以进行离线破解
        • SPN(Service Principal Name)域对象的属性,对象是机器/用户,必须设置
        • TGS-REQ & TGS-REP
          • 服务票据
          • Service Ticket
          • 结论:普通域账号申请服务票据后可以对账号离线破解
          • KERBEROAST攻击(基于上述结论)
            • Rubeus.exe
            • PowerView
      • HUNT DOMAIN ADMIN
        • 特定用户登录会话
          • 远程会话枚举
            • NetSessionEnum(SMB会话)
            • NetWkstaUserEnum(交互登录会话)新版本系统需要 admin privilige
          • 远程用户枚举
            • 场景:一些同域管理账号同名的本地账号可能是同一人创建
            • SAMR 查询组和成员信息(注:Win 10后没有admin无法枚举)
            • LSARPC 查询SID相关
          • 远程登录枚举
            • 交互式登陆:主要指Console和RDP登陆的方式
        • 获取主机权限:Vul RBCD & RPRN
        • 提取遗留的凭据: Powerview Mimikatz
        • 得到用户权限
  • 横向移动
    • MS-RPC
      • WMI:基于DCOM TCP/135 明文传输
      • PSEXEC:(tips:使用impacket工具 psexec.py 区别在于目标支持SMB3.0默认开启加密)
      • 远程计划任务
      • DCOM:远程调用的COM组件 TCP/445 + Random port dcomexec.py
    • Kerberos委派
      • 概念:是一种让服务有能力以来访用户身份访问其他服务的认证机制
      • 无限制委派:default设置仅域控可以无限制委派
        • S4U2SELF
        • PRINTER BUG:Printer Spooler服务SSRF
        • 无限制委派+S4U2SELF+PRINTER 任意域控
      • 约束委派
        • S4U2PROXY
      • 基于资源的委派(RBCD) 目前杀伤力最大的委派
        • 继承S4U2SELF、S4U2PROXY
  • 域权限维持
    • 主机权限维持(常见类型,不展开)
    • 域权限维持
      • SPN
        • 针对账户进行,参考前面
      • 黄金票据
        • 用krbtgt加密TGT,TGT加密使用该账户的key作为密钥
        • 使用默认参数创建的金票过期时间很长,mimikatz
        • DCSync拉取域内账户的hash/key
        • 检测点:
          • krbtgt key,修改krbtgt密码两次,分析4769日志
          • 日志分析
          • IDS规则,过期时间,算法等
      • 白银票据
        • SRVS的相关key加密
        • 检测点:
          • PAC信息验证
      • 受限委派
      • RBCD
      • 域组策略
      • LAPS

文件感染与横向移动

  • 文件感染
    • 意义
    • 场景
      • 公司软件库供应链,类似“驱动人生”
      • 感染远程共享文件
      • 外界设备感染,如U盘、移动硬盘
      • 3389挂载盘到服务器
      • 邮件感染,插入恶意宏
      • 流量劫持,感染传输中的文件
    • 方式
      • PE感染
      • LNK感染
      • Office感染
    • 常规PE感染
      • 给exe添加一个导入函数,DllMain中写恶意代码,工具StudyPE
      • 把恶意代码插入到PE中,修改OEP,重建PE
        • OEP内某处跳转到恶意代码
        • 修改OEP指向恶意代码
      • 对抗思路
        • DLL加载
        • OEP jump
        • 利用TLS(线程局部存储)回调
    • TLS感染
      • TLS回调,反调试;把恶意代码放在TLS,不需要修改OEP
      • TLS数据结构
      • TLS感染总体流程:搜寻节间隙 - 修改录数据目 - 构建TLS目录 TLS回调函数 - 重建PE - 恶意文件释放
    • LNK文件
      • 图标如何保持不变?
        • IShellLink::SetIconLocation()把exe设置为当前lnk的图标
      • 恶意代码正常拉起原程序
        • 借助rundll32.exe
      • 场景:权限维持、横向移动
    • Office文件感染
      • .docx .docm(宏文件) 可以改为 .doc
      • 目标:把.docx转换为带恶意宏的.docm或.doc
    • 杀软对抗
      • 修改文件关联
        • .docm 改为.doc,对抗针对后缀.docm 的检测
        • 修改宏关联文件,对抗依赖文件名or类型检测.

No comments:

Post a Comment