สคริปต์นี้มีจุดมุ่งหมายเพื่อระบุ ช่องโหว่การเพิ่มสิทธิ์ในท้องถิ่น (LPE) ช่องโหว่ที่มักเกิดจากปัญหาการกำหนดค่า Windows หรือแนวทางปฏิบัติที่ไม่ดี นอกจากนี้ยังสามารถรวบรวมข้อมูลที่เป็นประโยชน์สำหรับการแสวงหาผลประโยชน์และงานโพสต์การสำรวจ
หลังจากดาวน์โหลดสคริปต์และคัดลอกไปยังเครื่อง Windows เป้าหมายให้เรียกใช้โดยใช้หนึ่งในคำสั่งด้านล่าง
บันทึก
คุณ ไม่ จำเป็นต้องโคลนพื้นที่เก็บข้อมูลทั้งหมด ไฟล์ PrivescCheck.ps1 เป็นสคริปต์ PowerShell แบบสแตนด์อโลนที่มีรหัสทั้งหมดที่กำหนดโดย PrivescCheck ในการรัน
สำคัญ
ในคำสั่งด้านล่าง . แรก (DOT) ใช้สำหรับ "การจัดหาจุด" สคริปต์เพื่อให้สามารถใช้ฟังก์ชันและ cmdlets ใน ขอบเขตปัจจุบัน (ดูคุณสมบัติการจัดหา PowerShell DOT)
ระบุประเด็นสำคัญอย่างรวดเร็วเช่นช่องโหว่การเพิ่มสิทธิ์ในท้องถิ่น
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "ระบุปัญหาที่สำคัญ แต่ยังรวบรวมข้อมูลเพิ่มเติมและบันทึกผลลัพธ์เพื่อรายงานไฟล์ที่อ่านง่าย
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "ทำการตรวจสอบเพิ่มเติมและตรวจสอบและบันทึกผลลัพธ์ลงในรายงานที่มนุษย์อ่านได้ แต่ยังรวมถึงไฟล์ที่อ่านได้ด้วยเครื่องซึ่งสามารถแยกวิเคราะห์ได้ในภายหลังสำหรับการสร้างรายงานอัตโนมัติ
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " การตรวจสอบทั้งหมดที่ดำเนินการใน privesccheck มี ประเภท ค่านี้และธงที่ระบุไว้ในบรรทัดคำสั่งจะพิจารณาว่าจะเรียกใช้หรือไม่
การตรวจสอบ Base ประเภทจะถูกดำเนินการเสมอเว้นแต่สคริปต์จะเรียกใช้เป็นผู้ดูแลระบบ พวกเขาส่วนใหญ่มีวัตถุประสงค์เพื่อระบุช่องโหว่การเพิ่มสิทธิพิเศษหรือปัญหาสำคัญอื่น ๆ
การตรวจสอบประเภท Extended สามารถดำเนินการได้เฉพาะในกรณีที่ระบุตัวเลือก -Extended บนบรรทัดคำสั่ง พวกเขามีจุดประสงค์หลักสำหรับการให้ข้อมูลเพิ่มเติมที่อาจเป็นประโยชน์สำหรับการพัฒนาประโยชน์หรือโพสต์การสำรวจ
การตรวจสอบ Audit ประเภทสามารถดำเนินการได้เฉพาะในกรณีที่ตัวเลือก -Audit ถูกระบุไว้ในบรรทัดคำสั่ง พวกเขามีจุดประสงค์หลักสำหรับการให้ข้อมูลที่เกี่ยวข้องในบริบทของการตรวจสอบการกำหนดค่า
การตรวจสอบประเภท Experimental สามารถดำเนินการได้เฉพาะในกรณีที่ตัวเลือก -Experimental ถูกระบุไว้ในบรรทัดคำสั่ง สิ่งเหล่านี้เป็นการตรวจสอบที่ไม่เสถียรซึ่งต้องการงานเพิ่มเติม ใช้พวกเขาด้วยความระมัดระวัง
โดยค่าเริ่มต้นนโยบายการดำเนินการของ PowerShell ถูกกำหนด Restricted ในลูกค้าและ RemoteSigned บนเซิร์ฟเวอร์เมื่อกระบวนการ powershell.exe ใหม่เริ่มต้นขึ้น นโยบายเหล่านี้บล็อกการดำเนินการของสคริปต์ (ไม่ได้ลงนาม) แต่พวกเขาสามารถแทนที่ภายในขอบเขตปัจจุบันดังนี้
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1อย่างไรก็ตามเคล็ดลับนี้ไม่ทำงานเมื่อมีการบังคับใช้นโยบายการดำเนินการผ่าน GPO ในกรณีนี้หลังจากเริ่มเซสชัน PowerShell ใหม่คุณสามารถโหลดสคริปต์ดังนี้
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-Expressionวิธีทั่วไปในการหลีกเลี่ยงโหมดภาษาที่ จำกัด ประกอบด้วยการเริ่มต้น PowerShell เวอร์ชัน 2 เนื่องจากไม่ได้ใช้การป้องกันนี้ ดังนั้นส่วนสำคัญของความพยายามในการพัฒนาจะรักษาความเข้ากันได้นี้
บันทึก
แม้ว่า PowerShell เวอร์ชัน 2 จะยังคงเปิดใช้งานโดยค่าเริ่มต้นใน Windows เวอร์ชันล่าสุด แต่ก็ไม่สามารถทำงานได้หากไม่มี. NET Framework เวอร์ชัน 2.0 ซึ่งต้องใช้การติดตั้งด้วยตนเอง
หากคุณเรียกใช้สคริปต์นี้ภายในเซสชัน MeterPreter คุณอาจได้รับข้อผิดพลาด "หมดเวลา" Metasploit มีค่า "เวลาตอบสนอง" ซึ่งตั้งค่าเป็น 15 วินาทีโดยค่าเริ่มต้น แต่สคริปต์นี้ใช้เวลามากขึ้นในการทำงานในสภาพแวดล้อมส่วนใหญ่
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out. เป็นไปได้ที่จะตั้งค่าที่แตกต่างกันด้วยตัวเลือก -t ของคำสั่ง sessions (เอกสาร) ในตัวอย่างต่อไปนี้การหมดเวลา 2 นาทีจะถูกตั้งค่าสำหรับเซสชันด้วย ID 1
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"