安全矩阵

 找回密码
 立即注册
搜索
查看: 410|回复: 0

域渗透之用户会话收集分析

[复制链接]

417

主题

417

帖子

2391

积分

金牌会员

Rank: 6Rank: 6

积分
2391
发表于 2023-12-10 10:41:11 | 显示全部楼层 |阅读模式
Qftmer Z2O安全攻防 2023-12-07 15:40 发表于北京

文章正文
查询远程计算机当前登录的用户
查询远程计算机当前登录的用户情况,可以通过以下几种API
o• RegistryKey
o• NetWkstaUserEnum
RegistryKey

1、介绍
Windows注册表,HKU记录了计算机当前登录的用户SID


HKU SIDVolatile Environment的属性USERNAME包含实际用户名


由于Windows存在远程注册表服务,可以远程访问注册表,所以可以通过该功能进行读取远程计算机当前登录的用户,从而定位用户登录的计算机
2、服务情况
Windows的RemoteRegistry Service服务默认启动类型,如下所示
o• 客户端默认关闭,启动类型-Disabled
o• 服务器默认开启,启动类型-Automatic
查看 Windows 10 Remote Registry Service,默认启动类型为禁用

查看 Windows Server 2012 R2 Remote RegistryService,默认启动类型为Automatic


Remote Registry Service启动类型Automatic对应的服务状态变化由以下注册表配置决定,默认DisableIdleStop0

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RemoteRegistry
  2.     REG_DWORD DisableIdleStop
  3.         0=>空闲10min后停止
  4.         1=>空闲时间不停止
复制代码


由于RemoteRegistry Service服务由触发器自动启动,所以查看相关触发器
  1. PS C:\Users> sc.exe qtriggerinfo RemoteRegistry
  2. [SC] QueryServiceConfig2 SUCCESS

  3. SERVICE_NAME: RemoteRegistry

  4.    START SERVICE
  5.       NETWORK EVENT             : 1f81d131-3fac-4537-9e0c-7e7b0c2f4b55 [NAMED PIPE EVENT]
  6.                DATA             : winreg
  7. PS C:\Users>
复制代码

该触发器为winreg命名管道,命名管道相关信息如下
  1. > sc.exe triggerinfo
  2. [CUT]
  3.         start/namedpipe/pipename        <当请求到达指定的命名管道时启动服务。
  4.                                         不包含管道名称的 "\\.\pipe" 部分>
复制代码

3、接口权限
通过上面介绍可知,根据注册表的HKEY_USERS和HKEY_USERS\<SID>\VolatileEnvironment可以得到计算机当前登录的用户信息,那么查看该键的ACL
HKEY_USERS,DACL存在一个ACE为Everyone的可读权限

HKEY_USERS\<SID>\Volatile Environment,DACL中不存在ACE为Everyone的可读权限

由于Windows Server默认开启远程注册表服务,且注册表项HKEY_USERS访问权限为Everyone可读,所以可以使用任意域账号访问域内WindowsServer注册表,读取域内Windows Server计算机当前登录的用户SID,通过SID可以向域控查找SID对应的具体Object信息,从而得到目标Server当前登录的用户。
关于SID只需要关注S-1-5-21开头的即可,因为域内用户SID默认都是以S-1-5-21格式开头。
4、远程连接
下面使用不同的工具进行访问远程注册表
(1)regedit.exe
点击File=>Connect Network Registry,输入远程计算机地址

远程连接后会显示HKUHKLMHKU中可以看到目标计算机当前登录的用户SID


点击HKEY_USERS\SID会被拒绝访问,因为上面提到默认该键普通用户没有访问权限


通过SID S-1-5-21-3067905965-1505921866-2977492388-500查找域内该用户对象对应的samAccountName属性信息可知登录的用户
  1. ➜ python3 ldapsearch.py -l 192.168.1.9 -d qftm.com -u lihua -p 1234567 -t search -s '(&(objectCategory=person)(objectClass=user)(objectsid=S-1-5-21-3067905965-1505921866-2977492388-500))' samaccountname objectsid
  2. ## Result of "search" command ###
  3. [+] |__ objectSid = S-1-5-21-3067905965-1505921866-2977492388-500
  4. [+] |__ sAMAccountName = Administrator
复制代码

