獲取SID方法
SID簡述
SID = Security Identifiers,安全標識符,是標識用戶、組和計算機帳戶的唯一的號碼。簡單來說,SID是唯一身份編號。用來標識用戶身份的。存在在本地SAM數據庫中。這個庫默認連管理員都沒權讀的。只有SYSTEM完全控制的。
舉例:比如我們想修改管理員的帳號。那修改前和修改過以後系統怎麼識別你還是不是管理員呢?其實就是看SID號的。所以SID永不重複。就算你重新安裝部分SID號還是不一樣的。
而2000/XP以後的系統對SID的依賴比較高。比較明顯的是:註冊表、NTFS、EFS(加密文件)等都是依靠SID的。簡單的GHOST只複製了系統中的SID。而另外分區上的可能被記錄的SID沒有被複制。所以一般GHOST恢復以後可能會造成訪問失敗。
Windows Session(會話)到底是一個什麼概念,總是感覺這個概念很虛,現在理解了一點。寫下來做一個備忘。簡單的說,用戶登陸到windows系統之後,不管該用戶是本地登陸的,還是遠程登陸,系統都會爲這個用戶分配一個新的會話ID(SID)。也就是說會話與用戶的登錄是相關連的,沒有用戶登錄就不存在會話。因此,會話的含義是指用戶登錄之後的一種運行的環境。我們先看看書上是怎麼說的!
會話管理器(\Windows\System32\Smss.exe)是系統中第一個創建的用戶態模式進程,負責完成執行體和內核的初始化工作的內核模式系統線程在最後階段創建了實際的Smss進程(這段摘自: 《深入解析Windows操作系統(第4版)》80頁)
會話(session)是由進程和其他的系統對象(比如窗口站、桌面和窗口)構成的,它們代表了一個用戶的工作站登錄會話。會話具體是由如下幾個部分組成的:
1. 每個會話包含一個單獨的win32k.sys
2. 專門的換頁池區域
3. 私有windows子系統和登陸進程的拷貝
4. 系統空間中被映射的空間,被稱爲會話空間的區域
(參考: 《深入解析Windows操作系統(第4版)》 414頁)
現在我們清楚了,當用戶登陸到系統中之後,用戶下所有的進程都屬於這個會話空間。在每個進程的PEB當中就有SessionID。
方法一:
whoami /user
whoami /all可以看到所有信息
方法二:
wmic useraccount where name="%username%" get sid
方法三:
CMD->REGEDIT ->HKEY_LOCAL_MACHINE\SAM\SAM
這時候你看不到任何東西的。按上次的方法給自己權限。右鍵權限。給管理員組FULL CONTROL就能看到SID等信息。
上面SAM位置不一定可以看到(我測試的時候沒有看到),所有SID具體位置在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
此項的每個子項名就是sid,子項中的ProfileImagePath鍵值包含了用戶名。
此外在已知sid的情況下可以在以下項鍵處直接看到對應的用戶名
HKEY_USERS\已知的SID \Software\Microsoft\Windows\CurrentVersion\Explorer
鍵值Logon User Name處便是用戶名
附:查看哪個用戶登錄該機器
echo %username%
查看機器名
hostname
獲取MAC
getmac