当前位置: 首页 > 工具软件 > OSSEC > 使用案例 >

端点检测和响应EDR与OSSEC

阚通
2023-12-01

1. EDR的由来

任何具有网络 IP 地址的设备,只要被允许与组织的网络进行交互,都是一个端点。

下面是一些关键端点威胁:

  • 可执行文件包(恶意软件)
  • 潜在不受欢迎程序 (PUA),比如广告软件
  • 勒索软件,比如文件加密器和磁盘加密器(擦除器)
  • 基于漏洞的攻击和文件攻击,比如伪装后的文档(通常是经过精心制作或修改以造成损害的办公程序)和恶意脚本(通常是隐藏在合法程序和网站中的恶意代码)
  • 主动攻击技术,包括权限提升(攻击者在系统中获取额外访问权限的方法)、身份盗窃(窃取用户名和密码)和代码洞(将恶意代码隐藏在合法应用程序中)等等。

在过去十多年里,端点安全仅仅指的是杀毒软件一种产品。随着安全威胁形态的演化,传统端点安全产品存在的问题越来越突出:应对机制是被动的,组织只有受到攻击后才能感知和捕获,并将其特征放到病毒库中,然后通过升级杀毒软件并应用到用户才能应对。

Gartner 的 AntonChuvakin 于 2013 年 7 月首次创造了端点威胁检测和响应 (Endpoint Threat Detection and Response,ETDR) 这一术语,用来定义一种 “检测和调查主机 / 端点上可疑活动(及其痕迹)” 的工具。后来通常称为端点检测和响应 (EDR)。EDR 的出现有助于解决这些问题:要 “看到” 未知威胁是非常有难度的,其关键就在于检测异常行为。EDR 通过对端点进行持续检测,发现异常行为并进行实时干预,同时通过应用程序对操作系统调用等异常行为分析,检测和防护未知威胁,结合机器学习和人工智能辅助判断,最终达到杀毒软件无法解决未知威胁的目的。

1.1 EDR与AV的区别

人们常问的一个问题是 EDR 与传统反病毒软件(AV)或下一代反病毒(NGAV)之间的区别。 在他们看来,他们不需要这两种技术。 但事实并非如此。 事实上,这两种技术在保护你的网络方面有不同的用途。 反病毒和下一代反病毒专注于预防,但对攻击期间发生的情况一无所知。 它们被设计用来在坏的东西进入你的网络之前捕捉它们。 但是即使它们正确地做到了这一点,它们也不能告诉你恶意软件来自哪里,以及它们是如何在系统中传播的。 EDR 描述的是整个攻击过程,并帮助你跟踪可执行文件是如何获得对计算机的访问权限并尝试运行的。 EDR 不仅提供了可见性,当一个攻击行为被 AV 阻止,或者是一个不错 NGAV 防控失败,那么在这种情况下,你最有可能处理发的是一个严重的攻击,如无文件型的恶意软件,零日漏洞,或高级持续性威胁。 这些类型的攻击不会留下签名,这使得它们更难防范,而且如果没有 EDR 这样的服务几乎不可能被发现。 它会警告你攻击未遂,当攻击者已经绕过你的所有防御措施并在你的网络中时,EDR 会为你提供洞察能力。

1.2 EDR 与 SIEM 的区别

另一个常见的问题是 EDR 与安全信息和事件管理(SIEM)之间的区别。 SIEM 是一种从防火墙、服务器和网络设备收集日志的技术。 它整合了你的所有网络日志,以帮助跟踪行为、识别威胁并进行调查。 但是,你必须设置规则和查询来告诉 SIEM 要查找什么以及要跟踪什么行为。 SIEM 是一个非常好的服务,可以全面地观察发生在你的网络上的活动。 EDR 专门整合和分析端点数据,为分析人员提供设备,xise而不是要求他们分析成千上万的日志或事件。 最终,这两种技术服务于不同的目的,并且可以在一个安全的网络环境中相互补充,但是 EDR 的主要目的是简化并有效地检测和应对威胁。

2. OSSEC

OSSEC是一个将HIDS(基于主机的入侵检测),日志监视以及安全事件管理(SIM)/安全信息和事件管理(SIEM)结合在一起的系统。

2.1 主要功能

2.1.1 文件完整性检查

