賀軍忠
(隴南師范高等??茖W(xué)校電商學(xué)院,甘肅 成縣 742500)
進行黑客攻擊有三個基本條件必須具備:第一,熟悉攻擊相關(guān)背景知識,對編程語言語法和結(jié)構(gòu),操作系統(tǒng),計算機網(wǎng)絡(luò),計算機體系結(jié)構(gòu)和其他相關(guān)原理理解與掌握;第二,論語云:“工欲善其事,必先利其器”.精通各種黑客工具是黑客必備的利器,查找系統(tǒng)漏洞并實施攻擊是一項復(fù)雜且重復(fù)的任務(wù).為便于黑客易于理解復(fù)雜的系統(tǒng)結(jié)構(gòu),必須精通且靈活使用各種黑客工具.第三,必須掌握多種編程語言,精通其中某一種編程語言,無論黑客工具多么強大,都必須編寫適合自己使用的工具,以進行高難度的黑客攻擊.
Python語言被稱為“敏捷編程語言”,它是一種通用的高級編程語言,由于其具有易學(xué)易用、開發(fā)速度快、擴展性好、功能強大等優(yōu)點,常常被黑客們的所青睞.首先,Python支持功能強大的黑客攻擊模塊,其擁有用于支持黑客攻擊的豐富多樣的庫,比如pydbg、scapy、salmap、httplib等.目前,這些庫被廣泛應(yīng)用于各種黑客攻擊.其次,Python能夠訪問各種APl,Python提供了用于黑客可以訪問的Windows、Os X、Linux、Solaris、FreeBSD、OpenBSD等系統(tǒng)的ctypes庫,黑客借助它能鏈接以上系統(tǒng)提供的DLL與共享庫.第三,大多黑客攻擊工具為Python提供了APl,像Metasploit、sqlmap、Nmap等黑客工具都為Python提供了擴展接口[1].黑客們通過使用Python,可以將Metasploit、sqlmap、Nmap等工具改造得更加強大.第四,Python易學(xué)易用,這也是Python被好多黑客,尤其是新手所青睞的最重要一點,這對黑客攻擊而言是個巨大的優(yōu)勢.據(jù)中國企業(yè)數(shù)據(jù)治理聯(lián)盟數(shù)據(jù)空間統(tǒng)計分析,目前有9大編程語言是黑客最喜歡和青睞的語言,并對此做了詳細分析排名,其中Python僅次于R語言排名第二.該統(tǒng)計報告指出Python是行業(yè)人員正在轉(zhuǎn)換發(fā)展的方向.過去兩年里,很明顯存在由R向Python轉(zhuǎn)化的趨勢,Donnell說:“Python用途寬廣且靈活,所以人們蜂擁而至”[2].一般而言,掌握3-4種編程語言是成為一名黑客所必須的.但由于不同語言自身的特點和結(jié)構(gòu),難易程度也不一樣,其中最具代表性的并在分析系統(tǒng)與程序行為的過程中起著核心作用有C語言、C++、Jave與匯編語言,必須掌握.但也正因如此,學(xué)習(xí)難度較大,要精通更是難上加難.不僅如此,黑客還需編寫符合自身需要的黑客攻擊工具,也就意味著要掌握另外一種編程語言,用于攻擊工具.恰恰Python語言具有易學(xué)易用的特點,且擁有各種強大功能.通過以上數(shù)據(jù)可知Python語言是黑客攻擊語言的不二之選.
Wikipedia中關(guān)于“黑客攻擊”的定義如下:“針對電子電路、計算機軟硬件、網(wǎng)絡(luò)、網(wǎng)頁等各種信息系統(tǒng),借助某種手段、技術(shù),使之執(zhí)行信息系統(tǒng)設(shè)計者、管理者、運營者預(yù)料之外的動作行為,或者設(shè)法獲取高于系統(tǒng)給定的權(quán)限,對相關(guān)信息進行查閱、復(fù)制、修改等的一系列行為[3].”
從Wikipedia中關(guān)于“黑客攻擊”的定義可知,黑客攻擊就是一種特定的行為,這種行為能導(dǎo)致意外現(xiàn)象發(fā)生.其大致可分為兩個方面的攻擊:一方面是技術(shù)方法(技術(shù)攻擊),另一方面是社會工程方法(社會工程攻擊).技術(shù)方面攻擊也有好多種,如系統(tǒng)黑客攻擊、web黑客攻擊、網(wǎng)絡(luò)黑客攻擊等.本研究從網(wǎng)絡(luò)黑客攻擊技術(shù)方面的進行分析.
TCP/IP本質(zhì)上并不具有防范黑客攻擊的強大能力,在連接設(shè)置與通信過程中有很多問題如圖1所示.首先,客戶端初次嘗試連接服務(wù)器時,會向服務(wù)器發(fā)送SYN包,服務(wù)器將為連接分配緩沖資源.若客戶端不斷向服務(wù)器發(fā)送SYN包,則服務(wù)器就會不斷分配通信緩沖,當(dāng)緩沖全部耗盡后,網(wǎng)絡(luò)就進入癱瘓狀態(tài).其次,正常的通信連接結(jié)束后,黑客可以偽裝成客戶機輕松攔截通信會話.一般使用TCP頭中的序列號對通信對方進行認證,第三方可以輕松得到該序列號,并偽裝相應(yīng)客戶機.第三,IP頭中的源IP信息很容易偽造.將源IP偽造為攻擊方系統(tǒng)的IP而非客戶機PC的IP,并向服務(wù)器發(fā)送SYN包,服務(wù)器就會將ACK包發(fā)送給攻擊方系統(tǒng),從而實現(xiàn)DoS攻擊.
圖1 網(wǎng)絡(luò)黑客攻擊過程
以TCP/IP協(xié)議為攻擊對象的技術(shù)非常多,因此,人們開發(fā)了多種防御設(shè)備.隨著IPv6的出現(xiàn),網(wǎng)絡(luò)安全問題得到了明顯改善,但由于IPv6目前還沒有普及,IPv4還占主導(dǎo)地位,就算使用了IPv6,但其網(wǎng)絡(luò)中仍然運行著多種協(xié)議[4].所以網(wǎng)絡(luò)黑客攻擊技術(shù)也在不斷升級與進化.
Python提供了socket模塊,使用它可以掃描端口.IP是識別服務(wù)器的邏輯地址.端口是邏輯單位,它使得多個應(yīng)用程序可以共享一個IP地址.IP是IP協(xié)議中的識別符,而端口是TCP/UDP協(xié)議中的識別符.為了對外提供網(wǎng)絡(luò)服務(wù),防火墻或服務(wù)器會主動對外開放一些端口,其中最具代表性的端口為80與443,分別用于對外提供HTTP與HTTPS服務(wù).此外還開放了一些端口,以方便管理,其中最具代表性的是21號與22號端口,它們分別提供FTP與Telnet服務(wù),如圖2.像這樣,為了對外提供服務(wù)而開放的這些端口成為黑客攻擊的主要目標.
圖2 端口掃描過程
端口掃描是指針對對外提供服務(wù)的服務(wù)器進行掃描,獲取服務(wù)器對外開放的端口列表.雖然有多種端口掃描技術(shù),但大致可以分為基于UDP的端口掃描與基于TCP的端口掃描.基于UDP的端口掃描通過UDP包掃描端口,而基于TCP的端口掃描則通過SYN、FIN等多種包掃描端口,探測相應(yīng)端口是否開放[5].不同端口掃描技術(shù)具有不同性能與隱蔽性,要根據(jù)具體情況選用合適的技術(shù).
基于以太網(wǎng)的同一網(wǎng)絡(luò)環(huán)境(使用同一路由器)中,數(shù)據(jù)包的傳送是其于MAC(Media Accwss Control)地址進行的.一臺PC向另一臺PC傳送數(shù)據(jù)時,會將數(shù)據(jù)包廣播到同網(wǎng)段的所有PC.所有接收到數(shù)據(jù)包的PC將自身MAC地址與數(shù)據(jù)包的目的MAC地址進行比較,若兩者一致,則接收并處理,否則丟棄.借助包嗅探技術(shù),PC會接收并處理所有數(shù)據(jù)包.這樣,同一網(wǎng)絡(luò)中傳播的所有數(shù)據(jù)可盡收眼底,一目了然.然而要想創(chuàng)建包嗅探程序,需要以管理員權(quán)限安裝Python GUl.原始套接字支持原樣接收基本包功能,它不會應(yīng)用協(xié)議過濾.創(chuàng)建原始套接字后,將其綁定到NIC,切換NIC模式.默認設(shè)置下,NIC只接收目的地址為自身的包,而將模式更改為Promiscuous后,所有進入NIC的包都會被接收.在Python中只需使用幾行代碼即可完成上述設(shè)置.即在IDLE圖標上點擊鼠標右鍵,在快捷菜單中選擇“屬性”,在IDLE屬性窗口點擊“兼容性”選項卡,在“設(shè)置”中點選“以管理員身份運行此程序”.這樣,每次雙擊IDLE圖標都會以管理員身份運行.
圖3 包嗅探
會話劫持(Sesion Hijacking)攻擊大致分為HTTP會話劫持與TCP會話劫持兩類.前者指通過盜取保存服務(wù)認證信息的Cookie中的SessionID值進行黑客攻擊,后者是指盜取TCP數(shù)據(jù)包信息.而劉新亮等研究的《針對SSL/TLS協(xié)議會話密鑰的安全威脅與防御方法》分析了“客戶端處理會話秘鑰和SSL/TLS協(xié)議會話過程存在的漏洞與缺陷,研究了威脅原理的過程”[6].本研究以網(wǎng)絡(luò)黑客攻擊中常用的TCP會話劫持為中心進行分析.
TCP協(xié)議使用IP、端口、序列號三個要素對通信對方進行認證.TCP會話劫持中,先通過包嗅探獲取認證信息,然后使用它在中間攔截客戶機與服務(wù)器之間的通信.黑客暫時斷開客戶機與服務(wù)器之間的連接,將發(fā)送方IP修改為黑客PC的IP,重新與服務(wù)器的連接.在服務(wù)器看來,通信只是暫時發(fā)生了中斷,然后再次成功連接,從而將黑客PC誤認為客戶機.客戶機與黑客PC也采用類似方式設(shè)置連接,如圖4.這樣,客戶機與服務(wù)器之間的所有通信都會經(jīng)過黑客PC,黑客即可控制所有信息.
圖4 TCP會話劫持
欺騙(Spoofing)攻擊也是常見的網(wǎng)絡(luò)黑客攻擊技術(shù).其大致可以對DNS、IP、ARP三種資源進行欺騙攻擊.下面以具代表性的ARP欺騙進行分析.ARP欺騙攻擊就是利用ARP協(xié)議的缺陷進行的一種非法攻擊,攻擊者常常把自己偽裝成“中間人”,獲取局域網(wǎng)內(nèi)的所有報文信息[7].ARP協(xié)議用于根據(jù)IP地址獲取MAC地址.PC內(nèi)部有ARP緩存表,保存IP與MAC的對應(yīng)信息.識別通信對方時,只要訪問相應(yīng)緩存表提取其MAC地址即可.若在ARP緩存表中查不到相應(yīng)信息,則可以通過ARP協(xié)議獲取指定IP地址對應(yīng)的MAC地址.由于ARP協(xié)議在設(shè)計時未充分考慮安全問題,所以很容易受到攻擊.只要使用ARPReply包即可輕松操作對方的ARP緩存表.ARP緩存表保存著通信對方的IP與MAC地址映射關(guān)系.例如黑客將不同的PC1與PC2對應(yīng)的信息替換為自身PC的MAC地址后,所有通信都會經(jīng)過黑客PC.
拒絕服務(wù)攻擊(DoS,Denial of Service)是網(wǎng)絡(luò)中最常用的黑客攻擊技術(shù)之一.我們知道TCP/IP協(xié)議本身在結(jié)構(gòu)上存在多種安全隱患.通過修改SYN數(shù)據(jù)包的發(fā)送方地址,或者不斷發(fā)送SYN數(shù)據(jù)包,將大量IP數(shù)據(jù)包分制為更小的單位進行傳送等,即可使系統(tǒng)服務(wù)陷入癱瘓.DoS攻擊指通過發(fā)送大量正常的數(shù)據(jù)包使系統(tǒng)服務(wù)癱瘓[8],DoS攻擊原理如圖5.為了防止受DoS攻擊以至系統(tǒng)癱瘓,到目前出現(xiàn)了許多防范DoS攻擊的設(shè)備,使用少數(shù)幾臺PC發(fā)動DoS攻擊使攻擊目標系統(tǒng)取務(wù)癱瘓基本不可能.為了解決并實現(xiàn)這一問題,黑客只能廣泛散播病毒,將大量PC機變?yōu)榻┦琍C(肉雞),通過控制這些僵尸PC發(fā)送大量合法服務(wù)請求,以達到使目標主機服務(wù)癱瘓的目的,這種攻擊稱為“分有式拒絕服務(wù)攻擊”(DDoS,Distributed Denial of Service).
圖5 DoS攻擊
DDoS攻擊使用僵尸網(wǎng)絡(luò)(Botnet).所謂僵尸網(wǎng)絡(luò)是指借助網(wǎng)絡(luò)廣泛傳播含有惡意代碼的程序文件(僵尸程序),感染網(wǎng)絡(luò)上的大量PC并將其變?yōu)榻┦琍C,然后通過C&C(Command and Control Server,遠程命令和控制服務(wù)器)服務(wù)器控制這些僵尸PC,最后組成龐大的網(wǎng)絡(luò).這些惡意代碼是通過電子郵件、公告欄、木馬等多種方式進行傳播的,而對此進行實際防范并非易事.目前,通過僵尸網(wǎng)絡(luò)發(fā)動DDoS攻擊仍然是非常有用的黑客攻擊手段.而且相比傳統(tǒng)的DDoS攻擊,從新出現(xiàn)的DDoS攻擊樣本來看,攻擊效率越來越高,攻擊手段越來越復(fù)雜[9].DDoS攻擊原理如圖6所示.
圖6 DDoS攻擊
Python提供了多種模塊,用于對網(wǎng)絡(luò)進行黑客攻擊,其中最具代表性的是capy與pcapy.scapy是功能強大的網(wǎng)絡(luò)黑客攻擊工具,用途廣泛,不僅可以用于端口掃描,還可以用于數(shù)據(jù)包嗅探等.但隨著Nmap、Wireshark、Metasploit等強大工具的出現(xiàn),對Python黑客攻擊模塊的升級中止了.這些模塊不僅安裝困難,而且找到適合所用環(huán)境的模塊也并非易事.針對Nmap與Wireshark,Pyrthon提供了多種接口,支持在應(yīng)用程序中使用多種方法進行黑客攻擊.安裝類似ProtectX工具實現(xiàn)掃描的反擊與追蹤.ProtectX是一款專門為防護Python提供的Python Nmap模塊端口掃描,并在在用戶連接網(wǎng)絡(luò)時保護計算機的工具.可以同時監(jiān)視20個端口,還可以幫助追蹤攻擊者的來源.一旦有人嘗試入侵連接到用戶的計算機,即可發(fā)出聲音警告并將入侵者的IP地址記錄下來,可以有效防止黑客入侵.當(dāng)然有了ProtectX的保護,對于一般的掃描攻擊,大家就可以不用擔(dān)心了.不過僅僅依靠類似這樣的工具,還遠遠談不上高枕無憂,還需要提前做好防御掃描入侵的準備,如對注冊表的修改,禁止匿名用戶對IPC$的訪問等.
用于包嗅探的嗅探器是一把雙刃劍,如果在網(wǎng)絡(luò)黑客攻擊者的手里,嗅探器能夠捕獲計算機用戶因為疏忽而帶來的漏洞,成為一個危險的網(wǎng)絡(luò)間謀.但如果到了系統(tǒng)管理員的手里,則能幫助用戶監(jiān)控異常網(wǎng)絡(luò)流量,從而更好地管理好網(wǎng)絡(luò).如“網(wǎng)絡(luò)執(zhí)法官”,其是一款局域網(wǎng)管理輔助軟件,采用網(wǎng)絡(luò)底層協(xié)議,能穿透各客戶端防火墻對網(wǎng)絡(luò)中的每一臺主機(這里的主機是指各種計算機、交換機等配有IP的網(wǎng)絡(luò)設(shè)備)進行監(jiān)控,采用網(wǎng)卡號(MAC地址)識別用戶等.“網(wǎng)絡(luò)執(zhí)法官”的主要功能是依據(jù)管理員為各主機限定的權(quán)限,實時監(jiān)控整個局域網(wǎng),自動對非法用戶進行管理,可將非法用戶與網(wǎng)絡(luò)中某些主機或整個網(wǎng)絡(luò)隔離,提高了網(wǎng)絡(luò)安全性.
木馬常用的偽裝手段有:修改圖標、冒充圖片文件、文件捆綁、出錯信息顯示等,本研究以python提供的ftplib模塊為例分析密碼破擊與防護措施,F(xiàn)TP服務(wù)后臺設(shè)置中,通常不會檢查密碼輸錯次數(shù).這樣即可將sqlmap提供的wordlist.txt文件用作字典,不斷嘗試登錄,從而猜出密碼.python提供了ftplib模塊,該模塊提供了靈活使用FTP服務(wù)的多種功能.python為連接與登錄FTP提供了簡單的機制.許多需要在Java或C語言中處理的過程已經(jīng)在ftplib模塊內(nèi)部得到處理,這樣,用戶只需使用import語句將ftplib模塊導(dǎo)入應(yīng)用程序,即可輕松使用FTP.若一個系統(tǒng)不限制密碼輸錯次數(shù),則很容易成為密碼破解攻擊的目標.為了阻止密碼破解攻擊,必須在系統(tǒng)環(huán)境設(shè)置或安裝的安全設(shè)備(防火墻、IPS、IDS)中對此進行相應(yīng)處理.盡量少用或者不用FTP,即使使用,也要利用Secure FTP等安全協(xié)議.對于其他類似密碼破解攻擊可以通過安裝相應(yīng)的“木馬清除專家”等軟件清除木馬.同時要在類似“Windows進程管理器”中管理計算機進程.在進程管理器中,用戶可以仔細查看正在運行的進程,如果有可疑進程,用戶可查看該進程的詳細屬性.這樣可以進一步的篩選出正在運行的木馬進程,關(guān)閉該進程后,用專業(yè)工具進行查殺即可.
漏洞是硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng).可以使用Microsot基準安全分析器(Microsoft Baseline Security Analyzer,MBSA)等工具檢測系統(tǒng)漏洞.其允許用戶掃描一臺或多臺基于Windows的計算機,以發(fā)現(xiàn)常見的安全方面的配置錯誤.MBSA將掃描基于Windows的計算機并檢查操作系統(tǒng)和已安裝的其他組件(如IIS和SQL Server),以發(fā)現(xiàn)安全方面的配置錯誤,并及時通過推薦的安全更新進行修補.
DDos攻擊的種類較多,本研究以基于Python的Slowloris攻擊為例分析其防范措施,Web服務(wù)器的一般做法是先分析來自客戶機的HTTP請求頭,然后處理請求,并將處理結(jié)果發(fā)送給客戶機,最后終止連接.為了提高資源利用效率,Web服務(wù)器會對最大客戶連接數(shù)加以限制.Slowloris攻擊使用服務(wù)器連接數(shù)達到最大值,從而無法處理新的要求,進而拒絕對外提供服務(wù).要實施Slowloris攻擊首先要安裝Pyloris模塊,并通過C:pyloris-3.2>python pyloris.py運行pyloris模塊,進而通過其提供的UI實施攻擊.由于Slowloris攻擊不會留下任何痕跡在Web服務(wù)器日志上,所以很難對其進行監(jiān)測.但仍然有一些簡單的防御方法,通過升級Web服務(wù)器的硬件(CPU、內(nèi)存)配置增加允許的最大連接數(shù),或者限制來自同一IP的連接個數(shù)等.還可以安裝Web防火墻等安全設(shè)備,攔截有錯誤的HTIP頭.
為了防范DDoS攻擊,國家機關(guān)與金融機構(gòu)大力推行網(wǎng)絡(luò)隔離,將業(yè)務(wù)網(wǎng)與互聯(lián)網(wǎng)隔離.在網(wǎng)絡(luò)隔離技術(shù)中,物理或邏輯網(wǎng)絡(luò)被隔離,這樣即使接入互聯(lián)網(wǎng)的某臺PC機感染了惡意代碼,其影響范圍也不會擴散到內(nèi)網(wǎng)[10].
由于互聯(lián)網(wǎng)是向所有人開放的,一個人只要愿意,都可以成為信息的提供者[8],同時也為網(wǎng)絡(luò)黑客提供機會.黑客攻擊技術(shù)不僅只有網(wǎng)絡(luò)黑客攻擊,還有系統(tǒng)黑客攻擊、Web黑客攻擊、應(yīng)用程序黑客攻擊、無線網(wǎng)絡(luò)黑客攻擊.除了技術(shù)方面的攻擊,還有社會工程方法方面的攻擊,本研究只是從網(wǎng)絡(luò)黑客攻擊方面做了分析與研究并提出了相應(yīng)的防范措施.對于系統(tǒng)黑客攻擊等其他方面的黑客攻擊技術(shù)還有待于研究.