賀軍忠
(隴南師范高等專科學校電商學院,甘肅 成縣 742500)
進行黑客攻擊有三個基本條件必須具備:第一,熟悉攻擊相關背景知識,對編程語言語法和結構,操作系統,計算機網絡,計算機體系結構和其他相關原理理解與掌握;第二,論語云:“工欲善其事,必先利其器”.精通各種黑客工具是黑客必備的利器,查找系統漏洞并實施攻擊是一項復雜且重復的任務.為便于黑客易于理解復雜的系統結構,必須精通且靈活使用各種黑客工具.第三,必須掌握多種編程語言,精通其中某一種編程語言,無論黑客工具多么強大,都必須編寫適合自己使用的工具,以進行高難度的黑客攻擊.
Python語言被稱為“敏捷編程語言”,它是一種通用的高級編程語言,由于其具有易學易用、開發速度快、擴展性好、功能強大等優點,常常被黑客們的所青睞.首先,Python支持功能強大的黑客攻擊模塊,其擁有用于支持黑客攻擊的豐富多樣的庫,比如pydbg、scapy、salmap、httplib等.目前,這些庫被廣泛應用于各種黑客攻擊.其次,Python能夠訪問各種APl,Python提供了用于黑客可以訪問的Windows、Os X、Linux、Solaris、FreeBSD、OpenBSD等系統的ctypes庫,黑客借助它能鏈接以上系統提供的DLL與共享庫.第三,大多黑客攻擊工具為Python提供了APl,像Metasploit、sqlmap、Nmap等黑客工具都為Python提供了擴展接口[1].黑客們通過使用Python,可以將Metasploit、sqlmap、Nmap等工具改造得更加強大.第四,Python易學易用,這也是Python被好多黑客,尤其是新手所青睞的最重要一點,這對黑客攻擊而言是個巨大的優勢.據中國企業數據治理聯盟數據空間統計分析,目前有9大編程語言是黑客最喜歡和青睞的語言,并對此做了詳細分析排名,其中Python僅次于R語言排名第二.該統計報告指出Python是行業人員正在轉換發展的方向.過去兩年里,很明顯存在由R向Python轉化的趨勢,Donnell說:“Python用途寬廣且靈活,所以人們蜂擁而至”[2].一般而言,掌握3-4種編程語言是成為一名黑客所必須的.但由于不同語言自身的特點和結構,難易程度也不一樣,其中最具代表性的并在分析系統與程序行為的過程中起著核心作用有C語言、C++、Jave與匯編語言,必須掌握.但也正因如此,學習難度較大,要精通更是難上加難.不僅如此,黑客還需編寫符合自身需要的黑客攻擊工具,也就意味著要掌握另外一種編程語言,用于攻擊工具.恰恰Python語言具有易學易用的特點,且擁有各種強大功能.通過以上數據可知Python語言是黑客攻擊語言的不二之選.
Wikipedia中關于“黑客攻擊”的定義如下:“針對電子電路、計算機軟硬件、網絡、網頁等各種信息系統,借助某種手段、技術,使之執行信息系統設計者、管理者、運營者預料之外的動作行為,或者設法獲取高于系統給定的權限,對相關信息進行查閱、復制、修改等的一系列行為[3].”
從Wikipedia中關于“黑客攻擊”的定義可知,黑客攻擊就是一種特定的行為,這種行為能導致意外現象發生.其大致可分為兩個方面的攻擊:一方面是技術方法(技術攻擊),另一方面是社會工程方法(社會工程攻擊).技術方面攻擊也有好多種,如系統黑客攻擊、web黑客攻擊、網絡黑客攻擊等.本研究從網絡黑客攻擊技術方面的進行分析.
TCP/IP本質上并不具有防范黑客攻擊的強大能力,在連接設置與通信過程中有很多問題如圖1所示.首先,客戶端初次嘗試連接服務器時,會向服務器發送SYN包,服務器將為連接分配緩沖資源.若客戶端不斷向服務器發送SYN包,則服務器就會不斷分配通信緩沖,當緩沖全部耗盡后,網絡就進入癱瘓狀態.其次,正常的通信連接結束后,黑客可以偽裝成客戶機輕松攔截通信會話.一般使用TCP頭中的序列號對通信對方進行認證,第三方可以輕松得到該序列號,并偽裝相應客戶機.第三,IP頭中的源IP信息很容易偽造.將源IP偽造為攻擊方系統的IP而非客戶機PC的IP,并向服務器發送SYN包,服務器就會將ACK包發送給攻擊方系統,從而實現DoS攻擊.

