原创 花十一一 2025-08-03 20:05 北京
路漫漫其修远兮 吾将上下而求索。
“ 路漫漫其修远兮 吾将上下而求索。”
最近难得有时间深入了解下大模型,之前工作中也有偶有用到,比如写代码,分析日志等等。用下来感觉大模型对技术岗的影响挺大。首先是写代码这一块,搞安全运营,免不了要写点脚本。比如从一堆日志里提取特定字段,或者把不同格式的告警数据做个格式化处理。这些事不难,但特别“脏活累活”,耗时间。试用了最近比较火的trae,大模型进化的已经可以根据提示词写工程化项目了,并且能跑通,这是我比较意外的,以前吭哧吭哧一下午才能搞定的工具,有了大模型加持一小时搞定。
比如,写一个弱口令扫描工具,我的提示词是这样的。
你是一个专业的AI prompt专家,写一个弱口令扫描器,逻辑是这样的。数据源有两种,一是从fofa上获取配置文件中fofa搜索语法的结果,fofa搜索语法比如protocol:ssh、title="phpmyadmin",二是读取本地文件,读取本地文件需要指定扫描的插件。来源fofa的读取到扫描结果后直接调用对应的弱口令扫描插件进行扫描,扫描插件从插件路径plugins目录里拉取,调用弱口令扫描插件,扫描完成后把结果更新到data目录的result.json文件中。程序加入多线程扫描,fofa每天拉取的结果保存下来,命名安装语法加日期.txt,扫描时候支持进度条显示,根据这个需求你生成一个prompt。
然后发给千问生成专业的提示词。
AI Prompt:设计并实现一个支持多数据源的弱口令扫描器系统
你是一个专业的网络安全工具开发者。请设计并实现一个弱口令扫描器,具备以下核心功能和架构要求:
📌 1. 背景与目标
构建一个自动化、可扩展的弱口令检测工具,支持从FOFA 网络空间搜索引擎和本地文件两种数据源获取目标资产,调用插件化弱口令检测模块进行扫描,并将结果持久化存储。系统需支持多线程、进度可视化、结果去重与历史记录管理。
🧩 2. 核心功能需求
✅ 2.1 数据源支持
数据源一:FOFA API 拉取
从配置文件(如 config.yaml
或 config.json
)读取 FOFA 查询语法(如 protocol:ssh
、title="phpMyAdmin"
)。
使用 FOFA API(https://fofa.info
)获取匹配的 IP:Port 列表。
每日拉取一次,避免重复请求(按日期去重)。
保存原始结果到本地文件:
路径:data/fofa/
命名规则:{搜索语法简写}_{YYYYMMDD}.txt
(如 phpmyadmin_20250802.txt
)
数据源二:本地文件导入
支持从本地文本文件读取目标列表(格式:IP:Port
,每行一条)。
必须在启动时指定对应的弱口令扫描插件名称(如 phpmyadmin
、redis
),用于后续调用。
✅ 2.2 插件化弱口令扫描引擎
扫描逻辑通过插件实现,插件存放于 plugins/
目录。
每个插件为独立 Python 文件(如 plugins/ssh.py
、plugins/phpmyadmin.py
),需实现统一接口:
python
深色版本
defscan(target: str, timeout: int = 10) -> dict:
"""
target: IP:Port
return: {
"target": "1.1.1.1:22",
"plugin": "ssh",
"status": "success|failure|error",
"vulnerable": True|False,
"credentials": [{"user": "root", "pass": "123456"}] | [],
"message": "optional info"
}
```
主程序动态导入并调用对应插件。
✅ 2.3 扫描调度与执行
支持从 FOFA 或本地文件加载目标后,自动匹配并调用对应插件。
示例:FOFA 查询 title="phpMyAdmin"
→ 自动调用 plugins/phpmyadmin.py
支持多线程并发扫描,线程数可在配置文件中设置(默认 50)。
扫描过程显示实时进度条(使用 tqdm
或类似库),显示:已扫描/总数、成功数、失败数。
✅ 2.4 结果存储与管理
扫描结果统一写入 JSON 文件:data/result.json
文件结构为数组,每条记录包含:
json
深色版本
{
"scan_id": "uuid",
"target": "1.1.1.1:80",
"plugin": "phpmyadmin",
"source": "fofa|local",
"source_query": "title=\"phpMyAdmin\"",
"scan_time": "2025-08-02T10:00:00",
"vulnerable": true,
"credentials": [{"user": "admin", "pass": "admin"}],
"status": "success"
}
每次扫描追加新结果,避免覆盖历史数据(可考虑按日期分文件或数据库,但当前阶段用 JSON 即可)。
✅ 2.5 配置管理
配置文件 config.yaml
示例:
yaml
深色版本
fofa:
email:"your@fofa.email"
key:"your_fofa_api_key"
queries:
-"protocol:ssh"
-'title="phpMyAdmin"'
-"app:Redis"
scan:
threads:50
timeout:10
plugins_dir:"plugins"
result_file:"data/result.json"
logging:
level:"INFO"
⚙️ 3. 系统流程
读取配置文件。
判断数据源:
若为 FOFA 查询:调用 API 获取目标,保存原始结果,提取协议/标题 → 映射插件名。
若为本地文件:读取 IP:Port,结合用户指定插件名。
加载对应插件模块。
多线程调用插件扫描目标,显示进度条。
汇总结果,写入 data/result.json
。
结果竟然能直接跑起来。
生成的README.md也比较详细,有工具介绍、配置说明、使用方法、插件开发思路、程序的目录结果。不得不说大模型生成的文档着实专业。
生成的代码地址:
https://github.com/shiyihua/weakpscan
其次是告警分析,大模型在告警分析这一块有天然的优势:它“知道”的东西比任何一个分析师都多。tcp类流量分析会根据ascii字符识别可能的攻击类型;终端行为日志可以分析大概是怎么产生的为后续分析提供思路;样本分析可以将反编译后的代码发给大模型,能加快分析速度。它不会100%准确,但你可以提供分析思路和方向,大大缩短研判时间。不过具体落地应用这一块还是需要仔细琢磨,我们需要大模型识别告警是真实攻击、业务行为、安全测试还是误报。以及能不能识别攻击成功与失败,目前测试下来还得进一步优化,优化的方向是数据格式、数据源。所谓的数据格式是精简用更少的token获取一样的结果,数据源就是辅助大模型调用得出准确结果。
最后是大数据分析,安全运营的本质是运营数据。资产信息、网络流量、系统日志、服务器行为、终端进程……这些数据量大、格式不一、更新快,传统基于规则的分析方法很难挖出深层次的威胁,并且关联分析的难度比较大。随着大模型上下文窗口扩大、推理能力增强,大模型可作为关联分析引擎,联动多个数据源发现潜在威胁。
当然大模型对安全运营的影响远不止于此,更多落地场景需要探索。当前大模型确实能够将重复、繁琐且耗时的任务承担起来,显著提升效率,让工程师得以从低价值劳动中解放,将精力聚焦于真正具有高价值的核心工作。然而像告警分析、大数据分析等场景能否真正落地,还需进一步摸索,未知才大有可为。