Kube-Hunter ไม่ได้อยู่ระหว่างการพัฒนาอีกต่อไป หากคุณสนใจที่จะสแกนกลุ่ม Kubernetes สำหรับช่องโหว่ที่รู้จักกันเราขอแนะนำให้ใช้ Trivy โดยเฉพาะอย่างยิ่งการสแกนการกำหนดค่าการกำหนดค่าผิดปกติของ Trivy ของ Trivy และการสแกนช่องโหว่ KBOM เรียนรู้เพิ่มเติมในเอกสารที่ไม่สำคัญ
Kube-Hunter Hunts สำหรับจุดอ่อนด้านความปลอดภัยในกลุ่ม Kubernetes เครื่องมือได้รับการพัฒนาขึ้นเพื่อเพิ่มการรับรู้และการมองเห็นปัญหาด้านความปลอดภัยในสภาพแวดล้อม Kubernetes คุณไม่ควรเรียกใช้ Kube-Hunter บนคลัสเตอร์ Kubernetes ที่คุณไม่ได้เป็นเจ้าของ!
เรียกใช้ Kube-Hunter : Kube-Hunter มีให้บริการเป็นคอนเทนเนอร์ (Aquasec/Kube-Hunter) และเรายังเสนอเว็บไซต์ที่ kube-munter.aquasec.com ซึ่งคุณสามารถลงทะเบียนออนไลน์เพื่อรับโทเค็นที่ช่วยให้คุณได้เห็นและแบ่งปันผลลัพธ์ออนไลน์ นอกจากนี้คุณยังสามารถเรียกใช้รหัส Python ด้วยตัวเองตามที่อธิบายไว้ด้านล่าง
สำรวจช่องโหว่ : ฐานความรู้ Kube-Hunter รวมถึงบทความเกี่ยวกับช่องโหว่และปัญหาที่ค้นพบได้ เมื่อ Kube-Hunter รายงานปัญหาจะแสดง VID (ID ช่องโหว่) เพื่อให้คุณสามารถค้นหาได้ใน KB ที่ https://aquasecurity.github.io/kube-hunter/
หากคุณสนใจในการบูรณาการของ Kube-Hunter กับ Kubernetes Att & CK Matrix อ่านต่อ
วิดีโอสาธิต Kube-Hunter
ตอนนี้ Kube-Hunter รองรับรูปแบบใหม่ของ Kubernetes ATT & CK Matrix ในขณะที่ช่องโหว่ของ Kube-Hunter เป็นคอลเลกชันของเทคนิคการสร้างสรรค์ที่ออกแบบมาเพื่อเลียนแบบผู้โจมตีในคลัสเตอร์ (หรือภายนอก) ATT & CK ของ MITER กำหนดประเภทเทคนิคทั่วไปที่ได้มาตรฐานมากขึ้น
คุณสามารถนึกถึงช่องโหว่ Kube-Hunter เป็นขั้นตอนเล็ก ๆ สำหรับผู้โจมตีซึ่งเป็นไปตามการติดตามเทคนิคทั่วไปที่เขาต้องการ นักล่าและช่องโหว่ของ Kube-Hunter ส่วนใหญ่สามารถตกอยู่ภายใต้เทคนิคเหล่านั้นนั่นคือเหตุผลที่เราย้ายไปทำตามมาตรฐานเมทริกซ์
ช่องโหว่ kube-hunter บางตัวที่เราไม่สามารถแมปกับเทคนิค MITER ได้รับคำนำหน้าด้วยคำหลัก General
มีสามวิธีที่แตกต่างกันในการเรียกใช้ Kube-Hunter แต่ละวิธีให้วิธีการที่แตกต่างกันในการตรวจจับจุดอ่อนในคลัสเตอร์ของคุณ:
เรียกใช้ Kube-Hunter บนเครื่องใด ๆ (รวมถึงแล็ปท็อปของคุณ) เลือกการสแกนระยะไกลและให้ที่อยู่ IP หรือชื่อโดเมนของคลัสเตอร์ Kubernetes ของคุณ สิ่งนี้จะทำให้คุณได้เห็นการตั้งค่า 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
SET --k8s-auto-discover-nodes FLAG เพื่อสอบถาม Kubernetes สำหรับโหนดทั้งหมดในคลัสเตอร์จากนั้นพยายามสแกนพวกเขาทั้งหมด โดยค่าเริ่มต้นจะใช้การกำหนดค่าในคลัสเตอร์เพื่อเชื่อมต่อกับ Kubernetes API หากคุณต้องการใช้ไฟล์ kubeconfig ที่ชัดเจนตั้งค่า --kubeconfig /location/of/kubeconfig/file
นอกจากนี้โปรดทราบว่าสิ่งนี้จะทำเสมอเมื่อใช้โหมด --pod
เพื่อที่จะเลียนแบบผู้โจมตีในระยะแรก Kube-Hunter ไม่จำเป็นต้องมีการตรวจสอบความถูกต้องสำหรับการตามล่า
ปลอมตัว -คุณสามารถให้โทเค็นบัญชีบริการเฉพาะของ Kube-Hunter ที่จะใช้เมื่อการล่าสัตว์ด้วยการส่งโทเค็นผู้ถือ JWT ด้วยตนเองของความลับบริการด้วยการตั้งค่า --service-account-token
ตัวอย่าง:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... เมื่อรันด้วย --pod ธง-พ็อด Kube-Hunter จะใช้โทเค็นบัญชีบริการที่ติดตั้งอยู่ภายในพ็อดเพื่อตรวจสอบสิทธิ์ในการบริการที่พบในระหว่างการล่า
--service-account-token จะให้ความสำคัญกับการทำงานเป็นพ็อดการล่าสัตว์ที่ใช้งานอยู่เป็นตัวเลือกที่ Kube-Hunter จะใช้ประโยชน์จากช่องโหว่ที่พบเพื่อสำรวจช่องโหว่เพิ่มเติม ความแตกต่างที่สำคัญระหว่างการล่าสัตว์ปกติและการใช้งานคือการล่าปกติจะไม่เปลี่ยนสถานะของคลัสเตอร์ในขณะที่การล่าสัตว์ที่ใช้งานอยู่สามารถทำการเปลี่ยนแปลงสถานะบนคลัสเตอร์ ซึ่งอาจเป็นอันตราย
โดยค่าเริ่มต้น Kube-Hunter ไม่ได้ทำการล่าสัตว์ที่ใช้งานอยู่ หากต้องการใช้งานคลัสเตอร์ให้ใช้ธง --active ฟ ตัวอย่าง: kube-hunter --remote some.domain.com --active
คุณสามารถดูรายการการทดสอบด้วยตัวเลือก --list : ตัวอย่าง: kube-hunter --list
หากต้องการดูการทดสอบการล่าสัตว์ที่ใช้งานเช่นเดียวกับ Passive: kube-hunter --list --active
หากต้องการดูการแม็พของเครือข่ายโหนดของคุณเท่านั้นให้เรียกใช้ด้วยตัวเลือก --mapping ตัวอย่าง: kube-hunter --cidr 192.168.0.0/24 --mapping สิ่งนี้จะส่งออกโหนด Kubernetes ทั้งหมด Kube-Hunter ได้พบ
ในการควบคุมการบันทึกคุณสามารถระบุระดับบันทึกโดยใช้ตัวเลือก --log ตัวอย่าง: kube-hunter --active --log WARNING ระดับบันทึกที่มีอยู่คือ:
โดยค่าเริ่มต้นรายงานจะถูกส่งไปยัง stdout แต่คุณสามารถระบุวิธีการต่าง ๆ โดยใช้ตัวเลือก --dispatch ตัวอย่าง: kube-hunter --report json --dispatch http วิธีการจัดส่งที่มีอยู่คือ:
เมื่อทำงาน เป็นฝักในสภาพแวดล้อม Azure หรือ AWS Kube-Hunter จะดึงข้อมูลย่อยจากบริการข้อมูลเมตาอินสแตนซ์ โดยธรรมชาติสิ่งนี้ทำให้กระบวนการค้นพบใช้เวลานานขึ้น ในการสแกน subnet subnet เป็น A /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 ดูแล Kube-Hunter เวอร์ชันคอนเทนเนอร์ที่ aquasec/kube-hunter:aqua คอนเทนเนอร์นี้รวมถึงซอร์สโค้ดนี้รวมถึงปลั๊กอินการรายงานเพิ่มเติม (แหล่งปิด) สำหรับการอัปโหลดผลลัพธ์ลงในรายงานที่สามารถดูได้ที่ kube-munter.aquasec.com โปรดทราบว่าการรันคอนเทนเนอร์ aquasec/kube-hunter และข้อมูลรายงานการอัปโหลดขึ้นอยู่กับข้อกำหนดและเงื่อนไขเพิ่มเติม
DockerFile ในพื้นที่เก็บข้อมูลนี้ช่วยให้คุณสามารถสร้างเวอร์ชันคอนเทนเนอร์โดยไม่ต้องใช้ปลั๊กอินการรายงาน
หากคุณเรียกใช้คอนเทนเนอร์ Kube-Hunter ด้วยเครือข่ายโฮสต์มันจะสามารถตรวจสอบอินเทอร์เฟซทั้งหมดบนโฮสต์:
docker run -it --rm --network host aquasec/kube-hunter
หมายเหตุสำหรับ Docker สำหรับ Mac/Windows: โปรดทราบว่า "โฮสต์" สำหรับ Docker สำหรับ Mac หรือ Windows เป็น VM ที่ Docker รันคอนเทนเนอร์ภายใน ดังนั้นการระบุ --network host อนุญาตให้ Kube-Hunter เข้าถึงอินเทอร์เฟซเครือข่ายของ VM นั้นได้มากกว่าเครื่องของคุณ โดยค่าเริ่มต้น Kube-Hunter ทำงานในโหมดการโต้ตอบ คุณยังสามารถระบุตัวเลือกการสแกนด้วยพารามิเตอร์ที่อธิบายไว้ข้างต้นเช่น
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
ตัวเลือกนี้ช่วยให้คุณค้นพบสิ่งที่การใช้งานคอนเทนเนอร์ที่เป็นอันตรายสามารถทำ/ค้นพบในคลัสเตอร์ของคุณ สิ่งนี้ให้มุมมองเกี่ยวกับสิ่งที่ผู้โจมตีสามารถทำได้หากพวกเขาสามารถประนีประนอมพ็อดได้อาจผ่านช่องโหว่ของซอฟต์แวร์ สิ่งนี้อาจเปิดเผยช่องโหว่ได้มากขึ้น
ตัวอย่างไฟล์ job.yaml กำหนดงานที่จะเรียกใช้ kube-hunter ในพ็อดโดยใช้การตั้งค่าการเข้าถึงพ็อด kubernetes เริ่มต้น (คุณอาจต้องการแก้ไขคำจำกัดความนี้เช่นการทำงานเป็นผู้ใช้ที่ไม่ใช่รูทหรือทำงานในเนมสเปซที่แตกต่างกัน)
kubectl create -f ./job.yamlkubectl describe job kube-hunterkubectl logs <pod name> หากต้องการอ่านแนวทางการบริจาคคลิกที่นี่
ที่เก็บนี้มีอยู่ภายใต้ Apache License 2.0