基于deepseek的安全分析工具设计实践

5d5cf9a4e4a53417522402c6f7e281a4.gif

新钛云服已累计为您分享831篇技术干货

11a6c51146b2328dd00e9c1a9b9d1272.gif

7486f6b537f1ac074e7a4b1a0ebae3f0.png

01

分享背景

DeepSeek近日红的发紫,春节前发现一个叫Deepseek的LLM送 10 RMB的Token!!!,正巧符合生产工作中拥抱大模型的主旋律,又本着有羊毛必薅的原则配合B站ollama本地部署喂饭视频起了阿里qwen2.5(1.5b)就行Coding辅助。

ollama本地部署Coding模型

step1:下载对应的版本https://ollama.com/download,无限next安装ollama


step2:如果单纯coding无其他需求可本地起一个qwen2.5,集成到vscode。复制粘贴cmd拉即可


step3:在Vscode中下载continue,配置config.json如下图所示。对应ollama list中的name即可


本地格式如下:
{
      "title": "Qwen2.5 1.5b",
      "model": "qwen2.5-coder:1.5b",
      "provider": "ollama"
    }
调用api格式:
{
      "title": "DeepSeek Chat",
      "model": "deepseek-chat",
      "contextLength": 128000,
      "apiKey": "",
      "provider": "deepseek"
    }

step2:

step3:

效果:

02

工具需求分析

  • GUI化,免去命令行操作,12-80年龄段各类人群均适用。

  • 固定的LLM回复结果,使每一次提问都能得到相同格式的回答(区分在线提问和工具脚本的关键)。

  • 结合LLM特点及DeepSeek(以下简称DP)免微调的强化学习优势,规避了非专业安全工程师对流量分析、恶意shell分析不清的弱点。

  • 可拓展性,后续可丰富功能模块。

  • 结合Ollama本地部署特点,在内网/无网络服务情况下也可实现工具的功能点。

03

工具设计与实现

3.1

框架设计

首先通过对DP提问获得主流Python的GUI库,在DP回复中选择了PyQt5库(其拥有跨平台特性,方便适配mac、windows系统的ui差异)。

#此处提出的问题为:
“请使用PyQt5为我设计一个GUI脚本,包含四个模块为流量分析、JS审计、进程分析、webshell检测。”

给出的frame.py源码如下,运行后符合预期效果。

import sys
import os
import requests
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
                             QTextEdit, QPushButton, QLabel, QHBoxLayout,
                             QSplitter, QScrollArea, QTabWidget, QLineEdit, QFrame, QCheckBox, QSizePolicy, QComboBox, QFileDialog, QProgressBar)
from PyQt5.QtCore import Qt, QSize, QThread, pyqtSignal
from PyQt5.QtGui import QFont, QColor, QPalette, QLinearGradient


class CyberSecurityApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()


    def init_ui(self):
        self.setWindowTitle('网络安全分析工具')
        self.setGeometry(300, 300, 1200, 800)
        self.setMinimumSize(QSize(1200, 800))


        main_widget = QWidget()
        self.setCentralWidget(main_widget)


        # 创建主布局
        main_layout = QVBoxLayout(main_widget)


        # 添加标签页组件
        self.tab_widget = QTabWidget()
        main_layout.addWidget(self.tab_widget)


        # 创建各个模块的标签页
        self.create_traffic_analysis_tab()
        self.create_js_audit_tab()
        self.create_process_analysis_tab()
        self.create_webshell_tab()


    def create_traffic_analysis_tab(self):
        tab = QWidget()
        layout = QVBoxLayout(tab)


        layout.addWidget(QLabel("流量分析", font=QFont("Arial", 20, QFont.Bold)))


        # 输入框
        self.traffic_input = QTextEdit()
        self.traffic_input.setPlaceholderText("粘贴HTTP请求数据...")
        layout.addWidget(self.traffic_input)


        # 分析按钮
        self.analyze_btn = QPushButton("开始分析")
        self.analyze_btn.clicked.connect(self.start_traffic_analysis)
        layout.addWidget(self.analyze_btn)


        # 结果显示
        self.traffic_result = QTextEdit()
        self.traffic_result.setReadOnly(True)
        layout.addWidget(self.traffic_result)


        self.tab_widget.addTab(tab, "流量分析")


    def create_js_audit_tab(self):
        tab = QWidget()
        layout = QVBoxLayout(tab)


        layout.addWidget(QLabel("JS 审计", font=QFont("Arial", 20, QFont.Bold)))


        # 输入框
        self.js_input = QTextEdit()
        self.js_input.setPlaceholderText("粘贴JavaScript代码...")
        layout.addWidget(self.js_input)


        # 审计按钮
        self.audit_btn = QPushButton("开始审计")
        self.audit_btn.clicked.connect(self.start_js_audit)
        layout.addWidget(self.audit_btn)


        # 结果显示
        self.js_result = QTextEdit()
        self.js_result.setReadOnly(True)
        layout.addWidget(self.js_result)


        self.tab_widget.addTab(tab, "JS 审计")


    def create_process_analysis_tab(self):
        tab = QWidget()
        layout = QVBoxLayout(tab)


        layout.addWidget(QLabel("进程分析", font=QFont("Arial", 20, QFont.Bold)))


        # 输入框
        self.process_input = QTextEdit()
        self.process_input.setPlaceholderText("粘贴进程信息...")
        layout.addWidget(self.process_input)


        # 分析按钮
        self.process_btn = QPushButton("开始分析")
        self.process_btn.clicked.connect(self.start_process_analysis)
        layout.addWidget(self.process_btn)


        # 结果显示
        self.process_result = QTextEdit()
        self.process_result.setReadOnly(True)
        layout.addWidget(self.process_result)


        self.tab_widget.addTab(tab, "进程分析")


    def create_webshell_tab(self):
        tab = QWidget()
        layout = QVBoxLayout(tab)


        layout.addWidget(QLabel("WebShell 检测", font=QFont("Arial", 20, QFont.Bold)))


        # 输入框
        self.webshell_input = QTextEdit()
        self.webshell_input.setPlaceholderText("粘贴文件内容...")
        layout.addWidget(self.webshell_input)


        # 检测按钮
        self.webshell_btn = QPushButton("开始检测")
        self.webshell_btn.clicked.connect(self.start_webshell_detection)
        layout.addWidget(self.webshell_btn)


        # 结果显示
        self.webshell_result = QTextEdit()
        self.webshell_result.setReadOnly(True)
        layout.addWidget(self.webshell_result)


        self.tab_widget.addTab(tab, "WebShell 检测")


    def start_traffic_analysis(self):
        # 这里可以添加流量分析的逻辑
        self.traffic_result.setText("流量分析结果将显示在这里...")


    def start_js_audit(self):
        # 这里可以添加 JS 审计的逻辑
        self.js_result.setText("JS 审计结果将显示在这里...")


    def start_process_analysis(self):
        # 这里可以添加进程分析的逻辑
        self.process_result.setText("进程分析结果将显示在这里...")


    def start_webshell_detection(self):
        # 这里可以添加 WebShell 检测的逻辑
        self.webshell_result.setText("WebShell 检测结果将显示在这里...")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = CyberSecurityApp()
    window.show()
    sys.exit(app.exec_())

3.2

模块功能设计

设计满足需求分析中的固定回复结果。

通过反复提问,固定向DP的提问方式。仅需在文本框中添加文本内容即可。

3.2.1、webshell检测模块的设计

class WebShellAnalysisThread(QThread):
    analysis_complete = pyqtSignal(str, bool)


    def __init__(self, file_content, parent=None):
        super().__init__(parent)
        self.file_content = file_content
        self.api = APIAdapter()


    def run(self):
        try:
            prompt = f"""请站在网络安全专家角度分析以下文件内容是否为WebShell或内存马。要求:
1. 检查PHP/JSP/ASP等WebShell特征(如加密函数、执行系统命令、文件操作)
2. 识别内存马特征(如无文件落地、进程注入、异常网络连接)
3. 分析代码中的可疑功能(如命令执行、文件上传、信息收集)
4. 检查混淆编码、加密手段等规避技术
5. 最终结论:是否为恶意软件(是/否)


请用中文按以下格式回答:
【分析结果】是/否
【恶意类型】WebShell/内存马/其他
【通信特征】列出检测到的技术指标
【风险等级】高/中/低


文件内容:
{self.file_content}"""


            result = self.api.chat_completion(prompt)
            is_malicious = "【分析结果】是" in result
            self.analysis_complete.emit(result, is_malicious)


        except Exception as e:
            self.analysis_complete.emit(f"错误发生: {str(e)}", False)

3.2.2、进程分析模块

