原文(binary defense):

https://www.binarydefense.com/white-papers/a-threat-hunters-checklist/
https://www.binarydefense.com/intro-to-threat-hunting/

名词说明

英文 中文 备注
threat hunting 威胁狩猎 数世咨询叫“威胁捕捉”,绿盟、安天叫“威胁捕获”,天御叫“威胁猎杀”,也有叫“威胁狩猎”“威胁追踪”的。这里统一叫“威胁狩猎”,如果以后统一了,再改
threat hunter 威胁猎人
check-list 检查清单
kill chain 杀伤链 也有叫“攻击链”

本文讲介绍威胁狩猎的概念、入门方法和必备知识。

什么是威胁狩猎

威胁狩猎是一种主动的、定期执行的安全任务,去发现未被检测到的攻击和系统入侵。通过对多种数据源(网络流量、服务器日志、终端日志中的进程树和行为等)进行搜索,去查找异常行为或者攻击技术留下的踪迹。这不同于查找被用于已知攻击的特定IP、域名或文件哈希(威胁情报的IOC),威胁捕获侧重于发现隐藏在系统中的攻击模式(攻击者留下的踪迹)。

起步的建议

学习复杂的新技能,可以设定一个个的小目标,通过完成小目标获得的快乐,来帮助自己前进。学习威胁捕获也是这样,从一两个输入开始,将每个新的数据源视为学习中的挑战,这样不会被海量的数据所淹没,无所适从。

威胁捕获的意义

为公司设计安全流程时,可以从攻击者的角度入手。如果要攻击公司的计算机系统,而不被发现,该怎么办?这意味着所有的防御系统都是攻击者所要克服的障碍。
作为防御方,要给攻击者制造更多的障碍,设置探针和陷阱(蜜罐、蜜标及其他欺骗技术),尽早的在杀伤链中检测到,并在遭受重大损失之前将其阻断,保住关键基础设施。
威胁捕获的目标是能够自动化的阻断常见威胁。

防守方的建议

  • 为了避免密码泄露后被攻击者利用,建议使用多因子验证(MFA)。
  • 建议划分网络,重要服务器、数据库不能与员工工作站在同一网络,不同部门的设备也需要分开,所有设备都不能与处于公网的服务器在同一网络。
  • 需要将这些设备都视作潜在威胁,初始的入侵点可能是员工工作站,也可能是一台响应网络请求的服务器。
  • 需要进行有效的邮件扫描和威胁检测,因为很多威胁都是通过电子邮件传递的。
  • 强制公司内部所有设备都是用公司的DNS服务器,并通过web代理来检测所有http请求,因为很多恶意后门RAT通过DNS和http请求与CC服务端通信。
  • 使用SSH和SFTP连接外部服务器,阻止少数员工的特殊需求,阻止其他不必要的网络连接。
  • 不要假设端口上运行的总是被默认协议,有些恶意软件通过53、80、443端口发送HTTP请求或者自定协议。
  • 保持软件更新,及时打补丁,优先修补可远程执行或绕过身份验证的高危漏洞
  • 开启防火墙,增加攻击者横向移动的难度。

开始增强检测能力

安全团队需要具备了最基本的控制能力,来阻断威胁,尽量减少恶意软件的影响,使工作变得高效,最终能够发现针对性的攻击。
如果没达到这一步,安全团队将疲于应对不断发起的攻击,忽视了攻击细节。但不要阻止在建立安全控制的过程中开始进行威胁捕获。早期发现的非针对性攻击,也会帮助安全团队连接安全控制最薄弱的地方,确定后面实施过程中的优先级。

清单:威胁捕获需要收集什么

下面是推荐搜集的信息:
1、终端事件日志

  • 进程开始和结束事件
  • 进程的命令行参数
  • 进程加载的模块(ddl)细节
  • 每一个可执行文件及加载模块的哈希
  • 每一个进程的数字签名(可能会缺失)和版本信息
  • 进程输出的文件
  • 进程所创建和写入的注册表的键值
  • 进程的DNS查询和网络通信
  • 安全事件,包括登陆、登出,识别远程主机
  • web浏览历史

2、网络事件日志

  • 网络流(netflow)数据,指网络连接的元数据,非内容
  • 监测到的网络协议
  • 从网络中抽取的可执行文件

3、服务器事件日志

  • DNS查询和响应日志(所有类型,包括TXT记录)
  • HTTP代理查询和响应的元数据
  • 防火墙日志(包括允许和阻断的连接)
  • DHCP日志(包含内网IP和主机名)
  • 域控制器的权限认证日志
  • 邮件日志,包括收发邮件的元数据

终端日志

