下面是我结合网上论坛以及个人的一些想法针对日志分析溯源的个人理解
现阶段大部分企业都会上日志审计设备,在配上流量分光,还有各类IDS、WAF等设备日志,对安全溯源分析十分方便,但在日常工作中,免不了要直接看服务器相关请求日志的情况,这个时候就需要我们自身具备日志分析的能力了。
一、日志分析流程
1、统计
首先需要对数据进行处理,如请求IP统计,访问地址统计,HTTP状态码统计等,这些数据统计可以使用excel或者python脚本,如果手头有各类工具那就更容易统计了。
2、威胁发现
关键字过滤:
直接查找在请求中携带的关键字,如script、select、from、echo、bash、.sh等
查看异常请求:
4XX请求、5XX请求
行为分析:
由于日志大概率不会记录post请求体,所以在post请求包体中的攻击往往很难发现,这个时候就需要我们对特定的IP进行行为查看,如查询IP的威胁情报,某个IP登录了多个账号等等
3、报告撰写
在报告中我们重点要体现某个IP或者某些IP的攻击画像,确定这些IP的攻击行为,以便最终确定是否来着同一拨攻击,还是互联网上的肉鸡日常扫描。
ps excel中的数据透视表功能是真的香,谁用谁知道。
二、在日志中看到的行为分析
1、恶意IP请求带有多个身份操作
可以看到上述日志中,某IP对登录了邮件并进行了相关操作,可以看到其登录了不同的账户,那么这个时候怎么判断其是正常的请求还是恶意请求呢?
(1)、威胁情报,查找请求IP相关的威胁情报信息,如果是恶意IP那么大概率就有可能是恶意访问了
(2)、观察请求中的UA标识,如果UA标识一样,那么是恶意访问的概率就又增加了
(3)、观察这个IP前的一些请求行为,你就可能发现来着不同IP的登录请求,恶意攻击前的撞库攻击,这时基本就可以坐实了
(4)、联系相关人员看该IP是否归属自己(太麻烦,一般不会用),可以在二次确认时使用。
2、非正常请求
正常业务逻辑不会发送的请求,这些可以通过关键词快速查找过滤
3、扫描行为
通过过滤404请求和GET等,可以发现某些IP的目录扫描探测行为,同时在通过IP去过滤状态码是200的请求,可以发现一些安全隐患。
4、重要接口
可以根据自己的业务类型,对一些敏感接口地址进行查找,观察其访问行为。
5、扫描器特征请求
wvs、acunetix、test、appscan、nessus、webreaver、sqlmap、bxss.me等
bess.me是awvs其中一个XSS扫描插件的地址。部分扫描器带有固定的特征值,需要平时积累发现。
6、关键词查找
select、sleep、echo、bash、down、passwd等
使用这些敏感的关键字也能迅速定位攻击请求,上图就是使用sqlmap跑注入所产生的日志。
7、一些特征性的请求
sqlmap的WAF探测请求
8、同源分析(对于个人能力要求比较高)
恶意代码分析是检测和防范恶意代码的重要基础。在反病毒领域的实际应用中,除了分析恶意代码的各种外部表现,还关心恶意代码在同源演化方面的内在特性,包括恶意代码从何而来、如何发展变化以及相互之间的关系等。
目前仅有少量专门针对恶意代码同源与演化分析技术的研究。
对恶意程序进行反汇编之后,从命令序列、字符串序列提取出一段特征码作为特征,提取筛选出相同的特征码,挑选一些加密算法代码作为特征码,可以使用Bindiff来比较已有样本相似的代码片段,找到相似度较高且不是系统API的函数。
优先选取Blocks数较多、匹配指令数较多的函数,降低误报的几率,分析时。除此之外,也可以使用一些自动化提取yara规则的工具可以使用,
比如yargen:https://github.com/Neo23x0/yarGen。
提取出来的恶意程序的特征码,可以在VT上进行关联,来追踪相似攻击组件。
Virustotal的使用
VirusTotal,是一个提供免费的可疑文件分析服务的网站,可以通过多种反病毒引擎扫描文件使用多种反病毒引擎对您所上传的文件进行检测,以判断文件是否被病毒,蠕虫,木马,以及各类恶意软件感染。
VirusTotal每15分钟更新一次病毒资料库,可以实时提供最新的反病毒引擎以检测出大部分可能的威胁。
同时可以筛选出相同的特征码片段样本,在搜索框搜索之后可以对比往期相关样本本的活跃,打开详细信息可以查看是什么组织开发并使用的攻击组件,通过这种方式可以关联出该组织所使用的攻击组件。
最后将yara规则添加到hunting中,一旦virustotal捕获到新的样本符合这条规则,就会立刻通知我们。
三、对于挖矿病毒我想说的几个点
针对于我们大批量服务器的日志分析工作,可能会碰到比较多的挖矿病毒,现在的挖矿病毒种类多,加载方式多,这里简单总结几个点
1、挖矿病毒是怎么进入到服务器的
大多数挖矿病毒进入到服务器都是不是特意针对性的,一般都是利用现成的攻击包程序,对网络上所有的IP地址进行扫描攻击,然后在目标机器执行自己构造好的攻击载荷,就可达到快速传播木马的目的,由于挖矿木马的特点是利用快速控制大量肉鸡组建挖矿网络进行计算,而不需要选取特定的目标,所以大多数的挖矿病毒都是批量进行的,通过一些常用的web漏洞,系统漏洞,弱口令,还有一些比较少见的0day,Nday,以及文件捆绑,下载器等等。
2、挖矿病毒的特征
一般服务器感染到挖矿病毒后,服务器会超负荷运转,主要表现在CPU的使用率上。挖矿病毒执行后需要连接挖矿池,这里肯定是有外连的。挖矿病毒在运行时,因占用大量系统资源,造成系统卡顿后容易被察觉,所以会使用伪装成系统文件、无文件持久化等技术保护自身。
挖矿病毒的套路特征参考文章:
https://zhuanlan.zhihu.com/p/164557943
3、针对无文件落地的powershell马
之前碰到过一些没有文件落地,通过在Powershell中嵌入PE文件加载的形式,达到执行“无文件”形式挖矿攻击。挖矿木马执行方式没有文件落地,直接在Powershell.exe进程中运行,这种注入“白进程”执行的方式可能造成难以检测和清除恶意代码。在感染机器上安装计划任务,通过计划任务启动Powershell攻击模块(无文件落地),Powershell攻击模块包含利用 “永恒之蓝”漏洞攻击、弱口令爆破+WMIC、 Pass the hash攻击代码。在攻陷的机器上执行Payload安装计划任务,上传文件到启动目录,相应的Payload执行后继续进行下一轮感染。
在windows下查看某个运行程序(或进程)的命令行参数
使用下面的命令:
wmic process get caption,commandline /value
如果想查询某一个进程的命令行参数,使用下列方式:
wmic process where caption=”xxx.exe” get caption,commandline /value
这样就可以得到进程的可执行文件位置等信息。
这样可以查看powershell的运行命令
下面这个是我之前碰到的一个powershell挖矿马
https://blog.csdn.net/weixin_44578334/article/details/107438038
四、写报告时注意的点
1、不一定恶意IP的请求就是攻击行为
2、相同的payload在不同的IP请求,可以将其划分同一人
3、部分IP的请求量较低,但存在恶意行为,可能为真实IP(具体可从漏扫成功的地方去跟踪)
4、日志中并无同一地理位置的两个IP同一一个时间区间出现,大概率是可以说是同一人所为
5、查询大量IP,发现威胁情报大多是撞库攻击。这些地址可能不是来自攻击团队,而是来自互联网上的扫描
6丶有些挖矿病毒的程序里面不会直接连接,而是通过加载器的方式加载一串加密代码来连接挖矿池,不要因为查杀不到病毒就判断服务器是安全的。
五、总结
我了解的日志流量分析溯源是比较有规章顺序的一套流程,从取证到溯源,但是针对于目前我们流量日志分析的方式,我感觉还是有很多局限性的,有很多的特征以及排查都是需要登录到服务器才能更有效快速的解决发现问题,这个也是出于客户环境的原因,对于流量分析溯源人员的权限问题也是对溯源工作的。
作者:Azjj98
来源:https://blog.csdn.net/weixin_44578334
欢迎各位关注作者博客。
扫描关注乌雲安全
觉得不错点个“赞”、“在看”哦