前言
上一篇文章《蓝队必知秘诀-溯源技术》当中讲到工作流当中有一个关键节点“还原攻击链”,还原攻击链需要需要一些研判的经验,来识别、归纳、总结出攻击的方式,使用的扫描工具,常规的打点攻击如SQL注入、文件上传、文件包含以及命令执行,安全设备一般都可以检测到,如果检查不到使用了waf绕过的手法,或者是0day类型,则需要全流量设备或基于行为检测的设备来识别,基于行为检测的设备可以在告警界面看到这个无需多说,而全流量设备则是需要提前设置好告警规则,以免边界的waf被绕过然后被无感入侵。
基础漏洞规则编写:
SQL注入防护规则:
SQL注入的关键字:select, update, delete, drop, union, insert, alter, create
SQL注入注释符:--, /*, */, #
特殊操作符:' OR 1=1 --, " OR "1"="1, ' OR 'a'='a, ;
常见的函数调用:sleep(, benchmark(, load_file(
设置告警的规则的时候要注意运用分层防御的思想,举个例子,设置基础的SQL注入规则,检测到关键字select就产生告警,然而select也可能是正常的查询业务导致的,这样流量会很庞大驳杂,这时候进一步过滤添加第二条规则有关键字的同时还存在注释符则证明此条流量必然是攻击流量。因此规则如下
规则名称:SQL注入(select关键字配合注释符)
优先级:高
协议:HTTP/HTTPS
检测位置:URL、参数、Cookie、Header、Body
匹配方式:(?i)(?=.*\bselect\b)(?=.*(--|#|/\*|\*/)).*
动作:告警并阻断
文件上传防护规则:
- 明确文件上传攻击的特征
- Webshell(.asp\.aspx\.jsp\.php)
- 双重扩展名称(test.php.jpg)
- 配置文件、绕过文件(如.htaccess、web.config)
- 检测Content-Type与实际文件类型不符的请求
- 这里给出一个正则表达式
(?i)Content-Type:\s*(image|text|application)/(jpeg|png|gif|bmp|plain|pdf|msword|zip|rar).*\.(php|asp|jsp|exe|sh|dll|phtml|aspx)
文件包含防护规则:
文件包含分为两种,一是本地文件包含、二是远程文件包含因此这样写告警规则
1、检测文件遍历 (../、..\\):
2、进一步过滤检测敏感文件
(etc/passwd|boot.ini|win.ini|system32|shadow|hosts|proc/self/environ)
- 远程文件包含,设置白名单,非业务主域产生告警
命令执行防护规则:
命令执行关键字:cat, ls, whoami, id, uname, ping, sleep, wget, curl, nc, netcat, bash, sh, powershell(Linux)
systeminfo,whoami,ver,hostname,ipconfig,netstat,dir,type,echo,erase,certutil,bitsadmin,mshta,curl,wget(windows)
命令执行连接符:|, ||, &, &&, ;, %0a
同样注意运用分层防御的思想,不要忽略了大小写的问题,尽量使用正则表达式来写告警规则。
说完了基础的打点漏洞,来讲一下比较知名的一些框架漏洞、中间件漏洞的流量特征。
框架漏洞、中间件攻击流量特征
Struts2攻击特征
Ognl表达式
%{(#_='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test'))} |
OGNL表达式特征明显,如:
%{} 结构
#context、#_memberAccess、#request、#parameters、#session、#application 等关键字
Java类名及方法如:
java.lang.Runtime, java.lang.System, @java.lang.Runtime@getRuntime().exec('cmd')
mamberaccess字段
Weblogic攻击特征
开放7001端口,传递xml数据到wls-wsat,数据包内容有bash或者dnslog字段,如果基于T3协议,数据包内有“T3”关键字,如可以查看日志(域目录/servers/AdminServer/logs)则有反序列化特征InvokerTransformer、ChainedTransformer,socket(base_domain.log或
AdminServer.log)、文件操作则有FileOutputStream(base_domain.log)
SpringBoot攻击特征
关键字:
class.module.classLoader.resources.context.parent.pipeline.first.pattern
spring.cloud.function.routing-expression
接口路径:/actuator, /env, /heapdump, /trace, /metrics, /actuator
SpEL表达式注入:${T(java.lang.Runtime).getRuntime().exec(...)}
配置文件篡改/敏感信息读取:application.yml, application.properties, /actuator/env
Log4j攻击特征
数据包存在关键字”jndi:ldap://”、”jndi:rmi”等类似字符的特征,通常会使用DNS外带检测的方式,所以检测非业务主域,域名也是一个好办法。
Shiro攻击特征
Cookie-rememberme的值正常值较短,攻击时的base64值较长(攻击机制导致的)
需要运用DNSlog和urldns进行检测,所以有大量的DNS流量
爆破key值(shrio550(<1.2.5)key值固定,721(>1.2.5&<1.4.2)key值不固定需要登录)
Fastjson攻击流量特征
发送json数据,数据包内有关键字“datesourcename”且一般带有@type
OK,到这里攻击特征的流量就算是梳理完成了,接下来说一下扫描工具的特征,扫描工具的特征比较少且一般集中在user-agent这个地方,通常user-agent都是可以自定义的,但是如果存在相同的user-agent的话,那基本就百分百确定是扫描器的流量了。
扫描器特征:
RSAS(瑞数动态安全)
User-agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4
特殊扫描路径:/rsas、/rsas/、/rsagent、/rsa/、/rsc/、/rssignature、/rsstatic
特殊的参数:rsas_token、rs_timestamp、rsa_token、rsa_sign、callback
Cookie头:rsas_session、rsas_verify、rsa_sid、rsa_cookie
Goby
User-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, likeGecko) Version/12.0.3 Safari/605.1.15
Mozilla/5.0 (compatible; Goby/1.8.255;)
特定的请求头:Connection: close
Accept-Encoding: gzip
Pragma: no-cache
Cache-Control: no-cache
Xray
User-agent:Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Xray
Mozilla/5.0 (compatible; Xray)
特定的请求头:X-Scanner: Xray
EZ(长亭 EZ-Scanner)
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/108.0.0.0 Safari/537.36
ezscan
Mozilla/5.0 (compatible; ezscan)
特定的请求头:X-Scanner: ezscan
X-Scan-Memo: ezscan
Fscan
User-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/104.0.0.0 Safari/537.36
扫描MS17-010 漏洞时会使用anonymous作用用户名
Name
User-agnet会包含Name关键字
扫描MS17-010漏洞时会使用WIN7\guest
特定的请求头:X-Nmap-Scan
Metasploit
User-agnet:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Ruby
扫描ms17-010时会使用”.\”这个用户名
Awvs
User-agent:Acunetix
Mozilla/5.0+(compatible;+Acunetix)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) Acunetix
特定的请求头: Acunetix-Aspect
Acunetix-Scanning
X-Acunetix-Product
acunetix_cookie_test
Nessus
User-agnet:Nessus
Mozilla/5.0 (compatible; Nessus)
特定的请求头:X-Nessus-Scan
X-Nessus-Id
nessus_cookie_test