ระบุสาขารีจีสทรีผู้ใช้ที่โหลดจากระยะไกล


-1

ฉันรู้แล้ว HKCU คือ การอ้างอิง ไปที่ HKU\<SID> ของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน

ฉันจะทราบได้อย่างไรว่าโปรไฟล์ผู้ใช้ใดที่ถูกอ้างอิงโดยอินสแตนซ์ปัจจุบันของ HKCU? ฉันสามารถกำหนดสิ่งนี้จากพรอมต์คำสั่งระยะไกลได้หรือไม่

ฉันต้องแก้ไขการตั้งค่าในผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน HKCU สาขาของ Registry บนพีซี Windows 7 Pro ระยะไกล น่าเสียดายที่ฉันไม่สามารถเชื่อมต่อโดยใช้ฟังก์ชัน Remote Registry ใน regedit.exe. ฉันสามารถเข้าถึงพรอมต์คำสั่งระยะไกลผ่านทาง psexec .


มีเคล็ดลับมากมายในบทความนี้ รับชื่อผู้ใช้จากค่า HKEY_USERS ที่ StackOverflow
JosefZ

ขอบคุณ ฉันตรวจสอบคำถามนั้น แต่น่าเสียดายที่ไม่ได้ตอบคำถามของฉันเกี่ยวกับวิธีการคิดออก ที่ สาขาจาก HKU ถูกโหลดเข้าสู่ HKCU
Twisty Impersonator

คำตอบ:


1

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

มีการเข้าถึง psexecถ้าคุณมีอยู่ในมือ handle.exe (เช่นจาก sysinternals) คุณสามารถลอง

handle .log1

เพื่อแสดง log ไฟล์ที่เกี่ยวข้องกับรังผึ้งแบบเปิด .dat ไฟล์ รอบรู้เรื่อง .datกุญแจใต้

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

ควรชี้ไปที่ sid ที่ค้นหา


ฉันจะลองทำสิ่งนี้ แต่ฉันสนใจวิธีการระบุตัวตนจากการตรวจสอบรีจิสทรี คนเดียว .
Twisty Impersonator

0

นี่คืออุปทานของฉัน: วิธีการ SID บน a สองวิธี คอมพิวเตอร์เฉพาะที่ XP และ Win7 ที่เพิ่ม ชื่อผู้ใช้ จากแหล่งที่แตกต่างกันสำหรับการตรวจสอบ

วิธีการทำงานของสคริปต์: ความคิดที่สำคัญออกมาจากความรู้ความเข้าใจว่า:

# 1 . กลุ่มผู้ใช้โปรไฟล์ ( HKEY_CURRENT_USER, abbr HKCU ) ติดตั้งในรีจิสทรีเมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์และ HKCU เป็นชื่อเล่น (นามแฝง) สำหรับเท่านั้น HKEY_USERS\<SID> รีจิสตรีคีย์ที่ไหน <SID> abbreviates ตัวระบุความปลอดภัย (SID) สำหรับบัญชีของผู้ใช้

# 2 . หนึ่งสามารถดูรายการของกลุ่มรีจิสทรีทั้งหมดที่มีอยู่ในปัจจุบันภายใต้ชื่อใด ๆ เป็นค่าในคีย์รีจิสทรีต่อไปนี้ ชื่อค่าที่นี่สร้างเส้นทางรีจิสทรีภายใน (และมี <SID> สำหรับ subpath ภายใต้ HKEY_USERS ) และข้อมูลค่าเป็นเส้นทางไปยังไฟล์สนับสนุนกลุ่ม (และไฟล์สนับสนุนของผู้ใช้ปัจจุบันอยู่เสมอ ntuser.dat ): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

# 3 . สารบรรณของ ชื่อผู้ใช้ และ <SID> สามารถพบได้โดย WMIC.

# 3a . (สุจริตมีคีย์รีจิสทรีเช่นกัน แต่คีย์นี้ถูกละเว้นในสคริปต์สำหรับปัจจุบัน: สันนิษฐานว่าเป็น ทำ ) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

สั้น คำอธิบายขั้นตอน : สคริปต์ค้นหาการจับคู่ระหว่างสามแหล่งที่กล่าวถึงข้างต้นโดยสัจพจน์ # 1 และ # 3 เสมอกับรายการใน hivelist รหัส (เปรียบเทียบ # 2 )

ลักษณะเอาต์พุตของสคริปต์มีลักษณะอย่างไรและ เกณฑ์การจับคู่

บทที่ 0 - . HKLM ... \ Winlogon เป็นค่าเริ่มต้น . ไม่มีการแสวงหา ก้องเท่านั้น %USERNAME% ตัวแปรสภาพแวดล้อมและค่าบางอย่างที่เกี่ยวข้องกับผู้ใช้จากการติดตามรีจิสตรีคีย์: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

