事件应急响应专家(五)

前四章

我们介绍了事件应急响应专家、要使用的工具splunk和搜索处理语言SPL。

今天,我们模拟真实环境,使用splunk来寻找攻击者的踪迹。

有效使用 Splunk(场景 1)

# 设想
您工作的组织 (Wayne Enterprises) 正在使用 Splunk 作为 SIEM 解决方案来增强其入侵检测功能。 SOC 经理通知您该组织已受到 APT 组织的攻击。他要求您通过大量利用 Splunk 及其获取的所有数据来响应此事件。
Splunk摄取的数据包括Windows事件日志、Sysmon日志、Fortinet下一代防火墙日志、Suricata日志等。
:本实验基于Splunk发布的Boss Of The SOC (BOTS) v1数据集。感谢 RyanKovarDave Herrald 和 [John Stoner](https://twitter.com/ Stonerpsu)通过此数据集与公众分享本实验室介绍的 Splunk 检测技巧。

学习目标

本实验的学习目标不仅是熟悉Splunk的架构和检测功能,还要学习有效的Splunk搜索编写。
具体来说,您将学习如何使用 Splunk 的功能来:

  • 通过网络获得更好的可见性
  • 及时有效地响应事件
  • 主动寻找威胁

任务 1:通过 Splunk 搜索识别针对您的网络的任何侦察活动

使用 Splunk 的功能,尝试识别 APTgroup 执行的任何侦察活动。您组织的网站是 imreallynotbatman.com。
提示

  • 关注 stream:http 源类型并识别负责大部分流量的源 IP。然后,使用 suricata 源类型验证您的发现。
  • 通过分析所有重要字段和来源类型来深入调查 ## 任务 2:识别网络上的任何武器化活动
    使用开源情报 (OSINT),尝试识别 APT 组织执行的任何武器化活动。

提示

  • 识别与预先准备攻击 Wayne Enterprises 的域相关的任何 IP 地址 - 尝试了解 IP 地址和域之间的关联以及其他 - 执行与上述相同的操作,将攻击者电子邮件与互联网上的基础设施关联起来 ## 任务 3 :识别您网络上的任何交付活动
    使用 OSINT,尝试识别 APT 组织执行的任何交付活动。具体来说,尝试识别与您之前发现的攻击者基础设施相关的恶意软件。

提示

  • 将任何与攻击者相关的 IP 地址提交给 ThreatMiner、VirusTotal 和 Hybrid Analysis 等开放源

    任务 4:通过 Splunk 搜索识别网络上的任何利用活动 使用 Splunk 的功能,尝试识别 APT 组执行的任何利用活动。

提示

  • 关注 stream:httpiis 源类型,并确定哪个服务器是目标以及它使用的内容管理系统
  • 重点关注 stream:http 源类型并识别暴力攻击的来源 - 通过分析所有重要字段和源类型来更深入地进行调查 ## 任务 5:通过 Splunk 搜索识别网络上的任何安装活动 使用 Splunk功能,尝试识别 APT 组执行的任何安装活动。 提示
  • 关注 stream:httpsuricata 源类型以识别任何上传的可执行文件
  • 利用 Sysmon 日志来识别有关任何上传的可执行文件的附加信息

    任务 6:通过 Splunk 搜索识别网络上任何与命令和控制相关的活动

    使用 Splunk 的功能,尝试识别 APT 组执行的任何与命令和控制 (C2) 相关的活动。

提示

  • 重点关注 stream:http、 fgt_utm、stream:dns 源类型,以识别充当命令和控制的任何域。

    解决方案

    您可以在下面找到本实验室每项任务的解决方案。但请记住,您可以遵循自己的策略,该策略可能与以下实验中解释的策略不同。

    任务 1:通过 Splunk 搜索识别针对您的网络的任何侦察活动

    登录 Splunk 的 Web 管理界面后,单击位于左侧 应用程序 列中的搜索和报告应用程序。您应该会看到类似于下面的内容。
    ![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i

法师11.png)
为了测试 Splunk 是否可以成功访问提取/加载的数据,首先将时间范围选择器更改为所有时间,然后提交以下搜索。

1
索引=“botsv1”最早= 0 

您应该会看到事件的数量随着时间的推移而增加。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage12.png)
现在我们知道一切都按预期进行,让我们确定针对韦恩企业的任何侦察活动。提醒一下,该组织的网站是 imreallynotbatman.com
我们应该做的第一件事是确定要搜索的源类型。具体来说,我们应该首先确定与 imreallynotbatman.com 关联的源类型。我们可以通过将时间范围选择器更改为 所有时间 并提交以下 Splunk 搜索来实现。

1
索引=botsv1 imreallynotbatman.com 

