รายชื่อบัญชีผู้ใช้ Windows ที่ซ่อนอยู่ / เสมือน


44

ฉันกำลังพยายามหาวิธีรับรายการบัญชีผู้ใช้ที่ครอบคลุมในระบบ Windows 7 รวมถึงบัญชีที่ซ่อนอยู่ บัญชีผู้ใช้โต้ตอบ ( >control userpasswords2) จะแสดงเฉพาะบัญชีผู้ใช้ปกติและแม้กระทั่งผู้ใช้และกลุ่มบรรณาธิการแสดงเฉพาะบัญชีผู้ใช้ปกติและมาตรฐานซ่อน / คนพิการเช่นดูแลระบบและบุคคลทั่วไป เลือกผู้ใช้หรือกลุ่มโต้ตอบมีการค้นหาตอนนี้ปุ่มที่ผู้ใช้ซึ่งรวมและกลุ่ม แต่อนิจจามันมีเนื้อหาเช่นเดียวกับดึง

ฉันกำลังมองหารายการที่ครอบคลุมมากขึ้นซึ่งรวมถึงบัญชีผู้ใช้ "ที่ซ่อนอยู่สุดยอด" / เสมือนเช่น TrustedInstaller (หรือเพื่อความถูกต้องมากขึ้นNT Service \ TrustedInstaller NT -ไม่ใช่ "โดเมน" ที่แตกต่างกัน)

ฉันตรวจสอบHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserListแล้ว แต่SpecialAccountsไม่มีคีย์

ฉันตรวจสอบHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListด้วยและแม้ว่าจะมีบัญชี SystemProfile, LocalService และ NetworkService แต่ไม่มีบัญชีอื่น ๆ (เช่น TrustedInstaller และ ilk)

TrustedInstaller นั้นมีความสับสนเล็กน้อยเนื่องจากเป็นผู้ใช้บริการและไฟล์ที่ปฏิบัติการได้ ฉันใช้มันเป็นตัวอย่างเพราะมันเป็น "ซ่อนสุด" ในที่ดูเหมือนจะไม่ปรากฏในรายชื่อผู้ใช้ประเภทใด (เป็นการทดลองฉันลองค้นหาทั้งรีจิสทรีเพื่อหา“ Trustedinstaller” เพื่อดูว่าฉันสามารถหาสถานที่ที่มีรายชื่อเป็นผู้ใช้ แต่ไม่พบเลย)

เพื่อให้ชัดเจนสิ่งที่ฉันกำลังมองหาคือรายการทั้งหมด บัญชีที่สามารถใช้ในฟิลด์อินพุตของผู้ใช้เช่นในกล่องโต้ตอบการอนุญาตหรือrunasอาร์กิวเมนต์


คำตอบ:


43

ฉันไม่คิดว่าจะมีรายการที่ดีที่สุดของบัญชีที่เป็นไปได้ทั้งหมด

มีชื่อประเภทต่าง ๆ ที่คุณสามารถใช้ในฟิลด์อินพุตของผู้ใช้เช่นในกล่องโต้ตอบการอนุญาต

อันดับแรกคือ Win32_Accounts มาตรฐานเพื่อรับรายการทั้งหมดเปิดเซสชัน PowerShell และเรียกใช้:

get-wmiobject -class "win32_account" -namespace "root\cimv2" | sort caption | format-table caption, __CLASS, FullName

เหล่านี้เป็นผู้ใช้ปกติกลุ่มและบัญชี builtin

ตั้งแต่ Vista มีคลาสใหม่ของบัญชีที่เรียกว่าบัญชีเสมือนเพราะพวกเขาจะไม่ปรากฏในเครื่องมือการจัดการตามปกติ บางครั้งเรียกว่าบัญชีบริการเช่นกันและมีอย่างน้อยสามประเภทเหล่านี้:

  • บัญชีบริการของ Windows

เนื่องจาก Vista ทุกบริการ windows มีบัญชีเสมือนที่เชื่อมโยงกับบริการถึงแม้ว่ามันจะทำงานภายใต้บัญชีผู้ใช้ที่แตกต่างกันและแม้ว่ามันจะไม่ทำงานเลยก็ตาม ดูเหมือนว่าNT Service\MSSQLSERVER

เพื่อรับรายการการใช้งานเหล่านั้น:

get-service | foreach {Write-Host NT Service\$($_.Name)}
  • IIS Application Pools

แต่ละแอปพลิเคชัน IIS ที่ทำงานภายใต้ ApplicationPoolIdentity จะทำงานภายใต้บัญชีพิเศษที่เรียกว่า IIS APPPOOL\NameOfThePool

