LLMjacking: 17만 대 AI 서버 해킹 사건과 방어 대책
기본 설정 그대로 둔 Ollama 서버 175,108대가 해커 Hecker의 AI 블랙마켓 수익원이 된 사건. SentinelOne과 Pillar Security의 실제 추적 데이터로 본 LLMjacking의 전모.
기본 설정 그대로 둔 Ollama 서버 175,108대가 해커 Hecker의 AI 블랙마켓 수익원이 된 사건. SentinelOne과 Pillar Security의 실제 추적 데이터로 본 LLMjacking의 전모.
2025년 10월, 한 스타트업 개발자가 AWS 청구서를 받았다.
평소엔 월 300달러 정도였다. 이번 달은 8,742달러.
"뭐지?"
GPU 사용량 그래프를 열었다. 밤 11시부터 새벽 4시까지, 매일 풀 가동.
하지만 팀원 중 누구도 그 시간에 서버를 쓴 적이 없었다.
로그를 뒤졌다. Ollama API 호출 기록이 수천 건.
모델: dolphin-mixtral, wizard-vicuna-uncensored.
"우리 서버엔 저런 모델이 없는데?"
누군가 이 서버에 모델을 설치하고, 돌리고 있었다. 3개월 동안.
SentinelOne 연구팀이 전 세계 Ollama 서버를 293일간 추적했다.
결과:
이 중 48% 는 양자화 모델(Sysdig TRT 보고서 기준) Q4_K_M을 사용하고 있었다.
4비트 양자화 모델 전체로 범위를 넓히면 72%.
왜 양자화 모델인가? 메모리를 적게 쓰니까. 남의 서버에서 돌릴 땐 효율이 중요하다.
| 지표 | 수치 |
|---|---|
| tool-calling 기능 활성화 | 48%(Sysdig TRT 기준) |
| uncensored 모델 구동 호스트 | 201대 |
| 고성능 호스트 (87% 가동률, Sysdig TRT 기준) | 5,000대 |
| 가정용 ISP 비율 | 56%(Sysdig TRT 기준) |
| 클라우드 비율 | 32% |
56%(Sysdig TRT 분석)가 가정용 인터넷이라는 건 뭘 의미할까?
개발자가 집에서 테스트하다 열어둔 서버가 절반 이상이라는 뜻이다. 32%(Sysdig TRT 분석)는 클라우드. AWS, GCP, Azure에서 돌아가는 서버다.
이 17만 대의 서버가 공통점이 뭘까?
전부 인증 없이 열려 있었다.
LLMjacking 공격 흐름
2025년 12월, Pillar Security가 이상한 트래픽을 포착했다.
어떤 IP가 Ollama 서버를 집중적으로 스캔하고 있었다. 단순 스캔이 아니었다. 검증 → 수집 → 활용의 3단계 체계였다.
2026년 1월까지 35,000건의 공격 세션을 포착했다. 하루 평균 972건.
추적 끝에 찾은 이름:
"Hecker".
관리자 패널 메시지: "Hiii I'm Hecker"
이 사람은 여러 이름을 썼다. Sakuya, LiveGamer101. 그리고 상업용 마켓플레이스를 운영하고 있었다.
Hecker가 운영하는 사이트의 헤더 문구였다.
| 항목 | 내용 |
|---|---|
| 제공 모델 | 30개 이상 LLM 제공업체 |
| 가격 | 정상가 대비 40~60% 할인(Sysdig 조사 기준) |
| 호스팅 | 네덜란드 bulletproof hosting |
| 결제 | 암호화폐 + PayPal |
| 홍보 채널 | Discord, Telegram |
정상 API보다 절반 가격에 GPT-4, Claude, Gemini를 쓸 수 있다고 광고했다.
어떻게 그게 가능할까?
남의 서버를 쓰니까.
Hecker의 운영 구조는 3단계였다:
주목할 점은 MCP(Model Context Protocol) 트래픽이다. 2026년 1월 말 기준, 전체 공격의 60% 가 MCP 관련이었다. MCP 서버를 통한 파일 시스템, 데이터베이스, 셸 접근까지 노리고 있었다.
Ollama의 기본 설정을 보자.
기본 바인딩: 0.0.0.0:11434
기본 인증: 없음
전 세계 어디서나 접속 가능. 비밀번호 없음.
Ollama는 개인 로컬 환경을 위해 설계됐다. 개발자가 자기 노트북에서 LLM을 돌리는 용도.
하지만 사람들은 이걸 클라우드 서버에 올렸다. 그것도 기본 설정 그대로.
공격자 입장에서 이건 스캔만 하면 찾아지는 타겟이다.
GreyNoise 허니팟이 이를 증명했다:
| 지표 | 수치 |
|---|---|
| 총 허니팟 세션 | 91,403건 (2025.10~2026.01) |
| 열거 세션 (11일간) | 80,469건 |
| 프로빙된 모델 엔드포인트 | 73개 이상 |
| 크리스마스 48시간 급증 | 1,688건 |
크리스마스 기간 급증(48시간 1,688세션)은 무엇을 의미할까?
휴가 기간 = 모니터링 공백. 보안팀이 쉴 때, 공격자는 일한다.
핑거프린팅 쿼리도 흥미롭다:
| 쿼리 | 횟수 | 목적 |
|---|---|---|
| "hi" | 32,716 | 서버 응답 확인 |
| "How many states are in the US?" | 27,778 | 모델 품질 테스트 |
"How many states"는 왜 쓸까?
간단하지만 정확도를 측정할 수 있다. 답이 50이 나오면 쓸 만한 모델이다. 엉뚱한 답이 나오면 버린다.
| 기법 ID | 이름 | 공격자가 선택한 이유 |
|---|---|---|
| T1190 | Exploit Public-Facing Application | 인증 없는 공개 API — 취약점 익스플로잇조차 필요 없음 |
| T1496 | Resource Hijacking | GPU 리소스 직접 탈취 — 크립토마이닝보다 수익성 높음 |
| T1595 | Active Scanning | Shodan/Censys로 대량 타겟 발견 가능 |
T1496(Resource Hijacking)이 핵심이다.
과거에는 남의 서버를 탈취하면 암호화폐를 채굴했다. 이제는 AI 모델을 돌린다. GPU 1시간 사용료가 크립토마이닝 수익보다 높기 때문이다.
Linux/Mac
netstat -tuln | grep 11434
Windows
netstat -an | findstr 11434
0.0.0.0:11434가 보인다면?
전 세계에 열려 있다.
curl http://[내_공인_IP]:11434/api/tags
모델 목록이 나온다면? 지금 당장 조치가 필요하다.
방법 1: 로컬 바인딩
export OLLAMA_HOST=127.0.0.1:11434
방법 2: 방화벽 규칙
# Linux (iptables)
iptables -A INPUT -p tcp --dport 11434 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 11434 -j DROP
방법 3: Reverse Proxy + 인증 (nginx)
location /api/ {
auth_basic "Ollama API";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:11434/api/;
}
클라우드 환경이라면 다음을 점검한다:
Ollama는 훌륭한 도구다.
누구나 자기 컴퓨터에서 GPT 수준의 모델을 돌릴 수 있게 했다. AI 민주화의 상징.
하지만 편의성과 보안은 트레이드오프다.
"인증 없이 바로 쓸 수 있게" 만든 설계는 로컬 환경에선 편리하지만, 클라우드에선 17만 대의 열린 문이 됐다.
SentinelOne이 발견한 175,108대 중 몇 대나 주인이 알고 있을까?
아마 대부분은 모를 것이다. 청구서가 올 때까지.
공격자가 AI 서버를 탈취하는 이유는 GPU 자원의 높은 비용이다. Claude, GPT-4 같은 대형 모델을 운영하는 GPU 클러스터의 시간당 비용은 수십 달러에 달한다. 탈취한 API 키나 클라우드 자격증명으로 이 자원을 무단 사용하면, 피해 조직에 수만 달러의 청구서가 돌아간다.
Sysdig의 2025년 보고서에 따르면 LLMjacking 피해의 평균 비용은 일일 46,000달러다. 공격자는 탈취한 API 접근을 다크웹에서 "AI-as-a-Service" 형태로 재판매한다. 가격은 정가 대비 90% 이상 할인된 수준이다.
가장 흔한 침입 경로는 GitHub 리포지토리에 노출된 API 키다. TruffleHog 같은 도구로 공개 리포지토리를 스캔하면 분당 수십 개의 유효한 키가 발견된다. AWS IAM 키, Azure Service Principal, GCP 서비스 계정 키가 코드에 하드코딩된 채 커밋되는 경우가 여전히 많다.
방어는 비밀 관리 시스템(HashiCorp Vault, AWS Secrets Manager)의 도입, 키 자동 순환, 그리고 사용량 기반 알림 설정이 핵심이다. LLM API 호출량이 평소 대비 10배 증가하면 즉시 키를 무효화하는 자동화가 필요하다.
LLMjacking은 전통적인 크립토재킹(Cryptojacking)의 AI 버전이다. 암호화폐 채굴 대신 탈취한 클라우드 자격증명으로 AI API를 무단 사용한다. 공격자는 주로 AWS Bedrock, Azure OpenAI, GCP Vertex AI의 API 키를 노린다.
초기 접근은 대부분 하드코딩된 API 키에서 시작된다. GitHub 공개 저장소에서 .env 파일이나 설정 파일에 포함된 클라우드 자격증명을 자동으로 수집하는 봇이 24시간 운영된다. AWS의 경우 IAM 키가 커밋된 후 평균 12분 이내에 공격자가 이 키를 사용하기 시작한다는 연구 결과가 있다.
탈취한 자격증명은 프록시 서비스를 통해 재판매된다. Telegram 채널에서 GPT-4, Claude, Gemini API 접근을 정가의 10분의 1 가격에 제공하는 서비스가 운영되고 있다. 이 프록시 서비스는 다수의 탈취 키를 로드밸런싱하여 개별 키의 사용량이 임계값을 초과하지 않도록 관리한다.
17만 대 규모의 공격이 가능했던 이유는 Jupyter Notebook과 ML 플랫폼의 보안이 취약하기 때문이다. 많은 데이터 과학자가 편의를 위해 인증 없이 Jupyter를 외부에 노출하고, 노트북에 클라우드 API 키를 평문으로 저장한다.
LLMjacking의 탐지가 어려운 이유는 정상 사용과 악용 사용의 API 호출 패턴이 동일하기 때문이다. 같은 엔드포인트에 같은 형식의 요청이 가는 것이므로, 전통적인 이상 탐지가 효과적이지 않다.
효과적인 탐지 지표는 세 가지다. 첫째, 사용량의 급격한 변화다. 일일 API 호출이 평소의 10배 이상으로 증가하면 탈취 가능성이 높다. 둘째, 지리적 이상이다. 한국 기업의 API 키가 러시아나 동남아 IP에서 사용되면 의심해야 한다. 셋째, 프롬프트 내용의 변화다. 기존에 코드 생성용으로 사용하던 키가 갑자기 대화형 응답을 생성하면 프록시 서비스에 악용되고 있을 가능성이 높다.
AWS는 Bedrock 서비스에 모델 호출 로깅(Model Invocation Logging)을 도입하여 모든 API 호출의 입출력을 CloudWatch에 기록할 수 있게 했다. 이로써 키 탈취 시 악용 범위를 사후 분석할 수 있다.
클라우드 제공사들도 대응을 강화하고 있다. AWS는 Bedrock 사용량에 대한 이상 탐지 알림을 기본 제공하기 시작했고, OpenAI는 API 키별 사용 패턴을 분석하여 의심스러운 활동을 자동 차단하는 기능을 도입했다.
관련 보안 주제
관련 MITRE ATT&CK 기법
AI 보안 위협
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.