CALDERA
MITRE์์ ๊ฐ๋ฐํ ์ฌ์ด๋ฒ ๋ณด์ ํ๋ ์์ํฌ๋ก ๋ค์ํ ๊ณต๊ฒฉ(๋ฐฉ์ด๋ ๊ฐ๋ฅ) ์๋ฎฌ๋ ์ด์
์ ํ
์คํธํด๋ณผ ์ ์๋ค.
์ฌ์ฉํ๋ค๋ณด๋ฉด ์์ ์ค๋ฅ๋ค์ด ์๊ธดํ์ง๋ง ๋๋ถ๋ถ ํฐ ํ์์๋ ๋ฌธ์ ์๋ ์์ค์ด๊ณ , ์น ์ธํฐํ์ด์ค๋ถํฐ REST API ์ ๊ณต๊น์ง ๋ค์ํ ๋ฐฉ์์ ํตํด ๊ณต๊ฒฉ์ ํ
์คํธํด๋ณผ ์ ์๋ C2๋ฅผ ์ฝ๊ฒ ์ด์ฉํ ์ ์๋ค. ๋ํ ๋ค์ํ ํ๋ฌ๊ทธ์ธ ๋ฑ์ ํตํด ์ฝ๊ฒ ๊ธฐ๋ฅ์ ํ์ฅ ๊ฐ๋ฅํ๋ค.
๋จ์ ์ด๋ผ๋ฉด Agent๋ฅผ ์ด๋ฏธ ํผํด์ ๋จ๋ง๊ธฐ์๊ฒ ์ค์นํ ์ํ๋ก ๊ณต๊ฒฉ์ด ์งํ๋๋๋งํผ ๋คํธ์ํฌ ์์ ๊ณต๊ฒฉ์ด๋ ์ด๊ธฐ ์ ๊ทผ (Initial Access) ๋ถ๋ถ์ ์คํตํ ํํ๋ก ์งํ๋ผ Endpoint ์ค์ฌ์ ๊ณต๊ฒฉ ์๋ฎฌ๋ ์ดํฐ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์ด ์ค์์๋ CTID Adversary Emulation Library์์ ์ ๋ฆฌ๋ APT29, FIN6 ๋ฑ ์ ๋ช
ํ ๊ณต๊ฒฉ ๊ทธ๋ฃน์ ๊ณต๊ฒฉ ๋ฐฉ์์ CALDERA์์ ๊ทธ๋๋ก ๊ตฌํ ๊ฐ๋ฅํ EMU ํ๋ฌ๊ทธ์ธ์ด ์กด์ฌํ๋ค.
์นผ๋ฐ๋ผ ํ๋ ์์ํฌ๋ ์๋ฎฌ๋ ์ด์
์ ํตํด ๊ณต๊ฒฉ์๋ค์ ๊ฐ์์ผ๋ก ์ค์ ํ๊ณ ์ด๋ฅผ ํ์ง ๋ฐ ๋์ํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋์ต๋๋ค. ์
์์ ๋ชฉ์ ์ ์ฌ์ฉ์ ๊ธํด์ฃผ์๊ณ ์ด์ ๋ํ ๋ฒ์ ์ฑ
์์ ์จ์ ํ ๋ณธ์ธ์๊ฒ ์์ต๋๋ค
Install
์ค์น ๋ฐฉ๋ฒ์ ํด๋น github์ ์์ธํ ์ค๋ช
๋ผ์๋ค. (๋์ปค ๋ฐฉ์๋ ์ง์ํ๋ค)
Linux๋ MacOS๊ธฐ๋ฐ์ Python, GoLang ๋ฑ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํ์๋ Ubuntu 22.04.03 LTS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑํ๋ค.
โข
์ค์น ๋ช
๋ น์ด
# git, pip3 ์ค์น๊ฐ ์๋ผ์์ ๊ฒฝ์ฐ
sudo apt install git
sudo apt install python3-pip
# ํ์X Go lang ์ค์น
sudo apt install golang-go
Bash
๋ณต์ฌ
git clone https://github.com/mitre/caldera.git --recursive
cd caldera
pip3 install -r requirements.txt
Bash
๋ณต์ฌ
โข
์คํ
python3 server.py --insecure
Bash
๋ณต์ฌ
Run
์ค์น ์ดํ http://localhost:8888 ๋ก ์ ์ํด red/admin ๊ธฐ๋ณธ ์์ด๋/๋น๋ฐ๋ฒํธ๋ก ์ ์ํ๋ฉด ๋๋ค.
Q: Caldera ๋ก๊ทธ์ธ์ด ์๋ผ์!
A: caldera/conf/loacl.yml ํ์ผ ์ตํ๋จ์ ๊ณ์ ์ ๋ณด๋ฅผ ํ์ธ
ํ๋ฌ๊ทธ์ธ ์ค Training ํ๋ฌ๊ทธ์ธ์ด ์์ด ์ด๋ฅผ ํตํด ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ธฐ๋ฅ๋ค์ ํ
์คํธํด๋ณผ ์ ์๋ค.
ํธ๋ ์ด๋ ํญ์ CTF ํ์์ผ๋ก ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ๋๋ฉด FLAG๋ฅผ ํ๋ํ ์ ์๊ณ ๋ชจ๋ Flag๋ฅผ ํ๋ํ๋ฉด ํด๋น ๋ด์ญ์ ์ ์ถํด ๊ด๋ จ Certification์ ๋ฐ์ ์ ์๋ ๊ฒ์ผ๋ก ์๊ณ ์๋ค.
Emu Plugin Enable
๊ธฐ์กด ์นผ๋ฐ๋ผ ์คํ ํ๋ฌ๊ทธ์ธ์ ๋ณด๋ฉด ํดํน๊ทธ๋ฃน๋ค์ ์๋ฎฌ๋ ์ดํ
ํ ์ ์๋ Emu ํ๋ฌ๊ทธ์ธ์ด ์๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
์นผ๋ฐ๋ผ ์ค์น ํด๋์ caldera/conf/local.yml ํ์ผ์ plugins ํํธ์ -emu ๋ฅผ ์ถ๊ฐํด์ค๋ค.
(insecure ๋ชจ๋๋ก ์นผ๋ฐ๋ผ๋ฅผ ์คํํ ๊ฒฝ์ฐ default.yml ์ ์์ ํด์ผ ํ๋ค. ๊ทธ๋ฅ ๋๋ค ์ถ๊ฐํ๋ ๊ฒ ๋ง์ด ํธํ๋ค)
์ดํ ์นผ๋ฐ๋ผ๋ฅผ ์ฌ์คํํ๋ฉด CTID์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถ๋ก๋ถํฐ ์๋ฎฌ๋ ์ด์
๊ณต๊ฒฉ ๋ฐ์ดํฐ๋ค์ ๋ฐ์์จ๋ค.
python3 server.py --fresh
Bash
๋ณต์ฌ
zlib1g / pyminizip error
์ผ๋ถ ํดํน ๊ทธ๋ฃน๋ค์ ์ถ๊ฐ์ ์ธ ํ์ด๋ก๋๊ฐ ํ์ํด emu์์ ๋ค์ ์์ฝ๋ ์คํ์ ํตํด payloads ๋๋ ํ ๋ฆฌ์ ๋ค์ด๋ฐ๋๋ค.
๋๋ถ๋ถ์ ํ์ผ๋ค์ ํดํน ๊ณต๊ฒฉ์ ์์ฃผ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ๋ค๋ก ๋ฐฑ์ ๋ฑ์ ํ์ง๋๊ฑฐ๋ ์
์ฉ๋ ์ ์์ผ๋ ์ทจ๊ธ์ ์ฃผ์ํ์
#curl ์์ ๊ฒฝ์ฐ ์ค์น
sudo apt install curl
#caldera ์ค์น ํด๋์์
cd /plugins/emu
./download_payloads.sh
Bash
๋ณต์ฌ
ADfind.zip password
์ดํ ์นผ๋ฐ๋ผ๋ฅผ ๋ค์ด๊ฐ๋ณด๋ฉด Emu ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ดํ Adversary ํญ์ ๊ด๋ จ ๋ชจ๋ธ๋ค์ด ์์ฑ๋ผ ๊ทธ๋๋ก ํ์ฉํ์ฌ ๋ชจ์ ๊ณต๊ฒฉ ์งํ์ด ๊ฐ๋ฅํ๋ค.