最有价值的数据是收集工作站和服务器之间的记录,包括攻击者如何访问系统,企图从系统中获取什么内容。这是因为攻击者无论通过代理访问还是加密流量,他们都必须再工作站或服务器上操作,来达到他们的目的

Sysmon

Sysmon 是微软提供的一款收集终端日志的免费工具,属于Windows Sysinternals工具集的一部分。Sysmon覆盖了很多重要日志,但不会记录每一种类型。
下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon

Sysmon V11与2020年4月发布,具有一些新的特性,例如DNS日志收集,保存删除或覆盖的文件副本。对于很多恶意软件,会删除其安装文件。,如果能够恢复这些文件对分析会很有帮助。

配置Sysmon

使用sysmon的第一件事就是创建配置文件,来指定需要收集的日志。你可能会想,“我使用默认配置,或者收集所有内容,忽略我不需要的”,但这是不对的。如果启用了所有功能,大量详细的信息会让你不知措辞。最好的方法是精心设计配置文件,从收集少量的日志类型开始,再逐步的添加新日志类型。

创建配置文件时,可以参考这些内容:
Swift On Security Sysmon配置示例:
https://github.com/SwiftOnSecurity/sysmon-config
Olaf Hartong Sysmon配置模块库(支持ATT&CK):
https://github.com/olafhartong/sysmon-modular
TrustedSec公司的Sysmon配置向导
https://github.com/trustedsec/SysmonCommunityGuide

通过对Swift On Security 配置示例的学习,你会快速了解过滤器的重要性,排除了对威胁狩猎无用的普通日志,不需要再被大量的噪声日志所打扰。

Sysmon收集的日志,可以通过Event Viewer去查看(位于Applications and Services Logs/Microsoft/Windows/Sysmon/Operational)。为了便于搜索多个终端的日志,需要将终端日志汇集起来。
可以参考微软windows事件转发指南:https://social.technet.microsoft.com/wiki/contents/articles/33895.windows-event-forwarding-survival-guide.aspx

