迟来的第二篇(被adwa拉去做他的密码题)
流量分析学习之路之入侵检测–识别常见恶意行为
前言
这次写一些关于识别常见恶意行为流量的基础,主要是从恶意数据包开始分析。
根据个人经验我觉得想要做好流量分析一定要记住一些特征和基础。
1、首先最重要的肯定是要熟悉网络架构,协议和字段,要是连这些协议什么的都不知道你拿到一段流量你也不知道干什么,,常用协议就那么多,你把那些协议了解清楚了流量分析做起来才会得心应手一些。
2、对于恶意流量分析我觉得首先要把那些常见攻击手法了解一下,所谓知己知彼才能百战不殆,你得会攻击你才知道怎么去防守,常见的漏洞的特征是要记住的。
3、要有一个清晰的思维,得有策略,得知道哪些设备容易受到攻击,知道设备正常操作是什么样的,当你的防火墙,iot设备等主动连接到非业务ip的时候,那就得意识到这个是不正常的,当进行不正常业务的时候那就很可疑了,可以着重分析一下
4、要学会使用自动化工具去分析,流量很多你不可能挨个去看,这时候就去看一些研判告警,统计分析,想要深入学习原理就去分析他为什么会告警
5、要学会去利用情报,譬如一些恶意ip,域名,文件hash还有ja3指纹等等,但是情报库的内容可能时效性不高,但是如果有威胁情报还最好还是先看一波
这里推荐一个开源平台,上面可以做到分析恶意流量,还有示例数据包,可以根据示例去学习各种恶意流量,平台利用SUIRICATA检测引擎搭建,可以做威胁流量告警。
http://47.108.150.136:8080/IDS/
背景
现在有一个生产环境,流量设备部署于一个政务单位的出口处,它镜像接入了整个单位出口处全部的流量(比如核心交换机,可以配置所有通过此硬件的流量从一个网口导出,即镜像网口),这些导出的流量被某入侵检测流量分析产品捕获分析处理,并对统计和告警信息做展示,现在我们作为技术人员,来分析这些流量。
接下来要介绍一个模型ATT&CK模型
什么是ATT&CK模型
ATT&CK 模型是MITRE公司为了解决防守方面临的困境,基于现实中发生的真实攻击事件,创建了一个对抗战术和技术知识库,即Adversarial Tactics,Techniques,and Common Knowledge,简称ATT&CK。
这个模型其实就是用于描述组织间对抗、网络攻击的战术、技术和常见知识的模型的一个表,它是根据真实数据去创建的,是免费的公开的,全球化的,位红蓝队提供交流语言。
网址:https://attack.mitre.org/matrices/enterprise/
这张表主要是有三部分WHY,WHAT,HOW,横轴就是战术也就是WHY,核心研究攻击目标具体怎么做取决于纵轴HWAT,HOW也就是我们的技术以及子技术。在每一项技术和子技术里面存在步骤,具体分为里面哪一个组织用到过哪一个工具,他们是怎么在用这个工具的。
ATT&CK框架里面有五大对象:攻击组织,攻击,技术/子技术,战术,缓解措施
就先介绍这么多如果还需要详细的就看这位大佬的博客
https://blog.csdn.net/weixin_43965597/article/details/125926620
分析前需要的准备工作
确定本地资产
首先需要确定本地资产,知道自己要保护的资产是哪些,因为是在出口处捕获的流量,无非就是单位内部的设备与服务器对外通讯的数据包,得去搞清楚通讯双方的ip是什么。
一般分为三种情况
1、ABC三类私有地址IP 和 外部网络IP通讯。这说明捕获的镜像流量是在NAT地址转换之前的。
2、本地出口的公网IP 和 外部网络IP通讯。这说明捕获的镜像流量是在NAT地址转换之后的。
3、内网中的非私有地址IP 和外部网络IP通讯,首先这说明捕获的镜像流量是在NAT地址转换之前的,并且是单位中有公网地址私用的情况(这在一些超大国企尤其是运营商单位中很常见)。
确定边界设备
边界设备指的是可以被外界访问到的本地资产,像搭载邮件,OA系统等服务器,这些服务是会被反向代理到公网出口IP的端口以供外部访问,像FOFA等空间测绘等方式可以直接访问到的资产,在这些上面会存在非常多的扫描和漏洞探测。确定边界设备是因为要防止越权,如果边界设备受控,如果权限足够,没有做隔离,攻击者就可以在边界设备上做正向代理当作跳板,做内网横向渗透。
流量分析
在产品上可以进行过滤或者去看研判告警等信息去做分析,没有产品的话就是得去用wireshark。
信息搜集
TCP端口扫描
端口扫描原理就是tcp三次握手,攻击者会对不同的端口发送第一次握手的数据包(syn)
如果端口开放,那么目标ip会相应第二次握手的数据包[syn,ack],如下图
tcp握手就不讲了,看上一篇文章吧
漏洞扫描
漏扫工具集成大量POC譬如xray等,这些工具通常用于对边界设备开放的web服务进行使用比如OA,CMS,IOT设备或者其他组件像apachE,IISC,ngnix及进行漏洞扫描,特征其实很明显,有大量的基于HTTP协议的GET传参或者POST传参请求
在这里你可以看到诸如访问系统敏感文件路径等攻击,不过一般这样会在极短时间出现大量404,所以目录扫描监测也可能会出发告警,漏洞很多,不止web服务,像数据库漏洞协议漏洞等都会存在,只不过边界设备里面web服务很多。
要说怎么处置这些流量,你也不用细看,你就看哪个边界设备被扫描了,你去瞅瞅他的近年历史漏洞,照着wp你复现复现,复现成功的话那就可以直接上机取证检查吧因为这样说明被打烂了,不过想要快速识别的话可以去学学常见的漏洞,这样有助于更好地去分析流量做出判断。
载荷投递
暴力破解
无论是ssh、rdp、telnet、FTP、mysql或其他含登录凭据验证的服务,暴力破解会在极端的时间内有周期地去进行大量的登录尝试
首先要明确这些含登录业务的应用层协议,都会使用面向连接的、可靠的传输层协议TCP,并且正常登录的TCP会话时长通常比较长(比如ssh正常登录后,连接时间短则数分钟、长则几小时)。而密码校验失败(一次或多次,看策略配置)服务端就会主动断开TCP会话,客户端再次登录就会建立新的TCP链接。所以在暴力破解恶意行为流量中,开放登录服务的端口有大量的会话在极端的时间内建立(tcp握手)和结束(tcp挥手)。
有产品过滤的话很清晰,但是只是使用wireshark过滤的话,直接去找他爆破的端口并且syn=1就好,过滤条件tcp.flag.syn==1&&tcp.dstporrt=26(假设爆破的端口是23)当登录失败,数次密码校验失败,会话迅速结束。
telnet、ftp等明文通讯协议,你可以在登录阶段看到账号密码以及登录验证状态等。它们也可以作为更准确的暴力破解特征。
telnet
ftp
rdq
sql注入
不想多说,哪个正常用户会在各种框框里面去打sql语句遇见直接pass。就像sqlmap,在注入点尝试使用各种不同的恶意SQL语句去打漏洞。发生在http协议。
漏洞利用
这个就是很正常的,当边界设备暴露在公网下会收到很多扫描和漏洞攻击,数量大难以研判,所以还是看哪个被打了,测一下近段时间漏洞,通了代表大家都通了,赶紧取证去吧,不过还是那句话知己知彼百战百胜大家还是要去学习这个漏洞原理才能更好的分辨。
Apache Struts漏洞利用
植入驻留
广义来说webshell上传、shellcode下载都算是植入驻留。但是这一分类主要是为了不明确的缓冲区溢出类攻击尝试准备的分类,毕竟不是所有的溢出类漏洞都有具体的漏洞名字或编号。例如下列两个。
Heartbleed(心脏滴血)为OpenSSL库中的一个缓冲区溢出漏洞,允许攻击者读取服务器和客户端内存中的敏感信息,包括私钥。
EternalBlue(永恒之蓝)Windows操作系统的缓冲区溢出漏洞。
对这样协议、操作系统层面的漏洞。你需要特别熟悉相应协议及字段才能明白其原理。所以还是得学,学原理,也就那么多,这次遇见了下次遇到了就可以应付了。
远程控制
webshell的管理工具像蚁剑,菜刀啥的还有cobalt strike
webshell管理工具
http协议上并位post传参(get应用场景少)
url路径是对应的服务器脚本语言后缀(例如.php、.apx、.jsp等)文件。
明文在post主体上会有一个接收参数
不同类型的 Webshell 工具在明文通讯和密文通讯上有不同的特征。像蚁剑、菜刀这样的工具,其明文通讯特征通常体现在构造的 aa 参数中。而对于哥斯拉、冰蝎等使用密文通讯的工具,则可以通过分析字符组合、数据包的长度等特征来识别。此外,一些默认的 HTTP 头字段也能作为辅助判断的弱特征。网上已有很多相关的资料,所以不再详细探讨。
冰蝎3.X
冰蝎3.X
Content-Length 较大,构造的恶意参数密文较长。
Content-Length: 1560
冰蝎通讯默认使用长连接
Connection: Keep-Alive
在进行端口检测时,可以观察到冰蝎与 Webshell 建立连接时,javaw 进程也会与目标主机建立 TCP 连接。通常,这些连接使用的本地端口在 49700 附近,每次新的连接都会使端口号递增。因此,在其他条件相符的情况下,可以对这些特定范围内的端口触发告警。
当服务端使用 PHP 时,冰蝎默认采用 AES 加密算法。然而,由于默认使用的是 AES-128 算法,这会导致生成的密文长度总是 16 的整数倍。由于这一显著特征,冰蝎的作者在 2022 年 8 月 11 日发布的更新版本中添加了一个 magic 参数。这个参数通过在密文后添加一个随机长度的短尾巴,消除了之前的特征,使得密文不再具有固定的长度特征。
icmp隧道远控流量
ICMP 作为一种网络层协议消息,通常封装在 IP 数据包中,主要用于连通性检测(如 ping)。ICMP 协议本身并不具备会话的概念,仅包含请求(request)和应答(reply)数据包。然而,一些隧道工具利用 ICMP 协议进行通信,在其数据字段中填充载荷,从而实现远程控制的功能。下图展示了这种通信方式的流量特征。
通过 ping 进行连通性测试时,数据包的大小通常较小,且载荷通常填充为固定字符(如 abcd…)。在相同类型的操作系统中,这些数据包的长度是固定的。基于这些特征,可以区分正常的 ping 流量与隧道工具生成的异常流量。
系统破坏
我们常说的挖矿,蠕虫,僵尸网络什么的都属于系统破坏。
矿机与矿池之间的通信通常使用一些专用协议,例如 Stratum 协议。在挖掘门罗币时,最常用的算法是 Cryptonight,相关的公开挖矿程序包括 xmr-stak、xmrig 和 claymore 等。这些程序通常通过明文的 JSON-RPC 格式进行通信,具有明显的特征,容易识别。
挖矿算法标准通讯格式如下。
xmr-stak
request:
{"method":"login","params":{"login":"xxxxxxx","pass":"xxx","rigid":"","agent":"xxxxxx"},"id":1}
{"method":"submit","params":{"id":"xx","job_id":"xxxxxx","nonce":"xxxxx","result":"xxxxxx"},"id":1}
response:
{"method":"job","params":{"target":"xxxxx","job_id":"xxxxxx","blob":"xxxxxxx"}} xmrig
request:
{"id":x,"jsonrpc":"2.0","method":"login","params":{"login":"xxxxxx","pass":"x","agent":"xxxxx","algo":["xxx","xxx","xxx"]}}
{"id":x,"jsonrpc":"2.0","method":"submit","params":{"id":"xxxx","job_id":"xx","nonce":"xxxx","result":"xxxxxxx"}}
response:
{"params":{"blob":"xxxxxx","taget":"xxxx","job_id":"xxxxx"},"method":"xxx"} claymore
request:
{"method":"login","params":{"login":"xxxxxx","pass":"x","agent":"xxx"},"id":1}
{"method":"submit","params":{"id":"xxxx","job_id":"xxx","nonce":"xxxxx","result":"xxxxx"},"id":x}
response:
{"params":{"blob":"xxxxxx","target":"xxxx","job_id":"xxx"},"method":"xxx"}
特别感谢
https://xz.aliyun.com/t/13810?time__1311=GqmxnD0GKmq7qGNeeeqBKRxQqbqfrwSAbD#toc-9
https://blog.csdn.net/weixin_43965597/article/details/125926620