本文主要是介绍webshell检测第二篇——静态检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第二篇:静态检测,待完善中……若有误之处,望大佬们指出
静态检测常见的就是两种,分别为正则匹配、文件md5匹配
Ⅰ 正则表达式
其中正则匹配时最为常见的,需要有大量的正则匹配作为检测数据,这一过程可以作为第一个进行webshell检测。
下面是一个基础的正则表达式的检测方式
'''
Author: Mr.wpl
Date: 2024-05-26 09:51:08
Description: Webshell检测入手,通过以下方式实现webshell检测1. 静态分析:正则匹配 + 文件md5检测 + hash值块检测、语义检测、特征统计
'''
import re
import os
# 根据特征值进行判断一个文件是否是webshell
def is_webshell(file_path):# 定义一些常见的webshell特征__rule = ["@\\$\\_\\(\\$\\_", "\\$\\_=\"\"", "\\${'\\_'","@preg\\_replace\\((\")*\\/(\\S)*\\/e(\")*,\\$_POST\\[\\S*\\]", "base64\\_decode\\(\\$\\_","'e'\\.'v'\\.'a'\\.'l'", "\"e\"\\.\"v\"\\.\"a\"\\.\"l\"", "\"e\"\\.\"v\"\\.\"a\"\\.\"l\"","\\$(\\w)+\\(\"\\/(\\S)+\\/e", "\\(array\\)\\$_(POST|GET|REQUEST|COOKIE)", "\\$(\\w)+\\(\\${","@\\$\\_=", "\\$\\_=\\$\\_", "chr\\((\\d)+\\)\\.chr\\((\\d)+\\)", "phpjm\\.net", "cha88\\.cn","c99shell", "phpspy", "Scanners", "cmd\\.php", "str_rot13", "webshell", "EgY_SpIdEr","tools88\\.com", "SECFORCE", "eval\\(('|\")\\?>", "preg_replace\\(\"\\/\\.\\*\\/e\"","assert\\(('|\"|\\s*)\\$", "eval\\(gzinflate\\(", "gzinflate\\(base64_decode\\(","eval\\(base64_decode\\(", "eval\\(gzuncompress\\(", "ies\",gzuncompress\\(\\$","eval\\(gzdecode\\(", "eval\\(str_rot13\\(", "gzuncompress\\(base64_decode\\(","base64_decode\\(gzuncompress\\(", "eval\\(('|\"|\\s*)\\$_(POST|GET|REQUEST|COOKIE)","assert\\(('|\"|\\s*)\\$_(POST|GET|REQUEST|COOKIE)","require\\(('|\"|\\s*)\\$_(POST|GET|REQUEST|COOKIE)"try:with open(file_path, 'r') as file:content = file.read()except Exception as e:print(f"无法打开文件: {file_path}")return False# 检查每一个特征是否在文件内容中for pattern in __rule:if re.search(pattern, content):print(f"|---匹配到的规则:{pattern}")return Truereturn False# 测试
file_path = "/www/1212.php"
if is_webshell(file_path):print(f"{file_path} 可能是一个webshell.")
else:print(f"{file_path} 不是一个webshell.")
Ⅱ 文件md5检测【待完善】
这篇关于webshell检测第二篇——静态检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!