红蓝对抗之常见网络安全事件研判了解网络安全设备Webshell入侵检测
Posted OceanSec
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红蓝对抗之常见网络安全事件研判了解网络安全设备Webshell入侵检测相关的知识,希望对你有一定的参考价值。
文章首发于freebuf:https://www.freebuf.com/articles/network/317851.html
文章目录
研判(入侵检测)
研判我理解为人工层面对入侵检测事件进行再分析,即借助已有的设备告警根据经验判断是否为真实攻击
研判工作要充分利用已有安全设备(需要提前了解客户的网络拓扑以及部署设备情况),分析其近期的设备告警,将全部流量日志(日志条件:源地址,目的地址,端口,事件名称,时间,规则ID,发生 次数等)根据研判标准进行筛选(像挖矿、蠕虫、病毒、拒绝服务这类不太可能为攻击方发起的攻击的事件,直接过滤掉,减少告警数量),一般情况下,真实攻击不可能只持续一次,它一定是长时间、周期性、多IP的进行攻击
对于告警结合威胁情报库如:微步、奇安信威胁情报中心等对于流量日志的原 IP 地址进行分析,判断其是否为恶意攻击,推荐使用微步的插件,如果确认为攻击行为或者不能确认是否为攻击行为,进行下一步操作,在之前准备好的表格中查找 IP 是否为客户内网部署的设备,如果不是,继续进行下一步,在事件上报平台查看是否有其他人提交过,如果没有,则上报
然后根据流量日志,对请求数据包和返回数据包分析判断其是否为误报,需要留意 X-Forwarded-For(简称XFF)和x-real-ip 可以了解些 webshell 工具的流量特征,尤其是免杀 webshell,有可能不会被设备识别
最后上报事件时,尽可能提供完整的截图,包括源 ip、目的ip,请求包请求体,响应包响应体等重要信息,以方便后续人员研判溯源
注:不要任意忽略内网告警,适当情况下可以往前推排查时间
设备
根据网络情况可以分为三种:经典网络、私有云、公有云
经典网络
注:图片来源于深信服官网
即客户拥有物理的基础设施(自建机房、自购设备、网络)
-
NGAF/NGFW:下一代 Web 应用防火墙(Next Generation Application Firewall,通防火墙和下一代防火墙的区别),聚合了以下功能
- IDS
- HIDS:基于主机的入侵检测系统
- NIDS:基于网络的入侵检测系统
- 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 流量分析和 明文敏感信息传输分析
其他入侵检测方法
- 动态检测(沙箱)
- 统计学
入侵检测可以通过大数据和机器学习来强化设备
附录
常见端口漏洞
转载于:https://www.cnblogs.com/xiaozi/p/13296754.html
1、远程管理端口
22 端口(SSH)
安全攻击:弱口令、暴力猜解、用户名枚举
利用方式:
1、通过用户名枚举可以判断某个用户名是否存在于目标主机中,
2、利用弱口令/暴力破解,获取目标主机权限。
23 端口(Telnet)
安全漏洞:弱口令、明文传输
利用方式:
1、通过弱口令或暴力破解,获取目标主机权限。
2、嗅探抓取telnet明文账户密码。
3389 端口(RDP)
安全漏洞:暴力破解
利用方式:通过弱口令或暴力破解,获取目标主机权限。
5632 端口(Pcanywhere)
安全漏洞:弱口令、暴力破解
利用方式:通过弱口令或暴力破解,获取目标主机权限
5900 端口(VNC)
安全漏洞:弱口令、暴力破解
利用方式:通过弱口令或暴力破解,获取目标主机权限。
2、Web中间件/服务端口
1090/1099 端口(RMI)
安全漏洞:JAVA RMI 反序列化远程命令执行漏洞
利用方式:使用nmap检测端口信息。
端口信息:1099/1090 Java-rmi Java RMI Registry
检测工具:attackRMI.jar
7001 端口(Weblogic)
安全漏洞:弱口令、SSRF、反序列化漏洞
利用方式:
1、控制台弱口令上传war木马
2、SSRF内网探测
3、反序列化远程代码执行等
8000 端口(jdwp)
安全漏洞:JDWP 远程命令执行漏洞
端口信息:
8000 jdwp java Debug Wire Protocol
检测工具:https://github.com/IOActive/jdwp-shellifier
8080 端口(Tomcat)
安全漏洞:弱口令、示例目录
利用方式:通过弱口令登录控制台,上传war包。
8080 端口(Jboss)
安全漏洞:未授权访问、反序列化。
利用方式:
1、未授权访问控制台,远程部署木马
2、反序列化导致远程命令执行等。
检测工具:https://github.com/joaomatosf/jexboss
8080 端口(Resin)
安全漏洞:目录遍历、远程文件读取
利用方式:通过目录遍历/远程文件读取获取敏感信息,为进一步攻击提供必要的信息。
任意文件读取POC:
payload1 = "/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=/etc/passwd"
payload2 = "/resin-doc/examples/jndi-appconfig/test?inputFile=../../../../../../../../../../etc/passwd"
payload3 = "/ ..\\\\\\\\web-inf"
8080 端口(Jetty)
安全漏洞:远程共享缓冲区泄漏
利用方式:攻击者可以通过精心构造headers值来触发异常并偏移到共享缓冲区,其中包含了之前其他用户提交的请求,服务器会根据攻击者的payload返回特定位置的数据。
检测工具:https://github.com/GDSSecurity/Jetleak-Testing-Script
8080 端口(GlassFish)
安全漏洞:弱口令、任意文件读取
利用方式:
1、弱口令admin/admin,直接部署shell
2、任意文件读取获取服务器敏感配置信息
8080 端口(Jenkins)
安全漏洞:未授权访问 、远程代码执行
利用方式:访问如下url,可以执行脚本命令,反弹shell,写入webshell等。
http://<target>:8080/manage
http://<target>:8080/script
8161 端口(ActiveMQ)
安全漏洞:弱口令、任意文件写入、反序列化
利用方式:默认密码admin/admin登陆控制台、写入webshell、上传ssh key等方式。
9043 端口(webSphere)
安全漏洞:控制台弱口令、远程代码执行
后台地址:https://:9043/ibm/console/logon.jsp
50000 端口 (SAP)
安全漏洞:远程代码执行
利用方式:攻击者通过构造url请求,实现远程代码执行。
POC:http://<target>:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=cmd.exe /c ipconfig /all
50070 端口(hadoop)
安全漏洞:未授权访问
利用方式:攻击者可以通过命令行操作多个目录下的数据,如进行删除操作。
curl -i -X DELETE “http://ip:50070/webhdfs/v1/tmp?op=DELETE&recursive=true“
curl -i -X PUT “http://ip:50070/webhdfs/v1/NODATA4U_SECUREYOURSHIT?op=MKDIRS“
3、数据库端口
389 端口(ldap)
安全漏洞:未授权访问 、弱口令
利用方式:通过LdapBrowser工具直接连入。
1433 端口(Mssql)
安全漏洞:弱口令、暴力破解
利用方式:差异备份getshell、SA账户提权等
1521 端口(Oracle)
安全漏洞:弱口令、暴力破解
利用方式:通过弱口令/暴力破解进行入侵。
3306 端口(MySQL)
安全漏洞:弱口令、暴力破解
利用方式:利用日志写入webshell、udf提权、mof提权等。
5432 端口( PostgreSQL)
安全漏洞:弱口令、高权限命令执行
利用方式:攻击者通过弱口令获取账号信息,连入postgres中,可执行系统命令。
PoC参考:
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;
5984 端口(CouchDB)
安全漏洞:垂直权限绕过、任意命令执行
利用方式:通过构造数据创建管理员用户,使用管理员用户登录,构造恶意请求触发任意命令执行。
后台访问:http://<target>:5984/_utils
6379 端口(Redis)
安全漏洞:未授权访问
利用方式:绝对路径写webshell 、利用计划任务执行命令反弹shell、
公私钥认证获取root权限、主从复制RCE等。
9200 端口(elasticsearch)
安全漏洞:未授权访问、命令执行
检测方式:
1、直接访问如下url,获取相关敏感信息。
http://<target>:9200/_nodes
查看节点数据
http://<target>:9200/_river 查看数据库敏感信息
2、通过构造特定的数据包,执行任意命令。
11211 端口(MemCache)
安全漏洞:未授权访问
检测方式:无需用户名密码,可以直接连接memcache 服务的11211端口。
nc -vv <target> 11211
27017 端口(Mongodb)
安全漏洞:未授权访问、弱口令
利用方式:未授权访问/弱口令,远程连入数据库,导致敏感信息泄露。
4、常见协议端口
21 端口(FTP)
安全漏洞:1、配置不当 2、明文传输 3、第三方软件提权
利用方式:
1、匿名登录或弱口令
2、嗅探ftp用户名和密码
3、Serv-U权限较大的账号可导致系统命令执行。
FTP提权命令:
# 增加系统用户
Quote site exec net user 4567 4567 /add
# 提升到管理员权限
Quote site exec net localgroup administrators 4567 /add
25 端口(SMTP)
攻击方式:1、匿名发送邮件 2、弱口令 3、SMTP用户枚举
利用方式:
1、SMTP服务器配置不当,攻击者可以使用任意用户发送邮件。
2、SMTP弱口令扫描,获取用户账号密码,发送邮件钓鱼。
3、通过SMTP用户枚举获取用户名:
nmap -p 25 -- smtp-enum-users.nse <target>
53 端口(DNS)
安全攻击:1、DNS域传送漏洞、DNS欺骗、DNS缓存投毒
检测方式:
1、DNS域传送漏洞,Windows下检测使用nslookup命令,Linux下检测使用dig命令,通过执行命令可以清楚的看到域名解析情况。
2、DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。
3、DNS缓存投毒是攻击者欺骗DNS服务器相信伪造的DNS响应的真实性。
161 端口(SNMP)
安全漏洞:默认团体名/弱口令访问
利用方式:通过nmap自带的审计脚本进行检测,可能导致敏感信息泄露。。
1、弱口令检测:nmap –sU –p161 –script=snmp-brute <target>
2、获取系统信息:nmap –sU –p161 –script=snmp-sysdescr <target>
3、获取用户信息:nmap -sU -p161 --script=snmp-win32-user <target>
4、获取网络端口状态:nmap -sU -p161 --script=snmp-netstat <target>
443 端口(SSL)
安全漏洞:OpenSSL 心脏出血
利用方式:攻击者可以远程读取存在漏洞版本的openssl服务器内存中长大64K的数据。
扫描脚本:nmap -sV --script=ssl-heartbleed <target>
445 端口(SMB)
安全漏洞:信息泄露、远程代码执行
利用方式:可利用共享获取敏感信息、缓冲区溢出导致远程代码执行,如ms17010。
873 端口(Rsync)
安全漏洞:匿名访问、弱口令
利用方式:攻击者可以执行下载/上传等操作,也可以尝试上传webshell。
1、下载:#rsync -avz a.b.c.d::path/file path/filiname
2、上传:#rsync -avz path/filename a.b.c.d::path/file
2181 端口(Zookeeper)
安全漏洞:未授权访问
检测方式:攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。
echo envi | nc ip port
2375 端口(Docker)
安全漏洞:未授权方式
检测方式:通过docker daemon api 执行docker命令。
#列出容器信息,效果与docker ps -a 一致。
curl http://<target>:2375/containers/json
docker -H tcp://<target>:2375 start <Container Id>
参考文章:
- https://www.freebuf.com/articles/web/183520.html
- https://blog.csdn.net/m0_64197404/article/details/121538483
- https://shimo.im/docs/vVqRVQ2PMKHy1Xqy/read
以上是关于红蓝对抗之常见网络安全事件研判了解网络安全设备Webshell入侵检测的主要内容,如果未能解决你的问题,请参考以下文章