攻击流量分析

一、SQL注入流量特征

1、SQL语句关键字:select、where、order by、union 、update、delete。

2、系统函数:user()、@@version、database()。

3、特定的数据库函数或者特性:information_schema库(用来获取数据库库名、表名、字段名)、报错注入三大函数(updatexml、extractvalue、floor)>

4、编码和转义:URL编码(%27代表单引号)、十六进制编码(char(39))、ascll(0x27)等,注释语句--或#或/**/。

二、xss流量特征

1、请求体中包含HTML或者JavaScript标签如script、img、iframe等,以及弹窗函数如alert、confirm、prompt。

三、RCE(远程代码执行)流量特征

1、请求头或者URL中可能会有危险函数:比如PHP中的命令执行函数system()、exec()、shell_exec()、passthu()函数,文件操作函数如popen()函数、代码执行函数eval()、assert()函数,Java中的命令执行函数runtime、getruntime.exec函数等。

2、流量中包含特殊的字符:比如 |、||、&、&&、'、>、>>、<、<<等。

3、流量中包含系统命令或敏感文件路径:如ls、cat、rm、敏感文件路径如/etc/passwd 、/etc/shadow、/var/log等。

四、SSRE(服务器端请求伪造)流量特征

1、URL参数异常:URL参数指向内网地址或者不应该访问的地址,参数值是内网IP或者127.0.0.1或者使用了伪协议file://、ftp://、dict://、gopher://。

2、参数值后面存在特殊的字符或者使用编码绕过:特殊字符比如点号、冒号、空格、编码比如URL编码、base64编码、16进制编码。

五、cobalt strike流量特征

1、HTTP请求特征:默认使用GET方法向特定URL地址(/load、/dpixel、/pixel、/_utm.gif)等发送请求,cookie里面有一个base64编码的数据。

2、DNS请求特征:在DNS请求中,域名可能以特定前缀开头比如(cdn、www6、api等),域名的查询结果可能包含非常规IP地址,这些地址被用于指令传输和心跳间隔。

3、心跳包特征:CS的默认心跳间隔是60秒,没隔60秒发送一次心跳包,用来确认被控端是否在线,当然可以在Beacon会话中执行sleep命令来修改心跳间隔。

4、CS的默认端口为50050,当然这个端口可以通过编辑teamserver文件中的server------port来进行修改。

六、Metasploit流量特征

1、端口特征:MSF数据库默认使用的postgresql端口是5432,MFS默认使用的反向连接端口是4444.

2、数据包特征:MSF数据包中通常包含meterperter 、revshell等特殊字符串。

3、使用特殊协议:MSF框架通常使用,meterpreter、reverse TCP等特殊的协议/

七、sqlmao流量特征

1、User-Agent头特征:sqlmap工具发起请求的时候,默认的User_Agent中通常包含sqlmap关键字如sqlmap/1.7.5.2#dev(https://sqlmap.org)。

2、攻击流程具有顺序和规律:sqlmap的攻击流程遵循一定的顺序和规律,比如在使用--os--shell攻击时,它会首先测试链接是否能够访问,接着判断操作系统版本,尝试爆绝对路径,指定上传路径,写入一个PHP文件,找到上传文件的访问路径。上传另一个PHP文件并执行命令。

3、payload测试语句模板化:aqlmap使用的payload测试语句往往具有模板特征,比如在盲注入时,它会使用逻辑语句如and、or和特定函数来测试sql注入的可行性。

八、Apache Shiro 反序列化漏洞及其流量特征

1、漏洞原理:该框架提供了忘记密码的功能,在用户登录成功后生成经过加密并编码的cookie,在服务器端对rememberMe的cookie值,先进行base64解码然后再进行AES解密最后再反序列化,最后导致了反序列化RCE漏洞。

2、Shiro550与shiro721的区别:

(1)shiro550:由于AES密钥被泄露,攻击者不需要获取真实的rememberMe字段,可以通过密钥重新构造请求,导致反序列化漏洞的产生。

(2)shiro721:在该版本,AES密钥不再是硬编码的了,而是系统随机生成的,但是攻击者可以利用登录后获取的真实的rememberMe值作为Padding Oracle Attack的前缀,通过构造的cookie值来实现反序列化攻击。