บทที่ 1 - . wmic SID = & gt; HKLM ... \ hivelist . แสวงหาทุกสิ่ง SID จาก WMIC ข้อความค้นหา ( # 3 ) สำหรับการจับคู่ในชื่อค่าของ # 2 .

บทที่ 2 - . HKU SID = & gt; HKLM ... \ hivelist . แสวงหาทุกสิ่ง SID จาก HKEY_USERS\<SID> ( # 1 ) สำหรับการจับคู่ในชื่อค่าของ # 2 . ให้การจับคู่ในเชิงบวกที่ผิดพลาดสำหรับ <SID>_Classes

บทที่ 3 - . % USERNAME% = & gt; HKLM ... \ hivelist . แสวงหา %USERNAME% สำหรับการจับคู่ในข้อมูลค่าของ # 2 . สามารถอัปเดตเพื่อค้นหาชื่อผู้ใช้ทุกคนของ # 3 แต่จับคู่โดย SID ถือว่าน่าเชื่อถือมากขึ้น

บทที่ 4 - . ProfileList SID = & gt; HKLM ... \ hivelist (ทำ) : แสวงหาทุกคน SID จาก ProfileList รีจิสตรีคีย์ ( # 3a ) สำหรับการจับคู่ในชื่อค่าของ # 2 .

@ECHO OFF >NUL
@rem SETLOCAL enableextensions enabledelayedexpansion
@echo .
@echo . HKLM^\...^\Winlogon defaults:
@echo .
@echo        UserName     "%USERNAME%" ^(environment^)
call :regquery DefaultUserName "   "
call :regquery DefaultDomainName "                "
call :regquery AltDefaultUserName ""
call :regquery AltDefaultDomainName "             "

@echo .
@echo . wmic SID =^> HKLM^\...^\hivelist:
@echo .
@echo user "%USERNAME%" ^(environment^)
@wmic USERACCOUNT GET name, sid >getvmic.txt
if EXIST getvmic.txt (
  for /F "tokens=1,2" %%G in ('type getvmic.txt') do (
    for /F "tokens=1,2*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" /v ^\REGISTRY^\USER^\%%H 2^>NUL ^| FIND /I "%%H"') do (
      if "%%M"=="" ( 
        @echo OFF >NUL
    ) else (
        for /F "tokens=4* delims=^\" %%P in ("%%M") do (
        @echo user "%%G" ^(wmic^)
        @echo user "%%P" ^(hivelist^)
        @echo SID  "%%H" ^(wmic^) 
        for /F "tokens=3* delims=^\" %%S in ( "%%K") do @echo SID  "%%S" ^(hivelist^)
) )
      for /F "tokens=1,2* delims=^\" %%P in ('reg query ^"HKU^" 2^>NUL ^| FIND /I "%%H"') do (
        If /I "%%Q"=="%%H" @echo SID  "%%Q" ^(HKU^)
) ) ) )

@echo .
@echo . HKU SID =^> HKLM^\...^\hivelist:
@echo .
  for /F "tokens=1,2* delims=^\" %%G in ('reg query ^"HKU^" 2^>NUL') do (
    for /F "tokens=1,2*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" /v ^\REGISTRY^\USER^\%%H 2^>NUL ^| FIND /I "%%H"') do (
      if "%%M"=="" ( 
        @echo OFF >NUL
      ) else (
        for /F "tokens=4* delims=^\" %%P in ("%%M") do (
        if "%%P"=="%USERNAME%" (
          @echo user "%USERNAME%" ^(environment^)
          @echo user "%%P" ^(hivelist^)
          if EXIST getvmic.txt (
            for /F "tokens=1,2" %%W in ('type getvmic.txt ^| FIND /I "%%P"') do (
              @echo user "%%W" ^(wmic^)
              if "%%X"=="%%H" @echo SID  "%%X" ^(wmic^)
          ) ) 
          @echo SID  "%%H" ^(HKU^)
          for /F "tokens=3* delims=^\" %%S in ( "%%K") do @echo SID  "%%S" ^(hivelist^) 
) ) ) ) ) 

@echo .
@echo . %%USERNAME%% =^> HKLM^\...^\hivelist:
@echo .
@echo user "%USERNAME%" ^(environment^)
for /F "tokens=*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" 2^>NUL ^| FIND /I "%USERNAME%" ^| FIND /I "ntuser.dat"') do (
  for /F "tokens=1,3,7 delims=^\" %%L in ("%%K") do (
    @echo user "%%N" ^(hivelist^)
  for /F %%S in ("%%M") do (
    for /F "tokens=1,2* delims=^\" %%T in ('reg query ^"HKU^" 2^>NUL ^| FIND /I "%%S"') do (
      if /I "%%S"=="%%U" (
        if EXIST getvmic.txt (
          for /F "tokens=1,2" %%W in ('type getvmic.txt ^| FIND /I "%%U"') do (
            @echo user "%%W" ^(wmic^)
            @echo SID  "%%X" ^(wmic^)
        ) )
      @echo SID  "%%U" ^(HKU^)
) ) 
    @echo SID  "%%S" ^(hivelist^)
) ) )
goto :eof

:regquery
for /F "tokens=1,3*" %%S in ('reg query ^"HKLM^\SOFTWARE^\Microsoft^\Windows NT^\CurrentVersion^\Winlogon^" /v %1 2^>NUL ^| FIND /I "%1"') do (
@echo %%S %~2 "%%T" ^(Winlogon^)
)
exit /B

หวังว่าจะสามารถใช้งานได้แม้ว่าฉันจะไม่ทราบว่าข้อมูลรับรองผู้ใช้ใด psexec ทำงานภายใต้


มันดูน่าสนใจ! คุณสามารถให้ภาพรวมสั้น ๆ ของ "ภาษาอังกฤษธรรมดา" ว่าสคริปต์นี้ทำอะไรเพื่อให้บรรลุวัตถุประสงค์
Twisty Impersonator

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