圖1 網絡黑客攻擊過程
以TCP/IP協議為攻擊對象的技術非常多,因此,人們開發了多種防御設備.隨著IPv6的出現,網絡安全問題得到了明顯改善,但由于IPv6目前還沒有普及,IPv4還占主導地位,就算使用了IPv6,但其網絡中仍然運行著多種協議[4].所以網絡黑客攻擊技術也在不斷升級與進化.
Python提供了socket模塊,使用它可以掃描端口.IP是識別服務器的邏輯地址.端口是邏輯單位,它使得多個應用程序可以共享一個IP地址.IP是IP協議中的識別符,而端口是TCP/UDP協議中的識別符.為了對外提供網絡服務,防火墻或服務器會主動對外開放一些端口,其中最具代表性的端口為80與443,分別用于對外提供HTTP與HTTPS服務.此外還開放了一些端口,以方便管理,其中最具代表性的是21號與22號端口,它們分別提供FTP與Telnet服務,如圖2.像這樣,為了對外提供服務而開放的這些端口成為黑客攻擊的主要目標.

圖2 端口掃描過程
端口掃描是指針對對外提供服務的服務器進行掃描,獲取服務器對外開放的端口列表.雖然有多種端口掃描技術,但大致可以分為基于UDP的端口掃描與基于TCP的端口掃描.基于UDP的端口掃描通過UDP包掃描端口,而基于TCP的端口掃描則通過SYN、FIN等多種包掃描端口,探測相應端口是否開放[5].不同端口掃描技術具有不同性能與隱蔽性,要根據具體情況選用合適的技術.
基于以太網的同一網絡環境(使用同一路由器)中,數據包的傳送是其于MAC(Media Accwss Control)地址進行的.一臺PC向另一臺PC傳送數據時,會將數據包廣播到同網段的所有PC.所有接收到數據包的PC將自身MAC地址與數據包的目的MAC地址進行比較,若兩者一致,則接收并處理,否則丟棄.借助包嗅探技術,PC會接收并處理所有數據包.這樣,同一網絡中傳播的所有數據可盡收眼底,一目了然.然而要想創建包嗅探程序,需要以管理員權限安裝Python GUl.原始套接字支持原樣接收基本包功能,它不會應用協議過濾.創建原始套接字后,將其綁定到NIC,切換NIC模式.默認設置下,NIC只接收目的地址為自身的包,而將模式更改為Promiscuous后,所有進入NIC的包都會被接收.在Python中只需使用幾行代碼即可完成上述設置.即在IDLE圖標上點擊鼠標右鍵,在快捷菜單中選擇“屬性”,在IDLE屬性窗口點擊“兼容性”選項卡,在“設置”中點選“以管理員身份運行此程序”.這樣,每次雙擊IDLE圖標都會以管理員身份運行.

圖3 包嗅探
會話劫持(Sesion Hijacking)攻擊大致分為HTTP會話劫持與TCP會話劫持兩類.前者指通過盜取保存服務認證信息的Cookie中的SessionID值進行黑客攻擊,后者是指盜取TCP數據包信息.而劉新亮等研究的《針對SSL/TLS協議會話密鑰的安全威脅與防御方法》分析了“客戶端處理會話秘鑰和SSL/TLS協議會話過程存在的漏洞與缺陷,研究了威脅原理的過程”[6].本研究以網絡黑客攻擊中常用的TCP會話劫持為中心進行分析.
TCP協議使用IP、端口、序列號三個要素對通信對方進行認證.TCP會話劫持中,先通過包嗅探獲取認證信息,然后使用它在中間攔截客戶機與服務器之間的通信.黑客暫時斷開客戶機與服務器之間的連接,將發送方IP修改為黑客PC的IP,重新與服務器的連接.在服務器看來,通信只是暫時發生了中斷,然后再次成功連接,從而將黑客PC誤認為客戶機.客戶機與黑客PC也采用類似方式設置連接,如圖4.這樣,客戶機與服務器之間的所有通信都會經過黑客PC,黑客即可控制所有信息.

