第八章-重生之我是AI人:扩展与反思—Hati踩过的坑"

admin 2026-10-20 13:02:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

第八章 - 重生之我是AI人:扩展与反思 — Hati踩过的坑

Khan安全团队

2026年6月26日 16:24
海南

在小说阅读器读本章

去阅读

以下文章来源于威胁情报Z分析
,作者Gach0ng

威胁情报Z分析
.

国际网络安全威胁情报,地缘政治事件分析。

  1. 跨平台兼容那些坑

Hati 跑在 Windows、Linux、macOS 三个平台。跨平台最大的坑是细节。

坑 1:Windows 终端编码

症状:PowerShell 跑 python -m api.main 报 UnicodeEncodeError: 'gbk' codec can't encode character。

为啥:Windows 默认 GBK,我们的 prompt 和日志里有大量中文和 emoji。

解法:agents/orchestrator.py:9-15

if sys.platform == 'win32':    try:        sys.stdout.reconfigure(encoding='utf-8', errors='replace')        sys.stderr.reconfigure(encoding='utf-8', errors='replace')    except AttributeError:        pass

这行代码在所有 agent 模块都重复了 4-5 次。重复是合理的 — 因为每个模块都可能被独立 import,不能依赖外部。

教训:Python 项目做跨平台,encoding 永远第一坑。

坑 2:Celery 在 Windows 失效

症状:celery worker 在 Windows 启动失败,报 NotImplementedError。

为啥:Celery 4.x 在 Windows 上不支持 prefork,用 solo pool 又不支持定时任务。

解法:不用 Celery,直接用 concurrent.futures.ThreadPoolExecutor。

文件:api/main.py(后台任务)