您应该会看到类似于下面的内容。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage13.png)
要确定源类型,只需单击源类型(上面的红色矩形)。您应该看到以下内容。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage14.png)
我们还可以识别所有源地址。我们可以通过之前的搜索来做到这一点,但是这次我们将向下滚动并单击 src 字段,如下所示。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage15.png)
由于我们对识别侦察活动感兴趣,因此最好将重点放在

流:http 源类型。 (Stream 是 Splunk 的一款免费应用程序,可收集线路数据,并可关注多种不同的协议,包括 smtp、tcp、ip、http 等。)

1
索引=botsv1 imreallynotbatman.com 源类型=流:http 

如果我们这样做,源将缩小到两个:40.80.148.4223.22.63.11440.80.148.42 与大约 95% 的 http 流量相关,因此我们暂时关注这一点。
识别所有来源的另一种方法如下。

1
索引=botsv1 imreallynotbatman.com 源类型=流* |统计计数(src_ip)作为 src_ip 的请求 |排序 - 请求 

到目前为止,我们只能假设 40.80.148.42 是 APT 组织执行侦察/扫描活动的 IP。我们可以通过检查 Suricata 来验证这一发现,如下所示。

1
2
3
4
5
索引=botsv1 imreallynotbatman.com src=40.80.148.42 sourcetype=suricata ``` 
我们看到与 **40.80.148.42** 相关的 Suricata 日志,但没有签名字段。我们可以通过向下滚动、单击**更多字段**并选择**签名**来查看签名。如果我们这样做,签名字段将在**所选字段**列下可见。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage16.png)
从触发的 Suricata 签名中,我们可以得出结论:**40.80.148.42** 实际上是在扫描 **imreallynotbatman.com**。
我们也有兴趣了解对手的复杂程度。那么出现的问题是,APT 组织是否使用了已知或复杂的扫描技术?让我们看一下提交的请求来回答这个问题。

索引=botsv1 src=40.80.148.42 源类型=流:http

1
2
3
4
5
6
7
8
9
10

详细的请求信息可以在 **src_headers** 字段中找到。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage17.png)
APT 组织利用了信誉良好的 [Acunetix](https://www.acunetix.com/) 漏洞扫描程序的实例。
我们还可以通过寻找不常见的用户代理来识别该工具的用法。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage18.png)
我们可以通过相同的搜索和 **dest** 字段轻松识别哪个服务器是目标。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage19.png)
目标显然是**192.168.250.70**。
如果我们想更仔细地了解 APT 组织的请求,我们可以按如下方式进行。

索引=botsv1 dest=192.168.250.70 源类型=流:http

1
2
3
所请求的 URL 可以在 **uri** 字段中找到。 
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage20.png)
我们还对成功的页面加载感兴趣。我们可以识别它们,如下所示。

索引=botsv1 dest=192.168.250.70 源类型=流:http 状态=200 |按 uri 统计计数 |排序-计数

1
2
3
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage21.png) 
我们可以通过 **iis** 源类型获得类似的结果,如下所示。 (这次我们
正在使用名为 **stats** 的转换搜索命令,该命令允许我们计算按 URI 分组的事件数量。)

索引=botsv1 源类型=iis sc_status=200 |统计值(cs_uri_stem)

1
2
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage22.png) 
您可能想知道为什么我们不指定 **192.168.250.70**。这是因为,如果我们提交以下内容并检查主机字段,我们将只找到一台主机,**we1149srv**。该主机的IP地址是**192.168.250.70**

索引=botsv1 源类型=iis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage23.png) 
以下是我们迄今为止的发现。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage24.png)
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage25.png)
## 任务 2:识别网络上的任何武器化活动
此时,我们需要明白Splunk并不是万能的。在我们的调查过程中,并非所有答案都可以在 SIEM 中找到。有时我们需要从 SIEM 转向其他内部或开源来寻找答案。
我们有兴趣识别预先准备攻击 Wayne Enterprises 的域。
我们通过 Splunk 仔细查看了 **40.80.148.42** IP 地址。让我们对 **23.22.63.114** 执行相同的操作,但通过开源进行,因为 Splunk 不包含太多有关它的信息。
如果我们去 [http://www.robtex.com](http://www.robtex.com/) 这样的开源网站并提交 **23.22.63.114** IP,我们会遇到以下情况。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage26.png)
正如我们所看到的,该 IP 有许多与其关联的其他域名。这些域名很可能是网络钓鱼域名,因为它们的名称与我们工作的组织 **Wayne Enterprises** 相似。
[https://threatcrowd.org](https://threatcrowd.org/) 和 [https://www.virustotal.com](https://www.virustotal.com/) 等开源可以为我们提供附加信息。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage27.png)
例如,通过 Threatcrowd.org,我们只需提交 **23.22.63.114** IP,即可识别与我们正在处理的 APTgroup 相关的其他域。
还记得我们讨论过 Whois 信息以及攻击者如何利用这些信息进行有针对性的攻击吗?好吧,让我们通过检查每个关联域的 whois 信息来让攻击者尝尝自己的毒药。
在检查 **wayncorpinc.com** 的 whois 信息时,我们遇到以下情况。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage28.png)
然后,我们可以继续进行反向电子邮件搜索,并可能识别与 APT 组织相关的其他基础设施。下面是反向电子邮件搜索的示例。
<https://www.threatcrowd.org/email.php?email=LILLIAN.ROSE@PO1S0N1VY.COM> 以下是我们迄今为止的发现:
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage29.png)
## 任务 3:识别网络上的任何交付活动
我们需要尽可能多地了解该 APT 组织的 TTP 和使用的恶意软件,因此让我们通过开源进行深入挖掘。
[https://www.threatminer.org](https://www.threatminer.org/) 具有在搜索 IP 地址信息时包含相关恶意软件样本的强大功能。这是我们在搜索有关 **23.22.63.114** 的信息时会遇到的情况
**threatminer.org**。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage30.png)
然后,我们可以将这些 MD5 哈希值提交给 Threatminer、VirusTotal 或 Hybrid-analysis.com 等开放源,以识别有关样本的其他元数据。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage31.png)
APT 组织可能会制造突变体,因此哈希值可能没有用处。我们应该记下该文件名,以防他们保留该文件名。
以下是我们迄今为止的发现。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage32.png)
## 任务 4:通过 Splunk 搜索识别网络上的任何利用活动
现在是我们返回 Splunk 来识别任何利用活动的时候了。我们首先确定与最大数量的 http 事件关联的源 IP 地址。我们可以这样做,如下所示。

index=botsv1 sourcetype=stream:http dest=”192.168.250.70” http_method=POST ```
src 字段包含我们正在寻找的内容。我们指定我们对 POST 请求感兴趣,因为登录通常是通过 POST 请求执行的(稍后会详细介绍)。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage33.png)
我们来看看 40.80.148.42 发出的那些 POST 请求

