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

devtools/2024/12/22 14:59:40/

目录

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

案例二: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
}

判断结果

判断别的进程的结果

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


http://www.ppmy.cn/devtools/121277.html

相关文章

新闻推荐系统开发:Spring Boot核心技巧

3系统分析 3.1可行性分析 通过对本新闻推荐系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本新闻推荐系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

4S店4S店客户管理系统小程序(lw+演示+源码+运行)

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。手机具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要求的操作系统是非…

行为设计模式 -模板方法模式- JAVA

模板方法模式 一 .简介二. 案例2.1 抽象类&#xff08;Abstract Class&#xff09;2.2 具体子类&#xff08;Concrete Class&#xff09;2.3 测试 三. 结论3.1 优缺点3.2 适用场景3.3 要点 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接…

YOLO11改进 | 卷积模块 | 减少冗余计算和内存访问的PConv【CVPR2023】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一个新的部分卷积&#xff0…

技术成神之路:设计模式(十六)代理模式

介绍 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构性设计模式&#xff0c;它通过代理对象来控制对另一个对象的访问。代理对象在功能上与真实对象相似&#xff0c;但可以在访问真实对象前后添加一些额外的处理。代理模式常用于控制对某个对象的访问、延迟实例化、…

Solidity 设计模式:实现灵活与可扩展的智能合约架构

Solidity 作为以太坊智能合约的主要编程语言&#xff0c;拥有许多独特的设计模式&#xff0c;这些模式帮助开发者实现更加灵活、可扩展和安全的合约架构。设计模式不仅能够简化开发过程&#xff0c;还能减少常见的编程错误&#xff0c;并提高智能合约的可维护性和可升级性。本文…

计算机毕业设计 农场投入品运营管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; func findDisappearedNumbers(nums []int) (ans []int) {n : len(nums)for _, v : range nums {v (v - 1) % nnums[v] n}for i, v : range nums {if v < n {ans append(ans, i1)}}return }