3、shiro反序列化流量特征

(1)登录失败:返回包中包含rememberMe=deleteMe

(2)不勾选记住密码登录成功:返回包中set-cookie包含rememberMe=deleteMe字段,但是后续请求cookie不包含rememberMe字段。

(3)勾选记住密码登录成功:返回包中set-cookie包含rememberMe=deleteMe字段以及rememberMe字段,后续请求中cookie也包含rememberMe字段。

九、Apache Log4j2远程代码执行漏洞及其流量特征。

1、漏洞原理:log4j2的lookup功能下的jndi lookup模块未对用户输入进行严格判断,请求了恶意资源导致了远程代码执行漏洞。

2、log4j2远程代码执行漏洞流量特征:数据包中包含{jndi:ldap//}字段,响应体中可能存在命令执行的结果(有回显),可能存在源IP与DNSlog的外联日志(无回显)。

十、fastjson反序列化漏洞极其流量特征

1、漏洞原理:fastjson在使用auto Type功能实例化指定类时会读取@type指定的对象类型到内容,试图把json数据反序列化为这个对象,导致攻击者可以通过@type指定比如com.sun.rowset.jdbcRowSetlmpl这样的远程命令执行类构造恶意利用链进行攻击。

2、fastjson反序列化流量特征:请求包中含有@type、ldap 、rmi、Content_type字段为application/json。

十一、apache struts2命令执行漏洞

1、漏洞原理:该框架执行了恶意用户传入的OGNL表达式,造成远程代码执行。

2、流量特征:请求参数中包含OGNL表达式,比如${}、%{},请求包中包含#_memberAcecess,请求参数的数值中包含java.lang.Runtime,该参数值用于执行系统命令。

十二、webshell管理工具流量特征

1、菜刀流量特征

默认Webshell连接密码为caidao

请求包中User-Agent头为百度或者火狐等爬虫标识

请求体中存在eval、base64等特征标识

流量参数中包含z0、z1、z2

建立连接后会发送特定的验证码,比如"knife"、"dadan"等进行验证

2、蚁剑流量特征

默认的User-Agent头为英文的蚁剑(antsword)

PHP类型的Webshell流量请求体通常都以@ini_set("display_errors","0");@set_time_limit(0)开头(通常是URL加密)

响应体通常会进行base64编码,解码后可以观察到攻击行为的payload

3、冰蝎2.x/3.x/4.x流量特征

(1)冰蝎2.x:

请求体进行了AES加密 + Base64编码,使用的是动态密钥

请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个

请求的Cookie的格式通常为: Cookie: PHPSESSID=; path=/;

(2)冰蝎3.x:

请求体进行了AES加密 + Base64编码,使用的是固定的连接密钥,AES加密的密钥直接固定为webshell连接密码的MD5哈希值的前16位,默认连接密码是"rebeyond",因此AES加密的密钥就是"e45e329feb5d925b"

请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个,通信时可能会频繁使用特定的User-Agent,比如"WOW64"等

请求包中Content-Length为5740或5720(可能会根据Java版本而改变)

每一个请求头中存在Pragme: no-cache,Cache-Control: no-cache

可能会频繁访问默认路由,比如"/con"

(3)冰蝎4.x:

该版本不再有连接密码这个概念,自定义传输协议的算法就是连接密码,与3.x相同的是默认情况下Webshell都有"e45e329feb5d925b"这个连接密钥

请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个

使用了长连接,请求头和响应头中connection头为"keep-alive"

Content-Type字段通常为"Application/x-www-form-urlencoded"

默认情况下有固定的请求头和响应头,请求字节头:dFAXQV1LORcHRQtLRlwMAhwFTAg/M,响应字节头:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd

4、哥斯拉流量特征

Webshell使用了eval函数以及base64编码

请求包通常以"pass="开头

通常请求包较长,但是响应包长度可能为0

默认的User-Agent字段是Java/版本号,但是可以被修改

最后一个Cookie值的末尾有一个不必要的分号

响应包具有特定的结构特征,结构特征为:md5前十六位+base64+md5后十六位