1
index=botsv1 sourcetype=stream:http dest="192.168.250.70" http_method=POSTsrc="40.80.148.42" 

form_data 字段包含我们在处理 POST 请求时要检查的信息。
没有任何理由可以证明成功的剥削活动是合理的。让我们检查 23.22.63.114

1
index=botsv1 sourcetype=stream:http dest="192.168.250.70" http_method=POSTsrc="23.22.63.114" 

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage34.png)
看起来 23.22.63.114 正在强制 Web 服务器进行身份验证。让我们确认一下,如下。

1
index=botsv1 sourcetype=stream:http dest="192.168.250.70" http_method=POSTform_data=*用户名*passwd* |按 src 统计计数 

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage35.png)
事实上 23.22.63.114 对 Web 服务器的身份验证执行了暴力攻击。
我们很想知道暴力攻击是否成功。我们可以确定这一点,如下所示。

1
index=botsv1 sourcetype=stream:http form_data=*用户名*passwd* dest_ip=192.168.250.70| rex field=form_data "passwd=(?<用户密码>\w+)" |按用户密码统计计数 |排序-计数 

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage36.png)
上面的搜索提取每个用户密码并计算其被看到/使用的次数。如果密码出现多次,这可能意味着攻击者受到攻击并再次使用该密码登录。这就是我们按计数排序的原因。
如果我们想了解妥协的时间和目标 URI,我们可以按如下方式进行。

1
2
index=botsv1 sourcetype=stream:http form_data=*用户名*passwd* dest_ip=192.168.250.70
src = 40.80.148.42 | rex field=form_data "passwd=(?<用户密码>\w+)"|搜索用户密码=* |表 _time uri 用户密码

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage37.png)
最后,如果我们想查看两次成功的登录,我们可以这样做,如下所示。

1
索引 = botsv1 源类型 = 流:http | rex field=form_data "passwd=(?<用户密码>\w+)" |搜索用户密码=batman |表 _time 用户密码 src 

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage38.png)
以下是我们迄今为止的发现。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage39.png)
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage40.png)

任务 5:通过 Splunk 搜索识别网络上的任何安装活动

就网络杀伤链的安装阶段而言,我们最感兴趣的是识别正在上传的任何恶意软件。
我们可以通过各种源类型来识别,特别是 stream:httpSuricata

1
2
3
index=botsv1 sourcetype=stream:http dest="192.168.250.70" *.exe ``` 
**part_filename{}** 字段包含我们要检查的信息。默认情况下它是不可见的,所以添加它。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage41.png)

index=botsv1 sourcetype=suricata (dest=imreallynotbatman.com OR dest=”192.168.250.70”) http.http_method=POST .exe

1
2
3
4
**fileinfo.filename** 字段包含我们要检查的信息。 
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage42.png)
**3791.exe** 必须是上传的恶意软件。
可以轻松识别文件上传的来源,如下所示。

index=botsv1 sourcetype=suricata dest_ip=”192.168.250.70” http.http_method=POST .exe ```
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage43.png)
如果我们还可以识别上传文件的哈希值,那就太好了。但是我们应该使用什么源类型呢?我们来了解一下,如下。

