รัน CTF บน macOS (Kali ↔ Mac)
ทำ CTF บน MacBook ได้จริง แต่ต้องเข้าใจ 3 อย่าง: (1) เครื่องมือส่วนใหญ่ลงผ่าน Homebrew/pipx แล้วคำสั่ง 'เหมือน Kali เป๊ะ' (2) คำสั่ง terminal พื้นฐานบางตัวต่างกันเพราะ macOS ใช้ BSD ไม่ใช่ GNU (sed, grep -P, base64, md5, timeout, date) (3) เครื่องมือ Linux-only บางตัว (aircrack monitor mode, linpeas เวอร์ชันรัน local, บาง exploit) ต้องรันผ่าน Docker หรือ Kali VM บทนี้คือคู่มือแปลง Kali → Mac ให้ครบ
1. รัน CTF บน Mac ได้แค่ไหน? (native / Docker / VM)
หัวใจ: เมื่อติดตั้งเครื่องมือแล้ว คำสั่งเหมือน Kali ทุกอย่าง — nmap, ffuf, sqlmap, hashcat, python3 exploit.py พิมพ์เหมือนกันเป๊ะ สิ่งที่ต่างคือวิธีติดตั้งและเครื่องมือบางตัวที่ macOS รันไม่ได้ ตารางนี้บอกว่าตัวไหนอยู่กลุ่มไหน
| กลุ่ม | เครื่องมือ | รันบน Mac ยังไง |
|---|---|---|
| ✅ Native (brew) | nmap, ffuf, gobuster, sqlmap, nikto, hydra, john, hashcat, binwalk, exiftool, radare2, wireshark, masscan, jq | brew install แล้วใช้ได้เลย คำสั่งเหมือน Kali |
| ✅ Native (pipx) | impacket, pwntools, volatility3, netexec (nxc), certipy, bloodhound-python, arjun, name-that-hash, wafw00f | pipx install แล้วใช้ได้เลย |
| ✅ Native (cask/GUI) | Ghidra, Burp Suite, Wireshark GUI, BloodHound | brew install --cask — เป็น Java/Electron รันได้ทั้ง Intel/Apple Silicon |
| ⚠️ ใช้ได้แต่มีลูกเล่น | gdb+pwndbg (ต้อง codesign), metasploit, aircrack-ng | รันได้แต่ยุ่งยาก — หลายคนเลือก Docker/VM แทน |
| ❌ ต้อง Docker/Kali VM | aircrack monitor mode (Wi-Fi built-in ทำไม่ได้), บาง kernel exploit, tool ที่ผูกกับ glibc/Linux | รันใน Kali container/VM (ดูหัวข้อ 4) |
| ℹ️ ไม่เกี่ยงว่า Mac/Kali | linpeas/winpeas, kernel exploit บน target | รันบน 'เป้าหมาย' ไม่ใช่เครื่องเรา — OS เราไม่สำคัญ |
2. ติดตั้ง toolkit บน Mac (Homebrew + pipx)
- 1ติดตั้ง Homebrew (package manager ของ Mac เทียบเท่า apt): รันคำสั่งจาก brew.sh
- 2ติดตั้งเครื่องมือหลักผ่าน brew ทีเดียว (ดู code ด้านล่าง)
- 3ติดตั้ง pipx สำหรับ tool ที่เป็น Python (impacket, pwntools ฯลฯ) — แยก env ไม่ชนกัน
- 4ติดตั้ง GNU coreutils เพื่อให้คำสั่ง terminal เหมือน Linux (แก้กับดัก BSD — ดูหัวข้อ 3)
- 5ติดตั้ง Docker Desktop ไว้สำหรับรัน Kali/Linux-only tools
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Apple Silicon (M1/M2/M3): เพิ่ม brew เข้า PATH
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
source ~/.zprofile# recon / web / network
brew install nmap masscan ffuf gobuster feroxbuster sqlmap nikto hydra wfuzz jq ripgrep
# crypto / rev / forensics / stego
brew install hashcat john binwalk exiftool radare2 foremost tesseract
brew install --cask ghidra wireshark burp-suite
# GNU userland (สำคัญ — ดูหัวข้อ 3)
brew install coreutils gnu-sed grep gawk findutils wget
# Python tools แบบแยก env
brew install pipx && pipx ensurepath
pipx install impacket
pipx install pwntools
pipx install volatility3
pipx install netexec # crackmapexec ตัวใหม่ (nxc)
pipx install name-that-hash
pipx install arjun3. กับดัก BSD vs GNU — คำสั่งที่ต่างจาก Kali จริง
macOS ใช้เครื่องมือสาย BSD ส่วน Kali/Linux ใช้ GNU — หน้าตาชื่อคำสั่งเหมือนกันแต่ flag ต่างกัน คัดลอกคำสั่งจาก writeup (ที่เขียนบน Linux) มาวางบน Mac แล้ว error บ่อยเพราะเรื่องนี้ ตารางนี้คือจุดที่พังบ่อยสุด
| งาน | Kali/Linux (GNU) | macOS (BSD) — ที่ถูก |
|---|---|---|
| แก้ไฟล์ in-place | sed -i 's/a/b/' f | sed -i '' 's/a/b/' f (ต้องมี '' หลัง -i) |
| regex PCRE | grep -P 'x' f | grep ไม่มี -P → ใช้ ggrep -P หรือ grep -E |
| ถอด base64 | base64 -d | base64 -D หรือ base64 --decode |
| hash md5/sha256 | md5sum / sha256sum | md5 / shasum -a 256 |
| ตั้ง timeout | timeout 10 cmd | ไม่มี timeout → gtimeout 10 cmd |
| reverse บรรทัด | tac | ไม่มี tac → tail -r หรือ gtac |
| readlink -f | readlink -f path | ไม่มี -f → greadlink -f |
| date จาก epoch | date -d @1700000000 | date -r 1700000000 |
| date คำนวณ | date -d '+1 day' | date -v +1d |
| stat ขนาดไฟล์ | stat -c %s f | stat -f %z f |
| netcat listener | nc -lvnp 4444 | nc -lvn 4444 (BSD nc ไม่มี -p ตรงนี้/ไม่มี -e) |
coreutils gnu-sed grep gawk findutils แล้ว เพิ่ม gnubin เข้า PATH → คำสั่งจะเป็น GNU เหมือน Kali ทันที (sed, grep -P, timeout, tac ใช้ได้เลย) วางคำสั่งจาก writeup Linux ได้ตรงๆ# เพิ่มลง ~/.zshrc — ให้ GNU tools มาก่อน BSD ใน PATH
cat >> ~/.zshrc <<'EOF'
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/grep/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/gawk/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"
EOF
source ~/.zshrc
# ทดสอบ: ตอนนี้เป็น GNU แล้ว
sed --version | head -1 # ควรขึ้น (GNU sed)
timeout 1 sleep 5 # ใช้ได้แล้ว (ไม่ต้อง gtimeout)~/.zshrc ไม่ใช่ ~/.bashrc ส่วนใหญ่ syntax เหมือนกัน แต่ถ้า script ต้องการ bash แท้ๆ ให้ขึ้นต้นด้วย #!/usr/bin/env bash4. รัน Kali / Linux-only tools ด้วย Docker & VM
สำหรับ tool ที่รันบน Mac ไม่ได้ (wireless monitor mode, บาง exploit ที่ผูก Linux, หรืออยากได้ environment เหมือน writeup เป๊ะ) วิธีเร็วสุดคือ Kali ใน Docker — เปิดใน 1 คำสั่ง ส่วนงานที่ต้องแตะ hardware (USB Wi-Fi adapter) ต้องใช้ VM (UTM)
# ติดตั้ง Docker Desktop ก่อน: brew install --cask docker (แล้วเปิดแอป)
# ดึง Kali แล้วเข้า shell (mount โฟลเดอร์ปัจจุบันไว้แชร์ไฟล์)
docker run -it --rm -v "$PWD":/work -w /work kalilinux/kali-rolling
# ในคอนเทนเนอร์: ลงชุดเครื่องมือ
apt update && apt install -y kali-linux-headless # ชุดใหญ่
# หรือลงเฉพาะที่ต้องใช้: apt install -y seclists impacket-scripts# UTM = virtualization ฟรีสำหรับ Mac (Apple Silicon เร็วมาก)
brew install --cask utm
# โหลด Kali ARM64 pre-built image จาก kali.org/get-kali (เลือก 'Apple Silicon (UTM)')
# ใช้ VM เมื่อ: ต้องต่อ USB Wi-Fi adapter ทำ monitor mode / packet injection
# หรือรัน GUI tool ของ Kali / ต้องการ kernel Linux แท้5. Quick Reference — apt→brew & กับดักที่ต้องจำ
| บน Kali | บน Mac | หมายเหตุ |
|---|---|---|
| apt install X | brew install X | GUI app: brew install --cask X |
| apt search X | brew search X | หาแพ็กเกจ |
| pip install X | pipx install X | แยก env ต่อ tool |
| ~/.bashrc | ~/.zshrc | zsh เป็น default |
| sed -i | sed -i '' (BSD) / sed -i (ถ้าลง gnu-sed) | in-place edit |
| base64 -d | base64 -D / --decode | ถอด base64 |
| md5sum / sha256sum | md5 / shasum -a 256 | แฮชไฟล์ |
| timeout | gtimeout (จาก coreutils) | ตั้งเวลา |
| nc -e (bind shell) | ไม่มี -e บน BSD nc | ใช้ Docker/Kali หรือ nc.traditional |
- ลง GNU userland ก่อนเลย (coreutils gnu-sed grep gawk findutils) + ใส่ gnubin ใน PATH → วางคำสั่งจาก writeup Linux ได้ตรงๆ ไม่ต้องแปลง
- hashcat บน Apple Silicon ใช้ Metal GPU ได้ (
hashcat -Iดู device) — ช้ากว่าการ์ด NVIDIA แต่พอไหวสำหรับ CTF ทั่วไป - pwn/gdb ถ้าเจอโจทย์ binary exploitation หนักๆ ใช้ Docker (ubuntu/kali) จะตรงกับ libc ของโจทย์มากกว่า — pwntools บน Mac ใช้ต่อ remote ได้ปกติ
- wireless เกือบทั้งหมดต้อง Kali VM + USB Wi-Fi adapter — Wi-Fi ในตัว Mac ทำ monitor mode ไม่ได้
- เครื่องมือที่ 'รันบน target' (linpeas, kernel exploit) ไม่เกี่ยงว่าเครื่องเราเป็น Mac หรือ Kali
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้