class ProcessAnalysisThread(QThread):
    process_complete = pyqtSignal(str)


    def __init__(self, process_data, parent=None):
        super().__init__(parent)
        self.process_data = process_data
        self.api = APIAdapter()


    def run(self):
        try:
            prompt = f"""你是一个Windows/Linux进程分析工程师,要求:
1. 用户将输出tasklist或者ps aux的结果
2. 帮助用户分析输出你所有认识的进程信息
3. 识别可能的恶意进程
4. 识别杀毒软件进程
5. 识别其他软件进程


tasklist或者ps aux的结果:{self.process_data}


按优先级列出需要关注的进程
【可疑进程】
【杀软进程】
【第三方软件进程】
给出具体操作建议:
• 安全进程的可终止性评估
"""


            result = self.api.chat_completion(prompt)
            self.process_complete.emit(result)


        except Exception as e:
            self.process_complete.emit(f"进程分析错误: {str(e)}")

3.2.3、编解码模块

class DecodingThread(QThread):
    decoding_complete = pyqtSignal(str)


    def __init__(self, encoded_str, parent=None):
        super().__init__(parent)
        self.encoded_str = encoded_str
        self.api = APIAdapter()


    def run(self):
        try:
            prompt = f"""请站在网络安全专家角度完整分析并解码以下字符串,要求:
1. 识别所有可能的编码方式(包括嵌套编码)
2. 通过自己重新编码,确认自己解码正确
3. 展示完整的解码过程
4. 输出最终解码结果


原始字符串:{self.encoded_str}


请用中文按以下格式响应:
【编码分析】列出检测到的编码类型及层级
【解码过程】逐步展示解码步骤
【最终结果】解码后的明文内容"""


            result = self.api.chat_completion(prompt)
            self.decoding_complete.emit(result)


        except Exception as e:
            self.decoding_complete.emit(f"解码错误: {str(e)}")

3.2.4、JS代码审计模块

class JsAuditThread(QThread):
    audit_complete = pyqtSignal(str)


    def __init__(self, js_code, parent=None):
        super().__init__(parent)
        self.js_code = js_code
        self.api = APIAdapter()


    def run(self):
        try:
            prompt = f"""请站在网络安全专家角度对以下JavaScript代码进行完整的安全审计,要求:
1. 识别XSS、CSRF、不安全的DOM操作、敏感信息泄露、eval、assert使用等安全问题
2. 检查第三方库的安全性和版本漏洞
3. 分析代码逻辑漏洞
4. 提供修复建议


请用中文按以下格式响应:
【高危漏洞】列出高危安全问题及位置
【中低危问题】列出中低风险问题
【修复建议】提供具体修复方案


JavaScript代码:
{self.js_code}"""


            result = self.api.chat_completion(prompt)
            self.audit_complete.emit(result)


        except Exception as e:
            self.audit_complete.emit(f"审计错误: {str(e)}")

3.2.5、HTTP流量分析

class AnalysisThread(QThread):
    analysis_complete = pyqtSignal(str, bool)


    def __init__(self, http_data, parent=None):
        super().__init__(parent)
        self.http_data = http_data
        self.api = APIAdapter()


    def run(self):
        try:
            prompt = f"""站在网络安全专家角度进行网络安全分析。请严格按照以下步骤执行:
1. 分析以下HTTP请求的各个组成部分
2. 检查User-Agent等头部信息是否可疑
3. 识别是否存在SQL注入、XSS、CSRF、反序列化、文件上传、路径遍历、OWASPTop10、等常见攻击特征
4. 最终结论:是否为攻击流量(是/否)


请用中文按以下格式响应:
【分析结果】是/否
【依据】简明扼要列出技术依据


HTTP请求数据:
{self.http_data}"""


            result = self.api.chat_completion(prompt)
            is_attack = "【分析结果】是" in result
            self.analysis_complete.emit(result, is_attack)


        except Exception as e:
            self.analysis_complete.emit(f"错误: {str(e)}", False)

3.3

config文件配置

# API配置(可选值: "deepseek" 或 "ollama")
API_TYPE="deepseek"  


# DeepSeek API:
DEEPSEEK_API_URL="https://api.deepseek.com/v1/chat/completions"
DEEPSEEK_API_KEY="   "


# DeepSeek模型名称
#通过指定 model='deepseek-chat' 即可调用 DeepSeek-V3。指定 model='deepseek-reasoner',即可调用 DeepSeek-R1。


DEEPSEEK_MODEL="deepseek-chat"


# Ollama 本地API配置
OLLAMA_API_URL="http://localhost:11434/api/chat"  # Ollama API地址
OLLAMA_MODEL="qwen2.5-coder:1.5b"  # Ollama模型名称

04

总 结

