botnet

Botnet是一群感染惡意軟體並受駭客控制的電腦,是許多網路安全威脅的主要來源(Sun et al, 2006)。駭客可控制多台電腦進行不同種類的攻擊,包括分散式阻斷服務攻擊(DDoS)、發送垃圾郵件及釣魚郵件、破解密碼、偷取敏感個人資料等。而且Botnet的技術更是日新月異,造成的損失也越來越大,再加上一般民眾使用電腦沒有警覺心,更助長Botnet的擴張,造成網管人員很大的困擾。 

ps
attackers can use botnets to perform:
*ddos attacks
*spamming
*sniffing traffic
*keylogging
*spreading new malware
*installing advertisement add-ons and BHOs(browser helper objects)
*google adsense abuse
*attacking IRC chat networks
*manipulating online polls/games
*mass identity theft 

Botnet的組成
可分為三部份(Wang et al, 2008),分別描述如下:
Botmaster:
也就是駭客本身,也可稱為Botheader,主要透過網路傳達命令給Botnet並設法讓自己隱藏而不被找到。
Botclient:
也稱為Bot,一但Botmaster透過惡意程式控制到使用者的電腦,讓該電腦處理被遙控的狀態時,該電腦則為Botclient。一般來說,Botclient很難察覺到自己是否已經成為Botnet的一份子,網管人員更難發現區域網路內有多少電腦中已經被Botmaster所操控。
C&C Server (Command and Control Server):
接收Botmaster命令的伺服器,負責命令的傳遞與控制整個Botnet,Botmaster可經由C&C Server知道整個Botnet的Botclient數量及相關資訊。


Botnet的感染流程
感染流程主要分為四大步驟(Kalt, 2000; Zhu et al, 2008; Feily et al, 2009),分別描述如下:
Step1.
Botnet中的成員會透過不同的方式感染主機,常見的感染途經有
(a)掃描有弱點的主機:
 類似蠕蟲(worms)的感染模式,會掃描網路上的主機,
 在對有弱點的主機,以不同的入侵方法感染受害主機。
(b)傳送惡意訊息:
 在信件或即時訊息中,夾帶惡意程式誘導使用者開啟,
 或提供惡意網頁的超連結誘導使用者點擊,一但使用者觸發惡意程式就會被入侵。
(c)攜帶式儲存設備:
 如同傳統的病毒感染模式,透過隨身碟等可攜帶式的儲存設備,
 將惡意程式散播到有使用該設備的電腦,
 一但使用者點擊偽裝成正常程式的惡意程式就會被感染。
Step2.
被感染的受害主機會從C&C Server或特別的位置,使用FTP、HTTP、P2P等方式下載並安裝相關Malicious Binary,或稱Bot Binary Code,受害主機一但安裝成功,就會成Botnet的其中一台Botclient
Step3.
Botclient會重覆Step1擴大Botnet範圍,並和C&C Server建立起命令和控制的通道,接著Botmaster就可以透過C&C Server的通道傳播指令給所有Botclient,而Botclient會接收並執行Botmaster的指令
Step4.
Botclient會透過C&C Server持續更新惡意程式本身,常見的理由如下
(a)躲避偵測系統:
 惡意程式必須不斷更新以改變特徵,使偵測系統無法立即發現
(b)增加新功能:
 Botmaster要增加惡意程式的新功能
(c)更換C&C Server:
 C&C Server每隔一段時間會有變動以降低被發現的機率,
 因此惡意程式要不斷更新C&C Server的清單
ps:
以agobot為例
Agobot infect step:
1 mode of infection
2 massive spreading stage
3 connect back to IRC
4 attacker takes control of the victim’s computer


C&C Server的拓樸模式
由於Botnet的資料交換與訊息的傳輸主要依賴C&C Server,因此C&C Server的拓樸模式會決定整個Botnet的架構,常見的拓樸模式主要可分為以下幾種:(Ollmann, 2009)
星狀拓樸
所有的Botclient連到同一台C&C Server,Botmaster只要透過此Server就可控制整個Botnet,不過缺點是當Server無法使用時,Botmaster就無法控制整個Botnet,此種拓樸架構也是最容易被瓦解的,因為只要找到一台C&C Server,就可以將整個Botnet破壞掉。
多重Server拓樸
以數台C&C Server彼此互連,當其中一台C&C Server無法使用時,其他的Server將取代它,使Botnet能正常運作,此種拓樸架構可以解決星狀拓樸的缺點,但為了讓Server彼此之間要能互相連繫,所以在設計上困難度較高,因為需要隨時取代其他C&C Server進行工作。
階層式拓樸
部份Botclient同時也扮演C&C Server的角色,並以階層式架構互連,提供極高的可擴充性,此種拓樸架構可以解決星狀拓樸的缺點,因為當某一個階層的C&C Server斷線,只會導致一部分的Botclients失聯,而不是讓整個Botnet 失去作用。
隨機式拓樸
最不容易被瓦解的拓樸架構為隨機式拓樸,Botclient會同時扮演C&C Server的角色,並彼此相連,沒有中控Server,任何一個C&C Server失去聯繫,也不會影響到其他的Botclient,Botmaster可下達指令給Botnet中的任一個Botclient,再由它廣播給其他的Botclients,但其設計難度較高,Botmaster必須確認每一個Botclient都可以收到指令,而且只會收到一次,以避免重複執行。