圖4 TCP會話劫持
欺騙(Spoofing)攻擊也是常見的網絡黑客攻擊技術.其大致可以對DNS、IP、ARP三種資源進行欺騙攻擊.下面以具代表性的ARP欺騙進行分析.ARP欺騙攻擊就是利用ARP協議的缺陷進行的一種非法攻擊,攻擊者常常把自己偽裝成“中間人”,獲取局域網內的所有報文信息[7].ARP協議用于根據IP地址獲取MAC地址.PC內部有ARP緩存表,保存IP與MAC的對應信息.識別通信對方時,只要訪問相應緩存表提取其MAC地址即可.若在ARP緩存表中查不到相應信息,則可以通過ARP協議獲取指定IP地址對應的MAC地址.由于ARP協議在設計時未充分考慮安全問題,所以很容易受到攻擊.只要使用ARPReply包即可輕松操作對方的ARP緩存表.ARP緩存表保存著通信對方的IP與MAC地址映射關系.例如黑客將不同的PC1與PC2對應的信息替換為自身PC的MAC地址后,所有通信都會經過黑客PC.
拒絕服務攻擊(DoS,Denial of Service)是網絡中最常用的黑客攻擊技術之一.我們知道TCP/IP協議本身在結構上存在多種安全隱患.通過修改SYN數據包的發送方地址,或者不斷發送SYN數據包,將大量IP數據包分制為更小的單位進行傳送等,即可使系統服務陷入癱瘓.DoS攻擊指通過發送大量正常的數據包使系統服務癱瘓[8],DoS攻擊原理如圖5.為了防止受DoS攻擊以至系統癱瘓,到目前出現了許多防范DoS攻擊的設備,使用少數幾臺PC發動DoS攻擊使攻擊目標系統取務癱瘓基本不可能.為了解決并實現這一問題,黑客只能廣泛散播病毒,將大量PC機變為僵尸PC(肉雞),通過控制這些僵尸PC發送大量合法服務請求,以達到使目標主機服務癱瘓的目的,這種攻擊稱為“分有式拒絕服務攻擊”(DDoS,Distributed Denial of Service).

圖5 DoS攻擊
DDoS攻擊使用僵尸網絡(Botnet).所謂僵尸網絡是指借助網絡廣泛傳播含有惡意代碼的程序文件(僵尸程序),感染網絡上的大量PC并將其變為僵尸PC,然后通過C&C(Command and Control Server,遠程命令和控制服務器)服務器控制這些僵尸PC,最后組成龐大的網絡.這些惡意代碼是通過電子郵件、公告欄、木馬等多種方式進行傳播的,而對此進行實際防范并非易事.目前,通過僵尸網絡發動DDoS攻擊仍然是非常有用的黑客攻擊手段.而且相比傳統的DDoS攻擊,從新出現的DDoS攻擊樣本來看,攻擊效率越來越高,攻擊手段越來越復雜[9].DDoS攻擊原理如圖6所示.

