任何具有网络 IP 地址的设备,只要被允许与组织的网络进行交互,都是一个端点。
下面是一些关键端点威胁:
在过去十多年里,端点安全仅仅指的是杀毒软件一种产品。随着安全威胁形态的演化,传统端点安全产品存在的问题越来越突出:应对机制是被动的,组织只有受到攻击后才能感知和捕获,并将其特征放到病毒库中,然后通过升级杀毒软件并应用到用户才能应对。
Gartner 的 AntonChuvakin 于 2013 年 7 月首次创造了端点威胁检测和响应 (Endpoint Threat Detection and Response,ETDR) 这一术语,用来定义一种 “检测和调查主机 / 端点上可疑活动(及其痕迹)” 的工具。后来通常称为端点检测和响应 (EDR)。EDR 的出现有助于解决这些问题:要 “看到” 未知威胁是非常有难度的,其关键就在于检测异常行为。EDR 通过对端点进行持续检测,发现异常行为并进行实时干预,同时通过应用程序对操作系统调用等异常行为分析,检测和防护未知威胁,结合机器学习和人工智能辅助判断,最终达到杀毒软件无法解决未知威胁的目的。
人们常问的一个问题是 EDR 与传统反病毒软件(AV)或下一代反病毒(NGAV)之间的区别。 在他们看来,他们不需要这两种技术。 但事实并非如此。 事实上,这两种技术在保护你的网络方面有不同的用途。 反病毒和下一代反病毒专注于预防,但对攻击期间发生的情况一无所知。 它们被设计用来在坏的东西进入你的网络之前捕捉它们。 但是即使它们正确地做到了这一点,它们也不能告诉你恶意软件来自哪里,以及它们是如何在系统中传播的。 EDR 描述的是整个攻击过程,并帮助你跟踪可执行文件是如何获得对计算机的访问权限并尝试运行的。 EDR 不仅提供了可见性,当一个攻击行为被 AV 阻止,或者是一个不错 NGAV 防控失败,那么在这种情况下,你最有可能处理发的是一个严重的攻击,如无文件型的恶意软件,零日漏洞,或高级持续性威胁。 这些类型的攻击不会留下签名,这使得它们更难防范,而且如果没有 EDR 这样的服务几乎不可能被发现。 它会警告你攻击未遂,当攻击者已经绕过你的所有防御措施并在你的网络中时,EDR 会为你提供洞察能力。
另一个常见的问题是 EDR 与安全信息和事件管理(SIEM)之间的区别。 SIEM 是一种从防火墙、服务器和网络设备收集日志的技术。 它整合了你的所有网络日志,以帮助跟踪行为、识别威胁并进行调查。 但是,你必须设置规则和查询来告诉 SIEM 要查找什么以及要跟踪什么行为。 SIEM 是一个非常好的服务,可以全面地观察发生在你的网络上的活动。 EDR 专门整合和分析端点数据,为分析人员提供设备,xise而不是要求他们分析成千上万的日志或事件。 最终,这两种技术服务于不同的目的,并且可以在一个安全的网络环境中相互补充,但是 EDR 的主要目的是简化并有效地检测和应对威胁。
OSSEC是一个将HIDS(基于主机的入侵检测),日志监视以及安全事件管理(SIM)/安全信息和事件管理(SIEM)结合在一起的系统。
无论攻击手段有多么高明,最终的目的是以某种方式改变系统,从修改文件的病毒到改变内核的后门程序,系统的完整性总会有一些变化。
比如:
完整性检查是入侵检测的重要组成部分,它可以检测系统完整性的变化。它的工作方式是代理每隔几个小时扫描一次系统(用户定义),并将所有校验和发送到服务器。服务器存储校验和并在其上查找修改。如果发生任何更改,将发送警报。
文件属性包括: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>
OSSEC收集,分析并关联操作系统中的日志(应用程序、配置更改等),以让您知道是否正在发生可疑事件(攻击,滥用,错误等)。
日志的监控可分为两种
配置示例:
磁盘空间利用率(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>
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>
Rootkit是一种特殊的恶意软件,与病毒或者木马不同的是,Rootkit试图通过隐藏自己来防止被发现,以达到长期利用受害主机的目的。
Rootkit的基本功能:
Rootkit分为两种:
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;
ossec支持实时邮件告警、syslog告警、写数据库、输出json等方式
OSSEC是一款准EDR产品,其中体现的‘R’技术,就是指的的这个主动响应。
我们可以根据特定的服务器或服务器组(agent)、特定的规则ID等多个条件关联触发响应动作,响应的动作可以通过脚本程序去实现个性化的需求。
OSSEC支持以下操作系统和日志格式。
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
这些系统/设备也通过远程系统日志支持:
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版
使用OSSEC无代理选项,还支持以下系统(用于日志分析和文件完整性检查):
Cisco PIX,ASA和FWSM(所有版本)
Cisco IOS路由器(所有版本)
Juniper Netscreen(所有版本)
SonicWall防火墙(所有版本)
Checkpoint防火墙(所有版本)
传统反病毒软件 vs EDR
<!-- 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>
<!-- 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>
矛与盾安全小组
https://www.ossec.net/docs/
EDR 完全指南:关于 EDR 的那些事儿