標籤:ddos 意思 感知 rem 演算法 指令 不用 木馬 告訴
這篇文章總結了一些我在安全工作裡見到過的千奇百怪的C&C控制伺服器的設計方法以及對應的偵測方法,在每個C&C控制服務先介紹黑帽部分即針對不同目的的C&C伺服器設計方法,再介紹白帽部分即相關偵測辦法,大家來感受一下西方的那一套。這裡的白帽部分有一部分偵測方法需要一些資料和統計知識,我也順便從原理上簡單討論了一下用資料進行安全分析的方法,從數學和資料原理上思考為什麼這麼做,可以當作資料科學在安全領域的一些例子學習一下。
0x00 什麼是C&C伺服器
C&C伺服器(又稱CNC伺服器)也就是 Command & Control Server,一般是指揮控制殭屍網路botnet的主控伺服器,用來和殭屍網路的每個感染了惡意軟體(malware)的宿主機進行通訊並指揮它們的攻擊行為。每個malware的執行個體通過和它的C&C伺服器通訊獲得指令進行攻擊活動,包括擷取DDoS攻擊開始的時間和目標,上傳從宿主機偷竊的到的資訊,定時給感染機檔案加密勒索等。
為什麼malware需要主動和C&C服務通訊?因為多數情況下malware是通過釣魚郵件啊等方法下載到感染宿主機,攻擊者並不能主動得知malware被誰下載,也不能主動得知宿主機的狀態(是否開機是否連網等),除非malware主動告訴他,所以malware都會內建一套尋找C&C主控伺服器的方法以保持和C&C的聯絡和斷線重連。C&C控制服務的攻防要點在於,攻擊者能不能欺騙防禦者成功隱藏C&C服務:如果防禦者偵測到了隱藏的C&C服務,通過一些技術(封鎖網域名稱和IP等)或者非技術手段(彙報給安全應急中心等)切斷malware和C&C之間的聯絡,就可以有效摧毀botnet。
尋找到C&C之後malware和C&C之間的通訊方式並不是本文攻防重點,它可以是SSH檔案傳輸也可以是簡單的HTTP GET和POST,技巧性不是很大,不多的幾個靠傳輸來隱藏的技巧比如用DNS隧道隱藏流量這類方法如果有需要以後再來一發詳細闡述。
0x01 IP地址:難度低,易被抓
這是最常見的一類C&C伺服器。攻擊者在惡意軟體的代碼裡寫入程式碼寫上C&C伺服器的IP地址,然後在需要和C&C通訊的時候用HTTP拉取需要的攻擊指令或者上傳從宿主感染機上盜取的資訊等等。
這並不是一個進階的辦法,因為如果malware的二進位代碼被擷取,這種用IP的方法很容易被安全人員通過反向工程二進位代碼或者檢測蜜罐流量得到C&C伺服器的地址,從而彙報給服務提供者封鎖IP。所以這種方法並不能有效隱藏C&C服務,IP被抓了被反毒軟體更新病毒庫以後整個botnet就被摧毀了。現在國內的多數malware的主控伺服器都是以這種拼運氣不被抓的方式存在,他們靠的是malware數量多,今天抓一個當天就再出來三個,市場競爭很激烈。
國外用IP的C&C伺服器一般是在Amazon AWS之類的雲端服務器上,通知了服務提供者很容易封鎖IP。國內的雲端服務商態度曖昧,不過也算還行吧。有機智的國內malware作者在東南亞地區租用雲端服務IP,可以有效避開國內監管而且速度不錯(我並不是教你這麼做啊)。
安全人員也不要以為這個方法低級就以為能輕易有效防禦,比如說如果感染機不能安裝防毒軟體或者根本你就不知道中毒了。最近的一個例子是最近比較火的植入路由器的Linux/Xor.DDOS,它的C&C控制就是在AWS上面的IP,造成的影響很大,因為多數人並不知道路由器會被大規模植入惡意軟體,路由器本身也很少有防護,正好適合用IP做C&C,還省去了複雜的網域名稱演算法和DNS查詢的代碼保證了軟體本身的輕量化。也由於路由本身常開的特性,路由木馬也不用擔心失去連結,一次C&C的通訊可以保持串連很久,降低了木馬被發現的機會。技巧雖然不華麗,但是用的好還是威力強大。該木馬的詳細分析參見http://blog.malwaremustdie.org/2015/09/mmd-0042-2015-polymorphic-in-elf.html 。
0x02 單一C&C網域名稱:難度較低,易被抓
因為硬式編碼IP容易通過在二進位碼內的字串段批量regex掃描抓到,一個變通的辦法就是申請一些網域名稱,比如idontthinkyoucanreadthisdomain.biz代替IP本身,掃描二進位碼就不會立刻找到IP欄位。這是個很廣泛使用的方法,通常C&C網域名稱會名字很長,偽裝成一些個人首頁或者合法生意,甚至還有個假的首頁。即使這麼用心,這種方法還是治標不治本,偵測的方法也相對簡單,原因是:
安全廠商比如Sophos等的資深安全人員經驗豐富,他們會很快人工定位到惡意軟體可能包含C&C網域名稱的函數,並且通過監測蜜罐的DNS查詢資料,很快定位到C&C網域名稱。這些定位的網域名稱會被上報給其他廠商比如電訊廠商或者VirusTotal的黑名單。
新的C&C網域名稱會在DNS資料的異常檢測裡面形成一些特定的模式,通過資料做威脅感知的廠商很容易偵測到這些新出現的奇怪網域名稱,並且通過IP和其他網路特徵判定這是可疑C&C網域名稱。
所以常見的C&C網域名稱都在和安全廠商的黑名單比速度,如果比安全研究員反向工程快,它就贏了,但是最近的格局是隨著基於資料的威脅感知越來越普遍,這些C&C網域名稱的生命週期越來越短,運氣不好的通常活不過半個小時。攻擊者也會設計更複雜的辦法隱藏自己,因為註冊網域名稱需要一定費用,比如帶隱私保護的.com網域名稱需要好幾十美元,尋找肉雞植入木馬也要費很大功夫,本來準備大幹一場連攻半年結果半個小時就被封了得不償失。
在這個速度的比賽裡,一個低級但是省錢方便技巧就是用免費次層網域,比如3322家族啊vicp家族等不審查次層網域的免費次層網域供應商,最著名的例子就是Win32/Nitol家族,搞的微軟靠法院判來3322.org的所有權把他們整個端了(雖然後來網域名稱控制權又被要回去了)。這個方法是國內malware作者最喜歡的一個方法,資料裡常見一些漢語拼音類的C&C網域名稱,比如woshinidie.3322.org等喜感又不忘佔便宜的次層網域,可能因為在我國申請頂級網域名稱麻煩還費錢容易暴露身份,不如悶聲發大財。你看,這也不是我在教你這麼做啊。
真正有意思的是技術是,比較進階的C&C網域名稱都不止一個,通過一個叫做fast flux的辦法隱藏自己。
待續
C&C控制服務的設計和偵測方法綜述——DDoS攻擊,上傳從宿主機偷竊的到的資訊,定時給感染機檔案加密勒索等。