无论攻击手段有多么高明,最终的目的是以某种方式改变系统,从修改文件的病毒到改变内核的后门程序,系统的完整性总会有一些变化。

比如:

  • Windows注册表中密钥文件的MD5/SHA1校验和的更改来检测系统完整性的变化
  • Linux 一切皆文件,md5变化

完整性检查是入侵检测的重要组成部分,它可以检测系统完整性的变化。它的工作方式是代理每隔几个小时扫描一次系统(用户定义),并将所有校验和发送到服务器。服务器存储校验和并在其上查找修改。如果发生任何更改,将发送警报。

文件属性包括:md5sum,size,owner,group,permission,
配置示例:

<syscheck>
    <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>
</syscheck>

<rule id="100345" level="0" >
    <if_group>syscheck</if_group>
    <description>Changes ignored.</description>
    <match>/etc/a|/etc/b|/etc/dir</match>
    <hostname>mswin1|ubuntu-dns</hostname>
</rule>

2.1.2 日志监控

OSSEC收集,分析并关联操作系统中的日志(应用程序、配置更改等),以让您知道是否正在发生可疑事件(攻击,滥用,错误等)。

日志的监控可分为两种

  • 一种是被动的采集,通过采集需要的日志,读取日志信息,标准化输出适应安全规则使用的内容,当匹配到内置或者自定义的规则,随后输出实时告警,从而发现异常;
  • 另一种是主动的查询,通过周期下发命令查询系统状态信息,然后进行新旧信息比对,从而发现异常。

2.1.2.1 Process Monitoring

配置示例:
磁盘空间利用率(df -h)

<localfile>
    <log_format>command</log_format>
    <command>df -h</command>
</localfile>

Load average (uptime)

<localfile>
    <log_format>command</log_format>
    <command>uptime</command>
</localfile>

在uptime命令大于2时发出警报

<rule id="100101" level="7" ignore="7200">
    <if_sid>530</if_sid>
    <match>ossec: output: 'uptime': </match>
    <regex>load averages: 2.</regex>
    <description>Load average reached 2..</description>
</rule>

Detecting USB Storage Usage

configure your Windows agents to monitor the USBSTOR registry entry using the reg command

<agent_config os="windows">
    <localfile>
        <log_format>full_command</log_format>
        <command>reg QUERY HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR</command>
    </localfile>
</agent_config>

create a local rule for that command:

<rule id="140125" level="7">
    <if_sid>530</if_sid>
    <match>ossec: output: 'reg QUERY</match>
    <check_diff />
    <description>New USB device connected</description>
</rule>

2.1.2.2 File Monitoring

linux日志监视

<localfile>
    <location>/var/log/messages</location>
    <log_format>syslog</log_format>
</localfile>

Windows EventLog

<localfile>
    <location>Security</location>
    <log_format>eventlog</log_format>
</localfile>

2.1.3 Rootkit检测

2.1.3.1 rootkit简介

Rootkit是一种特殊的恶意软件,与病毒或者木马不同的是,Rootkit试图通过隐藏自己来防止被发现,以达到长期利用受害主机的目的。

Rootkit的基本功能:

  • 隐藏文件
  • 隐藏进程
  • 隐藏网络端口
  • 隐藏内核模块等
  • 后门功能
  • 键盘记录器

Rootkit分为两种:

  • 用户态Rootkit(User-mode Rootkit)。一般通过覆盖系统二进制和库文件来实现
  • 内核态Rootkit(Kernel-mode Rootkit)。通常通过可加载内核模块(Loadable KernelModule,LKM)将恶意代码直接加载进内核中

2.1.3.2 ossec rootkit db

rootkit_files.txt

# Bash door
tmp/mcliZokhb           ! Bash door ::/rootkits/bashdoor.php
tmp/mclzaKmfa           ! Bash door ::/rootkits/bashdoor.php

# adore Worm
dev/.shit/red.tgz       ! Adore Worm ::/rootkits/adorew.php
usr/lib/libt            ! Adore Worm ::/rootkits/adorew.php
usr/bin/adore           ! Adore Worm ::/rootkits/adorew.php
*/klogd.o               ! Adore Worm ::/rootkits/adorew.php
*/red.tar               ! Adore Worm ::/rootkits/adorew.php

# T.R.K rootkit
usr/bin/soucemask       ! TRK rootkit ::/rootkits/trk.php
usr/bin/sourcemask      ! TRK rootkit ::/rootkits/trk.php

