外網快速打點方法&技巧總結
一、打點的基本認識
做過紅隊的小伙伴,對打點一定不陌生,這是一項基本技能。
所謂打點,就是拿到一臺機器的shell。
打點的一般目的在于利用這臺機器,做一個跳板,然后進入內網。
通常給予充分時間的情況下,打點不是一件很難的事情,因為系統總會有漏洞,就算系統沒有漏 洞,人也有漏洞,也可以進行釣魚,甚至還可以近源,可以花錢買內鬼,一切都只是打點的時間和價格成本與打到點進內網的收益的核算問題,本質就是一道數學題。
但是以在公司干活的普通員工視角出發,一般項目時間很緊,同時外部資源少,基本能用的東西就是自己的技術。
對個體而言,這種條件下,個人技術成為了主導因素,也就是說,一個紅隊人員快速打點能力的強悍與否,成為了一個普通紅隊和優秀紅隊的差別所在。
當然,這里有人會講,那么有的地方可以給很多時間,或者說自己在實戰中,在搞別的站的時候, 不是特定項目中,是有大把時間來進行滲透和攻擊的,可以慢慢搞。
主流的ctf賽事解題時間也只有1-2天,很多攻防項目也就是一周時間,src中第一個挖到洞的才給錢,這是客觀條件,對大家都是平等的。
項目就只有幾天,這就是游戲規則,是沒有道理可講的,所以還是不要找理由了,因為也沒啥用。
當然,從公司的角度出發,因為項目時間緊,而很大程度上,打點又是個體力活,不涉及太多技術,所以投入信息搜集的人越多,效果一般是更加好的。
總而言之,打點本身就是一種遍歷行為,被攻擊的目標就好像一個被圍墻保護的城堡,紅隊要做的事情就是圍著圍墻轉來轉去,敲敲打打,看看圍墻哪里沒修好,哪里空了一塊,然后趁機溜進去, 這是一個體力勞動,尤其在面對很多目標的時候,是一項繁重的體力勞動,在下文中會詳細解釋為什么我反復強調這是一項體力勞動。
二、打點的基本方法
基本方法,無非就是信息搜集-->找到脆弱資產-->漏洞利用→getshell,說起來是很簡單的。
這其中最肝的一個部分,莫過于信息搜集了,純體力活。
當然,過程可以用工具相對優化,但我依舊認為是最無腦的一個部分,就像大學生和小學生(高階和低階技術人員)一起用計算器(各種工具 fofa goby oneforall等)來算1w道加減乘除題(大量的資產 域名子域名 c段等)一樣,其實是區分不開技術人員的水平的,很多頭部的公司早就認識到了這一點,于是在大型攻防演練中,通常是派大量的人來進行資產收集,然后篩選出其中的脆弱資產后把資產給后續的利用人員來進內網快速拿分。
雖然信息搜集很無腦,但是該說還是得說,這個事情一般有以下幾個步驟。
1、當項目經理告訴了你攻擊目標的時候 →得到公司名→上企查查搜公司名→搜出來一堆公司和子公司
2、拿到這堆公司和子公司的名字→oneforall來跑一遍→然后得到了一堆子域名
3、拿到這堆子域名丟給Eeyes跑一遍→得到對應子域名對應的ip和c段信息
4、將對應ip和c段丟給fofa和fscan→fofa能快速得到c段資產信息,fscan能快速掃一遍,順便幫你打一下常用漏洞
5、如果你的運氣足夠好,這個時候fscan已經有漏洞爆出來了,可以直接去利用了(小概率事件),但是如果你的運氣不好,就要看接下來的第6步
6、剛剛fofa得到的資產看一眼,這里可以配合ehole的指紋識別來幫助快速篩選,通過篩選敏感資產,例如shiro,fastjson等直接能夠反序列化getshell的資產(小概率事件),如果你的運氣好,那么這個時候已經有漏洞了,可以直接利用了,如果你的運氣不好,就要看接下來的第7步
7、通過上面一番篩選,時間已經過去很久了,但是目前卻毫無進展,其實心里有點郁悶,這個時候就不建議再搞了,先休息一下,調整下心態,不然后續的幾天會大幅度降低工作效率,休息好了感覺又可以了,就看看下面的步驟8繼續吧
8、其實經過上面的一番篩選,web這塊的基本已經過完了,但是依舊還沒有漏洞,說明這個系統平時自查搞的比較多,基本的高危漏洞修復已經完成了,如果是大型攻防演練,那就建議換個目標再用上面的方法輪一次,如果是就某家單位做的定向攻防,就繼續看步驟9吧
9、web的過完了,雖然沒有直接能夠rce的系統,但是我們獲得了很多形形色色的登錄后臺\用戶登錄\注冊\管理員登錄等等等等交互類型的資產,這些資產雖然看起來沒用,但是我這里要介紹一下攻防演練的三板斧漏洞,運氣好的話,這些資產還是能夠派上用場的
三板斧其一 反序列化漏洞:這個不用多說,我最喜歡的漏洞,只要有了這個漏洞,基本一臺機子的shell就拿到了,看到就眼睛放光,但是可遇不可求,遍地都是shiro的時代已經漸漸過去了。
三板斧其二 文件上傳:這個也是老熟人了,一般我會先看看是不是白名單,是白名單的話,就看看有沒有文件包含之類的漏洞能組合利用下,如果是黑名單,就把文件上傳的姿勢對著上傳點全部來一遍,看看有沒有一個能中,如果能中,那就有了一個shell(沒路徑連不上但是確實是shell),雖然找上傳路徑也是一個攔路虎,但是至少比傳不上去強。
三板斧其三 sql注入:這個更加老熟人了,注入之后,低權限,直接gg,高權限,試試吧,看能不能上shell。
至于其他漏洞,攻防演練就那么幾天時間,八成是用不上,建議直接放棄,就把上面三個玩精(僅僅就攻防項目來說)。
10、對各種登錄系統嘗試弱口令/sql注入攻擊,弱口令能登進去后臺就找上傳點,sql注入建議xray+burp來測,看到有戲的再上sqlmap。
還有一些信息搜集的方法,比如fofa搜關鍵字,title="單位名"等,這種方法可以自行穿插靈活使用,有時候有奇效,有時候沒啥效果,看個人造化了。
還有些天選之人,直接一個弱口令登云桌面(horizon、vdi等)然后拿shell的,這種屬于天賜shell,不在常規考慮范圍之內,但也可以嘗試。
11、弱口令如果爆不出賬號密碼,就考慮上網盤\github\sgk\泄露公開庫搜對應人員的信息,看看好使不
12、如果還是沒有用,就可以開始看公眾號\app\小程序的信息
13、如果還是沒有用,就要開始用域傳送\備案號\ip反查網站\ssl證書\用google來搜c段
14、如果還是沒有用,就用dirmap\dirsearch來對可疑的網站進行目錄爆破,看看好使不
15、如果還是沒有用,還可以釣魚,發郵件也是一個體力活
16、如果還是沒有用,拿上設備跟領導申請近源滲透吧
列了這么多,我就是想說明,雖然信息搜集是一項很重要的工作,是開啟后滲透的基礎,但這項工作是體力活真的是不爭的事實,因為他沒有門檻,基本誰都能做,無非就是用工具對著一項項checklist不斷的去嘗試而已。
因此通常意義上的快速打點,就是比誰先試完所有的checklist,雖然目前絕大部分工作都是由工 具來完成,整個項目呈一個半自動化的流程,但是仍然架不住資產量的龐大,一個信息收集熟練的人,無非也就是流水線的工人而已,對著巨量的資產不斷的用工具篩選而已。
而一些高端打點技巧玩得好的人,例如電話釣魚成功率很大的人,釣魚郵件的撰寫和釣魚樣本的開發做的很牛的人,在做這些事情之前,同樣需要信息搜集,而能夠玩高端技巧的人是不愿意來做信息搜集的,因為他們也是從小白階段過來的,明白信息搜集這項繁重且技術含量低的工作完全可以找別人來做。
從公司層面上來講,要快速打點,就要投入更多的人。從個人層面上來講,要快速打點,要忍受枯燥的打點過程,然后提升自己的工具使用速度,最好自己能夠進行二次開發,把一些半自動化的步驟連接起來,優化現有的步驟,從而進一步提升效率。
三、打點的技術區分線
很多時候,找到了一個脆弱資產,自己沒利用成功,別人利用成功了,這是很普遍的現象。這就來到了打點的區分線,也就是漏洞利用上。
利用不成功有很多的原因,比如一臺機器明明出網,但是反彈shell怎么都彈不回來。比如一臺機器能夠反彈shell,但是時不時就會斷開。
比如一臺機器能夠寫入一個內存馬,也能夠連接上,但是一旦下載或者上傳一些較大的文件,就會失敗。
比如一臺機器,他能夠執行命令,也能反彈shell,連接也穩定,但是執行特定的命令,就會失敗。
這個時候,一個技術人員就脫離了苦力勞動的階段,進入到了區分技術的時候了。區分一項工作是苦力勞動還是技術活其實很簡單,看是不是誰都能做就行了。
有的漏洞利用在實戰中涉及了一些很原理的東西,對于滲透人員的基本功考察以及聯想能力的考查是很強的,因此這個時候技術更好的人就可以凸顯優勢。
舉一個稍微極端的例子,那就是ctf,做題是需要理解的,不會就是不會,多久都做不出來,信息搜集只要告訴了基本方法,基本都能做,只是熟練度有差別,信息搜集的效率有差別而已。
就技術人員個體而言,單純做一個熟練工,是很容易被淘汰的,應當花更多時間在技術的深化上, 建立自己的競爭壁壘。
技術的深化,代碼能力是基礎,進一步對各個系統和漏洞原理的理解,是延申,不斷的學習和突破,最后技術就會越來越好,也就會脫離信息搜集的循環,邁入更高的層面。
不過做項目時候的信息搜集,那是公司項目,是不可避免的,公司花錢請人來就是干這個的。技術棧的突破和延申,是自己的事情。
我覺得更優的解法就是先集中花一部分時間練習信息收集,然后配合自研的小工具把效率提上去, 練到了一定程度,做項目的時候信息搜集基本都能出東西了,公司這邊能跟客戶交差了,再把時間花到漏洞的突破和延申上。
文章大體是講思路,具體的技術細節,很多論壇上都有,這里不再贅述。
這里更大程度上,只是想把做一件事的動機以及如何權衡利弊做好一件事情的方法分享出來,大部分也是個人理解,難免會有錯誤,不足之處希望大家指正。