from concurrent.futures import ThreadPoolExecutorexecutor = ThreadPoolExecutor(max_workers=5)
@router.post(\"/api/pentest/start\")async def start_pentest(req: PentestStartRequest):    task_id = str(uuid.uuid4())    # 扔进线程池,不阻塞    executor.submit(run_pentest_task, task_id, req)    return {\"task_id\": task_id, \"status\": \"started\"}

但 Linux 上还能用 Celery(config/celery\_config.py 留着)。

教训:别死磕一个方案,降级到能跑的就行。

坑 3:Docker Desktop 启动慢

症状:Windows 上 docker-compose up -d redis 要 30 秒,Linux 上 1 秒。

为啥:Docker Desktop 用 WSL2 后端,启动慢。

解法:

● Windows 用户:接受现实,或者用 WSL 直接装 Redis

● 配置好超时(timeout=10 改成 timeout=30)

  1. 可降级设计

设计原则:外部依赖挂了,Hati 不能挂。

2.1 Elasticsearch 降级

文件:security/audit\_logger.py:48-65

def _init_es(self):    try:        self._es = Elasticsearch([ES_URL], verify_certs=False, request_timeout=10)        if self._es.ping():            print(f\"✅ ES 连接成功\")        else:            print(\"⚠️ ES 连接失败,降级到本地日志\")            self._es = None    except Exception as e:        print(f\"⚠️ ES 异常,降级到本地日志: {e}\")        self._es = None
def log(self, event):    if self._es:        self._es.index(index=\"pentest-logs\", document=event)    else:        # 降级:写本地 JSON        with open(f\"logs/{event['timestamp']}.json\", \"a\") as f:            f.write(json.dumps(event) + \"\
\")

实际效果:Hati 启动时如果 ES 不通,日志显示\"降级到本地日志\",任务正常跑。

2.2 Redis 降级

类似逻辑:state/progress\_tracker.py 检测 Redis 不通就改用内存字典。

2.3 MCP 降级

如果 Kali VM 不可达,Hati 会:

  1. 跳过 execute\_tool 路径

  2. 不报错,直接走 execute\_skill 路径(主机侧 requests 发包)

  3. 任务能完成,只是少了 30% 功能

  4. 审计和合规

每次任务都产生审计记录:

# security/audit_logger.pyaudit.log(    task_id=task_id,    actor=\"orchestrator\",    action=\"execute_skill\",    target=\"http://testphp.vulnweb.com\",    decision=llm_decision,  # LLM 输出的 JSON    result=execution_result,  # 执行结果    timestamp=datetime.utcnow().isoformat(),    authorized_by=\"[email protected]\"  # 来自请求)

审计字段:

● 谁(actor)

● 干了啥(action)

● 对谁(target)

● 决策依据(decision - LLM 思考过程)

● 结果(result)

● 授权人(authorized\_by)

为啥要审计:

● 合规:渗透测试必须有书面授权

● 复盘:出问题时能追

● 客户要求:甲方常要\"完整的测试日志\"

  1. 怎么加新技能(开发者视角)

第 6 章讲了 Markdown 加法,这里讲工程化做法。

步骤:

  1. 在 skills/hack-skills/skills/ 下创建目录

  2. 写 SKILL.md

  3. (可选) 写 SCENARIOS.md(具体场景)

  4. 重新加载技能

示例:加一个\"密码学误用\"技能

mkdir -p skills/hack-skills/skills/crypto-misuse

写 SKILL.md:

---name: crypto-misusedescription: 检测密码学 API 的常见误用(弱算法、硬编码 IV 等)severity: mediumtags: [crypto, api, web]---
## detection1. 抓包看 HTTPS 协议版本(SSLv3、TLS 1.0 都是弱协议)2. 看证书是否过期3. 看加密算法是否使用 MD5、SHA1、DES4. 看 IV 是否硬编码或可预测
## success_indicators- 响应头: Server: SSLv3- 证书过期天数 < 0- 加密算法包含 MD5|SHA1|DES|RC4
## pocsopenssl s_client -connect target.com:443 -tls1

重启 Hati:

# 强制重载技能python -c \"from agents.skill_loader import get_skill_loader; get_skill_loader()\"

新技能就被纳入 match\_skills 的候选池,LLM 可以在 ReAct 循环里自动发现和使用。

  1. 怎么加新 MCP 工具

步骤:

  1. 在 Kali VM 上装工具

  2. 在 hexstrike/hexstrike\_mcp.py 加 @mcp.tool() 装饰器

  3. 重启 HexStrike Server

  4. Hati 端不需要改 — HexStrikeClient.execute\_command() 透传命令

# hexstrike/[email protected]()def my_new_tool(target: str, option: str = \"default\") -> dict:    \"\"\"我的新工具\"\"\"    return subprocess_run([\"my-new-tool\", option, target])

6.1 单 LLM 决策的偏置

LLM 对热门漏洞类型有偏好(老提 SQL 注入、XSS),很少主动提 SSRF、XXE。这是训练数据分布问题。

应对:

● state/diversity\_injector.py:强制多类型漏洞尝试

● 第 7 章 RAG 注入历史 POC 来平衡

6.2 8 轮上下文窗口紧张

8 轮后早期信息开始被压缩/遗忘。

应对:

● state/context\_compressor.py:对历史结果做摘要

● 把\"上一轮结果\"摘要(不全文)喂给下一轮

6.3 误报率

虽然有多模式确认,误报率仍在 3-5%。

应对:

● 不在生产目标上跑(仅授权测试)

● 报告里明确标记 status: confirmed/potential/false\_positive

6.4 性能瓶颈

单任务 5-10 分钟,主要时间花在 LLM 调用上(每次决策 3-10 秒)。

应对:

● 分层 Prompt 减少 KV-cache 失效

● 并行执行独立任务(ThreadPoolExecutor)

● 用更小的模型(未来方向)

  1. 未来方向

我目前在想的几个方向:

7.1 更多的agent协作

现状:有限的 LLM 做所有决策。

未来:

● ReconAgent(专门做信息收集)

● VulnAgent(专门做漏洞分析)

● ExploitAgent(专门做漏洞利用)

● ReportAgent(专门做报告)

● 互相通信,各有专长

7.2 长期记忆

现状:每次任务经验不沉淀。

未来:

● 把\"成功的 POC 改写模式\"存进向量库

● 下次遇到类似目标,直接复用历史经验

7.3 主动学习

现状:模型参数固定。

未来:

● 用 LoRA 微调

● 把\"成功任务\"作为训练数据

● 让 LLM 在 Hati 场景下越来越准

7.4 实时决策可视化

现状:Web UI 只显示\"现在在干啥\"。

未来:

● 实时画 ReAct 决策树

● 让用户介入决策(\"这个目标先别测 XSS\")

● 半自动化 → 监督式自动化

  1. 写在最后:开源与安全

Hati 已经开源,MIT 协议。

但必须强调:这个工具仅供合法的安全测试和学术研究使用。

# 来自 README本工具仅供合法的安全测试和学术研究使用。使用前请确保已获得目标系统所有者的书面授权。使用者需遵守当地法律法规,作者不承担任何因滥用本工具而导致的法律责任。

我在每次 PR 合并前都会确认:

● ✅ 没有硬编码的\"恶意 payload\"

● ✅ 默认配置下不会真的打未授权目标

● ✅ 审计日志默认开启

  1. 联系和反馈

● 绿泡泡和github同名,作者多年甲方经验,目前在乙方厂商做ai安全分析,在岗看机会中~欢迎交流

● 项目地址:https://github.com/Gach0ng/Hati

● GitHub Issues:提 bug、提建议

● PR 欢迎:加技能、改 prompt、优化 RAG 都行

● 安全问题:请私下交流,不要在公开 issue 提

感谢您的耐心,祝挖洞愉快。


第八章-重生之我是AI人:扩展与反思—Hati踩过的坑" 网络安全文章

第八章-重生之我是AI人:扩展与反思—Hati踩过的坑"

本文档详细介绍了HatiAI安全测试工具在跨平台兼容性、降级设计、审计合规等方面的实践经验。核心内容包括Windows/Linux/macOS三平台的编码配置、外部依赖故障时的降级机制、完整的审计日志规范,以及如何扩展新技能和MCP工具。文档还分析了LLM决策偏好、上下文窗口限制等挑战,并提出了多Agent协作、长期记忆等未来发展方向。
自写的几个BOF,可过内存防护!" 网络安全文章

自写的几个BOF,可过内存防护!"

该文档介绍了作者为绕过安全软件内存防护而开发的几个BOF工具,包括检查360核晶防护状态、RDP端口状态及AV/EDR进程的功能。文档提供了具体的使用方法和测试结果,指出这些工具可有效规避某绒等杀软对CobaltStrikeexecute-assembly的拦截,并推荐参考相关GitHub项目进行二次开发。
美国非营利性行业监管协调组织——NAIC超3.1TB内部数据泄露,AWS生产环境凭证与26万份保险监管文件曝光" 网络安全文章

美国非营利性行业监管协调组织——NAIC超3.1TB内部数据泄露,AWS生产环境凭证与26万份保险监管文件曝光"

美国保险监督官协会(NAIC)遭遇大规模数据泄露,黑客获取超过3.1TB内部数据,包括26.4万份保险监管文件、客户订单记录、评级机构档案及AWS生产环境凭证。泄露涉及INSData监管平台和Vision评级服务等核心系统,涵盖2016-2024年多种险种数据。事件暴露金融监管数据与基础设施安全风险,建议加强云环境凭证管理和数据保护措施。
评论:0   参与:  0