(2)powershell
使用powershell调用win32api [RegistryKey](https://learn.microsoft.com/en-u ... trykey?view=net-7.0),查询远程注册表项
  1. # HKU:\
  2. powershell -c "[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::Users,'192.168.1.9').OpenSubKey('').GetSubKeyNames()"

  3. # HKLM:\System\CurrentControlSet
  4. powershell -c "[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::Users,'192.168.1.9').OpenSubKey('\System\CurrentControlSet').GetSubKeyNames()"
复制代码


测试查看远程目标计算机注册表项:HKU:\
  1. PS Z:\Sec> [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::Users,'192.168.1.9').OpenSub
  2. Key('').GetSubKeyNames()
  3. .DEFAULT
  4. S-1-5-19
  5. S-1-5-20
  6. S-1-5-21-3067905965-1505921866-2977492388-500
  7. S-1-5-21-3067905965-1505921866-2977492388-500_Classes
  8. S-1-5-18
  9. PS Z:\Sec>
复制代码

(3)编写Python脚本
核心代码

效果

5、流量分析
通过Wireshark捕获相关流量:客户端远程访问目标主机注册表
  1. # Wireshark filter
  2. ((smb) || (smb2) || (winreg)|| (dcerpc))
复制代码




分析流量,主要包含6个阶段

• 客户端与服务端建立SMB会话(Remote IP:Default NTLM authentication、Remote Hostname:Default Kerberos authentication)

• 客户端连接服务端 IPC$ 共享

• 打开服务端winreg命名管道

• 绑定winreg接口

• 使用 Windows Remote Registry Protocol 进行交互通信(RPC Method Call)

• 关闭winreg命名管道、 IPC$ 共享连接、SMB会话

这里的WINREG协议是在DCE/RPC协议传输之上,从 IPC$ 上的 \PIPE\winreg 命名管道访问此协议。

TCP=>NetBIOS=>SMB=>DCERPC=>WINREG



WINREG协议实现了以下功能,通过RPC进行调用

  1. winreg_OpenHKCR
  2. winreg_OpenHKCU
  3. winreg_OpenHKLM
  4. winreg_OpenHKPD
  5. winreg_OpenHKU
  6. winreg_CloseKey
  7. winreg_CreateKey
  8. winreg_DeleteKey
  9. winreg_DeleteValue
  10. winreg_EnumKey
  11. winreg_EnumValue
  12. winreg_FlushKey
  13. winreg_GetKeySecurity
  14. winreg_LoadKey
  15. winreg_NotifyChangeKeyValue
  16. winreg_OpenKey
  17. winreg_QueryInfoKey
  18. winreg_QueryValue
  19. winreg_ReplaceKey
  20. winreg_RestoreKey
  21. winreg_SaveKey
  22. winreg_SetKeySecurity
  23. winreg_SetValue
  24. winreg_UnLoadKey
  25. winreg_InitiateSystemShutdown
  26. winreg_AbortSystemShutdown
  27. winreg_GetVersion
  28. winreg_OpenHKCC
  29. winreg_OpenHKDD
  30. winreg_QueryMultipleValues
  31. winreg_InitiateSystemShutdownEx
  32. winreg_SaveKeyEx
  33. winreg_OpenHKPT
  34. winreg_OpenHKPN
  35. winreg_QueryMultipleValues2
复制代码


DCE/RPC 协议可以在多种协议上运行,这里是运行在SMB之上
o• TCP:port 135,call ncacn_ip_tcp
o• UDP:port 135,call ncacn_ip_udp
o• SMB:port 445,SMB auth namedPipe,call ncacn_np
o• SMB2:port 445,SMB auth namedPipe,call ncacn_np
6、总结
API Call | OS version | Admin needed | Userstatus | SMB share | Port |
Protocol | Protocol | Name pipe | RPCInterface UUID | RPC Method Call
---|---|---|---|---|---|---|---|---|---|---
[RegistryKey](https://learn.microsoft.com/en-u ... trykey?view=net-7.0) | Windows Server | No |LoggedOn | IPC$ | 445 | SMB/DCERPC/WINREG | [MS-RRP]:[Windows Remote RegistryProtocol](https://learn.microsoft.com/en- us/openspecs/windows_protocols/ms-rrp/0fa3191d-bb79-490a-81bd-54c2601b7a78)| \pipe\winreg | 338cd001-2244-31f1-aaaa-900038001003 | OpenRemoteBaseKey
OpenSubKey
GetSubKeyNames
NetWkstaUserEnum
1、介绍
[NetWkstaUserEnum](https://learn.microsoft.com/zh-c ... ta-netwkstauserenum) API可以查询当前登录到该工作站的所有用户的信息,包括交互式登录、服务和批处理登录。
函数结构如下,需要目标主机的管理权限
  1. NET_API_STATUS NET_API_FUNCTION NetWkstaUserEnum(
  2.   [in]      LMSTR   servername,
  3.   [in]      DWORD   level,
  4.   [out]     LPBYTE  *bufptr,
  5.   [in]      DWORD   prefmaxlen,
  6.   [out]     LPDWORD entriesread,
  7.   [out]     LPDWORD totalentries,
  8.   [in, out] LPDWORD resumehandle
  9. );
复制代码


主要参数
o• servername:指向字符串的指针,该字符串指定要在其中执行函数的远程服务器的 DNS 或 NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。
o• level:指定数据的信息级别。 此参数的取值可为下列值之一:
        
      
含义
  
      
0
   
返回当前登录到工作站的用户的名称。 bufptr

     
参数指向[WKSTA_USER_INFO_0](https://learn.microsoft.com/zh-
   

     
cn/windows/desktop/api/lmwksta/ns-lmwksta-wksta_user_info_0)结构的数组。
  

     
1
  
返回工作站访问的当前用户和域的名称。 bufptr

     
参数指向[WKSTA_USER_INFO_1](https://learn.microsoft.com/zh-
   

     
cn/windows/desktop/api/lmwksta/ns-lmwksta-wksta_user_info_1)结构的数组。
  
o• bufptr:指向接收数据的缓冲区的指针。此数据的格式取决于 level 参数的值。此缓冲区由系统分配,必须使用 NetApiBufferFree 函数释放 。请注意,即使函数因 ERROR_MORE_DATA 而失败,也必须释放缓冲区。
2、接口权限
如 Microsoft 所述[https://docs.microsoft.com/en-us ... ta-netwkstauserenum,只有目标计算机管理员才能成功使用](https://docs.microsoft.com/en-us ... F%E4%BD%BF%E7%94%A8)NetWkstaUserEnum 函数
  1. Members of the Administrators, and the Server, System and Print Operator local groups can also view information
复制代码


3、远程查询
编写Python脚本,核心代码如下


效果
  1. ➜ python3 remote_netWkstaUserEnum.py qftm/lihua:1234567@192.168.1.15
  2. Found logged on user at 192.168.1.15: lihua@QFTM
  3. Found logged on user at 192.168.1.15: dadmin@QFTM

  4. ➜ python3 remote_netWkstaUserEnum.py qftm/lihua:1234567@192.168.1.9
  5. Access denied while enumerating LoggedOn on 192.168.1.9, probably no admin privs
复制代码

运行结果中一些是没有用的,可以忽略o• Localuser accountso• Emptyusernames and computer sessionso• Entrieswithout a logon domaino• Anylogon domain containing a whitespace (to ignore “NT Authority” and similar)4、流量分析通过Wireshark捕获相关流量# Wireshark filter((smb) || (smb2) || (wkssvc)|| (dcerpc))


分析流量,主要包含6个阶段o客户端与服务端建立SMB会话(Remote IPDefault NTLM authenticationRemote HostnameDefault Kerberos authenticationo客户端连接服务端 IPC$ 共享o打开服务端wkssvc命名管道o绑定wkssvc接口o使用 Workstation Service RemoteProtocol 进行交互通信(RPC Method Callo关闭wkssvc命名管道、 IPC$ 共享连接、SMB会话这里的[WKSSVC](https://learn.microsoft.com/en-u ... c-abeb-b132228281b7) 协议是在DCE/RPC协议传输之上,从 IPC$ 上的 \PIPE\wkssvc 命名管道访问此协议。TCP=>NetBIOS=>SMB=>DCERPC=>WKSSVC
5、总结API Call | OS version | Admin needed | Userstatus | SMB share | Port |Protocol | Protocol | Name pipe | RPCInterface UUID | RPC Method Call
---|---|---|---|---|---|---|---|---|---|---
[NetWkstaUserEnum](https://learn.microsoft.com/zh-c ... ta-netwkstauserenum) | ALL | Yes |LoggedOn | IPC$ | 445 | SMB/DCERPC/WKSSVC | [MS-WKST]:[Workstation ServiceRemote Protocol](https://learn.microsoft.com/en- us/openspecs/windows_protocols/ms-wkst/5bb08058-bc36-4d3c-abeb-b132228281b7)| \pipe\wkssvc | 6BFFD098-A112-3610-9833-46C3F87E345A | NetrWkstaUserEnum
查询远程计算机当前用户网络会话查询远程计算机当前网络资源被访问时创建的用户会话,可以通过以下几种APIoNetSessionEnumNetSessionEnum
1、介绍[NetSessionEnum](https://learn.microsoft.com/en-u ... hare-netsessionenum) API 可以查询访问这台远程主机的网络资源(例如文件共享)时所创建的网络会话,从获得的网络会话中可以看到来自那个域用户及IP等信息。实际查询远程计算机时,一般选取域控或文件共享服务器等,因为其它服务器基本不会存在用户去访问其网络资源,也就不存在建立的网络会话。函数结构如下
  1. NET_API_STATUS NET_API_FUNCTION NetSessionEnum(
  2.   [in]      LMSTR   servername,
  3.   [in]      LMSTR   UncClientName,
  4.   [in]      LMSTR   username,
  5.   [in]      DWORD   level,
  6.   [out]     LPBYTE  *bufptr,
  7.   [in]      DWORD   prefmaxlen,
  8.   [out]     LPDWORD entriesread,
  9.   [out]     LPDWORD totalentries,
  10.   [in, out] LPDWORD resume_handle
  11. );
复制代码

主要参数:o• servername:指向字符串的指针,该字符串指定要在其中执行函数的远程服务器的 DNS NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。o• UncClientName:指向字符串的指针,该字符串指定要为其返回信息的计算机会话的名称。 如果此参数为 NULL NetSessionEnum 将返回服务器上所有计算机会话的信息。o• username:指向一个字符串的指针,该字符串指定要为其返回信息的用户的名称。 如果此参数为 NULL NetSessionEnum 将返回所有用户的信息。o• level:指定数据的信息级别。o• bufptr:指向接收数据的缓冲区的指针。此数据的格式取决于 level 参数的值。此缓冲区由系统分配,必须使用 NetApiBufferFree 函数释放 。请注意,即使函数因 ERROR_MORE_DATA 而失败,也必须释放缓冲区。2、接口权限NetSessionEnum 接口权限在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity SrvsvcSessionInfo 中定义早期一些系统不需要远程主机的管理员权限,通过域认证的用户(Authenticated Users)即可,但是后面的系统需要远程主机管理员权限

  1. # 早期
  2. - Administrators
  3. - Server Operators
  4. - Power Users
  5. - Authenticated Users

  6. # 后期
  7. - Administrators
  8. - Server Operators
  9. - Power Users
  10. - Interactive
  11. - Service
  12. - Batch
复制代码

根据@compass-security的测试数据如下OS version | Patch level after installation |Authenticated users allowed? | Impact of promotion to DC? | Patch level afterupdates | Impact of security updates?
---|---|---|---|---|---
Windows 10 1607 | 14393.0 | Yes | – | 14393.2214 | No
Windows 10 1703 | 15063.0 | Yes | – | 15063.1418 | No
Windows 10 1709 | 16299.15 | No | – | 16299.2166 | No
Windows 10 21H1 | 19043.1165 | No | – | 19043.1288 | No
Windows Server 2016 (1607) | 14393.693 | Yes | No | 14393.4704 | No
Windows Server 2019 (1809) | 17763.737 | No | No | 17763.2237 | No
Windows Server 2022 (21H2) | 20348.169 | No | No | 20348.288 | No
3、等级权限 [Microsoft NetSessionEnumDocument](https://docs.microsoft.com/de-ch ... hare-netsessionenum) 中,可以知道函数接受一个名为 level 的参数,该参数决定应返回哪些信息        Wert
   
Bedeutung
  
      0   
Geben Sie den Namen des Computers zurück, auf dem die Sitzung  eingerichtet

     wurde. Der Bufptr-Parameter verweist auf ein Array von   

     [SESSION_INFO_0](https://learn.microsoft.com/de-
  

     de/windows/desktop/api/lmshare/ns-lmshare-session_info_0) Strukturen.
  

     1
  
Geben Sie den Namen des Computers, den Namen des Benutzers zurück, und

     öffnen Sie Dateien, Rohre und Geräte auf dem Computer. Der Bufptr-Parameter   

     verweist auf ein Array von  [SESSION_INFO_1](https://learn.microsoft.com/de-
  

     de/windows/desktop/api/lmshare/ns-lmshare-session_info_1) Strukturen.
  

     2
  
Geben Sie zusätzlich zu den informationen, die für Ebene 1 angegeben  sind,

     den Clienttyp und die Art der Einrichtung der Sitzung zurück. Der  _Bufptr-   

     Parameter_ verweist auf ein Array von
  

     [SESSION_INFO_2](https://learn.microsoft.com/de-
  

     de/windows/desktop/api/lmshare/ns-lmshare-session_info_2) Strukturen.
  

     10
  
Geben Sie den Namen des Computers, den Namen des Benutzers und aktive  und

     leerlaufzeiten für die Sitzung zurück. Der Bufptr-Parameter verweist  auf ein   

     Array von [SESSION_INFO_10](https://learn.microsoft.com/de-
  

     de/windows/desktop/api/lmshare/ns-lmshare-session_info_10) Strukturen.
  

     502
  
Geben Sie den Namen des Computers zurück; Name des Benutzers; Öffnen  sie

     Dateien, Rohre und Geräte auf dem Computer; und der Name des  Transports, den   

     der Client verwendet. Der Bufptr-Parameter verweist  auf ein Array von
  

     [SESSION_INFO_502](https://learn.microsoft.com/de-
  

     de/windows/desktop/api/lmshare/ns-lmshare-session_info_502) Strukturen.
   实际上,调用该API的用户所需的权限也取决于level,从以下官方描述中可以得知<https://learn.microsoft.com/en-u ... getinfo#remarks>o• level 0 or 10 不需要管理员权限Only members of theAdministrators or Server Operators local group can successfully executethe NetSessionGetInfo function at level 1 or level 2. No special groupmembership is required for level 0 or level 10 calls.502 级需要更高的权限,而 Microsoft 文档中并未提及这一点。服务器服务远程协议[Server Service RemoteProtocol](https://docs.microsoft.com/en-us ... 3-934d-6de0da4fc99e) 的技术实现指南给出了502级别权限的解释:The serverSHOULD[<51>](https://docs.microsoft.com/en-us ... bea9a#Appendix_A_51) enforce the securitymeasures to verify that the caller has the required permissions to execute thisroutine. If the caller does not have the required credentials, the serverSHOULD[<52>](https://docs.microsoft.com/en-us ... bea9a#Appendix_A_52) fail the call.Following the reference<52> leads to the answer:[<52> Section3.1.4.5](https://docs.microsoft.com/en- us/openspecs/windows_protocols/ms-srvs/02b1f559-fda2-4ba3-94c2-806eb2777183#Appendix_A_Target_52): If the calleris not a member of the Administrator or Server Operator local group,Windows-based servers fail the call with the error code ERROR_ACCESS_DENIED.4、远程查询测试环境

  1. aHost
  2.     Windows Server 2012R2
  3.     IP 192.168.1.9
  4.     User Administrator
  5. bHost
  6.     Windows 7
  7.     IP 192.168.1.15
  8.     User lihua
  9. cHost
  10.     Windows 11
  11.     lihua 192.168.1.16
  12.     User zhangyu
复制代码

cHost主机上与bHostIPC共享建立连接
  1. PS > net use \\192.168.1.15\ipc$
  2. 命令成功完成。

  3. PS > net use
  4. 会记录新的网络连接。

  5. 状态         本地       远程                       网络
  6. -------------------------------------------------------------------------------
  7. OK                     \\192.168.1.15\ipc$       Microsoft Windows Network
  8. 命令成功完成。

  9. PS >
复制代码

aHost主机上查询bHost的网络会话
  1. Z:\Sec>NetSess.exe 192.168.1.15

  2. NetSess V02.00.00cpp Joe Richards (joe@joeware.net) January 2004

  3. Enumerating Host: 192.168.1.15
  4. Client                 User Name                Time       Idle Time
  5. -------------------------------------------------------------------------
  6. \\\\192.168.1.16       zhangyu                  000:04:07  000:04:07
  7. \\\\192.168.1.9        Administrator            000:00:00  000:00:00

  8. Total of 2 entries enumerated

  9. Z:\Sec>
复制代码

分析结果:由于目标主机系统win7 NetSessionEnum API具有Authenticated Users访问权限,且Level01,满足远程计算机用户网络会话查询条件o第一条网络会话为cHostbHostIPC共享建立的连接会话o第二条网络会话为aHost进行查询bHost时,与bHostIPC共享建立的连接会话(可以忽略)(有些工具会进行过滤如BloodHoundSharpHound Session收集)注意 NetSessionEnum API 几乎不会返回远程主机上登录系统的帐户,因为实际上他们没有需求与自己开放的网络资源如共享建立连接会话。aHost主机上查询cHost的网络会话
  1. Z:\Sec>NetSess.exe 192.168.1.16

  2. NetSess V02.00.00cpp Joe Richards (joe@joeware.net) January 2004

  3. Enumerating Host: 192.168.1.16
  4. Client                 User Name                Time       Idle Time
  5. -------------------------------------------------------------------------

  6. Error: NetSessionEnum (5) 拒绝访问。

  7. Total of 0 entries enumerated

  8. Z:\Sec>
复制代码

分析结果:由于目标主机系统win11 NetSessionEnumAPI不具有Authenticated Users访问权限,导致远程计算机用户网络会话查询时显示拒绝访问PS:除了使用NetSess.exe,也可以编写python脚本调用查询

效果

5、流量分析通过Wireshark捕获相关流量

  1. # Wireshark filter
  2. ((smb) || (smb2) || (srvsvc)|| (dcerpc))
复制代码


分析流量,主要包含6个阶段o客户端与服务端建立SMB会话(Remote IPDefault NTLM authenticationRemote HostnameDefault Kerberos authenticationo客户端连接服务端 IPC$ 共享o打开服务端srvsvc命名管道o绑定srvsvc接口o使用 Server Service Remote Protocol 进行交互通信(RPC Method Callo关闭srvsvc命名管道、 IPC$ 共享连接、SMB会话这里的[SRVSVC](https://docs.microsoft.com/en-us ... 3-934d-6de0da4fc99e) 协议是在DCE/RPC协议传输之上,从 IPC$ 上的 \PIPE\srvsvc 命名管道访问此协议。TCP=>NetBIOS=>SMB=>DCERPC=>SRVSVC

6、总结API Call | OS version | Admin needed | Userstatus | SMB share | Port |Protocol | Protocol | Name pipe | RPCInterface UUID | RPC Method Call
---|---|---|---|---|---|---|---|---|---|---
[NetSessionEnum](https://learn.microsoft.com/en-u ... hare-netsessionenum) | Windows 10 1709+Windows Server 2019 1809+ | Yes | Net Session | IPC$ | 445 | SMB/DCERPC/SRVSVC| [MS-SRVS]:[Server Service Remote Protocol](https://docs.microsoft.com/en-us ... 3-934d-6de0da4fc99e) |\pipe\srvsvc | 4B324FC8-1670-01D3-1278-5A47BF6EE188 | NetrSessionEnum
常见用户会话收集工具SharpHound
SharpHound 的功能解析图(来自@SadProcessor

BloodHound导入SharpHound收集的信息后,在BloodHound Edge中会看到HasSession,代表了XX用户在YY计算机上存在用户会话

SharpHound 获取HasSession数据的方法有以下三种:o• RegistryKeyo使用WINREG协议,查询远程计算机注册表-HKU(记录了当前登录的用户SIDo• NetWkstaUserEnumo使用WKSSVC协议,查询远程计算机当前登录的用户(交互式、服务、批处理)o• NetSessionEnumo使用SRVSVC协议,查询远程计算机网络资源访问时建立的会话不同收集方法使用的命令如下
  1. # NetSessionEnum
  2. SharpHound.exe -c session

  3. # NetWkstaUserEnum、RegistryKey
  4. SharpHound.exe -c loggedon

  5. # NetSessionEnum、NetWkstaUserEnum、RegistryKey
  6. SharpHound.exe -c session,loggedon
复制代码

不同方式的对比分析如下Method | OS version | Admin needed |Collection method | BloodHound edge | Local users
---|---|---|---|---|---
NetWkstaUserEnum | All | Yes | LoggedOn | HasSession | No
NetSessionEnum | Windows 10 1709+ Windows Server 2019 1809+ | Yes | Session |HasSession | No
RegistryKey | Windows Server | No | LoggedOn | HasSession | Yes
测试:session收集方法,对应NetSessionEnum
  1. C:\Users\zhangyu\Desktop\SharpHound-v2.0.0>SharpHound.exe -c session
  2. 2023-08-21T09:35:08.2313247+08:00|INFORMATION|This version of SharpHound is compatible with the 4.3.1 Release of BloodHound
  3. 2023-08-21T09:35:08.7024585+08:00|INFORMATION|Resolved Collection Methods: Session
  4. 2023-08-21T09:35:08.8312096+08:00|INFORMATION|Initializing SharpHound at 9:35 on 2023/8/21
  5. 2023-08-21T09:35:09.3922491+08:00|INFORMATION|[CommonLib LDAPUtils]Found usable Domain Controller for qftm.com : DC.qftm.com
  6. 2023-08-21T09:35:10.0820451+08:00|INFORMATION|Loaded cache with stats: 13 ID to type mappings.
  7. 12 name to SID mappings.
  8. 3 machine sid mappings.
  9. 2 sid to domain mappings.
  10. 0 global catalog mappings.
  11. 2023-08-21T09:35:10.1347693+08:00|INFORMATION|Flags: Session
  12. 2023-08-21T09:35:10.9551922+08:00|INFORMATION|Beginning LDAP search for Sharphound.EnumerationDomain
  13. 2023-08-21T09:35:10.9551922+08:00|INFORMATION|Testing ldap connection to qftm.com
  14. 2023-08-21T09:35:11.0065544+08:00|INFORMATION|Producer has finished, closing LDAP channel
  15. 2023-08-21T09:35:11.0265604+08:00|INFORMATION|LDAP channel closed, waiting for consumers
  16. 2023-08-21T09:35:11.3440596+08:00|INFORMATION|Consumers finished, closing output channel
  17. Closing writers
  18. 2023-08-21T09:35:11.3981869+08:00|INFORMATION|Output channel closed, waiting for output task to complete
  19. 2023-08-21T09:35:11.6011452+08:00|INFORMATION|Status: 5 objects finished (+5 Infinity)/s -- Using 59 MB RAM
  20. 2023-08-21T09:35:11.6021459+08:00|INFORMATION|Enumeration finished in 00:00:00.6571518
  21. 2023-08-21T09:35:11.7650004+08:00|INFORMATION|Saving cache with stats: 13 ID to type mappings.
  22. 12 name to SID mappings.
  23. 3 machine sid mappings.
  24. 2 sid to domain mappings.
  25. 0 global catalog mappings.
  26. 2023-08-21T09:35:11.7813243+08:00|INFORMATION|SharpHound Enumeration Completed at 9:35 on 2023/8/21! Happy Graphing!

  27. C:\Users\zhangyu\Desktop\SharpHound-v2.0.0>
复制代码

测试:loggedon收集方法,对应NetWkstaUserEnumRegistryKey
  1. C:\Users\zhangyu\Desktop\SharpHound-v2.0.0>SharpHound.exe -c loggedon
  2. 2023-08-21T09:38:32.3780222+08:00|INFORMATION|This version of SharpHound is compatible with the 4.3.1 Release of BloodHound
  3. 2023-08-21T09:38:32.6678878+08:00|INFORMATION|Resolved Collection Methods: LoggedOn
  4. 2023-08-21T09:38:32.8050018+08:00|INFORMATION|Initializing SharpHound at 9:38 on 2023/8/21
  5. 2023-08-21T09:38:33.1657669+08:00|INFORMATION|[CommonLib LDAPUtils]Found usable Domain Controller for qftm.com : DC.qftm.com
  6. 2023-08-21T09:38:33.6692205+08:00|INFORMATION|Loaded cache with stats: 13 ID to type mappings.
  7. 12 name to SID mappings.
  8. 3 machine sid mappings.
  9. 2 sid to domain mappings.
  10. 0 global catalog mappings.
  11. 2023-08-21T09:38:33.7058015+08:00|INFORMATION|Flags: LoggedOn
  12. 2023-08-21T09:38:34.1216393+08:00|INFORMATION|Beginning LDAP search for Sharphound.EnumerationDomain
  13. 2023-08-21T09:38:34.1226403+08:00|INFORMATION|Testing ldap connection to qftm.com
  14. 2023-08-21T09:38:34.1780325+08:00|INFORMATION|Producer has finished, closing LDAP channel
  15. 2023-08-21T09:38:34.2190308+08:00|INFORMATION|LDAP channel closed, waiting for consumers
  16. 2023-08-21T09:38:37.0319695+08:00|INFORMATION|Consumers finished, closing output channel
  17. 2023-08-21T09:38:37.0992017+08:00|INFORMATION|Output channel closed, waiting for output task to complete
  18. Closing writers
  19. 2023-08-21T09:38:37.3248349+08:00|INFORMATION|Status: 5 objects finished (+5 1.666667)/s -- Using 60 MB RAM
  20. 2023-08-21T09:38:37.3268295+08:00|INFORMATION|Enumeration finished in 00:00:03.2144953
  21. 2023-08-21T09:38:37.4508237+08:00|INFORMATION|Saving cache with stats: 14 ID to type mappings.
  22. 13 name to SID mappings.
  23. 3 machine sid mappings.
  24. 2 sid to domain mappings.
  25. 0 global catalog mappings.
  26. 2023-08-21T09:38:37.4638220+08:00|INFORMATION|SharpHound Enumeration Completed at 9:38 on 2023/8/21! Happy Graphing!

  27. C:\Users\zhangyu\Desktop\SharpHound-v2.0.0>
复制代码

PsLoggedOn
[PsLoggedOn](https://docs.microsoft.com/en-us ... ownloads/psloggedon) 利用到以下方法o• RegistryKeyo使用WINREG协议,查询远程计算机注册表-HKU(记录了当前登录的用户SIDo• NetSessionEnumo使用SRVSVC协议,查询远程计算机网络资源访问时建立的会话参数介绍
  1. psloggedon [-] [-l] [-x] [\\Computername|Username]

  2. -:  显示支持的选项和用于输出值的单位。
  3. -l: 仅显示本地登录,不显示本地和网络资源登录。
  4. -x: 不显示登录时间。
  5. \\Computername: 指定要列出登录信息的计算机的名称。
  6. Username:       指定用户名,在网络中搜索该用户登录的计算机。 # 受Computer Browser服务影响
复制代码

使用方式
  1. # 查询本机登录的用户
  2. PsLoggedon.exe /accepteula

  3. # 查询指定远程主机登录的用户
  4. PsLoggedon.exe /accepteula \\dc
  5. PsLoggedon.exe /accepteula \\192.168.1.9

  6. # 查询域内用户在哪些机器上登陆
  7. psloggedon.exe /accepteula administrator
复制代码

测试o• Users logged on locally:远程计算机当前登录的用户信息o• Users logged on via resource shares:远程计算机当前用户网络会话信息Z:\Sec>PSTools\PsLoggedon.exe/accepteula \dcPsLoggedon v1.35 - See who's logged on Copyright (C) 2000-2016Mark Russinovich Sysinternals - www.sysinternals.comUsers logged on locally: QFTM\Administrator Users logged on via resource shares: 2023/8/2214:40:54 QFTM\lihua 2023/8/22 14:40:38 \dc\DESKTOP-O3HTMC7$ Z:\Sec>PVEFindADUser
PVEFindADUser 利用到以下方法o• RegistryKeyo使用WINREG协议,查询远程计算机注册表-HKU(记录了当前登录的用户SID参数介绍(运行该工具的计算机需要具有.NET Framework 2.0

  1. PVEFindADUser.exe <参数>

  2. -h: 显示帮助。
  3. -u: 检查是否有更新版本的实用程序。
  4. -v: 显示详细信息
  5. -current [username]: 如果仅指定了-current 参数,将获取所有目标计算机上当前登录的所有用户。如果指定了用户名(DOMAIN\Username),则显示该用户登录的计算机。
  6. -last [username]: 如果仅指定了-last 参数,将获取目标计算机上的最后一个登录用户。如果指定了用户名(DOMAIN\Username),则显示具有此用户账户作为上次登录的计算机.根据网络的策略,可能会隐藏最后一个登录用户名,且该工具可能无法得到该用户名。
  7. -noping: 阻止该工具在尝试获取用户登录信息之前对目标计算机执行 ping 命令。
  8. -target: 可选参数,用于指定要查询的主机。如果未指定此参数,将查询当前域中的所有主机。如果指定此参数,则后跟一个由逗号分隔的主机名列表。
  9. -os: 将目标机器的操作系统信息写入csv文件。如果是直接查询计算机,此选项不输出任何信息
  10. -stopfound: 在找到第一个匹配项时停止搜索。
复制代码

使用方法
  1. # 查询域中所有机器当前登录的用户
  2. PVEFindADUser.exe -current

  3. # 查询远程主机当前登录的用户,不通过ping检测目标计算机是否开启
  4. PVEFindADUser.exe -current -target dc -noping
  5. PVEFindADUser.exe -current -target dc,win7-01 -noping
  6. PVEFindADUser.exe -current -target 192.168.1.15 -noping

  7. # 查询指定用户当前登录的主机,不通过ping检测目标计算机是否开启
  8. PVEFindADUser.exe -current qftm\dadmin -noping
  9. # 查询指定用户当前登录的主机,不通过ping检测目标计算机是否开启,找到一个即停止寻找
  10. PVEFindADUser.exe -current qftm\dadmin -noping -stopfound
复制代码

测试
  1. C:\Tools>PVEFindADUser.exe -current -target dc -noping
  2. -----------------------------------------
  3.   PVE Find AD Users
  4.   Peter Van Eeckhoutte
  5.   (c) 2009 - http://www.corelan.be:8800
  6.   Version : 1.0.0.12
  7. -----------------------------------------
  8. [+] Finding currently logged on users ? true
  9. [+] Finding last logged on users ? false

  10.      [+] Processing host : dc ()
  11.          - Logged on user : qftm\administrator
  12. [+] Report written to report.csv

  13. C:\Tools>
复制代码

Netsess
Netsess 利用到以下方法o• NetSessionEnumo使用SRVSVC协议,查询远程计算机网络资源访问时建立的会话参数介绍
  1. Z:\Sec>NetSess.exe /?
  2. NetSess V02.00.00cpp Joe Richards (joe@joeware.net) January 2004
  3. Usage:
  4. NetSess [ServerName] [ClientName] [switches]
  5.    ServerName     Server to query session info from
  6.    ClientName     Client to query info for

  7.   Switches: (designated by - or /)
  8.    -full          Full session info (requires admin)
  9.    -h servername  Alternate method to specify server
  10.    -u username    Username to filter for
  11.    -c client name Alternate method to specify client name

  12.   Ex1:
  13.     netsess
  14.       Display session info for local machines
  15.   Ex2:
  16.     netsess servername
  17.       Display session info for servername
  18.   Ex3:
  19.     netsess servername /full
  20.       Display FULL session info for servername

  21. This software is Freeware. Use it as you wish at your own risk.
  22. If you have improvement ideas, bugs, or just wish to say Hi, I
  23. receive email 24x7 and read it in a semi-regular timeframe.
  24. You can usually find me at joe@joeware.net
  25. Z:\Sec>
复制代码

使用方法
  1. # 查询指定远程主机当前用户网络会话
  2. NetSess.exe 192.168.1.15

  3. # 查询指定远程主机当前用户网络会话,并过滤指定用户
  4. NetSess.exe 192.168.1.15 -u lihua
复制代码

测试
  1. Z:\Sec>NetSess.exe 192.168.1.15

  2. NetSess V02.00.00cpp Joe Richards (joe@joeware.net) January 2004

  3. Enumerating Host: 192.168.1.15
  4. Client                 User Name                Time       Idle Time
  5. -------------------------------------------------------------------------
  6. \\\\192.168.1.16       zhangyu                  000:04:07  000:04:07
  7. \\\\192.168.1.9        Administrator            000:00:00  000:00:00

  8. Total of 2 entries enumerated

  9. Z:\Sec>
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-13 10:38 , Processed in 0.024393 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表