本文详细介绍了基于DeepSeek的安全分析工具的设计与实践过程。通过结合DeepSeek的强化学习能力和Ollama的本地部署优势,设计并实现了一个功能丰富的安全分析工具。该工具不仅具备流量分析、JS审计、进程分析、WebShell检测等核心功能,还通过GUI化设计提升了用户体验,使得不同年龄段和技术背景的用户都能轻松上手。此外,工具的可拓展性和离线使用能力进一步增强了其实用性。

在实现过程中,通过反复提问和优化,确保了DeepSeek的回复结果具有固定格式,提升了工具的稳定性和可靠性。未来,随着功能的不断丰富和优化,该工具有望在网络安全领域发挥更大的作用,帮助更多非专业安全工程师快速识别和分析潜在的安全威胁。 

总的来说,本文的实践展示了如何利用大模型和本地部署技术,构建一个高效、易用的安全分析工具,为网络安全领域提供了新的思路和解决方案。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    推荐阅读   

图片

图片

    推荐视频    

内容: 这个合成医疗保健数据集的创建是为了作为数据科学、机器学习和数据分析爱好者的宝贵资源。 灵感: 医疗保健数据通常很敏感,并受隐私法规的约束,因此难以访问以进行学习和实验。为了解决这一差距,我利用 Python 的 Faker 库生成了一个数据集,该数据集反映了医疗保健记录中常见的结构和属性。通过提供这些合成数据,我希望促进医疗保健分析领域的创新、学习和知识共享。 表格信息: 每列都提供有关患者、其入院情况和提供的医疗保健服务的特定信息,使此数据集适用于医疗保健领域的各种数据分析和建模任务。以下是数据集中每一列的简要说明 - 名字:此列表示与医疗保健记录关联的患者的姓名。 年龄:患者入院时的年龄,以年表示。 性:指示患者的性别,“男性”或“女性”。 血型:患者的血型,可以是常见的血型之一(例如,“A+”、“O-”等)。 医疗状况:此列指定了与患者相关的主要医疗状况或诊断,例如“糖尿病”、“高血压”、“哮喘”等。 入学日期:患者入住医疗机构的日期。 医生:在患者入院期间负责护理的医生的姓名。 医院:标识患者收治的医疗机构或医院。 保险提供商:此列指示患者的保险提供商,可以是多个选项之一,包括“Aetna”、“Blue Cross”、“Cigna”、“UnitedHealthcare”和“Medicare”。 账单金额:患者在入院期间为他们的医疗保健服务开具的账单金额。这表示为浮点数。 房间号:患者入院期间入住的房间号。 入场类型:指定入院类型,可以是“紧急”、“选择性”或“紧急”,以反映入院的情况。 出院日期:患者从医疗机构出院的日期,基于入院日期和实际范围内的随机天数。 药物:确定患者在入院期间开具或服用的药物。例子包括“阿司匹林”、“布洛芬”、“青霉素”、“扑热息痛”和“立普妥”。
### 使用 DeepSeek 创建自定义工作流 #### 集成 DeepSeek 到现有工作流程中 为了将 DeepSeek 整合到现有的工作环境中,可以采用 Cursor 平台中的配置方法。通过特定的设置步骤,在 Cursor 中添加并部署定制化的 `deepseek-chat` 模型(现已更新至版本 v3)。此过程涉及几个关键环节: 1. **准备环境** 安装必要的依赖项以及确保具备适当权限执行后续操作。 2. **获取模型** 使用 Ollama 工具从远程仓库拉取最新的嵌入式文本处理模型 `nomic-embed-text:latest`[^3]: ```bash ollama pull nomic-embed-text ``` 3. **配置参数** 设置索引参数和检索规则,优化查询效率及准确性。建议选用官方推荐的最佳实践方案来进行初始化配置。 4. **启动服务** 启动基于 DeepSeek 的聊天机器人实例或其他形式的应用程序接口(API),以便能够接收外部请求并与用户交互。 5. **测试验证** 对新搭建的工作流进行全面的功能性和性能方面的检测,确认一切运作正常无误后投入实际应用。 --- #### 实现案例分析 以某 IDE 插件为例说明如何利用 DeepSeek 提升开发体验。社区成员积极尝试把最新版的 Deepseek V3 内置于支持 AI 辅助功能的编辑器扩展内,从而实现智能化代码补全、错误提示等功能增强[^4]。 ```python import deepseek_v3 as ds def get_code_suggestions(user_input): response = ds.generate_response( prompt=user_input, model="custom-deepseek-v3" ) return response['choices'][0]['text'] ``` 上述 Python 函数展示了调用 DeepSeek API 获取编程建议的方式之一;它接受一段由开发者输入的文字描述作为参数,并返回可能的相关代码片段供参考使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值