在众多渗透测试中客户想要了解攻击溯源查找问题,我们在日常网站安全检测过程中了解知道黑客是如何攻击和上传木马并进行篡改,以及如何查找日志分析攻击者是通过哪些脚本入口文件进行入侵的,那么本节由我们资深的渗透测试主管技术来为大家讲解。
6.9.1.1. 基于日志的溯源
使用路由器、主机等设备记录网络传输的数据流中的关键信息(时间、源地址、目的地址),追踪时基于日志查询做反向追踪。 这种方式的优点在于兼容性强、支持事后追溯、网络开销较小。但是同时该方法也受性能、空间和隐私保护等的限制,考虑到以上的因素,可以限制记录的数据特征和数据数量。另外可以使用流量镜像等技术来减小对网络性能的影响。
6.9.1.2. 路由输入调试技术
在攻击持续发送数据,且特性较为稳定的场景下,可以使用路由器的输入调试技术,在匹配到攻击流量时动态的向上追踪。这种方式在DDoS攻击追溯中比较有效,且网络开销较小。
6.9.1.3. 可控洪泛技术
追踪时向潜在的上游路由器进行洪泛攻击,如果发现收到的攻击流量变少则攻击流量会流经相应的路由。这种方式的优点在于不需要预先部署,对协同的需求比较少。但是这种方式本身是一种攻击,会对网络有所影响。
6.9.1.4. 基于包数据修改追溯技术
这种溯源方式直接对数据包进行修改,加入编码或者标记信息,在接收端对传输路径进行重构。这种方式人力投入较少,支持事后分析,但是对某些协议的支持性不太好。 基于这种方式衍生出了随机标记技术,各路由以一定概率对数据包进行标识,接收端收集到多个包后进行重构。
6.9.2. 分析模型
6.9.2.1. 杀伤链(Kill Kain)模型
杀伤链这个概念源自军事领域,它是一个描述攻击环节的模型。一般杀伤链有认为侦查跟踪(Reconnaissance)、武器构建(Weaponization)、载荷投递(Delivery)、漏洞利用(Exploitation)、安装植入(Installation)、通信控制(Command&Control)、达成目标(Actions on Objective)等几个阶段。
在越早的杀伤链环节阻止攻击,防护效果就越好,因此杀伤链的概念也可以用来反制攻击。
在跟踪阶段,攻击者通常会采用扫描和搜索等方式来寻找可能的目标信息并评估攻击成本。在这个阶段可以通过日志分析、邮件分析等方式来发现,这阶段也可以采用威胁情报等方式来获取攻击信息。
武器构建阶段攻击者通常已经准备好了攻击工具,并进行尝试性的攻击,在这个阶段IDS中可能有攻击记录,外网应用、邮箱等帐号可能有密码爆破的记录。有一些攻击者会使用公开攻击工具,会带有一定的已知特征。
载荷投递阶段攻击者通常会采用网络漏洞、鱼叉、水坑、网络劫持、U盘等方式投送恶意代码。此阶段已经有人员在对应的途径收到了攻击载荷,对人员进行充分的安全培训可以做到一定程度的防御。
突防利用阶段攻击者会执行恶意代码来获取系统控制权限,此时木马程序已经执行,此阶段可以依靠杀毒软件、异常行为告警等方式来找到相应的攻击。
安装植入阶段攻击者通常会在web服务器上安装Webshell或植入后门、rootkit等来实现对服务器的持久化控制。可以通过对样本进行逆向工程来找到这些植入。
通信控制阶段攻击者已经实现了远程通信控制,木马会通过Web三方网站、DNS隧道、邮件等方式和控制服务器进行通信。此时可以通过对日志进行分析来找到木马的痕迹。
达成目标阶段时,攻击者开始完成自己的目的,可能是破坏系统正常运行、窃取目标数据、敲诈勒索、横向移动等。此时受控机器中可能已经有攻击者的上传的攻击利用工具,此阶段可以使用蜜罐等方式来发现。
6.9.2.2. 钻石(Diamond)模型
钻石模型由网络情报分析与威胁研究中心(The Center for Cyber Intelligence Anaysis and Threat Research,CCIATR)机构的Sergio Catagirone等人在2013年提出。
该模型把所有的安全事件(Event)分为四个核心元素,即敌手(Adversary),能力(Capability),基础设施(Infrastructure)和受害者(Victim),以菱形连线代表它们之间的关系,因而命名为“钻石模型”。
杀伤链模型的特点是可说明攻击线路和攻击的进程,而钻石模型的特点是可说明攻击者在单个事件中的攻击目的和所使用攻击手法。
在使用钻石模型分析时,通常使用支点分析的方式。支点(Pivoting)指提取一个元素,并利用该元素与数据源相结合以发现相关元素的分析技术。分析中可以随时变换支点,四个核心特征以及两个扩展特征(社会政治、技术)都可能成为当时的分析支点。
6.9.3. 关联分析方法
关联分析用于把多个不同的攻击样本结合起来。
6.9.3.1. 文档类
6.9.3.2. 行为分析
6.9.3.3. 可执行文件相似性分析
6.9.4. 清除日志方式
OAuth
7.1.1. 简介
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
OAuth在客户端与服务端之间,设置了一个授权层(authorization layer)。客户端不能直接登录服务端,只能登录授权层,以此将用户与客户端区分开来。客户端登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
客户端登录授权层以后,服务端根据令牌的权限范围和有效期,向客户端开放用户储存的资料。
OAuth 2.0定义了四种授权方式:授权码模式(authorization code)、简化模式(implicit)、密码模式(resource owner password credentials)和客户端模式(client credentials)。
7.1.2. 流程
7.1.3. 授权码模式
授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与服务端的认证服务器进行互动。
其流程为:
A步骤中,客户端申请认证的URI,包含以下参数:
C步骤中,服务器回应客户端的URI,包含以下参数:
D步骤中,客户端向认证服务器申请令牌的HTTP请求,包含以下参数:
E步骤中,认证服务器发送的HTTP回复,包含以下参数:
7.1.4. 简化模式
简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了授权码这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。
其步骤为:
A步骤中,客户端发出的HTTP请求,包含以下参数:
C步骤中,认证服务器回应客户端的URI,包含以下参数:
在上面的例子中,认证服务器用HTTP头信息的Location栏,指定浏览器重定向的网址。注意,在这个网址的Hash部分包含了令牌。
根据上面的D步骤,下一步浏览器会访问Location指定的网址,但是Hash部分不会发送。接下来的E步骤,服务提供商的资源服务器发送过来的代码,会提取出Hash中的令牌。
7.1.5. 密码模式
密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。
在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。
其步骤如下:
B步骤中,客户端发出的HTTP请求,包含以下参数:
7.1.6. 客户端模式
客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向服务端进行认证。
其步骤如下:
A步骤中,客户端发出的HTTP请求,包含以下参数:
B步骤中,认证服务器向客户端发送访问令牌,渗透测试中包含的授权模式都要详细的审计和检测,如果对此有更多的想要了解,可以咨询专业的网站安全公司来处理.