圖6 DDoS攻擊
Python提供了多種模塊,用于對網絡進行黑客攻擊,其中最具代表性的是capy與pcapy.scapy是功能強大的網絡黑客攻擊工具,用途廣泛,不僅可以用于端口掃描,還可以用于數據包嗅探等.但隨著Nmap、Wireshark、Metasploit等強大工具的出現,對Python黑客攻擊模塊的升級中止了.這些模塊不僅安裝困難,而且找到適合所用環境的模塊也并非易事.針對Nmap與Wireshark,Pyrthon提供了多種接口,支持在應用程序中使用多種方法進行黑客攻擊.安裝類似ProtectX工具實現掃描的反擊與追蹤.ProtectX是一款專門為防護Python提供的Python Nmap模塊端口掃描,并在在用戶連接網絡時保護計算機的工具.可以同時監視20個端口,還可以幫助追蹤攻擊者的來源.一旦有人嘗試入侵連接到用戶的計算機,即可發出聲音警告并將入侵者的IP地址記錄下來,可以有效防止黑客入侵.當然有了ProtectX的保護,對于一般的掃描攻擊,大家就可以不用擔心了.不過僅僅依靠類似這樣的工具,還遠遠談不上高枕無憂,還需要提前做好防御掃描入侵的準備,如對注冊表的修改,禁止匿名用戶對IPC$的訪問等.
用于包嗅探的嗅探器是一把雙刃劍,如果在網絡黑客攻擊者的手里,嗅探器能夠捕獲計算機用戶因為疏忽而帶來的漏洞,成為一個危險的網絡間謀.但如果到了系統管理員的手里,則能幫助用戶監控異常網絡流量,從而更好地管理好網絡.如“網絡執法官”,其是一款局域網管理輔助軟件,采用網絡底層協議,能穿透各客戶端防火墻對網絡中的每一臺主機(這里的主機是指各種計算機、交換機等配有IP的網絡設備)進行監控,采用網卡號(MAC地址)識別用戶等.“網絡執法官”的主要功能是依據管理員為各主機限定的權限,實時監控整個局域網,自動對非法用戶進行管理,可將非法用戶與網絡中某些主機或整個網絡隔離,提高了網絡安全性.
木馬常用的偽裝手段有:修改圖標、冒充圖片文件、文件捆綁、出錯信息顯示等,本研究以python提供的ftplib模塊為例分析密碼破擊與防護措施,FTP服務后臺設置中,通常不會檢查密碼輸錯次數.這樣即可將sqlmap提供的wordlist.txt文件用作字典,不斷嘗試登錄,從而猜出密碼.python提供了ftplib模塊,該模塊提供了靈活使用FTP服務的多種功能.python為連接與登錄FTP提供了簡單的機制.許多需要在Java或C語言中處理的過程已經在ftplib模塊內部得到處理,這樣,用戶只需使用import語句將ftplib模塊導入應用程序,即可輕松使用FTP.若一個系統不限制密碼輸錯次數,則很容易成為密碼破解攻擊的目標.為了阻止密碼破解攻擊,必須在系統環境設置或安裝的安全設備(防火墻、IPS、IDS)中對此進行相應處理.盡量少用或者不用FTP,即使使用,也要利用Secure FTP等安全協議.對于其他類似密碼破解攻擊可以通過安裝相應的“木馬清除專家”等軟件清除木馬.同時要在類似“Windows進程管理器”中管理計算機進程.在進程管理器中,用戶可以仔細查看正在運行的進程,如果有可疑進程,用戶可查看該進程的詳細屬性.這樣可以進一步的篩選出正在運行的木馬進程,關閉該進程后,用專業工具進行查殺即可.
漏洞是硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下訪問或破壞系統.可以使用Microsot基準安全分析器(Microsoft Baseline Security Analyzer,MBSA)等工具檢測系統漏洞.其允許用戶掃描一臺或多臺基于Windows的計算機,以發現常見的安全方面的配置錯誤.MBSA將掃描基于Windows的計算機并檢查操作系統和已安裝的其他組件(如IIS和SQL Server),以發現安全方面的配置錯誤,并及時通過推薦的安全更新進行修補.
DDos攻擊的種類較多,本研究以基于Python的Slowloris攻擊為例分析其防范措施,Web服務器的一般做法是先分析來自客戶機的HTTP請求頭,然后處理請求,并將處理結果發送給客戶機,最后終止連接.為了提高資源利用效率,Web服務器會對最大客戶連接數加以限制.Slowloris攻擊使用服務器連接數達到最大值,從而無法處理新的要求,進而拒絕對外提供服務.要實施Slowloris攻擊首先要安裝Pyloris模塊,并通過C:pyloris-3.2>python pyloris.py運行pyloris模塊,進而通過其提供的UI實施攻擊.由于Slowloris攻擊不會留下任何痕跡在Web服務器日志上,所以很難對其進行監測.但仍然有一些簡單的防御方法,通過升級Web服務器的硬件(CPU、內存)配置增加允許的最大連接數,或者限制來自同一IP的連接個數等.還可以安裝Web防火墻等安全設備,攔截有錯誤的HTIP頭.
為了防范DDoS攻擊,國家機關與金融機構大力推行網絡隔離,將業務網與互聯網隔離.在網絡隔離技術中,物理或邏輯網絡被隔離,這樣即使接入互聯網的某臺PC機感染了惡意代碼,其影響范圍也不會擴散到內網[10].
由于互聯網是向所有人開放的,一個人只要愿意,都可以成為信息的提供者[8],同時也為網絡黑客提供機會.黑客攻擊技術不僅只有網絡黑客攻擊,還有系統黑客攻擊、Web黑客攻擊、應用程序黑客攻擊、無線網絡黑客攻擊.除了技術方面的攻擊,還有社會工程方法方面的攻擊,本研究只是從網絡黑客攻擊方面做了分析與研究并提出了相應的防范措施.對于系統黑客攻擊等其他方面的黑客攻擊技術還有待于研究.