防火墙
防火墙的核心功能是过滤掉有害的流量,在专用网络和公共网络之间建立保护屏障。防火墙过滤通常基于一系列规则,如 IP 地址、域名、协议、端口号、关键字等,对入站和出站的流量进行过滤。这些规则也称为访问控制列表(ACCESS CONTROL LIST,ACL,访问控制列表)。
Ps:ACL是一组自定义规则,定义了哪些流量或资源是允许/拒绝的。不仅用于防火墙,路由器、交换机、应用程序文件访问控制等都有应用。防火墙规是专门用于网络防护的一种 ACL 实现形式(子集)。如下。
参考视频:https://www.youtube.com/watch?v=kDEX1HXybrU
IDS/IPS
入侵检测系统(Intrusion Detection System,IDS)监控网络流量并对可疑行为进行告警。常见的情况有两种,一种是配置在防火墙内,另一种是附加设备,从网络设备中拷贝出流量,进行流量分析,对有恶意行为的进行告警。
后来就有个观点认为,既然已经是恶意流量了,就应该进行拦截,在IDS基础上就发展出了入侵防御系统(Intrusion Prevention System,IPS)。既然要拦截,就不能对流量进行拷贝,而需要部署在流量传输的路上线。后来就发展成和防火墙相结合。也可以部署在防火墙后面。防火墙是基于网络层和传输层的IP、端口等信息进行过滤,而IPS可以在应用层分析数据包的内容。
IDS有两种主要类型:NIDS(Network-based IDS)网络入侵检测系统、HIDS(Host-based IDS)主机入侵检测系统。NIDS部署在网络设备上(交换机、路由器等)监控整个网络的流量。HIDS则专注于单个主机或设备,监控主机上的活动,包括系统日志、应用程序等。
参考视频:https://www.youtube.com/watch?v=wQSd_piqxQo
WAF
WAF(Web Application Firewall,Web应用防火墙)。传统防火墙是位于OSI模型的下层(第三层和四层,即Network和Transport),目的是保护整个网络。而WAF位于上层(第七层,Application),主要针对Web应用程序进行保护。
IPS和WAF有什么区别?IPS是基于签名(SIG,Signature)的,对于已知的漏洞或者攻击,签名就是已知的。IPS需要使用会话和用户,也就是说无法自动识别用户和相应的访问权限。WAF能够识别应用和用户会话。WAF支持协议(HTTP、HTTPS、FTP、SMTP、DNS等)
参考视频:https://www.youtube.com/watch?v=p8CQcF_9280
NGFW
NG是Next Generation的缩写,意味下一代。NGFW就是下一代防火墙。Gartner对它的定义如下。意思就是它是一个深度的包检测防火墙,不仅是检测、阻断端口、协议等,还增加了应用层检测、IPS、外部情报等功能。另外,防火墙也可以提供url过滤,邮件扫描、DLP功能。
"An NGFW is a deep-packet inspection firewall that moves beyond port/protocol inspection and blocking to add application-level inspection, intrusion prevention, and bringing intelligence from outside the firewall."
Zero Trust
以前,内部网络受防火墙(包括上面提到的IPS、WAF等)保护,防火墙作为边界将企业内部网络(可信区域)和外部公共网络隔离,防御边界外部的攻击。但是随着这些年云计算的发展,应用与服务上云。用户可以远程办公。使用的设备也不再是企业内部设备,可能是自己的移动设备。传统边界安全的理念不再合适。
而且边界安全理念中面临一个很大的问题就是横向移动。如果攻击者能从边界中找到一个弱点从而获得访问权限,那么攻击者就可以访问边界内的其他资源。因为可信区域内的用户默认都是安全的,不会再对用户行为做监测。这就造成了对用户的过度信任(给予的权限过大)。所以零信任提出了对每个访问请求执行最小访问权限。基于对程序的评估授予执行任务所需的最小特权。
由于这些问题的存在,零信任Zero Trust被提了出来。它本身不是一个产品,而是一种理念或安全架构。使用不同的安全技术和产品进行构建。授权决策不再仅仅基本网络位置、用户角色或属性等传统静态访问控制模型,而是通过持续的安全监测和信任评估,进行动态、细粒度的授权。
零信任的一个原则之一:Never Trust, Always Verify(相当于No Trust)。无论用户在何处(办公区域内,家中或其他公共场所),无论使用什么样的设备,都需要证明自己的身份。每个请求都要持续、动态的验证Verify。
SDP(Software Defined Perimeter,软件定义边界)
流程
参考视频:
https://www.youtube.com/watch?v=Y3DjoTiOiOU
https://www.youtube.com/watch?v=DLQAbJm4gFM
https://www.youtube.com/watch?v=_yGGZj9wkaU (SDP)
UEBA
User and Entity Behavior Analystics(UEBA,用户实体行为分析)。它是由UBA(User Behavior Analystics,用户行为分析)演化而来的。假设我们拥有所有产品的日志,包含了源地址、目标地址、时间、用户等信息,数据量大很难通过人工的方式从中挑选出异常行为。
利用用户行为分析UBA技术可以将日志提取分析成如下形式,直接显示出哪些用户存在异常。
日志中包含了许多遥测数据,数据可能来自单独的系统、数据库、网络设备等。UBA相当于一个漏洞,用机器学习的方式来寻找模式和异常。比如有些用户每天下载50条数据,突然开始下载5w条数据。或者用户本来两三天登录一次,突然开始一天登录几十次。或者登录用户的IP开始变化。或者对用户进行分组,他们本质上都是行为极为相似的,但是突然有一个人开始偏离这个组的行为。也可以通过用户的操作序列中查找异常,比如用户刚创建了一个用户,就将用户删除了。这种就是异常行为。利用上述这些规则就可以通过机器学习来查找异常,然后对用户进行分类,哪些是正常用户,哪些是异常用户。通过对高风险用户进行分类,查看排名前几名的用户,快速定位。
同样,UBA技术也可以应用于实体Entity,也就叫做UEBA。Entity表示路由器、交换机、服务器等非人的东西。
参考视频:https://www.youtube.com/watch?v=j29XwVsMW-s
SIEM
SIEM(Security Information and Event Management system,安全信息事件管理系统)。它是一种从网络上的各种端点/网络设备收集数据、将它们存储在一个集中位置并对其进行关联的工具
SIEM会从各个数据源中获取日志。以上图为例,将数据源分为以主机为中心的日志源、以网络为中心的日志源。前者包含Windows和Linux的常见日志。以Windows为例,包含用户访问文件、用户身份认证、编辑注册表、Powershell执行等。Linux日志主要为:/var/log/httpd, /var/log/cron, /var/log/auth.log, /var/log/secure, /var/log/kern等。后者包含主机间的通信,如SSH连接、FTP访问、网络流量、VPN日志等。
还有一个核心环节,是如何将这些日志进行提取和采集。每个SIEM的解决方案不同,常见的包括a. 代理/转发器,如将Splunk安装在端点上。b.Syslog。该协议用于从各类系统(如Web服务器、数据库等)收集数据并实时发送到目标地。c. 手动上传。d. 端口转发。监听某些配置端口,将后端点将数据转发到监听端口上的SIEM实例。
然后将这些日志用仪表盘展示。包含告警信息、失败登录尝试列表、时间采集的数量、告警触发的规则等。
分析人员可以创建关联规则,一旦命中规则就会产生告警。例如,一般攻击者在漏洞利用阶段可能用whoami命令进行探测。就定义规则:如果日志源是 WinEventLog且EventCode 是4688,并且 NewProcessName 包含whoami,则触发警报WHOAMI command Execution DETECTED
参考:TryHackMe | Cyber Security Training
VPN
VPN(Virtual Private Network,虚拟专用网络)用于远程设备和私有网络之间建立安全通信。在用户设备和VPN服务器之间建立加密隧道Tunneling。数据发送到VPN服务器上后解密,然后转发到目标服务器。目标服务器只会看到VPN服务器的IP地址,而不是用户的真实地址。能够防止防止欺骗、劫持重放、中间人等攻击。
隧道有很多类型:GRE(Generic Routing Encapsulation,通用路由封装)、IPSec VPN(IP Security)和SSL VPN(Secure Sockets Layer,安全套接字层)等。
参考视频:https://www.youtube.com/watch?v=_wQTRMBAvzg
SASE
随着云计算的发展,企业访问从专用网络逐渐转到Sass和基于云的服务。
Security Access Service Edge 安全服务访问边缘。区别于传统的VPN。
参考视频:
https://www.youtube.com/watch?v=Opy9D-8eyVg
https://www.youtube.com/watch?v=jHVe_SoQ7q0
EDR
传统的木马、病毒等攻击都是用杀毒软件进行查杀。杀毒软件主要以特征匹配为基础,基于病毒库特征查询进行杀毒,传统杀毒软件的查杀方式如下:
1. 计算病毒、木马等文件的MD5值,和特征库的MD5进行匹配。完全匹配即命中
2. 匹配文件内容中特定的二进制串(也称为“特征码”),一般是恶意代码部分。
3. 规则匹配。匹配多个二进制串的组合,用正则描述匹配规则,如A&(B|C)。
在防御APT和新型病毒的场景下效果甚微。如果本地特征库规模受限、运算资源受限的情况下更是无法满足需求。另外,杀毒软件一般对恶意文件采用文件隔离的处置方式,一旦文件隔离失败,就会对整个内网造成威胁。EDR(Endpoint Detection and Response,端点检测和响应)的出现正是弥补传统杀软无法解决的问题。
EDR本身分为了两个阶段,Protect(预防,感染前)和Detect(检测,感染后)。Protect阶段,就是传统防病毒/杀毒软件干的事情,利用机器学习进一步强化传统杀软。但即使是最好的杀毒引擎也只能防范部分病毒。所以一旦进入到感染后阶段,就需要对病毒进行检测。检测主要关注文件执行后的行为,因为文件被加密和混淆可能躲避检测规则,但是后续的行为不会变。
图片下方的整体的时间条叫Dwell Time,表示停留时间(在系统中攻击而没被检测到的时间)=MTR(平均检测时间)+ MDR(平均修复时间)。EDR和XDR的目的都是为了更快的检测和响应,来缩短攻击的停留时间。EDR针对端点,XDR则在EDR的基础上扩展了其他网络攻击面,如防火墙、云等。
基于行为的检测,现在多采用沙箱这种动态检测技术,通过模拟运行病毒文件来捕获病毒的动态可疑行为。虽然捕获出的特征极具说服力,但是沙箱本身对于资源的消耗很大,所以一般部署在云端或者终端,而不会部署在网关设备中。另外,从流程上讲,一般先经过传统的杀软检测逻辑,即检测静态的MD5、特征码或匹配规则等,再经过沙箱,这样可以降低一部分性能消耗。
参考视频:https://www.youtube.com/watch?v=SFFdbeogLFc
IOC和IOA
IOA(Indicator of Attack,攻击指标),IOC(Indicator of Compromise,威胁指标)。这两个概念主要应用于终端安全。
攻击一般指实际的恶意行为。攻击者一般会对目标服务器植入恶意文件或病毒等,方便后续做持久化、扩大攻击面或者进一步利用。传统终端安全一般是对病毒或恶意文件进行查杀,相当于对攻击的后果进行处置。IOA的概念是主动的,去发现正在进行的攻击,来减轻最终的后果。而IOC被描述为网络安全已被破坏的证据。例如恶意文件的md5值、攻击者IP、病毒的签名、僵尸网络服务器的域名等。
crowdstrike用一个故事对IOA和IOC的解释很有意思。假设有一个盗贼要抢银行,他抢银行的整个过程可能是先驾车行驶到银行附近,找到合适的停车位置,然后走进金库,破解密码,拿走钱后驾车逃跑。IOA并不关注他开的是什么车,用了什么工具,IOA关注的是这一系列的操作:破解密码、进入金库等,记录盗贼抢银行的关键行为。不是所有的行为都代表会抢银行(例如将车停到银行附近),所以IOA是对特定的操作才会触发,而这些特定的操作是攻击过程的必须行为。IOC则关注的是盗贼驾驶的车是紫色货车,带着灰色的帽子。这些都是在事后可以回溯和定位盗贼的证据。但是如果后面有个人驾驶红色小轿车,带着牛仔帽,那这些已知的IOC就不会起到作用。
IOA是对行为进行记录,而行为本身包括很多类型,例如网络通信、数据操作、账户行为、执行命令等。简单来讲,就是对主机常安装的服务器、数据库、浏览器、办公软件、应用等进行梳理,监控在其进程下执行的操作。
举例来说,如果攻击应用系统(如apache、nginx、php-cgi等)、数据库(mysql、oracle、postgres、sqlserver、redis等)、语言进程(java、python),在这些应用场景下如果起了进程,执行了curl、ifconfig、nc、ping等危险操作,就可能会被记录下来。
很多IOA是以规则进行定义的,常见的包含json、xml、yaml等格式。举例如下
{
"ioa_rule": {
"id": "ioa-2024-001",
"name": "Detect ipconfig Execution in Java Process",
"description": "This rule detects the execution of the ipconfig command within a Java process, which might indicate an attempt to gather network configuration information maliciously.",
"severity": "high",
"created_at": "2024-05-18T10:00:00Z",
"updated_at": "2024-05-18T10:00:00Z",
"enabled": true,
"conditions": [
{
"type": "process_creation",
"process_name": "java.exe",
"command_line": "ipconfig"
}
],
"actions": [
{
"type": "alert",
"message": "ipconfig command executed within a Java process."
},
{
"type": "block",
"process_name": "java.exe",
"command_line": "ipconfig"
}
]
}
}
IOC规则举例。假如在溯源时从定时任务中发现有powershell,powershell外连的url可能为http://t.abcd.com/v.js。那么这个url就会成为一条IOC规则,而下载的数据的MD5也会成为一条IOC规则。同样如果是Domain、IP等信息也会成为IOC。
url http://t.abcd.com/v.js
C2 39.109.123.174
IP 212.66.52.88
MD5 d8109cec0a51719be6f411f67b3b7ec
File C:\Windows\SysWow64\winrdlv3.exe
参考链接:
https://www.crowdstrike.com/cybersecurity-101/indicators-of-compromise/ioa-vs-ioc/
恶意样本查询网站:VirusTotal
输入样本信息,下面会提示样本名,如Sales_Receipt 5606.xls。这个hash值就可以当作一个IOC规则。
但是IOC规则很容易被变种绕过,例如可以通过将字符串附加到文件末尾来更改文件的哈希值,从而绕过IOC。
XDR
三大核心:集成、分析和响应。集成阶段:将网络安全设备中的数据集成到一个平台上,可以监控syslog、snmp等遥测数据。分析和检测阶段:对不同类型的数据和不同供应商的数据进行标准化和关联,并利用机器学习/ai相关算法寻找数据中的异常值。响应阶段:根据发现的异常,通过相关的安全设备进行响应,如通过防火墙设备封堵IP、阻止邮件服务器中的域名。
简单来说,XDR是根据接收到的遥测数据,利用机器学习算法做出决策,然后利用相关安全设备进行响应。
痛苦金字塔Pyramid Of Pain
Kill Chain杀伤链
它包括目标识别、攻击目标的决策和命令,以及最终摧毁目标。该框架定义了网络空间中对手或恶意行为者使用的步骤。步骤如下。
待补充产品
Snort引擎。
SOAR。EDR和XDR都是为了检测和响应威胁。MDR是托管检测和响应的服务,利用多种技术为客户提供7*24小时防护。包含安全分析、主动威胁猎捕、自动事件响应(SOAR)。
NTA/NDR(比NTA多个R响应)
后续有时间再补充...