第168天:应急响应-ELK 日志分析系统&Yara规则&样本识别&特征提取&规则编写

目录

[案例一:ELK 搭建使用-导入文件&监控日志&语法筛选](#案例一:ELK 搭建使用-导入文件&监控日志&语法筛选)

[案例二:Yara 规则使用-规则检测&分析特征&自写规则](#案例二:Yara 规则使用-规则检测&分析特征&自写规则)


案例一:ELK 搭建使用-导入文件&监控日志&语法筛选

该软件是专业分析日志的工具,但是不支持安全软件的分析

这里我是在kali中搭建的

搭建参考文章:(第一篇成功,第二篇呢可能是国外的docker关闭了未成功)

ELK详细搭建流程_elk搭建-CSDN博客 (本地搭建)

5分钟快速安装ELK(一)(docker搭建)

安装完成的界面

三种模式

选择日志上传

上传文件

导入

命名并导入

上传完成以后去查看

可以根据不同类别去分类查看

IP

时间戳

ua头

这里看到呢ua头有个sqlmap直接定位

搜索特征字符不是单独出现,需要在前后加上*

还可以自动加入机器,自动化进行分析,可以自己研究一下,主要是了解日志平台的分析

案例二:Yara 规则使用-规则检测&分析特征&自写规则

项目地址

https://github.com/VirusTotal/yara
部分规则: https://github.com/Yara-Rules/rules

基本使用

检测挖矿病毒

yara需要借助规则去判断,规则直接下载好

复制代码
yara64.exe 规则 -r 可疑程序/或者文件夹

根据规则所以就得对大概木马类型做出判断

通过帮助文档查看

检测勒索病毒

检测cs木马,没检测到,这里是因为我的cs版本比较高,而项目规则比较老,导致匹配不到

自写Yara-cs规则

可以自己根据需求去写文件进行判断,需要提取特征,根据特征的共同性去判断。

写规则的话,根据两个不同的ip和端口绑定的cs马,通过010editer判断不同程序的共同特征

这里是我自己写的,没那么多规律可言,只是简单判断,正常的话根据文件头,关键字,协议,域名等等来进行编写

我准备了三个cs文件,1个是cs4.0 32位,还有两个cs4.5 32 位 64位

两个特征

第三个

第四个

编写规则

-Yara 规则内容支持字符串、正则表达式、十六进制进行匹配。
字符串:定义一个变量 a = " 字符串内容 " 正则表达式:定义一个变量 a = / 正则表达式内容 /
十六进制:定义一个变量 a = { 十六进制内容 } -Yara 规则条件 and :与 or :或 not :非 all of them :所有条件匹配即告警 any of them :有一个条件匹配即告警 a and b and c : abc 同时匹配即告警
(a and b) or $c :匹配 a 和 b 或 c 即告警

按照如下实例写出规则,同时匹配四个规则就报警

复制代码
rule csshell_check
{
	meta:
		author = "xiaojiesec"
		description = "test check"
		date = "2024-09"
	strings:
		$a = "MZ"
		$b = "_set_invalid_parameter_handler"
		$c = "KERNEL32.dll"
        $d = "msvcrt.dll"

		
	condition:
		all of them
}

把不同类型的木马放在一个文件夹下

统一进行检测,只有cs后门被检测了出来

自写Yara-挖矿规则

这里就规范一点从文件头,关键字,协议,域名四个角度切入

文件头

这里可以写成字符串的MA,也可以写成16进制的{4D 5A}

关键字

这里就根据文件命名,xmrig进行搜索,这里切换成text进行搜索,不然搜索不到

协议

搜索资料,挖矿病毒常见协议位stratum和xmr协议

搜索xmr也能找到,但是都是文件名在干扰,忽略

域名这里其实没有找到,但是有一个字符串pool,出现了很多次

检测

自写Yara-php内存马规则

这里我觉得内存马的编写确实有问题,一是没办法从多个样本分析,只有一个idea,或者phpstudy环境,而且感觉不能确定唯一性,只做简单了解即可

下面这篇文章介绍过使用php内存马

第146天:内网安全-Web权限维持&各语言内存马&Servlet-api类&Spring类&Agent类_第146天web权限维持-内存马-CSDN博客

这里介绍过查杀

第162天: 应急响应-网站入侵篡改指南&Webshell 内存马查杀&漏洞排查&时间分析_东方通webshell 日志-CSDN博客

要抓取内存马,首先需要把内存包给导出来,进行分析

通过pcdump,把这个进程给进行导出

使用命令

procdump.exe -accepteula -ma 进程名 文件名.dmp

procdump.exe -accepteula -ma phpstudy.exe php.dmp

首先常见的eval

因为这个php内存马是你删除就立刻上传文件,应该涉及到sleep,条件竞争,以及file文件上传,直接搜php函数搜索不到,其实我也不是很理解

就根据这三个函数进行尝试

复制代码
rule _checkphp
{
	meta:
		author = "xiaojiesec"
		description = "test check"
		date = "2024-09"
	strings:
		$a = "eval"
		$b = "file"
		$c = "sleep"
		
	condition:
		all of them
}

确定进程号

通过进程号检测

但是这里规则写的不好,检测别的进程号也能够检测到,主要是不理解为什么函数不出现

下面是ai写的也没用,根本搜索不到关键字,了解一下工具的使用,以及利用进程号分析

复制代码
rule PHP_Memory_Webshell_DynamicWrite {  
    meta:  
        description = "Detects PHP scripts that attempt to dynamically write webshell code to a file"  
        author = "Your Name"  
        version = "1.0"  
        date = "YYYY-MM-DD"  
    strings:  
        $ignore_user_abort = "ignore_user_abort(true);"  
        $set_time_limit = "set_time_limit(0);"  
        $unlink = "@unlink(__FILE__);"  
        $eval_code = "<?php @eval($_POST\['c'\]); ?>"  
        $file_put_contents = "file_put_contents"  
        $usleep = "usleep"  
    condition:  
        $ignore_user_abort and  
        $set_time_limit and  
        $unlink and  
        $file_put_contents and  
        $usleep and  
        # This is a heuristic to check for the eval code being written to a file  
        # Note: This is not foolproof, as the actual code written to the file might vary  
        # But it gives us a good indication of the intent  
        # We use a wildcard to match the variable assignment and loop structure  
        # which are likely to be present in such scripts  
        (  
            # Matching the file variable assignment  
            /\$file\s*=\s*['"].+['"];/ and  
            # Matching the code assignment  
            /\$code\s*=\s*['"].+<?php\s*@eval\(\$_POST\['c'\]\);\s*>.+['"];/ and  
            # Matching the while loop structure  
            /while\s*\(1\)\s*\{/  
        )  
}

自写Yara-java内存马规则

写在前面这里我发现小迪师傅讲的有一点点问题,我发现没上传内存马,用小迪的程序检测也能够检测出来,真尴尬啊,我也只是简单复现了一下

注入两个不同的内存马

把idea的内存包导出,这个过程会比较慢,因为java会创建虚拟机

先分析这个ico后缀的

发现他们两个有相同的前缀 org.apache.coyote 查的时候可能输入完整的查不到,可以只查一部分,就像java中类的概念一样

搜索

在分析特殊之处 TimeZoneSerializer

就根据这两条这一个判断gsl内存马

复制代码
rule java_chechk
{
	meta:
		author = "xiaojiesec"
		description = "test check"
		date = "2024-09"
	strings:
		$a = "org.apache.coyote"
		$b = "TimeZoneSerializer"
		
	condition:
		all of them
}

存在gsl内存马

判断别的没有

分析完这个分析一下刚才上传了一个lister 一个filter

org.apache.jasper

还有另外一个相同的类 org.apache.jsp

同时存在判断有内存马

复制代码
rule java_chechk
{
	meta:
		author = "xiaojiesec"
		description = "test check"
		date = "2024-09"
	strings:
		$a = "org.apache.coyote"
		$b = "TimeZoneSerializer"
		
	condition:
		all of them
}

判断结果

判断别的进程的结果

但是这个规则总觉得有很多问题,只是简单了解了一下

相关推荐
wha the fuck4041 小时前
攻防世界—unseping(反序列化)
安全·序列化和反序列化
David WangYang4 小时前
基于 IOT 的安全系统,带有使用 ESP8266 的语音消息
物联网·安全·语音识别
合作小小程序员小小店5 小时前
SDN安全开发环境中常见的框架,工具,第三方库,mininet常见指令介绍
python·安全·生成对抗网络·网络安全·网络攻击模型
数据智能老司机6 小时前
实现逆向工程——汇编指令演练
安全·逆向·汇编语言
网络研究院8 小时前
新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
网络·网络协议·安全·http·攻击·漏洞
guts°9 小时前
6-服务安全检测和防御技术
安全
sinat_2869451918 小时前
AI应用安全 - Prompt注入攻击
人工智能·安全·prompt
数据智能老司机1 天前
实现逆向工程——理解 x86 机器架构
安全·逆向
数据智能老司机1 天前
实现逆向工程——逆向工程的影响
安全·逆向
2301_780789661 天前
边缘节点 DDoS 防护:CDN 节点的流量清洗与就近拦截方案
安全·web安全·ddos