Botnet通訊使用的協定
Botclient會接收Botnet的所傳來的訊息並回應其結果,這之間的傳輸方式,依照使用的通訊協定可以分為以下幾類:(Dagon et al, 2007; Zhu et al, 2008; Feily et al, 2009)
IRC Protocol
最早出現的Botnet以IRC為通訊協定,約在1993年開始陸續出現,主要利用IRC線上聊天的機制。Botclient會透過IRC連接到C&C Server,並加入Botmaster已開好的聊天頻道,並等待Botmaster在頻道上所下達的命令,當Botclient接受命令後會執行並將結果傳回頻道上,並持續與C&C Server保持連繫。像是Agobot、SDBot、 SpyBot、GT bot(Barford et al, 2006)等惡意程式所建立的Botnet,都是屬於這類型的。
HTTP Protocol
在2005開始出現使用以HTTP為通訊協定的Botnet,此種方式將Botclient的流量隱藏在正常網頁流量下,隱蔽性高,這種傳輸方式讓防火牆難偵測,因為防火牆不會去阻擋網頁流量。當電腦成為Botnet的一員後,會用DNS解析並透過HTTP通訊協定連到C&C Server,而C&C Server會回應控制命令或更新惡意程式。像是BlackEnergy(Nazario, 2007)等惡意程式所建立的Botnet,都是屬於這類型的。(Lee et al, 2008)
P2P Protocol
在2003開始出現使用以P2P為通訊協定的Botnet,P2P軟體的架構為一種點對點式的傳輸方式,此方式將Botclient與Botmaster之間的流量包裝在P2P的傳輸中,使來源的追蹤更加困難,該方式會實作隨機式拓樸架構,因此每個Botclient也會扮演C&C Server的角色,也是最不容易被瓦解的架構(Zeidanloo et al,2010; Han et al, 2011)。像是phatbot(Stewart, 2004)、Sinit(Stewart, 2006)和peacomn(Suenaga, 2007)等惡意程式所建立的Botnet,都是屬於這類型的。
除此之外,有些Botnet也會結合多種通訊協定,像在2008年出現的waledac(Jang, 2009),就是使用P2P over HTTP的技術,結合HTTP不易被防火牆封鎖,以及P2P隨機式拓樸架構的優點。

botnet特徵
web botnet
會透過DNS大量查詢
會透過 HTTP 及 TCP 傳輸下載檔案
會開啟特定的 port 進行連線與溝通
p2p botnet
會模仿P2P軟體的架構大量建立連線,也就是說該殭屍電腦連線數瞬間連結數會極多
會保持bot間彼此間連線,所以會保持資料的傳輸,也就是每條連線都有一定程度上的傳輸量
會盡量用最小的資料量通訊,以保持隱密不被發現,也就是小流量的連線多
不會追求下載速度,也不會一直嘗試大量IP建立連結並下載資料,也就是通訊中的控制封包(syn,finish,reset)數量或比例應遠低於P2P軟體 

botnet三大行為
1擴散行為,通常包括
scan(網路掃描)尋找目標
exploit(漏洞攻擊)入侵目標
2通訊行為,包括以下
DNS query(查詢dns)尋找C&C之ip
與C&C通訊
malware download or update(惡意程式下載或更新)
3惡意行為,botmaster最常做的如下
DDoS Attacks
偷取資料
浪費頻寬
透過大量bot形成雲端破解密碼
 