สมมติว่าคุณมีเครื่องมือสคริปต์ IIS Management ติดตั้งอยู่คุณสามารถเรียกใช้:

Get-WebConfiguration system.applicationHost/applicationPools/* /* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
  • เครื่องเสมือน Hyper-V

บน Server 2008+ และ Windows 8+ คุณมี Hyper-V เครื่องเสมือนแต่ละเครื่องจะสร้างบัญชีเสมือนของตนเองซึ่งมีลักษณะดังนี้: NT VIRTUAL MACHINE\1043F032-2199-4DEA-8E69-72031FAA50C5

เพื่อรับรายการใช้:

get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id) - $($_.VMName)}

แม้ว่าบัญชีเหล่านี้จะไม่ได้รับการยอมรับในกล่องโต้ตอบการอนุญาตคุณสามารถใช้บัญชีเหล่านั้นกับ icacls.exe เพื่อตั้งค่าการอนุญาต

นอกจากนี้ยังมีกลุ่มพิเศษNT Virtual Machine\Virtual Machinesที่ไม่ปรากฏในที่อื่น บัญชีเครื่องเสมือนทั้งหมดเป็นสมาชิกของกลุ่มนี้ดังนั้นคุณสามารถใช้สิ่งนี้เพื่อตั้งค่าการอนุญาตสำหรับไฟล์ VM ทั้งหมด

ชื่อเหล่านี้เป็นภาษาเฉพาะเช่นในภาษาเยอรมันมีชื่อ NT Virtual Machine\Virtuelle Computer

  • Desktop Window Manager

กระบวนการ dvm.exe (ตัวจัดการหน้าต่างเดสก์ท็อป) ทำงานภายใต้ผู้ใช้ Windows Manager\DWM-1

อีกครั้งคุณไม่สามารถใช้ผู้ใช้ประเภทนี้ในกล่องโต้ตอบการอนุญาต เป็นไปไม่ได้ที่จะระบุสิ่งเหล่านี้อย่างใดอย่างหนึ่งเพราะมีอยู่ในแต่ละ 'เซสชันเดสก์ท็อป' ดังนั้นเมื่อใช้สองเซสชัน RDP คุณจะมีDWM-2และDWM-3นอกเหนือจากDVM-1นั้น ดังนั้นมีมากเท่าที่มีเดสก์ท็อป

  • ชื่อคอมพิวเตอร์

ในบางกรณีคุณสามารถใช้ชื่อคอมพิวเตอร์ในกล่องโต้ตอบการอนุญาตโดยปกติเมื่อเป็นส่วนหนึ่งของโดเมน Active Directory

  • ผู้ใช้เสมือนของ Windows Remoting

เมื่อใช้ PowerShell และ 'JEA (เพียงพอสำหรับการบริหาร)' และเชื่อมต่อกับเซิร์ฟเวอร์ที่มีเซสชันระยะไกล PS ผู้ใช้เสมือนชั่วคราวอาจถูกสร้างขึ้น

สิ่งเหล่านี้มีรูปแบบต่อไปนี้:

winrm virtual users\winrm va_x_computername_username

และ SID ที่ขึ้นต้นด้วย S-1-5-94-

'x' คือตัวเลขจำนวนเต็ม

บัญชีเหล่านี้สามารถใช้ได้เมื่อกำหนดสิทธิ์ NTFS แต่ฉันไม่ทราบวิธีแสดงรายชื่อผู้ใช้เสมือนที่เป็นไปได้ทั้งหมด

ในขณะที่อยู่ในเซสชั่น JEA คุณสามารถใช้whoamiเพื่อหาชื่อบัญชีปัจจุบัน

  • ในที่สุด:

แม้แต่รายการเหล่านี้ก็ไม่ได้ให้บัญชีทุกบัญชีที่เป็นไปได้

ตัวอย่างเช่นคุณสามารถสร้างกลุ่มแอปพลิเคชันFooBarPoolจากนั้นลบอีกครั้งคุณยังสามารถใช้IIS APPPOOL\FooBarPoolในกล่องโต้ตอบการอนุญาตดังนั้นจะต้องมีรายการภายในบางแห่ง


ดีมาก! แบบสอบถามคืนแรก“ผู้ใช้” พิเศษเช่นeveryone, restrictedฯลฯ และการอภิปรายของคุณNT Service\*บัญชีอธิบายอื่น ๆ TrustedInstallerเช่น คุณยังครอบคลุมถึงกรณีพิเศษที่แปลกใหม่มากขึ้น แต่มันก็ดูเหมือนว่าคนทั่วไปทุกคนจะได้รับการพิจารณา
Synetech

@Ahmed - ผู้ใช้คนไหน หากคุณมีปัญหาคุณควรสร้างคำถามใหม่และอธิบายปัญหาโดยละเอียดที่นั่น นี่ไม่ใช่สถานที่สำหรับมัน
ปีเตอร์ Hahndorf

ขอโทษฉันได้ลบความมุ่งมั่นของฉัน นี่คือคำถามของฉันถ้าอยากรู้
อาเหม็ด

3
สวัสดีรหัส PowerShell เพื่อแสดงรายการผู้ใช้ IIS App Pool ไม่ทำงานสำหรับฉันดังนั้นฉันจึงใช้Get-WebConfiguration system.applicationHost/applicationPools/addแทน
Tahir Hassan

1
คำตอบที่ดี มีข้อมูลเพิ่มเติมจาก MS ในบัญชีบริการที่นี่: docs.microsoft.com/en-us/windows/security/identity-protection/ ......
CJBS

10

นี่เป็นเพราะ TrustedInstaller เป็นบริการและไม่ใช่วัตถุ "ผู้ใช้" ด้วย Vista ขณะนี้บริการกลายเป็นหลักการรักษาความปลอดภัยและสามารถกำหนดสิทธิ์ได้

http://technet.microsoft.com/en-us/magazine/2007.06.acl.aspx


ใช่; นั่นคือสิ่งที่ฉันกำลังพูดถึง ฉันกำลังค้นหารายการที่ครอบคลุมของสิ่งต่าง ๆ ที่สามารถได้รับอนุญาตไม่ว่าจะเป็นผู้ใช้บริการหรือสิ่งที่มีคุณ มีรายการ“ ผู้รักษาความปลอดภัย” ทั้งหมดหรือไม่
Synetech

ฉันไม่คิดว่าจะมีวิธีใดที่จะเข้าถึง ACLs และค้นหารายการหลักการรักษาความปลอดภัยที่สมบูรณ์ ฉันไม่แน่ใจว่าทำไมคุณต้องการรายชื่อผู้รักษาความปลอดภัยทั้งหมดตั้งแต่แรก ในทางเทคนิคแล้ว Windows Modules Installer (ชื่อบริการของ TRUSTEDINSTALLER) จะทำงานภายใต้บัญชี Local SYSTEM
surfasb

4
> ฉันไม่แน่ใจว่าทำไมคุณต้องการรายชื่อผู้รักษาความปลอดภัยทั้งหมดตั้งแต่แรก ความอยากรู้ (ไม่มีใครมีอีกต่อไปในวันนี้…?)
Synetech

คุณสามารถชี้ความอยากรู้นั้นไปสู่ไลบรารี MSDN
surfasb

7
  1. ไปที่ไฟล์ใด ๆ บนฮาร์ดไดรฟ์ของคุณคลิกขวาและเลือกคุณสมบัติ
  2. ไปที่แท็บความปลอดภัยแล้วคลิก Edit

    แก้ไขการตั้งค่าความปลอดภัย

  3. คลิก Add...
  4. คลิก Advanced...

    เลือกผู้ใช้หรือกลุ่ม

  5. คลิกObject Types...และยกเลิกการเลือกGroupsจากนั้นคลิกOK

    ประเภทวัตถุ

  6. Find Nowคลิก สิ่งนี้จะแสดงรายการผู้ใช้ทั่วไปและผู้ใช้ระบบในตัว ("หลักการความปลอดภัยในตัว" ตามที่ Windows เรียกพวกเขา)

    หาตอนนี้

โปรดทราบว่าไม่สามารถใช้บัญชีทั้งหมดที่ปรากฏในหน้านี้ได้ในคำสั่งเรียกใช้เป็นถึงแม้ว่าจะสามารถใช้บัญชีทั้งหมดในกล่องโต้ตอบการอนุญาต


4
ฉันคุ้นเคยกับกล่องโต้ตอบนั้นและพูดถึงมันแล้วในคำถาม:“ find now” โปรดทราบว่าในขณะที่“ผู้ใช้” SYSTEM(หรืออย่างน้อยควรจะเป็น) ในการมี TrustedInstaller เป็นไม่ได้
Synetech

ขออภัยฉันคิดว่าคุณอ้างถึงfind nowปุ่มในแผงควบคุมของผู้ใช้และกลุ่มซึ่งคล้ายกัน แต่แตกต่างกันเล็กน้อย สำหรับความรู้ของฉันบัญชีเดียวที่ไม่ปรากฏที่นี่คือ TrustedInstaller นี่เป็นเพราะ Microsoft พยายามอย่างเต็มที่เพื่อป้องกันไม่ให้คุณทำอะไรกับบัญชี TrustedInstaller ฉันจะแจ้งให้คุณทราบหากฉันคิดถึงวิธีอื่นในการทำเช่นนี้
nhinkle

นั่นเป็นเหตุผลที่ฉันถาม ฉันสงสัยว่ามีผู้ใช้ที่ไม่มีเอกสารอื่น ๆ อยู่ ...
Synetech

มีบทความ Microsoft TechNet ที่มีข้อมูลเกี่ยวกับส่วนใหญ่ของพวกเขา แต่ TrustedInstaller ไม่ได้อยู่ที่นั่น support.microsoft.com/kb/243330
nhinkle

1
อย่าลืมตั้งค่าLocations...คอมพิวเตอร์ของคุณหากคุณอยู่ในโดเมน (แต่ต้องการคอมพิวเตอร์ของคุณเท่านั้น)
n611x007

4

จาก Windows Vista เป็นต้นไปบริการจะถือว่าเป็นผู้ใช้ นั่นคือ Security Identifier (SID) ถูกกำหนดให้กับทุกบริการ นี่ไม่ใช่เฉพาะบริการTrustedInstaller คุณสามารถดู SID ที่กำหนดให้กับบริการใด ๆ โดยใช้sc showsidคำสั่ง:

การใช้งาน: sc showsid [ชื่อ]

DESCRIPTION : แสดงสตริง SID ของบริการที่สอดคล้องกับชื่อที่กำหนดเอง ชื่ออาจเป็นของบริการที่มีอยู่หรือไม่มีอยู่

โปรดทราบว่าไม่จำเป็นต้องให้บริการมีอยู่ในระบบ ตัวอย่าง:

C:\> sc showsid TrustedInstaller
NAME: TrustedInstaller
SERVICE SID: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

หรือสำหรับบริการWindows Management Instrumentation ( Winmgmt):

C:\> sc showsid Winmgmt
NAME: Winmgmt
SERVICE SID: S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547

และในที่สุดสำหรับบริการปลอม:

C:\> sc showsid FakeService
NAME: FakeService
SERVICE SID: S-1-5-80-3664595232-2741676599-416037805-3299632516-2952235698

โปรดทราบว่า SID ทั้งหมดเริ่มต้นด้วยS-1-5-80โดยที่80ถูกมอบหมายให้กับSECURITY_SERVICE_ID_BASE_RIDหน่วยงานย่อย ยิ่งกว่านั้นการมอบหมายนี้เป็นแบบกำหนดค่าได้: ไม่มีการใช้ RID และ SID จะเหมือนกันในทุกระบบ (ดูข้อมูลอ้างอิงที่ส่วนท้ายของโพสต์นี้สำหรับข้อมูลเพิ่มเติม)

ตัวอย่างเช่นฉันจะกำหนดNT Service\Winmgmtบริการเขียนสิทธิ์ในบางไฟล์:

ป้อนคำอธิบายรูปภาพที่นี่

Windows ขีดเส้นใต้ชื่อWinmgmtเพื่อยืนยันว่าเป็นข้อมูลเฉพาะตัวที่ถูกต้อง:

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้คลิกตกลงและจากนั้นกำหนดสิทธิ์ในการเขียน:

ป้อนคำอธิบายรูปภาพที่นี่

นี่เป็นการยืนยันว่าชื่อบริการใด ๆ สามารถใช้เป็นข้อมูลเฉพาะตัวของผู้ใช้ได้ ดังนั้นฉันจะไม่เรียกพวกเขาว่าบัญชี "ซ่อนอาหารมื้อเย็น": D

สำหรับข้อมูลเพิ่มเติมโปรดอ่านบทความต่อไปนี้:


1
น่าสนใจมาก. ขอบคุณสำหรับข้อมูล!
Synetech

1

คุณสามารถใช้ NetQueryDisplayInformation API รวมกับการตรวจสอบระดับบิตบนธงข้อมูลผู้ใช้ ฉันมีความต้องการเหมือนกันดังนั้นฉันจึงทำโค้ดตัวอย่าง (แก้ไขจากแบบสอบถามกลุ่ม MSDN)

การตั้งค่าสถานะผู้ใช้ที่ฉันใช้คือ UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> สิ่งนี้ทำให้แน่ใจว่าเราได้รับบัญชีผู้ใช้มนุษย์บัญชีบุคคลต้องใช้รหัสผ่านเสมอ

รหัสการทำงานที่: http://www.cceye.com/list-system-normal-user-account-only/


โปรดขยายคำตอบของคุณเพื่อให้มีข้อมูลที่เกี่ยวข้องโดยตรงกับคำถามในมือ หากลิงค์นี้ไม่ทำงานคำตอบของคุณจะไม่เป็นประโยชน์
Mxx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.