基於deepseek的安全分析工具設計實踐

新鈦雲服已累計為您分享831篇技術乾貨
01
分享背景
DeepSeek近日紅的發紫,春節前發現一個叫Deepseek的LLM送 10 RMB的Token!!!,正巧符合生產工作中擁抱大模型的主旋律,又本著有羊毛必薅的原則配合B站ollama本地部署餵飯影片起了阿里qwen2.5(1.5b)就行Coding輔助。
ollama本地部署Coding模型
step1:下載對應的版本https://ollama.com/download,無限next安裝ollamastep2:如果單純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 sysimport osimport requestsfrom 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, pyqtSignalfrom PyQt5.QtGui import QFont, QColor, QPalette, QLinearGradientclassCyberSecurityApp(QMainWindow):def__init__(self):super().__init__()self.init_ui()definit_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()defcreate_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, "流量分析")defcreate_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 審計")defcreate_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, "程序分析")defcreate_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 檢測")defstart_traffic_analysis(self):# 這裡可以新增流量分析的邏輯self.traffic_result.setText("流量分析結果將顯示在這裡...")defstart_js_audit(self):# 這裡可以新增 JS 審計的邏輯self.js_result.setText("JS 審計結果將顯示在這裡...")defstart_process_analysis(self):# 這裡可以新增程序分析的邏輯self.process_result.setText("程序分析結果將顯示在這裡...")defstart_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檢測模組的設計
classWebShellAnalysisThread(QThread): analysis_complete = pyqtSignal(str, bool)def__init__(self, file_content, parent=None):super().__init__(parent)self.file_content = file_contentself.api = APIAdapter()defrun(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 resultself.analysis_complete.emit(result, is_malicious) except Exception as e:self.analysis_complete.emit(f"錯誤發生: {str(e)}", False)
3.2.2、程序分析模組
classProcessAnalysisThread(QThread): process_complete = pyqtSignal(str)def__init__(self, process_data, parent=None):super().__init__(parent)self.process_data = process_dataself.api = APIAdapter()defrun(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、編解碼模組
classDecodingThread(QThread): decoding_complete = pyqtSignal(str)def__init__(self, encoded_str, parent=None):super().__init__(parent)self.encoded_str = encoded_strself.api = APIAdapter()defrun(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程式碼審計模組
classJsAuditThread(QThread): audit_complete = pyqtSignal(str)def__init__(self, js_code, parent=None):super().__init__(parent)self.js_code = js_codeself.api = APIAdapter()defrun(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流量分析
classAnalysisThread(QThread): analysis_complete = pyqtSignal(str, bool)def__init__(self, http_data, parent=None):super().__init__(parent)self.http_data = http_dataself.api = APIAdapter()defrun(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 resultself.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的回覆結果具有固定格式,提升了工具的穩定性和可靠性。未來,隨著功能的不斷豐富和最佳化,該工具有望在網路安全領域發揮更大的作用,幫助更多非專業安全工程師快速識別和分析潛在的安全威脅。 
總的來說,本文的實踐展示瞭如何利用大模型和本地部署技術,構建一個高效、易用的安全分析工具,為網路安全領域提供了新的思路和解決方案。
如有相關問題,請在文章後面給小編留言,小編安排作者第一時間和您聯絡,為您答疑解惑。
    推薦閱讀   

    推薦影片    

相關文章