
저자(Authors):
Mario Kahlhofer (Dynatrace Research – mario.kahlhofer@dynatrace.com)
Matteo Golinelli (University of Trento – matteo.golinelli@unitn.it)
Stefan Rass (Johannes Kepler University Linz – stefan.rass@jku.at)
급속히 발전하는 클라우드-네이티브 환경에서 사이버 기만(cyber deception)은 실제 피해가 발생하기 전에 공격자를 교란할 수 있는 유망한 접근법이다. 사이버 기만은 인프라 전반에 트랩, 디코이(decoy), 허니토큰(honeytoken)을 전략적으로 배치해 공격자를 탐지·지연·분석하는 기술이다. Kubernetes 같은 컨테이너 오케스트레이션 플랫폼을 활용하면 애플리케이션 소스 코드를 수정하거나 접근하지 않고도 이러한 기법을 손쉽게 통합할 수 있다.
Koney는 Kubernetes를 위해 설계된 새로운 사이버 기만 오케스트레이션 프레임워크다. 오퍼레이터(Operator) 기반 배포 모델을 통해 기만 기술을 ‘코드로서(as-code)’ 정의·배포·회전(rotate)·모니터링·제거할 수 있게 해준다. 이 글에서는 Koney의 설계, 구현, 실제 적용 사례를 상세히 살펴보며, Bash와 Python 예제 코드를 포함해 개발자가 자신의 Kubernetes 클러스터에 기만 기술을 통합하는 방법을 보여준다.
이 글을 통해 다음을 이해할 수 있다.
본 글은 클라우드-네이티브 기만을 활용하려는 입문자와 고급 사용자 모두를 위한 종합 안내서다.
사이버 기만의 장점이 잘 알려져 있음에도, 많은 조직이 도입을 망설인다. 이유는 다음과 같다.
Koney는 다음과 같은 핵심 질문을 해결한다.
프레임워크는 서비스 메시(Istio 등)와 eBPF 같은 커널 메커니즘을 활용해 기존 컨테이너 애플리케이션에 투명하게 기만 기법을 통합한다. 주된 목표는 유지 관리, 확장성, 성능 같은 운영 측면을 단순화하면서 도입 장벽을 낮추는 것이다.
Koney를 이해하려면 다음 Kubernetes 핵심 용어를 알아야 한다.
Pod 내부 네트워크 이상 징후를 eBPF로 모니터링하려면 다음과 같은 명령을 사용할 수 있다.
# Pod 내부 트래픽 살펴보기
kubectl exec -it <pod-name> -- tcpdump -i eth0 -nn
이 명령은 트래픽 급증 등 스캔·데이터 유출 시도를 식별하는 데 도움을 준다. Koney도 사이드카와 eBPF 프로브를 활용해 애플리케이션 기능을 방해하지 않으면서 기만을 주입한다.
사이버 기만 정책은 인프라에 배포할 디코이·트랩의 구성과 동작을 정의한다. Koney에서는 정책을 ‘코드’로 작성해 표준 툴링으로 버전 관리·검토할 수 있다.
파일 시스템 트랩은 허니파일, 허니토큰, 허니문서, 허니디렉터리 등을 생성한다. 공격자가 이 파일에 접근하면 로그·알림이 발생해 의심 활동을 노출한다.
예시 YAML:
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: honeytoken-policy
spec:
trapType: fileSystem
details:
fileName: "secrets.txt"
content: "username: admin\npassword: Pa$w0rd123"
triggerAlert: true
정책 적용 시, Koney 오퍼레이터가 지정된 Pod 또는 볼륨에 파일을 주입하고 읽기 이벤트를 모니터링한다.
웹 애플리케이션 트랩은 HTTP 트래픽을 대상으로 하며, 가짜 엔드포인트 삽입, 헤더·본문 수정, 페이지 스푸핑 등을 수행한다.
존재하지 않는 엔드포인트에 고정 응답을 미리 정의해 공격자를 가짜 관리자 페이지나 디코이 데이터로 유도한다.
예를 들어 “Server” 헤더를 조작해 실제 서버 종류를 숨기거나 오도할 수 있다.
HTML·CSS·JavaScript를 조작해 리디렉션하거나 혼란을 준다. 예: robots.txt에 디코이 경로 추가.
예시 YAML:
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: web-deception-policy
spec:
trapType: webApplication
details:
endpoint: "/wp-admin"
responseType: fixed
responseContent: "<html><body><h1>Fake Admin Login Portal</h1></body></html>"
triggerAlert: true
정책은 기만을 적용할 리소스 범위를 지정한다. 특정 라벨이나 네임스페이스의 Pod만 대상으로 하여 성능 영향과 오탐(false positive)을 최소화할 수 있다.
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: target-specific-policy
spec:
trapType: fileSystem
selector:
matchLabels:
role: sensitive
details:
fileName: "credentials.log"
content: "dummy-credentials"
triggerAlert: true
role: sensitive 라벨이 있는 Pod에만 허니파일을 배포한다.
Koney는 Kubernetes 오퍼레이터로 동작하며, 기만 배포의 전체 수명 주기를 자동화한다.
컨테이너 내부에서 명령을 실행해 파일 시스템을 수정하거나 구성 변경을 주입한다.
# Pod 내부에 허니토큰 파일 생성
kubectl exec -it <pod-name> -- /bin/sh -c "echo 'dummy data' > /app/honeytoken.txt"
전용 볼륨을 마운트하여 디코이 아티팩트를 주입한다.
apiVersion: v1
kind: Pod
metadata:
name: decoy-pod
spec:
containers:
- name: app
image: myapp:latest
volumeMounts:
- name: deception-volume
mountPath: /app/decoy-files
volumes:
- name: deception-volume
configMap:
name: decoy-config
Istio Envoy 필터를 이용해 HTTP 요청·응답을 실시간으로 가로채고 변조한다.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: deception-virtual-service
spec:
hosts:
- myapp.example.com
http:
- match:
- uri:
exact: /wp-admin
route:
- destination:
host: decoy-service
port:
number: 80
eBPF 기반 런타임 보안 도구인 Tetragon을 활용하여 시스템 호출, 파일 접근, 네트워크 이벤트를 실시간으로 모니터링한다.
import json
def parse_tetragon_log(log_file):
with open(log_file, 'r') as f:
for line in f:
try:
event = json.loads(line)
if 'deception_triggered' in event:
print("Suspicious access detected:", event)
except json.JSONDecodeError:
continue
if __name__ == "__main__":
parse_tetragon_log('/var/log/tetragon/deception.log')
Istio 트래픽을 분석해 디코이 상호작용을 모니터링한다.
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: captor-filter
spec:
workloadSelector:
labels:
app: myapp
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.lua
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
inlineCode: |
function envoy_on_request(request_handle)
local headers = request_handle:headers()
request_handle:logInfo("Captor Trigger: " .. headers:get("User-Agent"))
end
Koney는 허니파일, 고정 HTTP 응답, 동적 엔드포인트 삽입 등 다양한 기만 시나리오를 지원한다. 테스트 클러스터에서 90% 이상의 탐지율을 보였다.
모듈식 CRD 설계로 새로운 정책 타입을 쉽게 추가할 수 있다.
허니토큰, 실시간 모니터링 등 선행 연구를 바탕으로, Koney는 컨테이너 오케스트레이션 환경에서 확장성과 자동화를 제공한다.
고정 HTTP 응답, 페이로드 변조의 효과가 입증되었으며, Koney는 Istio와 통합해 이를 자동화했다.
‘정책-as-code’ 접근을 발전시켜, 사용성과 유지보수 문제를 해결한다.
Koney는 클라우드-네이티브 환경에서 사이버 기만을 민주화한다. 주요 포인트:
변화하는 사이버 위협 환경에서 Koney는 공격자보다 한발 앞서기 위한 민첩성을 제공한다.
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: filesystem-honeytoken
spec:
trapType: fileSystem
selector:
matchLabels:
app: sensitive-data
details:
fileName: "credentials.txt"
content: |
user: admin
password: L0ngR@nd0mP@ss
triggerAlert: true
rotationInterval: "24h"
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: webapp-deception
spec:
trapType: webApplication
selector:
matchLabels:
app: my-web-app
details:
endpoint: "/admin"
responseType: fixed
responseContent: |
<html>
<body>
<h2>Decoy Admin Panel</h2>
<p>This page is a decoy. Any unauthorized access is logged.</p>
</body>
</html>
triggerAlert: true
rotationInterval: "12h"
e-commerce Kubernetes 환경에 기만 배포 시나리오:
정책 배포
kubectl apply -f filesystem-honeytoken.yaml
kubectl apply -f webapp-deception.yaml
디코이 상호작용 모니터링
# Koney 오퍼레이터 로그 실시간 확인
kubectl logs -f deployment/koney-operator -n security
Python 로그 분석
상단 예제 스크립트를 활용해 Tetragon 로그 파싱
대응 워크플로우
SIEM 연동으로 의심 Pod 격리 등 자동 대응
추가 자료:
Koney는 컨테이너 환경 보안을 강화하기 위한 실용적 솔루션으로, 기만 기술의 연구·실전 적용 모두에 유용하다. 여러분의 Kubernetes 클러스터에서 직접 실험해 보고, 사이버 기만 기술 발전에 동참해 보길 바란다.
Happy Decepting!
키워드: 사이버 기만, Kubernetes, Koney 오퍼레이터, 사이버 보안, 허니팟, 허니토큰, Istio, 서비스 메시, eBPF, DevSecOps, 컨테이너 보안, Policy-as-code
이 콘텐츠가 유용하다고 생각하셨다면, 저희의 포괄적인 47주 엘리트 교육 프로그램으로 무엇을 달성할 수 있을지 상상해 보세요. Unit 8200 기술로 경력을 변화시킨 1,200명 이상의 학생들과 함께하세요.