Botnet的隱密技術
Botnet可以透過很多隱敝技術(Rodriguez-Gomez et al, 2011),以躲避安全偵測系統,常見的技術如下
Ciphering(加密)
現在的Botnet通常會在C&C的通訊過程中加密,以通訊內容為基礎的分析方法會很難辨識加密過的Botnet,像是SpamThru(Stewart, 2006)和Zeus(Stewart, 2010)就有使用這種技術。
Polymorphism(多形)
Botnet使用的惡意程式透過多形的技術,可以輕易改變惡意程式本身的程式碼,導致惡意程式的特徵產生變化,這會使以特徵為基礎的偵測系統很難發現到它們的存在,因為惡意程式變化太快,偵測系統的特徵碼很難及時得到惡意程式的新特徵,像是PhatBot(Stewart, 2004)和Zeus(Stewart, 2010)就有使用這種技術。
IP Spoofing(假冒IP來源)
使用假的來源IP對目標進行攻擊,因此很難透過追蹤來源的方式找到攻擊者,常被用在Botnet進行阻斷式服務攻擊(DoS)。
E-mail Spoofing(假冒寄件者)
使用假的EMAIL寄件者對目標進行攻擊,因此很難透過追蹤來源的方式找到攻擊者,常被用在社交工程的釣魚網站(phishing attacks),目前有使用該技術的Botnet有Bobax(Stewart, 2004)等。
Fast-flux Network
當Botclient要連線到C&C Server的網域時,會先進行dns查詢以得到該網域的某一個IP,而該ip則為某一台代理主機的ip,當Botclient使用該ip連到代理主機時,代理主機會將連線導到真正的C&C Server,由於代理主機會有很多台,並使用不同的ip,因此若被封鎖,也只是某一台代理主機無法使用而已,Botclient仍然可以使用其他代理主機和C&C Server通訊。
fast flux分為以下兩種,主要在dns query的差別
 single fast flux
  詢問的ns server IP固定
  向monthership要求的資料只有http
 double fast flux
  詢問的ns server IP變動的,須和monthership查
  向monthership要求的資料有http,dns
onion routing(洋蔥路由)
防止C&C server被發現

ps: 
fast-flux網域有以下特性
TTL設定0或極低(通常小於300秒),會使快取保留越短,讓每次解析網域時在去做完整查詢,而不是使用快取的資料
(正常情況下第一次查詢完該網域的ip後,會保留在快取中,讓下次要查該網域時可直接使用,但CDN的TTL也設定很低)
使用round-robin,所以解析主機時會得到不同IP
(正常情況下每次解析主機會有相同IP,但一般網站為了負載平衡會使用round-robin技術)
DNS回應紀錄都沒有Authority與Additional資訊
fast-flux bot(也就是查詢所得到的ip)
有以下2特徵
1為public ip
2具proxy功能,可對tcp80或udp53做導向
負責2件事
1proxy(流量導向)需求到mothership(真正提供內容的伺服器)
2在從monthership回應的內容傳回去
user特徵
而使用者在查詢flux-domain時會發現該domai會對應多個ip,如下,而且每個ip都對應到相同的內容
88.215.17.167 
67.51.31.108 
66.183.201.90 
70.57.67.175 
23.14.118.126 
95.32.70.105
66.163.159.63
68.247.85.44


Botnet防制
有很多方法可以防制Botnet,而這些方法可以從兩個方向去實作,分別描述如下(Brezo et al, 2011)
以學習為基礎的方向:
  研究人員使用一台主機建立成Honeypot(Challoo et al, 2011),並誘使Botnet的惡意程式感染這台主機,一但該主機成為Botnet的成員,分析人員在觀察此主機的相關活動,像是網路活動或是系統活動,並從這些活動找出Botnet的弱點或活動規則,或搭配機器學習的技術找出相關規則。
  除了Honeypot的方式外,另一種常見的方式是透過Honeynet(Bhatia et al, 2011)的方式,雖然都要誘使Botnet感染本身,在由分析人員收集相關活動,但與Honeypot不同的是,Honeypot是以單台主機做記錄,而Honeynet是建立一個網路,而網路內有多台主機,因此規模可以更大,收集的相關資料也更全面。
  在誘使Botnet感染Honeypot方面,我們可以直接將惡意程式丟入Honeypot內執行,並記錄惡意程式的活動以做成資料集,在對資料集進行分析;或是架設在網路上,讓網路上的惡意程式直接感染Honeypot,在收集已知或未知的惡意程式找出其弱點。一但找到Botnet的弱點,我們就可以根據該弱點對Botnet進行擊破。