1
索引=botsv1 3791.exe 

![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage44.png)
Sysmon 是一个很好的候选者,因为它记录文件的 MD5、SHA1 和 SHA256 哈希值等信息。

1
2
3
索引=botsv1 3791.exe 源类型=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational `` 
在本例中,重要的字段是 **Hashes****CommandLine****ParentCommandLine**。您必须添加最后两个,因为默认情况下它们不可见。
在分析结果之前,让我们先缩小范围。

索引=botsv1 3791.exe 源类型=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1

1
2
上面的搜索包括 EventCode 1,因为该 EventCode 与流程创建事件相关。不幸的是,为了获取上传文件的 MD5 哈希值,我们需要进一步缩小范围。具体来说,我们需要在命令行字段中搜索 3791.exe,因为该字段捕获进程启动。 
所以,最终的搜索结果如下。

索引=botsv1 3791.exe 命令行=3791.exe |统计值(md5)

1
2
3
4
5
6
7
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage45.png) 
以下是我们迄今为止的发现。
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage46.png)
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage47.png)
## 任务 6:通过 Splunk 搜索识别网络上任何与命令和控制相关的活动
就网络杀伤链的命令和控制阶段而言,我们最感兴趣的是识别用于命令和控制目的的任何域。
Splunk 内部有一个强大的盟友来帮助我们回答此类问题。这个盟友是**stream.dns** 源类型。由于我们已经知道 **23.22.63.114** 值得关注,因此我们可以利用 Splunk 和 **stream.dns** 源类型来识别 DNS​​ 事件,其中 **22.23.63.114** 是答案。

索引=botsv1 答案=23.22.63.114 源类型=流:dns |统计值(“名称{}”)```
![](https://assets.ine.com/cybersecurity-lab-images/b75194df-9a04-4879-95c8-d88b1fc54d1b/i mage48.png)
如果您仔细观察,您会发现prankglassinebracket.jumpingcrab.com域已被攻击者用来破坏网络服务器。试一试…

参考:

  1. https://www.slideshare.net/Splunk/splunk-data-onboarding-overview-splunk-data-collection-architecture
  2. https://www.splunk.com/en_us/training.html

实验

任务 1:通过Splunk搜索识别针对您网络的任何侦察活动

利用Splunk的能力,尝试识别由APT组织执行的任何侦察活动。您组织的网站是imreallynotbatman.com。

提示:

集中在stream:http sourcetype上,识别负责大部分流量的源IP。然后,使用suricata sourcetype验证您的发现。

通过分析所有重要字段和sourcetype,深入进行调查。

任务一答案

要识别APT的活动,提示告诉了我们要先分析http的请求

一旦您登录到Splunk的Web管理界面,请点击左侧应用栏中的“搜索与报告”应用程序。您应该看到类似以下的界面。

任务 2:在您的网络中识别任何武器化活动

利用开源情报(OSINT),尝试识别由APT组织执行的任何武器化活动。

提示:

识别与预置攻击韦恩企业相关的任何域名绑定的IP地址。

尝试理解IP地址与域名等之间的关联。

对攻击者电子邮件与互联网基础设施之间的关联进行相同操作。

任务 3:通过OSINT识别您网络中的任何交付活动

利用开源情报(OSINT),尝试识别由APT组织执行的任何交付活动。具体来说,尝试识别与您先前发现的攻击者基础设施相关联的恶意软件。

提示:

提交任何攻击者相关的IP地址到ThreatMiner、VirusTotal和Hybrid Analysis等开放资源。

任务 4:通过Splunk搜索识别您网络中的任何利用活动

利用Splunk的能力,尝试识别由APT组织执行的任何利用活动。

提示:

集中在stream:http和iis sourcetypes上,识别作为目标的您的服务器以及其使用的内容管理系统。

集中在stream:http sourcetype上,识别暴力攻击的源头。

通过分析所有重要字段和sourcetype,深入进行调查。

任务 5:通过Splunk搜索识别您网络中的任何安装活动

利用Splunk的能力,尝试识别由APT组织执行的任何安装活动。

提示:

集中在stream:http和suricata sourcetypes上,识别任何上传的可执行文件。

利用Sysmon日志,获取有关任何上传的可执行文件的额外信息。

任务 6:通过Splunk搜索识别您网络中的任何命令与控制相关活动

利用Splunk的能力,尝试识别由APT组织执行的任何命令与控制(C2)相关活动。

提示:

集中在stream:http、fgt_utm和stream:dns sourcetypes上,识别任何充当命令与控制的域名。