Kube-Hunter는 더 이상 적극적으로 개발되지 않았습니다. 알려진 취약점에 대한 Kubernetes 클러스터를 스캔하는 데 관심이 있으시면 Trivy를 사용하는 것이 좋습니다. 구체적으로, Trivy의 Kubernetes 잘못 구성 스캔 및 KBOM 취약성 스캔. 사소한 문서에서 자세히 알아보십시오.
Kube-Hunter는 Kubernetes 클러스터의 보안 약점을 찾습니다. 이 도구는 Kubernetes 환경의 보안 문제에 대한 인식과 가시성을 높이기 위해 개발되었습니다. 당신은 당신이 소유하지 않은 Kubernetes 클러스터에서 Kube-Hunter를 실행해서는 안됩니다!
RUN KUBE-HUNTER : Kube-Hunter는 컨테이너 (Aquasec/Kube-Hunter)로 제공되며 Kube-Hunter.aquasec.com의 웹 사이트를 제공하여 온라인으로 등록하여 온라인으로 확인하고 공유 할 수있는 토큰을받을 수 있습니다. 아래에 설명 된대로 파이썬 코드를 직접 실행할 수도 있습니다.
취약성 탐색 : Kube-Hunter Knowledge Base에는 발견 가능한 취약점 및 문제에 관한 기사가 포함되어 있습니다. Kube-Hunter가 문제를보고하면 VID (취약성 ID)가 표시되므로 KB에서 https://aquasecurity.github.io/kube-hunter/에서 찾을 수 있습니다.
Kubernetes ATT & CK 매트릭스와의 Kube-Hunter와의 통합에 관심이 있으시면 계속 읽기
Kube-Hunter 데모 비디오
Kube-Hunter는 이제 Kubernetes Att & CK 매트릭스의 새로운 형식을 지원합니다. Kube-Hunter의 취약점은 클러스터 (또는 그 외부)의 공격자를 모방하도록 설계된 창의적인 기술 모음이지만 Miter의 ATT & CK는보다 일반적인 표준화 된 기술을 정의합니다.
Kube-Hunter 취약점을 공격자를위한 작은 단계로 생각할 수 있습니다. 이는 그가 목표로하는보다 일반적인 기술을 추적합니다. 대부분의 Kube-Hunter의 사냥꾼과 취약점은 이러한 기술에 밀접하게 떨어질 수 있으므로 매트릭스 표준을 따라 이동했습니다.
우리가 Miter Technique에 매핑 할 수없는 일부 Kube-Hunter 취약성은 General 키워드와 접두사로 표시됩니다.
Kube-Hunter를 실행하는 세 가지 방법이 있으며, 각각은 클러스터의 약점을 감지하는 다른 접근법을 제공합니다.
모든 컴퓨터에서 Kube-Hunter를 실행하고 (랩톱 포함) 원격 스캔을 선택하고 Kubernetes 클러스터의 IP 주소 또는 도메인 이름을 제공하십시오. 이렇게하면 Kubernetes 설정에 대한 공격자의 눈가 볼 수 있습니다.
클러스터의 컴퓨터에서 Kube-Hunter를 직접 실행하고 모든 로컬 네트워크 인터페이스를 조사하는 옵션을 선택할 수 있습니다.
클러스터 내 포드에서 Kube-Hunter를 실행할 수도 있습니다. 이는 응용 프로그램 포드 중 하나가 손상된 경우 (예 : 소프트웨어 취약성을 통해) 클러스터가 어떻게 노출되는지를 나타냅니다. ( --pod 플래그 )
먼저이 사전 반품을 확인하십시오.
기본적으로 Kube-Hunter는 대화식 세션을 열면 다음 스캔 옵션 중 하나를 선택할 수 있습니다. 명령 줄에서 스캔 옵션을 수동으로 지정할 수도 있습니다. 이것이 귀하의 옵션입니다.
헌팅을위한 원격 기계를 지정하려면 옵션 1을 선택하거나 --remote 옵션을 사용하십시오. 예 : kube-hunter --remote some.node.com
인터페이스 스캐닝을 지정하려면 --interface 옵션을 사용할 수 있습니다 (모든 기계의 네트워크 인터페이스를 스캔합니다). 예 : kube-hunter --interface
스캔 할 특정 CIDR을 지정하려면 --cidr 옵션을 사용하십시오. 예 : kube-hunter --cidr 192.168.0.0/24
--k8s-auto-discover-nodes 플래그를 설정하여 클러스터의 모든 노드에 대해 Kubernetes를 쿼리 한 다음 모두 스캔하십시오. 기본적으로 클러스터 내 구성을 사용하여 Kubernetes API에 연결합니다. 명시적인 kubeconfig 파일을 사용하려면 --kubeconfig /location/of/kubeconfig/file 설정하십시오.
또한 --pod 모드를 사용할 때 항상 수행됩니다.
초기 단계에서 공격자를 모방하기 위해 Kube-Hunter는 사냥에 대한 인증이 필요하지 않습니다.
가장합니다 -Kube-Hunter에게는 --service-account-token
예:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... --pod 플래그로 실행할 때 Kube-Hunter는 포드 내부에 장착 된 서비스 계정 토큰을 사용하여 사냥 중에 찾은 서비스를 인증합니다.
--service-account-tokenActive Hunting은 Kube-Hunter가 추가 취약점을 탐색하기 위해 취약점을 이용할 수있는 옵션입니다. 정상 사냥과 활성 사냥의 주요 차이점은 정상 헌트가 클러스터의 상태를 결코 바꾸지 않을 것이며, 활성 사냥은 잠재적으로 클러스터에서 상태를 변화시키는 작업을 수행 할 수 있다는 것 입니다.
기본적으로 Kube-Hunter는 적극적인 사냥을하지 않습니다. 클러스터를 활성화하려면 --active 플래그를 사용하십시오. 예 : kube-hunter --remote some.domain.com --active
--list 옵션이있는 테스트 목록을 볼 수 있습니다 : 예 : kube-hunter --list
수동적 인 능동적 사냥 테스트와 수동적 인 사냥 테스트를 보려면 : kube-hunter --list --active
노드 네트워크의 매핑 만 보려면 --mapping 옵션으로 실행하십시오. 예 : kube-hunter --cidr 192.168.0.0/24 --mapping Kubernetes 노드 Kube-Hunter가 찾은 모든 Kubernetes 노드를 출력합니다.
로깅을 제어하려면 --log 옵션을 사용하여 로그 레벨을 지정할 수 있습니다. 예 : kube-hunter --active --log WARNING 사용 가능한 로그 레벨은 다음과 같습니다.
기본적으로 보고서는 stdout 로 발송되지만 --dispatch 옵션을 사용하여 다른 방법을 지정할 수 있습니다. 예 : kube-hunter --report json --dispatch http 사용 가능한 디스패치 방법은 다음과 같습니다.
Azure 또는 AWS 환경에서 포드로 실행할 때 Kube-Hunter는 인스턴스 메타 데이터 서비스에서 서브넷을 가져옵니다. 당연히 이것은 발견 과정이 더 오래 걸립니다. /24 CIDR로 스캔하는 서브넷 스캔을 하드 리트하려면 --quick 옵션을 사용하십시오.
사용자 정의 사냥을 통해 고급 사용자는 사냥 시작시 사냥꾼이 등록 할 수있는 것을 제어 할 수 있습니다. 당신이 무엇을하고 있는지 알고 있다면 , Kube-Hunter의 사냥 및 발견 과정을 필요에 따라 조정하려면 도움이 될 수 있습니다.
예:
kube-hunter --custom <HunterName1> <HunterName2>
맞춤형 사냥을 활성화하면 주어진 화이트리스트 사냥꾼을 제외하고 모든 사냥꾼이 사냥 과정에서 제거됩니다.
--custom 깃발은 Kube-Hunter의 클래스 이름을 모두 보려면 --raw-hunter-names --list 플래그와 결합 할 수 있습니다.
예:
kube-hunter --active --list --raw-hunter-names
통지 : Kube-Huner의 건축 설계로 인해 다음 "핵심 사냥꾼/클래스"는 항상 등록됩니다 (사용자 지정 사냥을 사용하는 경우에도).
Kube-Hunter를 배포하는 세 가지 방법이 있습니다.
컴퓨터에서 Kube-Hunter를 직접 실행할 수 있습니다.
다음 설치가 필요합니다.
설치하다:
pip install kube-hunter
달리다:
kube-hunter
저장소 복제 :
git clone https://github.com/aquasecurity/kube-hunter.git
모듈 종속성을 설치합니다. (가상 환경 내 에서이 작업을 선호 할 수 있습니다)
cd ./kube-hunter
pip install -r requirements.txt
달리다:
python3 kube_hunter
pyinstaller/py2exe를 사용하려면 먼저 install_imports.py 스크립트를 실행해야합니다.
Aqua Security는 aquasec/kube-hunter:aqua 에서 Kube-Hunter의 컨테이너 화 된 버전을 유지합니다. 이 컨테이너에는이 소스 코드와 Kube-hunter.aquasec.com에서 볼 수있는 보고서에 결과를 업로드하기위한 추가 (폐쇄 소스)보고 플러그인이 포함되어 있습니다. aquasec/kube-hunter 컨테이너를 실행하고 보고서 데이터를 업로드하면 추가 이용 약관이 적용됩니다.
이 저장소의 dockerfile을 사용하면보고 플러그인없이 컨테이너 화 된 버전을 만들 수 있습니다.
호스트 네트워크로 Kube-Hunter 컨테이너를 실행하면 호스트의 모든 인터페이스를 조사 할 수 있습니다.
docker run -it --rm --network host aquasec/kube-hunter
Mac/Windows 용 Docker의 참고 : Mac 또는 Windows 용 Docker의 "호스트"는 Docker가 컨테이너를 실행하는 VM이라는 점에 유의하십시오. 따라서 --network host 지정하면 Kube-Hunter가 컴퓨터가 아닌 해당 VM의 네트워크 인터페이스에 액세스 할 수 있습니다. 기본적으로 Kube-Hunter는 대화식 모드로 실행됩니다. 위에서 설명한 매개 변수로 스캔 옵션을 지정할 수도 있습니다.
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
이 옵션을 사용하면 악성 컨테이너를 실행하는 것이 클러스터에서 수행/발견 할 수있는 것을 발견 할 수 있습니다. 이것은 공격자가 소프트웨어 취약성을 통해 포드를 타협 할 수 있다면 공격자가 할 수있는 일에 대한 관점을 제공합니다. 이것은 훨씬 더 많은 취약점을 보여줄 수 있습니다.
예제 job.yaml 파일은 기본 kubernetes 포드 액세스 설정을 사용하여 포드에서 Kube-Hunter를 실행하는 작업을 정의합니다. (예를 들어 뿌리가 아닌 사용자로 실행되거나 다른 네임 스페이스에서 실행되도록이 정의를 수정할 수 있습니다.)
kubectl create -f ./job.yaml 로 작업을 실행하십시오kubectl describe job kube-hunter 있는 포드 이름을 찾으십시오kubectl logs <pod name> 으로 테스트 결과를 봅니다 기여 가이드 라인을 읽으려면 여기를 클릭하십시오
이 저장소는 Apache License 2.0에 따라 제공됩니다.