Playing with kctf,secure and scalable infrastructure for ctf competition 1
kctf atau singkatan dari kubernetes-ctf adalah sebuah tools orchestration untuk ctf infrastruktur,kctf sendiri di rintis oleh google project
kegunaan kctf sendiri sangat lengkap,mulai dari securty,availability, dan scalability selain itu cara kerja kctf yang menggunakkan sanbox
yang berfungsi untuk mengisolasi
setiap pemain dan chall yang ada
Sanbox
Kctf menggunakkan sanbox untuk setiap chall yang disetup,sanbox yang digunnakan untuk mengisolasi setiap challnya adalah nsjail secara singkatnya nsjail yang bertugas buat isolasi linux yang berisi chall
“terus apa bedanya sama docker yang sama sama ngisolasi
?”
Kerennya disini bray,si kctf ini bakal ngebagi biar 1 chall cuman buat 1 orang,karena kctf bakal ngebuat sanbox
baru setiap ada tcp koneksi baru
misal nih ada chall A yang gak sengaja di rusak sama si bebek,nah pas orang lain mau akses challnya challnya bakal ok ok aja,gak ada yang rusak karena yang dirusak sama si bebek itu sanboxnya punya dia,jadi setiap tcp koneksi bakal punya challnya sendiri jadi misalkan challnya rusak atau pesertanya mau ganggu peserta lain bakal bisa terhindar
Deployment
Kctf walaupun berbasis kubernetes tapi gak butuh pengalaman kubernetes,kctf sudah didesign untuk umum,commandnya sudah build-in jadi tidak perlu cek dokumentasi kubernetes setiap mau deploy
tapi jika kamu memang kubernetes professional kctf juga bisa di operasikan seperti kubernetes pada umumnya,misalnya menggunakkan manifest untuk deploymen servicenya
Challenge support
Kctf support untuk pwd,web, dan xss kalau dari pengalaman saya baru coba yang web
untuk web kctf bisa di setting untuk web app(apache+php) atau web service(golang,nodejs)
PoC
untuk PoC berbentuk video sudah pernah saya buat di fb saya,tapi untuk lebih jelasnya saya jabarkan disini saja
pertama enable umask
umask a+rx
- terus install dependencies,dependenciesnya ada
1 2 3 4 5
xxd wget curl netcat docker
sesuaikan sama distro yang dipakai,kalau sudah install skip aja
enable user namespace
echo 'kernel.unprivileged_userns_clone=1' | sudo tee -a /etc/sysctl.d/00-local-userns.conf
terus restart procpsnyasudo service procps restart
- install kctf
1 2 3
mkdir ctf-directory && cd ctf-directory curl -sSL https://kctf.dev/sdk | tar xz source kctf/activate
buat local
cluster
kctf cluster create local-cluster --start --type kind
- buat test chall
1 2
kctf chal create chall-test --template web` cd chall-test
disana ada
challenge.yaml
sebagai manifestnya1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
apiVersion: kctf.dev/v1 kind: Challenge metadata: name: chall-test spec: deployed: true powDifficultySeconds: 0 network: public: false ports: - protocol: "HTTPS" targetPort: 1337 healthcheck: # TIP: disable the healthcheck during development enabled: true
bisa dilihat untuk manifestnya,seperti nama challnya lalu port yang dituju,lanjut start challnya
kctf chal start
tunggu beberapa menit,karena kctf sedang membuild image,kalau sudah forward portnya biar bisa diakseskctf chal debug port-forward --local-port 2525
langsung buka ae port 2525 di lokal
disana kelihatan kalau kerenel yang dipake adalahNSJAIL
- check kctf
cd challenge
terus buka vscode disana dan mulai oprek oprek sendiri
Ref: https://google.github.io/kctf/
Comments powered by Disqus.