ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

效率提升1000%!基于本地部署 DeepSeek 模型的 WebShell 智能检测引擎实战

效率提升1000%!基于本地部署 DeepSeek 模型的 WebShell 智能检测引擎实战 开篇传统正则查杀 WebShell正在逐渐失效在过去的 Web 安全检测中发现 WebShell 最常见的方法是什么答案正则匹配。例如eval($_POST[cmd]); assert($_REQUEST[x]); system($_GET[cmd]);安全人员会建立规则库eval base64_decode shell_exec preg_replace /e create_function然后扫描源码。匹配关键词。发现疑似木马。这种方式简单、高效在早期 WebShell 检测中发挥了巨大作用。但是随着攻击技术不断变化传统规则检测已经越来越难满足企业安全需求。一、传统 WebShell 检测的三个核心痛点1. 攻击者开始绕过关键词检测例如原始代码eval($_POST[cmd]);经过混淆$aev; $bal; $c$a.$b; $c($_POST[x]);从语义上依然是执行代码。但是简单正则无法识别。2. 正常业务代码存在大量危险函数例如CMSsystem(); exec(); file_get_contents(); include();这些函数本身并不是漏洞。关键在上下文。例如正常system(service nginx restart);恶意system($_GET[cmd]);区别不是关键词。而是代码意图。3. 新型 WebShell 使用无文件攻击和动态加载攻击者可能动态生成代码变量拼接编码隐藏利用框架特性。传统检测只能回答有没有危险字符串但是企业真正需要这段代码是不是具备攻击意图这正是大模型擅长的领域。二、为什么选择本地 DeepSeek 模型做代码审计很多企业尝试过直接调用公网 AI API。但是安全团队马上会遇到问题1. 代码隐私问题企业源码包含业务逻辑数据库结构API接口内部算法配置文件。直接上传风险非常高。2. 合规问题很多企业禁止源码离开内部网络。例如金融源码禁止外发政企数据必须本地处理所以更合理方案企业源码 ↓ 内部服务器 ↓ Docker部署DeepSeek ↓ AI代码审计数据始终留在企业内部。三、整体架构设计一个本地 AI WebShell 检测系统架构如下PHP/JSP源码 | ↓ Python扫描引擎 | ↓ 代码切片处理 | ↓ DeepSeek本地模型 | ↓ AI安全分析 | ↓ 风险报告输出核心组件Docker DeepSeek Python 代码解析器 Prompt工程四、Docker 部署本地 DeepSeek 模型这里使用Ollama DeepSeek作为本地模型运行环境。架构Python ↓ Ollama API ↓ DeepSeek Model1. 安装 DockerUbuntuapt update apt install docker.io docker-compose -y检查docker version五、部署 Ollama 服务创建docker-compose.yml内容version: 3 services: ollama: image: ollama/ollama container_name: security-ai ports: - 11434:11434 volumes: - ./ollama:/root/.ollama restart: always启动docker compose up -d查看docker ps六、下载 DeepSeek 模型进入容器docker exec -it security-ai bash拉取模型ollama pull deepseek-coder测试ollama run deepseek-coder如果返回说明部署成功。七、为什么选择代码模型普通大模型擅长聊天 总结 写文章代码模型针对代码结构 函数关系 漏洞模式 逻辑分析进行了优化。WebShell检测属于代码安全分析。所以优先选择DeepSeek-Coder Qwen-Coder CodeLlama八、源码进入 AI 之前需要进行预处理不要直接整个项目 ↓ 发送模型原因第一Token 爆炸。第二模型无法聚焦。正确方式源码 ↓ 文件扫描 ↓ 代码切片 ↓ 重点函数提取 ↓ AI分析九、Python 批量读取 PHP/JSP 源码例如项目website/ ├── index.php ├── upload.php ├── admin.jsp读取import os def scan_code(path): files[] for root,dirs,names in os.walk(path): for name in names: if name.endswith( ( .php, .jsp ) ): files.append( os.path.join( root, name ) ) return files files scan_code( ./website ) for f in files: print(f)输出./website/index.php ./website/upload.php ./website/admin.jsp十、代码切片处理大文件不能一次发送。需要切割。例如def split_code( content, size3000 ): chunks[] for i in range( 0, len(content), size ): chunks.append( content[i:isize] ) return chunks例如10000行 PHP拆成Chunk1 Chunk2 Chunk3分别检测。十一、核心 Prompt 设计很多人使用 AI 审计失败。原因Prompt 太简单。错误帮我看看有没有漏洞。模型输出代码可能存在问题。没有价值。安全审计 Prompt你是一名高级Web安全代码审计专家。 任务 分析下面PHP/JSP代码。 目标 判断是否存在WebShell、 后门代码、 命令执行风险、 动态代码执行行为。 重点关注 1. 危险函数调用 2. 用户输入是否可控 3. 编码混淆 4. 动态执行 5. 文件上传风险 输出JSON { risk:, level:, reason:, evidence:, suggestion: }十二、Prompt 调优技巧技巧1限定角色不要你是AI。改成你是拥有10年经验的Web安全研究员。技巧2要求结构化输出不要分析一下。要求JSON。例如{ risk:high, type: webshell, line:30 }方便程序处理。技巧3增加安全上下文告诉模型关注PHP JSP Java 反序列化 命令执行 文件包含效果更好。十三、Python 调用本地 DeepSeek APIOllama 默认11434端口代码import requests def ask_ai(code): promptf 你是安全代码审计专家。 分析 {code} 输出风险等级。 responserequests.post( http://127.0.0.1:11434/api/generate, json{ model: deepseek-coder, prompt: prompt, stream: False } ) return response.json()[response]十四、完整检测流程代码简化版import os import requests MODEL_URL ( http://127.0.0.1:11434/api/generate ) def read_file(path): with open( path, r, encodingutf-8, errorsignore ) as f: return f.read() def analyze(code): promptf 你是Web安全专家。 检测以下源码 {code} 判断 1. 是否存在WebShell 2. 是否存在恶意后门 3. 风险等级 输出JSON。 rrequests.post( MODEL_URL, json{ model: deepseek-coder, prompt: prompt, stream: False } ) return r.json() def scan_project(path): for root,dirs,files in os.walk(path): for file in files: if file.endswith( ( .php, .jsp ) ): filepathos.path.join( root, file ) coderead_file( filepath ) resultanalyze( code ) print( filepath ) print( result ) scan_project( ./target )十五、企业级优化方向真正生产环境不会只靠一个模型。通常第一层规则检测YARA 正则 AST分析快速过滤。第二层AI语义分析DeepSeek Qwen判断代码意图。第三层人工确认。形成规则 AI 人工三层体系。十六、AI WebShell 检测未来趋势未来代码审计不会只是grep危险函数而会变成源码 ↓ 语义理解 ↓ 行为分析 ↓ 攻击意图判断 ↓ 风险评分AI 的价值不是替代安全人员。而是帮助安全工程师快速阅读百万行代码。总结传统 WebShell 检测最大的问题不是没有规则。而是攻击者已经开始绕过规则。未来企业安全代码审计需要本地大模型 代码理解 Prompt工程 自动化扫描通过 Docker 部署 DeepSeek将 AI 能力部署到企业内部可以在保护源码隐私的同时大幅提升代码审计效率。真正成熟的 AI 安全审计平台不是简单调用 API。而是构建属于企业自己的安全智能分析能力。如果在 Docker 部署拉取镜像时遇到网络报错或者需要完整的检测脚本请看主页简介自动获取。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进