研判(入侵检测)
研判我理解为人工层面对入侵检测事件进行再分析,即借助已有的设备告警根据经验判断是否为真实攻击
研判工作要充分利用已有安全设备(需要提前了解客户的网络拓扑以及部署设备情况),分析其近期的设备告警,将全部流量日志(日志条件:源地址,目的地址,端口,事件名称,时间,规则ID,发生 次数等)根据研判标准进行筛选(像挖矿、蠕虫、病毒、拒绝服务这类不太可能为攻击方发起的攻击的事件,直接过滤掉,减少告警数量),一般情况下,真实攻击不可能只持续一次,它一定是长时间、周期性、多IP的进行攻击
对于告警结合威胁情报库如:微步 https://x.threatbook.cn等对于流量日志的原 IP 地址进行分析,判断其是否为恶意攻击,推荐使用微步的插件,如果确认为攻击行为或者不能确认是否为攻击行为,进行下一步操作,在之前准备好的表格中查找 IP 是否为客户内网部署的设备,如果不是,继续进行下一步,在事件上报平台查看是否有其他人提交过,如果没有,则上报
然后根据流量日志,对请求数据包和返回数据包分析判断其是否为误报,需要留意 X-Forwarded-For(简称XFF)和x-real-ip 可以了解些 webshell 工具的流量特征,尤其是免杀 webshell,有可能不会被设备识别
最后上报事件时,尽可能提供完整的截图,包括源 ip、目的ip,请求包请求体,响应包响应体等重要信息,以方便后续人员研判溯源
注:不要任意忽略内网告警,适当情况下可以往前推排查时间
设备
根据网络情况可以分为三种:经典网络、私有云、公有云
经典网络
注:图片来源于深信服官网
即客户拥有物理的基础设施(自建机房、自购设备、网络)
NGAF/NGFW:下一代 Web 应用防火墙(Next Generation Application Firewall,通防火墙和下一代防火墙的区别),聚合了以下功能
- IDS
- HIDS:基于主机的入侵检测系统
- HIDS:基于网络的入侵检测系统
- HIDS+NIDS:基于混合数据源的入侵检测系统
- IPS:入侵防御系统
- AV:反病毒系统
- IDS
EDR:主机安全管理\终端检测和响应
EDR 实时监测终端上发生的各类行为,采集终端运行状态,在后端通过大数据安全分析、机器学习、沙箱分析、行为分析、机器学习等技术,提供深度持续监控、威胁检测、高级威胁分析、调查取证、事件响应处置、追踪溯源等功能,可第一时间检测并发现恶意活动,包括已知和未知威胁,并快速智能地做出响应,全面赋予终端主动、积极的安全防御能力
简单来说就是给内网环境中所有主机安装管理软件终端,可以在管理平台集中管理和数据分析过滤,基本所有安全厂商都有自己的 EDR 产品
运维审计和管理平台(堡垒机)
DAS:数据库安全审计平台
LAS:日志审计安全平台
AC:上网行为管理系统
伪装欺骗系统(蜜罐、蜜网)
SIP:安全态势感知平台
这个算是让整套系统性能得到提升的灵魂了,定位为客户的安全大脑,是一个集检测、可视、响应处置于一体的大数据安全分析平台。产品以大数据分析为核心,支持主流的安全设备、网络设备、操作系统等多源数据接入,利用大数据、关联分析、告警降噪等技术,实现海量数据的统一挖掘分析
云网络
云网络包括私有云和公有云
- 云主机安全
- 云防火墙
- 云堡垒机
- 云蜜罐
- 云 DDOS 防护
- 等等
异常HTTP请求
列举下在分析 HTTP 请求中可能出现的异常点,好做判断
正常的 HTTP 请求
正常的 HTTP 相应包
接下来分析那些 HTTP 数据包有可能会存在风险
- 请求URI过长
- 请求数据过长(冰蝎3.0就使用超长请求数据包绕过检测)
- 异常请求数据,判断是否存在 CRLF 攻击、以及 HTTP 请求走私
- 请求方法不合法,比如 HTTP 请求大小写混用,服务器不支持的请求方法,类似tomcat put 文件上传漏洞这种,以及未知的不存在的请求方法
- 响应头过长
- HTTP 协议版本字段不合规
- URI 字段不合规
- 多余的请求头部
- 请求 chunk 块 size 不合规(HTTP请求chunk块size不以数字开头或\r\n不完整,认为其不合规)
- 请求 chunk 块 body 不合规(HTTP请求chunk块body结尾\r\n不完整,认为其不合规)
- 请求 last chunk 块不合规
- 请求 URI 不可见字符
- 请求 URI 解码后不可见字符
Webshell分析
攻击者在入侵企业网站时,通常要通过各种方式获取 webshell 从而获得企业网站的控制权,然后方便进行之后的入侵行为
常见攻击方式有:直接文件上传获取 webshell、SQL 注入、文件包含、FTP、Redis 未授权,甚至使用跨站点脚本 (XSS) 作为攻击的一部分,甚至一些比较老旧的方法利用后台数据库备份及恢复获取 webshell、数据库压缩等
webshell 通用功能包括但不限于 shell 命令执行、代码执行、数据库枚举和文件管理
以 webshell 分析为例,其他漏洞如: SQL、文件包含等都大同小异
Webshell 的分类
按协议分析
- 基于 TCP 的 Shell
- 基于 UDP 的 Shell
- 基于 ICMP 的 Shell(使用于内网主机主机只允许 ICMP 出入网即只能 ping 通的情况)
- 基于 ICMP 的 Shell(具有较强的隐蔽性)
按使用工具分析
- Liunx bash 命令反弹 Shell
- NC 反弹 Shell
- Telnet 反弹 Shell
- SSH、iptables、sockets等工具端口转发
- AWK 反弹 Shell 链接
- 各种编程语言的反弹 shell
Webshell 的检测
webshell 的检测可以分为两个方面一个是主机层面(既根据 webshell 的文件特征和行为特征行为特征进行分析),第二个层面是流量层面(根据webshell 的传输流量分析)
主机层面
文件特征分析
一个 webshell 要执行必然会包含某些危险函数,以 PHP shell 为例,可能存在以下危险函数
- 存在系统调用的命令执行函数,如eval、system、cmd_shell、assert等
- 存在系统调用的文件操作函数,如fopen、fwrite、readdir等
- 字符串拼接执行操作
- 存在数据库操作函数,调用系统自身的存储过程来连接数据库操作
- 通过自定义加解密函数、利用xor、字符串反转、压缩、截断重组等方法来绕过检测
可以通过关键词匹配脚本文件找出 webshell,D盾之类的webshell查杀工具也是利用这种原理,对源码进行查杀
行为特征分析
- webshell 在执行函数时这些对于系统调用、系统配置、数据库、文件的操作动作都是可以作为判断依据
主机可以从以下方法进行分析
- 主机进程分析
- 主机端口调用分析
- 日志应用程序的事件日志
- 系统调用日志(syscall)
- 主机文件监控(系统文件、网站文件、配置文件)
对搜索到的内容,可以手动查看是否是木马、查看网页生成时间或者上传至一些检测的网站进行检测(http://www.virscan.org/、https://x.threatbook.cn、https://www.virustotal.com/gui/home/upload)
防御方面:Linux 中可以使用 chkrootkit/rkhunter来定时监测系统,以保证系统的安全
chkrootkit 主要功能:
检测是否被植入后门、木马、rootkit
检测系统命令是否正常(避免在入侵检测分析时使用已被替换的命令)
检测登录日志
使用chkrootkit –n;如果发现有异常,会报出“INFECTED”字样
rkhunter 主要功能:
系统命令(Binary)检测,包括Md5 校验
Rootkit检测
本机敏感目录、系统配置、服务及套间异常检测
三方应用版本检测
流量层面
流量层面和主机层面相辅相成
基于流量的检测,是无法通过检测构成webshell危险函数的关键词来做检测的,但webshell带有常见写的系统调用、系统配置、数据库、文件的操作动作等,它的行为方式决定了它的数据流量中多带参数具有一些明显的特征,通过匹配行为的流量特征做检测,这也是基于webshell入侵后行为特征进行检测,当然也可以从系统层面webshell入侵行为进行检测
可以参考之前发的对于菜刀、冰蝎、哥斯拉的分析,我是链接,其流量中即使加密后或多或少也具有一些特征,通过大量数据分析比对发现其流量特征(或者网上的已知特征)后进行阻断拦击
流量分析的好处在于,在 web 访问日志中,是无法抓取 POST 方式的包,也就没法分析 webshell 入侵后的行为,而流量很好的做到了这一点
还有就是对于常见的内网工具 CS 流量可以通过在流量层面其 IP 端口,心跳包等特征进行检测
以及 N day 流量分析和 明文敏感信息传输分析
其他入侵检测方法
- 动态检测(沙箱)
- 统计学
入侵检测可以通过大数据和机器学习来强化设备