以偵測為基礎的方向:
  透過Botnet的行為或特徵找出問題,像是有問題的封包,有問題的用戶端等,而偵測方式可以分為兩種,分別為誤用偵測及異常偵測(Patcha et al, 2007; Li et al, 2009),誤用偵測指的是以現有的Botnet規則去找出問題,一但符合Botnet的規則,則判定為Botnet;而異常偵測指的是,先定義正常使用者行為的規則,而未符合這些正常使用者行為的規則即為Botnet。
  而根據偵測的地點也可以分為以主機型偵測系統和網路型偵測系統。主機型偵測系統的偵測方式類似防毒軟體,安裝在主機上後會監控主機各種活動;而網路型偵測系統會根據主機的網路流量做偵測,像是入侵偵測系統、防毒牆等設備的工作方式,而這些偵測系統有些是佈署在網路骨幹線路上,一發現問題即可立刻封鎖;有些是以監聽網路流量的方式做偵測,一但發現有問題則通知管理者。

ps:
關於botnet tool: nuclear bot 

reference
Barford, P. & Yegneswaran, V. (2006). An inside look at botnets. In Special Workshop on Malware Detection Advances in In-formation Security.
Brezo, F., Santos, I., Bringas, P.G. & del Val, J.L. (2011). Challenges and Limitations in Current Botnet Detection. The 22nd International Workshop on Database and Expert Systems Applications, 95-101.
Bhatia, J.S., Sehgal,R.K., & Kumar, S. (2011). Honeynet Based Botnet Detection Using Command Signatures. Communications in Computer and Information Science, Vol.154, Part1, 69-78.
Challoo, R., & Kotapalli, R. (2011). Detection of Botnets using Honeypots and P2P Botnets. Journal of Computer Science and Security, Vol.5, Iss.5, 496-502.
Dagon, D., Gu, G., Lee, C.P. & Lee, W. (2007). A Taxonomy of Botnet Structures. Twenty-Third Annual Computer Security Applications Conference, 325-339.
Feily, M. Shahrestani, A. & Ramadass, S. (2009). A Survey of Botnet and Botnet Detection. Third International Conference on Emerging Security Information, Systems and Technologies, 268-273.
Han, K.S., Im, E.G., Kim, K.J. & Ahn, S.J. (2011). A Survey on P2P Botnet Detection. Proceedings of the International Conference on IT Convergence and Security, 589-593.
Kalt, C. (2000). Internet Relay Chat: Architecture. RFC 2810.
Lee, J., Jeong, H., Park, J., Kim, M. & Noh, B. (2008). The activity analysis of malicious http-based botnets using degree of periodic repeatability. International Conference on Security Technology, 83-86.
Li, C., Jiang, W., & Zou, X. (2009). Botnet: Survey and Case Study ,Innovative Computing, Information and Control, 1184-1187.
Nazario, J. (2007). Blackenergy ddos bot analysis. Technical report, Arbor Networks.
Ollmann, G. (2009). Botnet Communication Topologies. from Damballa.
Patcha, A., & Park, J.M. (2007). An overview of anomaly detection techniques: Existing solutions and latest technological trends. Journal of Computer Networks, Vol.51, Iss.12, 3488-3470.
Rodriguez-Gomez, R. A., Macia-Fernandez, G. & Garcia-Teodoro, P. (2011). Analysis of Botnets Though Life-Cycle. International Conference on Security and Cryptography, 257-262.
Stewart, J. (2004). PhatBot trojan analysis. Technical report, SecureWorks.
Stewart, J. (2004). Bobax trojan analysis. Technical report, SecureWorks.
Stewart, J. (2006). Spamthru trojan analysis. Technical report, SecureWorks.
Stewart, J. (2006). Sinit P2P Trojan Analysis. Technical report, SecureWorks.
Stewart, J. (2010). Zeus banking trojan report. Technical report, SecureWorks.
Suenaga, M. & Ciubotariu, M. (2007). Symantec: Trojan.peacomm. http://www.symantec.com
Sun, Y.d., & LI, D. (2006). Overview of botnet. Journal of Computer Applications, Iss.7.
Wang, J. H. and Laih, C. S. (2008). “An Investigation and Implementation of Botnet Detection Schemes.” Unpublished doctoral dissertation, College of Electrical Engineering and Computer Science National Cheng Kung University Master Thesis, unpublished.
Zeidanloo, H.R., Manaf, A.B.A., Ahmad, R.B., Zamani, M. & Chaeikar, S.S. (2010). A Proposed Framework for P2P Botnet Detection. IACSIT International Journal of Engineering and Technology, Vol.2, No.2.
Zhu, Z., Lu, G. & Chen, Y. (2008). Botnet Research Survey. Annual IEEE International Computer Software and Applications Conference, 967-972.