对于蓝队/恶意软件分析师,您可以将 ChatGPT 的 API 直接连接到 Cuckoo Sandbox API。这样,对于您从 Cuckoo 沙盒获得的每份报告,ChatGPT 都会为您解释结果。
ChatGPT 确实最适合解释和阅读代码。它可以翻译、转录、修订和合并文本。因此,它非常擅长理解任何用户知识水平的输出。
随后,我认为蓝队和恶意软件分析师可以从分析和自动化他们的恶意软件分析中受益最大。
在这种情况下,我要求 ChatGPT 编写一个 python 脚本,将恶意软件分析工具 Cuckoo Sandbox 与 ChatGPT API 链接起来。(Cuckoo Sandbox是一个用于自动恶意软件分析的开源工具。
此外,在此提示中,我希望 ChatGPT 在三个级别上解释恶意软件正在做什么:
- level_0_prompt =“请提供对恶意软件行为的板级非技术解释。
- level_1_prompt =“请提供恶意软件行为的技术解释,但要用非网络安全专家的术语。
- level_2_prompt =“请向恶意软件分析专业人员提供恶意软件行为的技术解释。
1 |
level_0_prompt = "Please provide a board-level, non-technical interpretation of the malware behavior."<br>level_1_prompt = "Please provide a technical interpretation of the malware behavior, but in non-cybersecurity expert terms."<br>level_2_prompt = "Please provide a technical interpretation of the malware behavior to a malware analysis professional." |
ChatGPT 编写了一个合理的脚本,可能需要一些编辑。但总的来说,我认为它相对较好。
1 |
import requests<br>import json<br>import openai_secret_manager<br><br># Set up API keys<br>cuckoo_api_key = openai_secret_manager.get_secret("cuckoo_api_key")["api_key"]<br>openai_api_key = openai_secret_manager.get_secret("openai_api_key")["api_key"]<br><br># Set up API endpoints<br>cuckoo_api_endpoint = "http://<your_cuckoo_sandbox_server_ip>/cuckoo/api"<br>cuckoo_report_endpoint = cuckoo_api_endpoint + "/tasks/report/{task_id}"<br>openai_api_endpoint = "https://api.openai.com/v1/engines/davinci-codex/completions" |
之后,您需要 # 定义解释的三个级别(见上文块)。
脚本中的下一步:
1 |
# Define a function to retrieve the Cuckoo Sandbox report<br>def get_cuckoo_report(task_id):<br> headers = {"Authorization": "Bearer " + cuckoo_api_key}<br> url = cuckoo_report_endpoint.format(task_id=task_id)<br> response = requests.get(url, headers=headers)<br> return response.json()<br><br># Define a function to generate a report using ChatGPT<br>def generate_report(prompt):<br> headers = {"Content-Type": "application/json", "Authorization": "Bearer " + openai_api_key}<br> data = {<br> "prompt": prompt,<br> "temperature": 0.5,<br> "max_tokens": 256,<br> "stop": "\n"<br> }<br> response = requests.post(openai_api_endpoint, headers=headers, data=json.dumps(data))<br> return response.json()["choices"][0]["text"].strip() |
最后,您需要定义两个 API 的主要功能,以便它们正确协同工作。
1 |
# Define the main function to connect the two APIs<br>def analyze_malware(task_id, level):<br> cuckoo_report = get_cuckoo_report(task_id)<br> malware_behavior = cuckoo_report["behavior"]["processes"][0]["calls"]<br> <br> if level == 0:<br> prompt = level_0_prompt<br> elif level == 1:<br> prompt = level_1_prompt<br> elif level == 2:<br> prompt = level_2_prompt<br> <br> prompt += "\n\nMalware behavior:\n"<br> for call in malware_behavior:<br> prompt += "- " + call["api"] + " (" + call["category"] + ")\n"<br> <br> report = generate_report(prompt)<br> return report |
最后,ChatGPT 指定了需要编辑的参数才能使此脚本正常工作。
考虑一下写一个模板的想法。你需要python(或Rust或Go或Bash或任何其他脚本语言)才能使这个脚本正常工作。但是,如果您这样做,您将能够为非技术人员和技术人员提供恶意软件正在做什么以及它做了什么的清晰概念。
原文链接:Connect ChatGPT API to Cuckoo Sandbox | by David Merian | Mar, 2023 | System Weakness