rootkit_trojans.txt

identd      !bash|^/bin/sh|file\.h|proc\.h|/dev/[^n]|^/bin/.*sh!
init        !bash|/dev/h
tcpd        !bash|proc\.h|p1r0c4|hack|/dev/[^n]!
rlogin      !p1r0c4|r00t|bash|/dev/[^nt]!

# Kill trojan
killall     !/dev/[^t%]|proc\.h|bash|tmp!
kill        !/dev/[ab,d-k,m-z]|/dev/[F-Z]|/dev/[A-D]|/dev/[0-9]|proc\.h|bash|tmp!

win_malware_rcl.txt

# http://www.iss.net/threats/ginwui.html
[Ginwui Backdoor {PCI_DSS: 11.4}] [any] [http://www.iss.net/threats/ginwui.html]
f:%WINDIR%\System32\zsyhide.dll;
f:%WINDIR%\System32\zsydll.dll;
r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\zsydll;
r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows -> AppInit_DLLs -> r:zsyhide.dll;

# http://www.symantec.com/security_response/writeup.jsp?docid=2006-081312-3302-99&tabid=2
[Wargbot Backdoor {PCI_DSS: 11.4}] [any] []
f:%WINDIR%\System32\wgareg.exe;
r:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\wgareg;

# http://www.f-prot.com/virusinfo/descriptions/sober_j.html
[Sober Worm {PCI_DSS: 11.4}] [any] []
f:%WINDIR%\System32\nonzipsr.noz;
f:%WINDIR%\System32\clonzips.ssc;
f:%WINDIR%\System32\clsobern.isc;

2.1.4 实时告警

ossec支持实时邮件告警、syslog告警、写数据库、输出json等方式

2.1.5 积极响应

OSSEC是一款准EDR产品,其中体现的‘R’技术,就是指的的这个主动响应。

我们可以根据特定的服务器或服务器组(agent)、特定的规则ID等多个条件关联触发响应动作,响应的动作可以通过脚本程序去实现个性化的需求。

  • 邮件提醒
  • 指令下发边界安全设备或者安全组件

2.2 部署方式

OSSEC支持以下操作系统和日志格式。

2.2.1 操作系统代理

OSSEC代理支持以下操作系统:

GNU / Linux(所有发行版,包括RHEL,Ubuntu,Slackware,Debian等)
Windows XP,2003,Vista,2008、2012
VMWare ESX 3.0、3.5(包括CIS检查)
FreeBSD(所有当前版本)
OpenBSD(所有当前版本)
NetBSD(所有当前版本)
Solaris 2.7、2.8、2.9、10和11.4
AIX 5.2和5.3
Mac OS X 10.x
HP-UX 11

2.2.2 通过Syslog支持的设备

这些系统/设备也通过远程系统日志支持:

Cisco PIX,ASA和FWSM(所有版本)
Cisco IOS路由器(所有版本)
Juniper Netscreen(所有版本)
SonicWall防火墙(所有版本)
Checkpoint防火墙(所有版本)
Cisco IOS IDS / IPS模块(所有版本)
Sourcefire(Snort)IDS / IPS(所有版本)
Dragon NIDS(所有版本)
Checkpoint Smart Defense(所有版本)
McAfee VirusScan Enterprise(v8和v8.5)
Bluecoat代理(所有版本)
Cisco VPN集中器(所有版本)
VMWare ESXi 4.x版

2.2.3 无代理扫描

使用OSSEC无代理选项,还支持以下系统(用于日志分析和文件完整性检查):

Cisco PIX,ASA和FWSM(所有版本)
Cisco IOS路由器(所有版本)
Juniper Netscreen(所有版本)
SonicWall防火墙(所有版本)
Checkpoint防火墙(所有版本)
传统反病毒软件 vs EDR

3. 示例配置

3.1 ossec-agent

<!-- OSSEC example config -->

<ossec_config>
  <client>
    <server-ip>192.168.10.100</server-ip>
  </client>

  <syscheck>
    <!-- Frequency that syscheck is executed (default every 2 hours) -->
    <frequency>7200</frequency>

    <!-- Directories to check  (perform all possible verifications) -->
    <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin,/boot</directories>

    <!-- Files/directories to ignore -->
    <ignore>/etc/mtab</ignore>
    <ignore>/etc/hosts.deny</ignore>
    <ignore>/etc/mail/statistics</ignore>
    <ignore>/etc/random-seed</ignore>
    <ignore>/etc/random.seed</ignore>
    <ignore>/etc/adjtime</ignore>
    <ignore>/etc/httpd/logs</ignore>

    <!-- Check the file, but never compute the diff -->
    <nodiff>/etc/ssl/private.key</nodiff>
  </syscheck>

  <rootcheck>
    <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
    <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
  </rootcheck>

  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/messages</location>
  </localfile>

  <localfile>
    <log_format>apache</log_format>
    <location>/var/www/logs/access_log</location>
  </localfile>

  <localfile>
    <log_format>apache</log_format>
    <location>/var/www/logs/error_log</location>
  </localfile>
</ossec_config>

3.2 ossec-server

<!-- OSSEC example config -->

<ossec_config>
  <global>
    <email_notification>yes</email_notification>
    <email_to>daniel.cid@example.com</email_to>
    <smtp_server>smtp.example.com.</smtp_server>
    <email_from>ossecm@ossec.example.com.</email_from>
  </global>

  <rules>
    <include>rules_config.xml</include>
    <include>pam_rules.xml</include>
    <include>sshd_rules.xml</include>
    <include>telnetd_rules.xml</include>
    <include>syslog_rules.xml</include>
    <include>arpwatch_rules.xml</include>
    <include>vpopmail_rules.xml</include>
    <include>vmpop3d_rules.xml</include>
    <include>courier_rules.xml</include>
    <include>web_rules.xml</include>
    <include>web_appsec_rules.xml</include>
    <include>local_rules.xml</include>
  </rules>


  <syscheck>
    <!-- Frequency that syscheck is executed -- default every 20 hours -->
    <frequency>72000</frequency>
    
    <!-- Directories to check  (perform all possible verifications) -->
    <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin,/boot</directories>

    <!-- Files/directories to ignore -->
    <ignore>/etc/mtab</ignore>

    <!-- Check the file, but never compute the diff -->
    <nodiff>/etc/ssl/private.key</nodiff>
  </syscheck>

  <rootcheck>
    <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
    <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
  </rootcheck>

  <global>
    <white_list>127.0.0.1</white_list>
    <white_list>::1</white_list>
    <white_list>192.168.2.1</white_list>
    <white_list>192.168.2.190</white_list>
    <white_list>192.168.2.32</white_list>
    <white_list>192.168.2.10</white_list>
  </global>

  <remote>
    <connection>secure</connection>
  </remote>

  <alerts>
    <log_alert_level>1</log_alert_level>
    <email_alert_level>7</email_alert_level>
  </alerts>

  <command>
    <name>host-deny</name>
    <executable>host-deny.sh</executable>
    <expect>srcip</expect>
    <timeout_allowed>yes</timeout_allowed>
  </command>  

  <command>
    <name>firewall-drop</name>
    <executable>firewall-drop.sh</executable>
    <expect>srcip</expect>
    <timeout_allowed>yes</timeout_allowed>
  </command>  

  <command>
    <name>disable-account</name>
    <executable>disable-account.sh</executable>
    <expect>user</expect>
    <timeout_allowed>yes</timeout_allowed>
  </command>  


  <!-- Active Response Config -->
  <active-response>
    <!-- This response is going to execute the host-deny
       - command for every event that fires a rule with
       - level (severity) >= 6.
       - The IP is going to be blocked for  600 seconds.
      -->
    <command>host-deny</command>
    <location>local</location>
    <level>7</level>
    <timeout>600</timeout>
  </active-response>

  <active-response>
    <!-- Firewall Drop response. Block the IP for
       - 600 seconds on the firewall (iptables,
       - ipfilter, etc).
      -->
    <command>firewall-drop</command>
    <location>local</location>
    <level>7</level>
    <timeout>600</timeout>    
  </active-response>  

  <!-- Files to monitor (localfiles) -->

  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/messages</location>
  </localfile>

  <localfile>
    <log_format>apache</log_format>
    <location>/var/www/logs/error_log</location>
  </localfile>

  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/exim_mainlog</location>
  </localfile>

</ossec_config>

4. 参考

矛与盾安全小组
https://www.ossec.net/docs/
EDR 完全指南:关于 EDR 的那些事儿

 类似资料: