Linux Enumeration
Linux Enumeration คือการเก็บข้อมูลระบบหลังได้ shell แรก เพื่อหาช่องทาง privilege escalation — ผู้ใช้, สิทธิ์, service, ไฟล์ตั้งค่าผิด, software เวอร์ชันเก่า บทนี้รวบรวมคำสั่ง manual enumeration ครบทุกหมวดอย่างเป็นระบบ พร้อมสิ่งที่ต้องมองหา (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)
1. หลักการ
หลังได้ shell แรก (มัก low-privilege) เป้าหมายคือยกระดับเป็น root การ enumerate อย่างเป็นระบบคือกุญแจ — เก็บข้อมูลทุกด้านแล้วมองหา misconfiguration หรือ ช่องโหว่ ที่นำไป root ทำ manual enumeration ควบคู่กับ automated (LinPEAS) เพราะบางอย่าง tool พลาด และ manual ช่วยเข้าใจระบบจริง
2. ข้อมูลระบบและผู้ใช้
# ระบบ + kernel (หา kernel exploit)
uname -a; cat /etc/os-release
cat /proc/version
hostname
# ผู้ใช้ปัจจุบัน + สิทธิ์
id; whoami
sudo -l # คำสั่งที่รันด้วย sudo ได้ (สำคัญมาก!)
# ผู้ใช้ทั้งหมด
cat /etc/passwd | grep -v nologin # user ที่ login ได้
cat /etc/group
ls -la /home/ # home directories
# ใครเคย login / กำลัง login
last; w; who
# เราอยู่ group ไหน (docker/lxd/sudo = น่าสนใจ)
groups3. ไฟล์และสิทธิ์
# SUID/SGID binaries (ดูหัวข้อ SUID/SGID)
find / -perm -4000 -type f 2>/dev/null # SUID
find / -perm -2000 -type f 2>/dev/null # SGID
# ไฟล์/dir ที่เขียนได้ทุกคน (world-writable)
find / -writable -type d 2>/dev/null
find / -perm -2 -type f 2>/dev/null
# ไฟล์ที่ user เราเป็นเจ้าของในที่แปลกๆ
find / -user $(whoami) 2>/dev/null | grep -vE '^/proc|^/sys'
# config ที่อาจมี credential
cat ~/.bash_history
ls -la ~/.ssh/
find / -name "*.conf" -o -name "*.config" 2>/dev/null | head
grep -riE 'password|passwd|pwd' /etc/ 2>/dev/null | head
cat /var/www/html/config.php 2>/dev/null # web config
# capabilities (ดูหัวข้อ Capabilities)
getcap -r / 2>/dev/null4. Process, service, cron, network
# process ที่รัน (โดยเฉพาะที่รันเป็น root)
ps aux | grep root
ps -ef --forest
# cron jobs (ดูหัวข้อ Cron Jobs)
cat /etc/crontab
ls -la /etc/cron.*
crontab -l
# service
systemctl list-units --type=service --state=running
ls -la /etc/systemd/system/
# network (port ที่เปิด → service ภายใน)
ss -tulpn; netstat -tulpn 2>/dev/null
# internal service ที่ bind 127.0.0.1 = น่าสนใจ (port forward)
# software เวอร์ชัน (หา exploit)
dpkg -l 2>/dev/null | head; rpm -qa 2>/dev/null | head5. Checklist สิ่งที่ต้องมองหา
- sudo -l — รันอะไรด้วย sudo ได้ → GTFOBins
- SUID/SGID แปลกๆ → GTFOBins (ดู SUID/SGID)
- capabilities (cap_setuid ฯลฯ) → privesc (ดู Capabilities)
- cron jobs ที่รัน script ที่เราเขียนได้ → ดู Cron/Writable Scripts
- writable PATH/script ที่ root รัน → PATH Hijacking
- kernel เก่า → kernel exploit (ดู Kernel Exploitation)
- credential ใน history/config/.ssh
- กลุ่มพิเศษ (docker/lxd) → container escape (ดู Docker Escape)
- NFS no_root_squash (ดู NFS)
- internal service (port localhost) → exploit + port forward
6. Quick Reference
- เริ่ม: id; sudo -l; uname -a
- SUID: find / -perm -4000; capabilities: getcap -r /
- cron: cat /etc/crontab, ls /etc/cron.*
- network: ss -tulpn (internal service)
- credential: ~/.bash_history, ~/.ssh, config files
- checklist: sudo/SUID/cap/cron/PATH/kernel/groups/NFS
- ทำคู่ LinPEAS (automated)
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติเพิ่งได้ shell แรกบนเป้าหมาย (เช่นผ่านช่องโหว่ web) มีแค่ Kali เปล่าๆ และทักษะพื้นฐาน ยังไม่รู้ว่าจะเริ่มตรงไหนก่อนเพื่อขึ้นเป็น root ทำตามลำดับนี้ทีละขั้น อย่ากระโดดข้าม
- 1พิมพ์ id ; whoami ; hostname ; uname -a ก่อนเสมอ เพื่อรู้ว่าตัวเองเป็นใคร สิทธิ์อะไร ระบบอะไร
- 2พิมพ์ sudo -l ทันที — ถ้ารันอะไรด้วย sudo ได้ (มี NOPASSWD หรือรู้ password) ให้ไปเช็ค GTFOBins ตาม binary นั้นทันที
- 3ถ้า sudo ไม่มีทาง พิมพ์ find / -perm -4000 -type f 2>/dev/null และ getcap -r / 2>/dev/null หา SUID/capability
- 4ถ้ายังไม่เจอ ให้พิมพ์ cat /etc/crontab และ ls -la /etc/cron.* ดู cron ที่ root รัน
- 5พิมพ์ find / -writable -type f 2>/dev/null | grep -vE '^/proc|^/sys' หาไฟล์ระบบที่เขียนได้
- 6พิมพ์ groups ดูว่าตัวเองอยู่ group docker/lxd ไหม และ cat /etc/exports ดู NFS no_root_squash
- 7ถ้าไม่มีอะไรเจอเลยจากขั้นตอนข้างบน ให้โหลด linpeas.sh มารันเพื่อสแกนซ้ำแบบครบทุกด้าน (อาจจับสิ่งที่มือพลาด)
- 8ระหว่างนี้เก็บ credential ที่เจอด้วย: cat ~/.bash_history และ ls -la ~/.ssh/
- 9ถ้าทุกอย่างข้างบนตันหมด ค่อยพิจารณา kernel exploit เป็นทางเลือกสุดท้าย (เสี่ยง crash)
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ตรวจตัวเอง/สิทธิ์เบื้องต้น | id, whoami, sudo -l | - | - |
| หา SUID/SGID/capability | find, getcap | - | gtfobins.github.io |
| หา cron/writable files | cat, ls, find -writable | - | - |
| enumeration อัตโนมัติเสริม | - | linpeas | - |
| monitor process แบบ real-time | - | pspy | - |
| หา credential ที่หลงเหลือ | grep, cat ~/.bash_history | - | - |
| หา exploit ตาม service/kernel version | searchsploit | - | exploit-db.com |
หัวข้อที่เชื่อมโยง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้