也有其他的解决方案,例如Graylog, Splunk, and ELK (Elasticsearch-Logstash-Kibana), 也有用于威胁狩猎的开源项目HELK(https://www.confluent.io/blog/sysmon-security-event-processing-real-time-ksql-helk/)

终端日志能告诉我们什么

分析师收集终端日志之后,可以回答很多重要的问题,来帮助发现威胁。

随着威胁主体所用技术的发展,分析师的检查清单也需要随之改变,一些长期有效的问题如下:

  • 是否有Office进程(EXCEL.EXE,WINWORD.EXE)产生异常子进程,包括regsvr32.exe、rundll32.exe、powershell.exe、wscript.exe、cscript.exe等。
  • 是否有进程从一个罕见目录加载与系统库相同名称的dll,或者加载未签名的dll?
  • regsvr32.exe是否创建了PowerShell进程?
  • 是否有系统工具在执行之前被复制到新文件夹(特别是用户配置文件下的文件夹)或重命名?
  • wscript.exe是否运行JScript文件?
  • 创建了哪些新的计划任务?

通过回答这些问题,分析师可能发现,一些正常的合法的进程或脚本也可能会进行恶意活动。
总结来说,分析师首先收集待分析的日志,然后根据理解的威胁去查找攻击行为,并且根据理解的正常行为去过滤那些误报,最后仔细检查剩下的告警,判断是否为攻击。

注册表中创建和写入的值

在注册表中可以发现大量恶意软件的痕迹。由于注册表上的正常交互太多,对注册表所有活动的监控不太可行。可以通过Process Monitor(微软的工具,https://docs.microsoft.com/en-us/sysinternals/downloads/procmon ),观察其所记录的事件,大多数是注册表事件。但如果要分析一种特定技术,可以通过过滤来筛选需要监控的注册表事件。

示例

Microsoft发布了针对Windows后台打印程序特权提升漏洞CVE-2020-1048的补丁程序,该漏洞可以使恶意软件持久访问,通过在PowerShell中以非特权用户身份运行下面的命令,然后将可执行文件“打印”到新端口。

Add-PrinterPort -Name c:windowssystem32ualapi.dll

为了检测使用这项技术的攻击者,需要在下面这个注册表的键中搜索内容为文件的打印机端口:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPorts

检查注册表值,查找对可执行文件的引用,尤其是以.exe或.dll结尾的文件名。

在注册表中可以找到许多用于持久化的恶意软件技术,甚至是存储在注册表值中经过编码或加密的恶意二进制代码。在注册表中搜索键和值是支持威胁狩猎的一项关键能力。

注册表分为系统注册表和用户注册表,用户注册表存储于用户目录下的“ntuser.dat”文件中,只有当用户登录时才会被加载。需要注意的是,收集有关注册表写入事件的事件信息,存储起来用于搜索,而不是在终端注册表中进行实时搜索。

命令行审计

记录命令行的参数,可以更详细的发现入侵的流程。利用系统内置的工具,例如wscript、cscript、PowerShell、certutil、rundll32,可以绕过很多防护软件。这些工具进行恶意活动的唯一迹象,来自于其命令行参数。通过修改windows组策略可以保存命令行参数,这项设置默认是禁用的。开启方法如下:
启动进程创建审计:Computer Configuration > Policies > Window Settings > Security Settings > Advanced Audit > Configuration > Detailed Tracking
启动“Include command line in process creation events”策略:Administrative TemplatesSystemAudit Process Creation

参考:https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

登录登出事件

从Windows安全事件日志中获取本地机器账户登陆登出日志,不需要做特殊的设置。将这些日志上传到日志服务器,以免被攻击者擦除或修改。

浏览记录

在公司策略允许的情况下,浏览记录将从web浏览器中导出,上传到日志服务器。搜索下载的zip、exe、vbs、jse、ps1或其他文件,可能会发现恶意软件安装的第二个阶段。
BrowsingHistoryView 是一款导出浏览器记录的软件:
https://www.nirsoft.net/utils/browsing_history_view.html

网络日志

实践中,恶意软件和远程操作的威胁主体都是通过网络进行通信的。网络流量监测室威胁狩猎的关键步骤,但流量数量大,通常是加密的,并且本质是私有的。这些因素使得获得全部流量并详细的审查变得困难。

网络流(netflow)

分析师从连接本身的元数据开始分析。比如哪些IP地址在什么时候与其他IP地址通信,使用什么端口上,传输了多少数据,哪一方发起连接,连接持续了多长时间。这种数据称为netflow。网络工程师通过netflow来对判断网络的状况。但对于威胁狩猎,分析师还需要获取网络流量的信息。
没有内容的元数据,似乎没什么价值。但分析网络通信的模式,可以发现很多有趣的事情。比如内部工作站或服务器在很长的时间内,以固定的时间间隔,向外发出请求,对某些软件来说,这种“心跳包”是正常的,但也有可能是某种C2的受控端。

小实验:

1、统计外连数量最多的10个内网IP到外网IP的列表。
2、统计发送与接收字节数之比最大的10个内网IP到外网IP的列表。对工作站来说,接收字节数大约是发送的10倍。
3、统计连接时间最长的10个内网IP到外网IP的列表。

对于列表中的IP,排除正常的“例外”,剩下的异常通常很值得研究。
在Netflow中查到工作站之间的连接。除了员工在工作站上运行文件共享服务,一般来讲工作站之间不应有SMB连接。攻击者进入内网后,通常会使用被盗凭证进行横向移动。

还需要检查连接到外网IP异常端口的连接,例如:

  • 53端口的出站连接(需排除公司的DNS服务器)。正常情况是连接公司的DNS服务器
  • 445端口的出站连接。检查SMB连接是否需要外连
  • 22端口的连接。检查某些部门或者小组与服务器连接情况
  • 无法识别的端口。

如果已经收集了一些netflow数据,可以挖掘其中的一些模式,例如一台接收和发送数量相同的计算机,很可能设为了代理或者中继。这种内部代理通常被攻击者实现攻击的横向移动。

检测流量中的威胁

目前很多项目对网络流量中的内容进行分析,分析师可以利用这些项目来辅助分析。

开源软件Zeek(以前叫Bro)可以检测端口的网络协议、解析DNS请求和响应,检测流量中的可执行文件,发现罕见的网络流量,识别有用的网络模式。Zeek不存储网络流量,只是生成日志信息,可以导入数据库中。Zeek是一个对网络流量监测和分类的工具,但不是入侵检测和防御工具。

另一个开源项目RITA使用Zeek输出的日志来检测网络中的恶意行为,可以和Zeek搭配使用。

Suricata是一种开源工具,可以检测网络流量,并产生告警并阻断(需设为“intrusion prevention”)。也可以自行编写规则,来检测特定威胁。例如下面这条Suricata规则,可以检测CVE-2020-11651漏洞(SaltStack 权限绕过)的利用

alert tcp any any -> any 4506 (msg:”ET EXPLOIT Possible Saltstack Authentication Bypass CVE-2020-11651 M1”; flow:established,to_server; content:”_prep_auth_info”; reference:url,labs.f-secure.com/advisories/saltstack-authorization-bypass; reference:cve,2020-11651; classtype:attempted-admin; sid:2030071; rev:1; metadata:affected_product Linux, attack_target Server,deployment Perimeter, signature_severity Major, created_at 2020_05_01, updated_at 2020_05_01;)

一些开源项目和商业情报feed集成在一起,可以较好的检测恶意软件的通信模式,而不需要特定的IOC,可以避免更换IP、域名之类的问题

Zeek: https://zeek.org/
RITA: https://www.blackhillsinfosec.com/projects/rita/
Surricata: https://suricata-ids.org/
Open Source Suricata rules: https://rules.emergingthreats.net/open/suricata/rules/

服务器日志

大多数服务器会将其处理的请求保存下来,生成日志。有时,默认配置不足以支撑安全检测或者威胁狩猎,需要修改配置。

常见的日志如下:
1、DNS的查询和响应日志(所有类型,特别是TXT记录);
2、HTTP代理查询记录和响应的元数据;
3、防火墙日志(包含允许和阻断的);
4、DHCP日志(将内网IP和主机名关联);
5、域控制器的权限认证日志
6、邮件日志,包括收发邮件的元数据。

DNS日志

假设组织内的网络限制只能使用指定DNS服务器,并且禁止DNS over TLS和DNS over HTTPS,以及外部的DNS查询,那么对DNS日志进行分析,可能发现一些潜在威胁。

通过域名注册信息(whois记录)来丰富DNS查询记录,可以发现那些刚注册的域名,不在Alexa top 1M 的域名,由随机字符组成的域名,以及可疑注册机构注册的域名。例如domains4bitcoins.com(name server/NS 记录匹配*.bitcoin-dns.hosting)。

某些恶意软件使用DNS请求和响应作为通信信道来传输命令(甚至是第二阶段的恶意软件下载)。通常来说,恶意软件使用的是DNS TXT类型,这允许服务端的响应包含上百字节。搜索罕见的模式,例如一个内网主机像一个可疑域名的成百上千的子域名发送DNS请求,或者响应包含很长的base64编码的信息。

HTTP web 代理日志

很多恶意软件通过隐藏在正常流量中的HTTP协议与CC服务器通信。虽然请求看上去很正常,但通过对大量POST请求的分析,可以检测到异常模式。除非用户大量上传图片,或者发送大文件,一般不会有频繁的HTTP POST请求。一旦确定由恶意软件通过HTTP请求通信,可以在代理日志中进行检索。通过正则表达式是一个比较好的方法,恶意软件的请求包含一定的随机性,但随机的部分也包含着某种规律。

防火墙日志

防火墙中的事件可以显示连接被阻断还是被允许。有时会观察到一些被阻断很多次的IP,还有通过各种方式连接,仍被阻断的IP。这些噪声可能是由于互联网中端口扫描造成的。使用外部威胁情报可以快速的过滤掉这些噪声,以便快速对日志进行分析。一旦确定了可疑IP地址,则需要在防火墙日志中检索,来查看通信时间、目标内部主机、端口等内容。有的恶意软件会在请求时加入随机性,这种随机也会存在某种规律,使用正则表达式通常可以匹配。

DHCP日志

动态主机配置协议(DHCP)日志对于威胁狩猎的意义不是很大,但是一旦发现存在可疑流量(尤其是很久以前的流量),将某个内部IP地址绑定到特定主机,则可以对主机进行检查。

域控制器权限日志

除了来自端点安全事件的本地身份验证日志外,在域控制器权限日志中搜索帐户的异常模式也很有用。 例如:在一天中的特殊时间(周末或假日)进行身份验证;或者从该员工所在的世界各地的IP地址进行远程身份验证。即使是一家国际大公司,也不太可能检测到来自世界两个不同地方的员工登录。

邮件服务器日志

由于大多数威胁都是通过电子邮件到达,通过搜索接收的电子邮件记录以查找来自可疑外部发件人的消息(包含指向可疑网站的链接)或具有不寻常附件(例如包含脚本文件(.vbs 、. jse等)或可执行文件。 在大多数情况下,最好的解决方案是使用电子邮件威胁扫描、威胁情报和过滤功能来阻断威胁。对于检测到的钓鱼邮件,或者员工主动上报的钓鱼邮件,快速扫描可以更有效的阻断威胁。

其他日志

每个组织的架构不同,也会有一些特色日志。例如Web服务器的HTTP访问和错误日志,VPN的日志等。对于定制开发的应用程序,通常也会有日志输出。

蜜罐

除了所有被动的事件日志记录之外,进行威胁狩猎的最佳信息来源还在于网络内部部署的蜜罐。攻击者与蜜罐的任何交互都应该触发警报,并让分析人员快速进行调查以确定谁在探索网络。

结论

对于威胁狩猎,最好的方法是从一小部分信息源中收集少量日志,从小规模开始,建立查询能力和威胁狩猎技能,然后开始增加可搜索原始信息的数量和种类。 在不知不觉中,将非常熟悉环境中的“正常”状态,以至于任何攻击者都将很难融入并逃避。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/haduxy/p/13715392.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!