信息安全原理 張基溫 電子教案第2章 黑客_第1頁
信息安全原理 張基溫 電子教案第2章 黑客_第2頁
信息安全原理 張基溫 電子教案第2章 黑客_第3頁
信息安全原理 張基溫 電子教案第2章 黑客_第4頁
信息安全原理 張基溫 電子教案第2章 黑客_第5頁
已閱讀5頁,還剩129頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章網絡攻擊2.1黑客2.2信息收集類攻擊2.3入侵類攻擊2.4欺騙類攻擊2.5拒絕服務類攻擊

自從20世紀90年代以來,幾乎每一個計算機信息系統都是在網絡環境下運行的。在網絡環境下工作的計算機,除了經常要受到病毒等惡意程序的侵害外,還要受到黑客的攻擊。這一章介紹黑客對于網絡的一些主要攻擊手段。

2.1黑客返回2.1.1俠客、駭客和入侵者

“黑客”是一個精通計算機技術的特殊群體。可分為3類:“俠客(Hackers)”,他們多是好奇者和愛出風頭者;“駭客(Crackers)”,他們是一些不負責的惡作劇者;“入侵者(Intruder),他們是有目的的破壞者。2.1.2黑客攻擊的發展趨勢目前,黑客攻擊有如下發展趨勢:(1)攻擊工具的簡單化:目前,黑客工具的技術性越來越高,使用越來越簡單,并且大多是圖形化界面,容易操作。(2)攻擊目標針對化:黑客攻擊的目標越來越有針對性,并主要是針對意識形態和商業活動,如Yahoo事件。(3)攻擊方式系統化:黑客在攻擊方式、時間、規模等方面一般都進行了長時間的準備和部署,系統地進行攻擊。(4)攻擊時間持續化:由于網絡協議的漏洞和追蹤力量的薄弱,黑客肆無忌憚地對目標進行長時間的攻擊。例如,網站曾承受過DDoS長達40余天的攻擊。

2.1.3黑客攻擊的一般過程盡管黑客攻擊目標偏好不同、技能有高低之分、手法多種多樣,但是他們對目標施行攻擊的流程卻大致相同,基本如圖所示。

下面介紹各個步驟的基本內容。1.踩點黑客確定了攻擊目標后,一般要收集被攻擊者的信息:·

目標機的類型、IP地址、所在網絡的類型;·

操作系統的類型、版本;·

系統管理人員的名字、郵件地址;·

……。

對攻擊對象信息的分析,可找到被攻擊對象的脆弱點。為了獲得這些信息,黑客要利用一些技術。例如:·運行一個host命令,可以獲得被攻擊目標機的IP地址信息,還可以識別出目標機操作系統的類型;·利用whois查詢,可以了解技術管理人員的名字;·運行一些Usernet和Web查詢,可以了解有關技術人員是否經常上Usernet等;·利用DNS區域傳送工具dig、nslookup及Windows版本的SamSpade(網址為://),獲取目標域中的所有主機信息;·一個管理人員經常討論的問題也可以表明其技術水平的高低等。2.掃描“蒼蠅不叮無縫的蛋“。系統的漏洞會為攻擊提供機會和入口。在踩點獲得的信息的基礎上,黑客常編寫或收集適當的工具,在較短的時間內對目標系統進行掃描,進一步確定攻擊對象的漏洞。漏洞掃描就是自動檢測計算機網絡系統在安全方面存在的可能被黑客利用的脆弱點。漏洞掃描技術通過安全掃描程序實現。所謂掃描,包含了非破壞性原則,即不對網絡造成任何破壞。在實施策略上可以采用被動式和主動式兩種策略。

(1)被動式掃描策略被動式掃描策略主要檢測系統中不合適的設置、脆弱的口令以及同安全規則相抵觸的對象,具體還可以分為如下幾類:(a)基于主機的掃描技術,通常它涉及系統的內核、文件的屬性、操作系統的補丁等問題,能把一些簡單的口令解密和剔除,能非常準確地定位系統存在的問題,發現漏洞。缺點是與平臺相關,升級復雜。(b)基于目標的掃描技術,基于目標的掃描技術的基本原理是基于消息加密算法和哈希函數,如果函數的輸入有一點變化,輸出就會發生很大變化。這樣文件和數據流的細微變化就會被感知。基于目標的掃描技術通常用于檢測系統屬性和文件屬性,如數據庫、注冊號等。由于這種技術的加密強度極大,不易受攻擊,比較安全和可靠。(c)基于應用的掃描技術,這種技術主要用于檢查應用軟件包的設置和安全漏洞。(2)主動式掃描策略主動式掃描策略是基于網絡的掃描技術,主要通過一些腳本文件對系統進行攻擊,記錄系統的反應,從中發現漏洞。

(3)掃描工具目前,掃描程序已經發展到了幾十種,有的小巧快捷,有的界面友好;有的功能單一,有的功能完善。被廣泛使用的掃描程序有如下一些。(a)Ping掃射Ping掃射可以判別主機是否“活動”。Ping向目標主機發送ICMP回射請求分組,并期待目標系統關于活動的回射應答分組。常用的Ping掃射工具有:操作系統的Ping命令和用于掃射網段的fping和WS_ping等。(b)端口掃描掃描TCP/UDP端口號,可以確定正在運行的服務及其版本號,以發現相應的服務程序的漏洞。在UNIX系統上運行的重要掃描工具有:·

Netcat(utilities)·Nmap()在Windows系統上運行的重要掃描工具有:·

superscan(/)·NetScanToolPro2003()(c)旗標獲取旗標獲取是通過一個打開的端口,來聯系和識別系統提供的服務及版本號。如連接到一個端口,按幾次Enter鍵,看返回的信息是什么。(d)操作系統檢測許多漏洞與操作系統有關。因此,黑客要首先確定操作系統的類型。如圖所示,目前操作系統檢測按技術原理可以分為:利用系統旗標信息和利用TCP/IP堆棧指紋兩種;按鑒別的主動性可以分為:主動鑒別和被動鑒別。

目前常用的操作系統檢測工具有:·

Nmap·Queso()·Siphon()

3.查點查點就是搜索特定系統上用戶、用戶組名、路由表、SNMP信息、共享資源、服務程序及旗標等信息。查點采用的技術依操作系統而定:(1)Windows系統上的主要技術·

查點NetBIOS線路·

空會話(NullSession)·SNMP代理·

活動目錄(ActiveDirectory)·

其他Windows系統上使用的主要工具:(a)Windows系統命令:netview、nbtstat、nbtscan和nltest。(b)第三方工具·

Netviewx()·Userdump()·User2sid()·GetAcct()·DumpSec()·Legion()·NAT(

(2)UNIX系統上的主要技術·

PRG查點·

NIS查點·

NFS查點·

SNMP查點UNIX系統上常用的工具有:rpcinfo、rpcdump、shomount、finger、rwho、ruser、nmap、telnet、nc和snmpwalk等。

4.模擬攻擊進行模擬攻擊,測試對方反應,找出毀滅入侵證據的方法。

5.獲取訪問權獲取訪問權是入侵的正式開始。(1)Windows系統上的主要技術·

NetBIOS-SMB密碼猜測;·

竊聽LM及NTLM認證散列·

攻擊IISWeb服務器·

遠程緩沖區溢出(2)UNIX系統上的主要技術·

蠻力密碼攻擊·

密碼竊聽·

數據驅動式攻擊(如緩沖區溢出、輸入驗證、字典攻擊等)·

RPC攻擊·

NFS攻擊·

針對X-Windows系統的攻擊·

其他著名的密碼竊聽工具:·

snifferpro()·TCPdump·LC4(L0phtcrackversion4,)·readsmb著名的字典攻擊工具:·

LC4·JohntheRIPper()·NAT·SMBGrind()·fgrind6.權限提升黑客一旦獲取了訪問權,就會試圖將自己的普通用戶權限提升至超級用戶權限,以對系統進行完全控制。權限提升主要的技術是口令破解‘利用漏洞以及不當配置等進行。常用口令破解工具有:JohnTheRIPper。可以得到管理員權限的工具有:lc_message、getadmin、sechole、Invisible、Keystroke、Logger()。

7.竊取竊取就是對一些敏感數據的篡改、添加、刪除和復制,以及通過對敏感數據的分析,為進一步攻擊應用系統做準備。

8.掩蓋蹤跡掩蓋蹤跡,即清除自己所有的入侵痕跡。主要工作有:禁止系統審計、隱藏作案工具、清空事件日志(使用zap、wzap、wted等)、替換系統常用操作命令等。

9.創建后門創建后門是為了以后的入侵打開一個缺口,使入侵者能卷土重來,以特權用戶身份控制整個系統。主要工作有:·

創建具有特權用戶權限的虛假用戶賬號;·

安裝批處理或遠程控制工具;·

使用木馬程序替換系統程序;·

安裝監控程序;·

感染啟動文件。黑客常用的創建后門的工具有:·rootkit、cron、at、secadmin、InvisibleKeystoke、、rc(UNIX)·Windows啟動文件夾·su7()·Netcat()·VNC()·BO2K(:///projects/bo2k)10.拒絕服務攻擊拒絕服務是指利用協議或不同系統實現的漏洞,使目標服務器資源耗盡或過載、沒有能力向外提供服務的攻擊。

2.2信息收集類攻擊

返回2.2.1SnifferSniffer(嗅覺器)是一類用于捕獲網絡報文的軟件。它可以用來進行網絡流量分析,找出網絡中潛在問題,確定在通信所使用的多個協議中,屬于不同協議的流量大小,哪臺主機承擔主要協議的通信;哪臺主機是主要的通信目的地,報文發送的時間是多少,主機間報文傳送的時間間隔等,是網絡管理員的一個常用工具。當一段網絡運行不好,速度較慢而又找不出問題所在時,用Sniffer往往可以做出精確判斷。Sniffer可以捕獲網絡報文這一用處,也可以被黑客用來捕獲網絡中傳輸的用戶口令、金融賬號、機密或敏感數據、專用數據、低級協議信息等。

1.Sniffer的工作原理(1)在共享網絡中的嗅覺器共享信道是Sniffer捕獲信息的根本所在。這里,共享意味著一臺計算機能夠接收到其他計算機之間通信的信息,或者說同一網段的網絡所有接口都有訪問在物理媒體上傳輸數據的能力。以太網的特點就是這樣的一種共享網絡。在以太網中,每個接口有一個與其他網絡接口不同的硬件地址,同時網段還有一個向所有傳輸的廣播地址。一個合法的網絡接口應該只響應這兩種地址。以太網卡有4種工作模式。當局域網中的某臺計算機將網絡接口配置成混雜(Promiscuous)模式后,就可以接收網絡上的所有報文和數據幀了。這臺計算機上安裝的用于處理捕獲報文的軟件,就是一個嗅覺器。

可見,Sniffer工作在網絡環境中的底層,它會“嗅”到所有在網絡上傳輸的數據。由于在一個以太網中,賬號和口令都是以明文形式傳輸的,因此一旦入侵者獲取了其中一臺主機的管理員權限,并將其配置成混雜模式,它就有可能對網絡中的其他所有計算機發起攻擊。

(2)交換式網絡上的Sniffer交換式網絡不是共享網絡,交換式設備可以準確地將數據報文發給目的主機。這樣,安裝了Sniffer的主機可能收不到某些數據包,Sniffer軟件也就不能工作。但是,在交換環境中,Sniffer攻擊也并非完全不可能。一個簡單的方法,就是將安裝有Sniffer軟件的計算機偽裝成為網關。網關是一個網絡與其他網絡之間的接口,所有發往其他網絡的數據包都必須經過網關轉發,即一個局域網上發往其他網絡的數據幀的目標地址都是指向網關的。如果把安裝有Sniffer軟件的計算機偽裝成為網關,Sniffer就能嗅到本地網中的數據。如圖所示,一個交換網絡中有三臺主機:A:IP地址為;B:IP地址為,入侵者;C:IP地址為,網關。在正常情形下,B無法收到A與C之間的通信報文的。但是,若在B上運行ARP欺騙的軟件ARPredirect(dsniff軟件的一部分),并發出一條命令ARPredirect就可以將該網絡中主機發送的數據報文重定向:ARPredirect就開始向A發假冒的ARP應答,說B是網關;A就會刷新自己的緩存,將B的硬件地址作為網關地址保存。這樣,當A需要同其他網絡中的主機進行通信時,就會依據緩存中的網關地址(現在是B),先把數據包發往B;B可以先竊取A發出的數據包中的有關信息,再用IP轉發或其他軟件將這些數據包轉發到C,發出去。對A來說,一切都非常正常,但有關內容已經被竊去。

當然,如果在A上用ARP命令查看ARP高速緩存,可以發現網關地址已經被換掉了。

因此,在交換環境中,一個ARP(地址解析——將IP地址解析為局域網中的MAC地址)欺騙加上一個Sniffer軟件,同樣可以實現Sniffer攻擊。

2.Sniffer產品(1)SnifferProSnifferPro是NAI公司開發的一種圖形界面嗅覺器。它功能強大,能全面監視所有網絡信息流量,識別和解決網絡問題,是目前唯一能夠為七層OSI網絡模型提供全面性能管理的工具。(2)Libpcap/WinpcapLibpcap是PacketCaptureLibrary(數據包捕獲函數庫)的縮寫與重組。它不是一個Sniffer,但是它提供的C語言函數接口可用于對經過網絡接口數據包的捕獲,以支持Sniffer產品的開發。Winpcap是Libpcap的Win32版本。

(3)DsniffDsniff是DugSong編寫的一個功能強大的工具軟件包,它可以支持多種協議類型,包括FTP、telnet、rlogin、Ldap、SMTP、Pop、Imap、IRC、ICQ、MS-CHAP、Npster、Citrix、ICA、PCAnywher、SNMP、OSPF、PPTP、X11、NFS、RIP、RIP、VRRP、OracleSQL*Net、MicrosoftSQLprotocol、PostgreSQL等。(4)Tcpdump/WindumpTcpdump是一個傳統的嗅覺器,通過將網卡設置為混雜模式截取幀進行工作。

3.Sniffer的防范Sniffer攻擊屬第二層攻擊,通常是入侵者進入目標系統后,為了獲取更多的信息而采用的攻擊手段。為了達到好的

攻擊效果,它要被放置在下列位置:·

被攻擊對象(主機或網絡)附近;·

網關上。Sniffer的防范方法大體有如下一些。

(1)規劃網絡一般將網絡分段劃分得越細,Sniffer收集到的信息越少。(2)采用加密通信加密后,即使Sniffer捕獲了數據,也難于獲得數據的原文。目前比較流行的做法是使用SSL協議和SSH(下在地址為://)安全產品。(3)監測Sniffer監測Sniffer就是確定網絡上有無Sniffer在運行。當有Sniffer運行時,會觀察到一些異常情況,如(a)用ping命令等測試發現網絡出現較高的丟包率,因為監聽會使數據包不順暢傳送;(b)通過帶寬控制器觀察網絡帶寬反常;(c)使用MD5校驗工具(如TripWare——下載地址為://)等,發現單機上的Sniffer。(d)使用Anti-Sniffer、promisc、cmp()等,發現大型網絡上的Sniffer。(e)測試網絡接口有無被設置成混雜模式,因為雖然在非混雜模式下可以運行Sniffer,但只有在混雜模式下才可以捕獲共享網絡中的所有會話。對于SunOS、Linux和BSDUnix可以采用命令:ifconfig-a2.2.2掃描器掃描器是自動檢測遠程或本地主機安全性弱點的程序,它不僅是黑客們的作案工具,也是管理人員維護網絡安全的有力工具。主要用于收集系統信息(遠程操作系統的識別、網絡結構的分析以及其他敏感信息的收集)和發現漏洞。常用的掃描器很多,如網絡安全掃描器NSS、超級優化TCP端口檢測程序Strobe、安全管理員網絡分析工具SATAN等。1.掃描類型具體地說,掃描是通過向目標主機發送數據報文,從響應中獲得目標主機的有關信息。按照掃描方式,可以將掃描分為如下3種主要類型。

(1)地址掃描

地址掃描就是判斷某個IP地址上有無活動主機,以及某臺主機是否在線。最簡單的地址掃描方法是使用ping命令,用ping命令向目標主機發送ICMP回顯請求報文,并等待ICMP回顯應答。如果ping不到某臺主機,就表明它不在線。Ping命令的發送可以手工一條一條地進行,也可以用Fping等根據進行大范圍的地址掃描,得到一個網段中的在線地址列表。但是,由于用戶安全意識的提高,很多路由器和防火墻的規則中都增加了丟棄ICMP回顯請求數據包,或在主機中進行了禁止請求應答,使得地址掃描難于進行。

(2)端口掃描

在TCP/IP網絡中,端口號是主機上提供的服務的標識。例如,FTP服務的端口號為21、Telnet服務的端口號為23、DNS服務的端口號為53、Http服務的端口號為53等。入侵者知道了被攻擊主機的地址后,還需要知道通信程序的端口號;只要掃描到相應的端口被打開著,就知道目標主機上運行著什么服務,以便采取針對這些服務的攻擊手段。

(3)漏洞掃描

漏洞是系統所存在的安全缺陷或薄弱環節。入侵者通過掃描可以發現可以利用的漏洞,并進一步通過漏洞收集有用信息或直接對系統實施威脅。管理人員可以通過掃描對所管理的系統和網絡進行安全審計,檢測系統中的安全脆弱環節。常用的掃描工具有Xscan等。

2.掃描技術(1)半開放掃描TCP連接通過三次握手建立。圖表示了一個建立TCP連接的三次握手過程。若主機B運行一個服務器進程,則它要首先發出一個被動打開命令,要求它的TCP準備接收客戶進程的連接請求,然后服務器進程就處于“聽”狀態,不斷檢測有無客戶進程發起連接的請求。SYN=1,ACK=0,SEQ=y,ACK=x+1

TCPB

主機B主機ATCPASYN=1,ACK=1,SEQ=xSYN=1,ACK=1,SEQ=x+1,ACK=y+1連接請求確認確認當A需要服務器的服務時,就要向它的TCP發出主動連接命令:用SYN=1和ACK=0表示連接請求,用SEQ=x表示選擇了一個序號。主機B收到A的連接請求報文,就完成了第一次握手。主機B如果同意連接,其TCP就向A發回確認報文:用SYN=1和ACK=1表示同意連接,用ACK=x+1表示對x的確認,用SEQ=y表示B選擇的一個序號。主機A接收到該確認報文,完成第二次握手。接著,主機A的TCP就還要向主機B發出確認:用SYN=1和ACK=1表示同意連接,用ACK=y+1表示對y的確認,同時發送A的第一個數據x+1。主機B收到主機A的確認報文,完成第三次握手過程。

完成這樣一個三次握手,才算建立了可靠的TCP連接,才能開始正式傳輸數據報文。攻擊者進行端口掃描最常用的方法就是嘗試與遠程主機的端口建立一次正常的TCP連接。連接成功,表示端口開放。這種掃描方式稱為“TCPconnect掃描”。但是,這種掃描往往會被遠程系統記入日志。針對這一缺陷,便產生了半開放掃描——“TCPSYN掃描”。因為,當客戶端發出一個SYN連接請求報文后,如果收到了遠程目標主機的ACK/SYN確認,就說明遠程主機的該端口是打開的;而若沒有收到程目標主機的ACK/SYN確認,而是收到RST數據報文,就說明連接出現問題,遠程主機的該端口沒有打開。這樣對于掃描要獲得的信息已經足夠了,也不會在目標主機的日志中留下記錄。

(2)FIN掃描半開放掃描廣泛地應用,使得防火墻和路由器都采取了相應的措施,會對端口掃描進行完全記錄。有些入侵掃描系統也能檢測到這類掃描,許多過濾設備能過濾SYN數據報文。于是端口掃描開始另辟溪徑,采用FIN掃描。FIN是中斷連接的數據報文。很多日志不記錄這類報文。“TCPFIN掃描”的原理是向目標端口發送FIN報文,如果收到了RST的回復,表明該端口沒有開放;反之(沒有回復),該端口是開放的,因為打開的端口往往忽略對FIN的回復。這種方法還可以用來區別操作系統是Windows,還是Unix。但是,有的系統不管端口打開與否,一律回復RST。這時,FIN掃描就不適用了。

(3)反向掃描反向掃描是一種地址掃描技術,主要用于獲得可到達網絡和主機的地址列表,借以推斷出一個網絡的結構分布圖。其基本原理是利用了多數路由器只對報文中的地址進行檢查,而不分析報文的內容。具體方法是使用可以穿過防火墻的RST數據報文對網絡地址進行掃描。向一個網絡中的所有地址發送RST報文后,路由器會對這些報文進行檢查:當目標地址不可到達時,就送回ICMP差錯報文;沒有返回的ICMP差錯報文的,就是主機在線。根據不在線的主機,進行求逆可以獲得在線主機列表。

(4)慢速掃描慢速掃描就是使用非連續性端口進行時間間隔長且無定率的掃描,并使用不一致的源地址,使這些掃描記錄無規律地分布在大量的日志中,被淹沒,給日志分析造成困難。

(5)亂序掃描亂序掃描就是對掃描的端口號集合,隨機地產生掃描順序,并且每次的掃描順序不同。這就給對入侵檢測系統的發覺帶來困難。

2.2.3其他信息收集類攻擊1.利用信息獲取命令舉例(1)ping命令ping命令的基本格式:ping<主機名>ping還有許多高級應用,如命令

ping–f<主機名>可以向指定主機發送大量數據,使該主機忙于回應而死機。(2)tracert命令tracert命令用來跟蹤消息從一臺主機到另一臺主機的路徑,并顯示。

(3)rusers這個命令都是Unix命令,用于收集目標計算機上的有關用戶的信息。(4)host/nslookup命令這兩個命令都是Unix命令,可以得到包括操作系統、機器和網絡的許多信息。(5)showmount命令showmount命令可以列出一臺機器上共享的所有目錄及其相關信息。(6)rpcinfo命令rpcinfo命令報告關于一臺主機上注冊了的可供外部進程調用的過程服務的編號、版本、端口和名稱。

2.利用信息服務(1)whois服務whois是一個客戶程序。通過它攻擊者可以收集到下列信息:·網絡注冊機構·網絡域名·主機信息·網絡IP地址分配·網絡管理人員信息,如電子郵件、號碼等。(2)finger服務finger服務同rusers命令一樣,用于收集目標計算機上的有關用戶的信息。(3)DNS域名轉換DNS(DomainNameService,域名服務系統)提供域名與IP地址之間的轉換。攻擊者只需實施一次轉換,就能得到目標系統(網絡)的所有主機名稱和內部IP地址。(4)LDAP服務攻擊者可以使用LDAP(LightDirectoryAccessProtocol,簡化目錄訪問協議)服務窺探網絡內部的系統及其用戶信息。(5)NIS服務NIS(NetworkInformationService,網絡信息服務)是為分布式網絡環境設計的一個統一管理系統,它把公共的配置文件,如用戶賬號和口令文件、用戶組文件、主機名與IP對應文件,轉變成一種映射數據結構。攻擊者非法獲取NIS/NIS+的使用權后,就可以獲取有關信息。

2.3入侵類攻擊

返回2.3.1口令攻擊口令機制是資源訪問的第一道屏障。攻破了這到屏障,就獲得了進入系統的第一道大門。所以口令攻擊是入侵者最常用的攻擊手段。口令攻擊可以從破解口令和屏蔽口令保護兩個方面進行。下面主要介紹口令破解技術1.口令破解的基本技術口令破解首先要獲取口令文件,然后采取一定的攻擊技術進行口令的破解。下面介紹口令破解的基本方法。(1)口令字典猜測破解法攻擊者基于某些知識,編寫出口令字典,然后對字典進行窮舉或猜測攻擊。表為口令字典的構造方法。

目前,Internet上已經提供了一些口令字典,從一萬到幾十萬條,可以下載。此外,還有一些可以生成口令字典的程序。利用口令字典可以以猜測方式進行口令破解攻擊。

(2)窮舉破解法有人認為使用足夠長的口令或者使用足夠完善的加密模式,就會攻不破。事實上沒有攻不破的口令,這只是個時間問題。如果有速度足夠快的計算機能嘗試字母、數字、特殊字符所有的組合,將最終能破解所有的口令。這種類型的攻擊方式通過窮舉口令空間獲得用戶口令稱為窮舉破解法或蠻力破解,也叫強行攻擊。如先從字母a開始,嘗試aa、ab、ac等等,然后嘗試aaa、aab、aac……。攻擊者也可以利用分布式攻擊。如果攻擊者希望在盡量短的時間內破解口令,也可能會求助幾個有大批計算機的公司并利用他們的資源破解口令。

(3)組合破解法詞典破解法只能發現詞典單詞口令,但是速度快。窮舉破解法能發現所有的口令,但是破解時間很長。鑒于很多管理員要求用戶使用字母和數字,用戶的對策是在口令后面添加幾個數字,如把口令computer變成computer99。使用強行破解法又非常費時間。由于實際的口令常常很弱(可以通過對字典或常用字符列表進行搜索或經過簡單置換而發現的口令)。這時可以基于詞典單詞而在單詞尾部串接幾個字母和數字。這就是組合破解法。

(4)其他破解類型·

社會工程學:通過對目標系統的人員進行游說、欺騙、利誘,獲得口令或部分。·

偷窺:觀察別人敲口令。·

搜索垃圾箱。

2.Unix系統的口令攻擊Unix系統用戶的口令,本來是經加密后保存在一個文本文件passwd中,一般存放在/etc目錄下。后來由于安全的需要,把passwd文件中與用戶口令相關的域提取出來,組織成文件shadow,并規定只有超級用戶才能讀取。這種分離工作也稱為shadow變換。因此,在破解口令時,需要作UnShadow變換,將/etc/passwd與/etc/shadow合并起來。在此基礎上才開始進行口令的破解。真正的加密口令一般是很難逆向破解的,黑客們常用的口令入侵工具所采用的技術是仿真對比,利用與原口令程序相同的方法,通過對比分析,用不同的加密口令去匹配原口令。下面是口令破解工具Crack的主要工作流程。

它采用逆向比較法進行口令破解。1準備:對口令文件作UnShadow變換;2下載或自己生成一個字典文件;3窮舉出口令字典中的每個條目,對每個單詞運用一系列規則。典型的規則有:·

使用幾個單詞或數字的組合;·

大小寫交替使用;·

把單詞正向、反向拼寫后,接在一起;·

在單詞的開頭或結尾加上一些數字;規則可以多種多樣。規則越多,破譯時間越長;但成功率越高。4調用crypt()函數對使用規則生成的字符串進行加密變換;5用一組子程序打開口令文件,取出密文口令,與crypt()函數的輸出進行比較。循環3、4兩步,直到口令破解成功。

3.網絡服務口令攻擊網絡服務口令攻擊往往是一種遠程在線攻擊,攻擊過程大致如下:·建立與目標網絡服務的網絡連接;·選取一個用戶列表文件和一個字典文件;·在用戶列表文件和一個字典文件中,選取一組用戶和口令,按照網絡服務協議規定,將用戶名和口令發給目標網絡服務端口。·檢測遠程服務返回信息,確定口令嘗試是否成功。·循環2、3、4步,直到口令破解成功。

4.增強口令安全性的措施口令攻擊的成功與否,取決于多種因素,如口令長度、口令有效期、口令加密算法的加密強度、口令系統的安全機制等。此外,采用下面一些措施,也可以增強口令的安全性:·

除進行口令驗證外,還應使口令完全不可讀(包括超級用戶)。·

在選擇密碼時,就對密碼進行過濾。·

對字典或字符列表進行掃描,剔除用戶選擇的弱口令。·

采用口令與智能卡結合的方式登錄系統。·

使用一次性口令。

2.3.2緩沖區溢出攻擊

緩沖區是程序運行時在內存中為保存給定類型的數據而開辟的一個連續空間。這個空間是有限的。當程序運行過程中要放入緩沖區的數據太多時,就會產生緩沖區溢出。

早在1988年,美國康奈爾大學的計算機科學系研究生,23歲的莫里斯(Morris)利用了UNIXfingered程序不限制輸入長度的漏洞使緩沖器溢出。Morris又寫了一段程序使他的惡意程序能以root(根)身份執行,并傳播到其他機器上,結果造成6000臺Internet上的服務器癱瘓,占當時總數的10%。“SQLSlammer”蠕蟲王的發作原理,就是利用未及時更新補丁的MSSQLServer數據庫緩沖溢出漏洞。采用不正確的方式將數據發到MSSqlServer的監聽端口,這個錯誤可以引起緩沖溢出攻擊。目前新出現的MSBLAST病毒正是利用了微軟關于RPC接口中遠程任意可執行代碼漏洞,“中招”的機器會反復重啟,或者拷貝、粘貼功能不工作等現象。黑客如果成功利用緩沖漏洞,就有可能獲得對遠程計算機的完全控制,并以本地系統權限執行任意指令,如安裝程序、查看或更改、刪除數據、格式化硬盤等,危害性不言而喻。

緩沖溢出漏洞是一種很普遍的漏洞。在1998年CERT的13份建議中,有9份是是與緩沖區溢出有關的,在1999年,至少有半數的建議是和緩沖區溢出有關的。根據綠盟科技提供的漏洞報告():2002年共發現各種操作系統和應用程序的漏洞1830個,其中緩沖區溢出漏洞有432個,占總數的23.6%;而2002年程度嚴重、影響范圍最大的十個安全漏洞中,和緩沖區溢出相關的就有6個。值得關注的是,緩沖器溢出攻擊不是一種竊密和欺騙的手段,而是從計算機系統的最底層發起攻擊,因此在它的攻擊下系統的身份驗證和訪問權限等安全策略形同虛設;同時,由于攻擊者傳輸的數據分組并無異常特征,沒有任何欺騙,且用來實施緩存器溢出攻擊的字符串非常多樣化,無法與正常數據有效進行區分,因而傳統安全工具(如防火墻)對這種攻擊方式也無能為力。

2.緩沖溢出的基本原理緩沖區溢出的根本原因來自C語言(以及其后代C++)本質的不安全性:·

沒有邊界來檢查數組和指針的引用;·

標準C庫中還存在許多非安全字符串操作,如strcpy()、sprintf()、gets()等。為了說明這個問題還必須看一看程序的內存映像。任何一個源程序通常都包括代碼段和數據段,這些代碼和數據本身都是靜態的。為了運行程序,首先要由操作系統負責為其創建進程,并在進程的虛擬地址空間中為其代碼段和數據段建立映射。但是,光有靜態的代碼段和數據段是不夠的,進程在運行過程中還要有其動態環境。一般說來,默認的動態存儲環境通過堆棧(簡稱棧)機制建立。所有局部變量以及所有按值傳遞的函數參數都通過堆棧機制自動地進行內存空間的分配。分配同一數據類型相鄰塊的內存區域稱為緩沖區。圖為Linux下進程的地址空間布局。當然,C語言還允許程序員使用堆機制創建存儲器,存儲使用malloc()獲得的數據。不過,這與本節討論的問題無關。

從邏輯上講進程的堆棧是由多個堆棧幀構成的,其中每個堆棧幀都對應一個函數調用。當函數調用發生時,新的堆棧幀被壓入堆棧;當函數返回時,相應的堆棧幀從堆棧中彈出。盡管堆棧幀結構的引入為在高級語言中實現函數或過程這樣的概念提供了直接的硬件支持,但是由于將函數返回地址這樣的重要數據保存在程序員可見的堆棧中。當程序寫入超過緩沖區的邊界時,這就是所謂的“緩沖區溢出”。發生緩沖區溢出時,就會覆蓋下一個相鄰的內存塊,導致一些不可預料的結果:也許程序可以繼續,也許程序的執行出現奇怪現象,也許程序完全失敗。下面的程序是一個緩沖溢出的實例。例2.3.1#include<>intmain(){ charname[5]; printf(“Pleaseinputyourname:”); gets(name); printf(“youare%s”,name);}

運行這個程序可以發現,當輸入的字符數少時,程序運行正常;當輸入的字符數太多時(超過8),程序就不能正常結束。這就是緩沖區逸出所造成。

典型的堆棧幀結構如圖所示。堆棧中存放的是與每個函數對應的堆棧幀。當函數調用發生時,新的堆棧幀被壓入堆棧;當函數返回時,相應的堆棧幀從堆棧中彈出。

圖2.7典型的堆棧幀結構

堆棧幀的頂部為函數的實參,下面是函數的返回地址以及前一個堆棧幀的指針,最下面是分配給函數的局部變量使用的空間。一個堆棧幀通常都有兩個指針,其中一個稱為堆棧幀指針,另一個稱為棧頂指針。前者所指向的位置是固定的,而后者所指向的位置在函數的運行過程中可變。因此,在函數中訪問實參和局部變量時都是以堆棧幀指針為基址,再加上一個偏移。由圖可知,實參的偏移為正,局部變量的偏移為負。當發生數據棧溢出時,多余的內容就會越過棧底,覆蓋棧底后面的內容。通常,與棧底相鄰的內存空間中存放著程序返回地址。因此,數據棧的溢出,會覆蓋程序的返回地址,從而造成如下局面:要么程序會取到一個錯誤地址,要么將因程序無權訪問該地址而產生一個錯誤。鑒此,C語言把這一艱巨任務交給了開發人員,要求他們進行邊界檢查,編寫安全的程序。然而這一要求往往被人們忽視,從而給黑客有機可乘。

3.緩沖區溢出攻擊如果當發生緩沖溢出時,能夠準確地控制跳轉地址,將程序流程引向預定的地址,CPU就會去執行這個指令。如果入侵者在預定的地址中放置代碼用于產生一個Shell,則當程序被溢出時,入侵者將獲得一個Shell。該Shell會繼承被溢出的程序的權限(操作系統中,一個新產生的Shell會繼承生成該Shell的程序的權限)。如果入侵者獲得了某臺服務器的一個普通權限賬號,而服務器上某個以root或system權限運行的程序存在緩沖溢出漏洞,入侵者就可以利用該漏洞生成的Shell去獲得root權限。而入侵者進行攻擊的關鍵是修改以較高權限運行的程序跳轉指令的地址。

入侵者為了修改以較高權限運行的程序跳轉指令的地址,一般要經過如下3步。(1)將需要執行的代碼放到目標系統的內存。下面是兩種常用方法:·

植入法:通過主機,將需要執行的代碼(目標平臺上可執行的),直接放到緩沖區。·

利用已經有的代碼:只要修改傳入參數。(2)修改返回地址。(3)控制程序跳轉,改變程序流程。下面是3種常用方法。·

修改程序返回地址:將預先設定好的地址替換程序原來的返回地址。·

在緩沖區附近放一個函數指針,指向入侵者定義的指令。·

使用longjmp:C語言的setjmp/longjmp是一個檢驗/恢復系統,可以在檢驗點設定setjmp(buffer),用longjmp(buffer)恢復檢驗點。入侵者可以利用longjmp(buffer)跳轉到預定代碼。

4.緩沖區溢出防御措施(1)安裝安全補丁。(2)編寫安全的代碼:緩沖區溢出攻擊的根源在于編寫程序的機制。因此,防范緩沖區溢出漏洞首先應該確保在Linux系統上運行的程序(包括系統軟件和應用軟件)代碼的正確性,避免程序中有不檢查變量、緩沖區大小及邊界等情況存在。比如,使用grep工具搜索源代碼中容易產生漏洞的庫調用,檢測變量的大小、數組的邊界、對指針變量進行保護,以及使用具有邊界、大小檢測功能的C編譯器等。

(3)基于一定的安全策略設置系統:攻擊者攻擊某一個Linux系統,必須事先通過某些途徑對要攻擊的系統做必要的了解,如版本信息等,然后再利用系統的某些設置直接或間接地獲取控制權。因此,防范緩沖區溢出攻擊就要對系統設置實施有效的安全策略。這些策略種類很多,下面只列舉幾個典型措施。·

在裝有Telnet服務的情況下,通過手工改寫“/etc/”文件中的Telnet設置,使得遠程登錄的用戶無法看到系統的提示信息。具體方法是將Telnet設置改寫為:telnetstreamtcpnowaitroot/-h末尾加上“-h”參數可以讓守護進程不顯示任何系統信息,只顯示登錄提示。·

改寫“”文件。默認情況下,當登錄Linux系統時系統運行文件,顯示該Linux發行版本的名字、版本號、內核版本和服務器名稱等信息,這使得大量系統信息被泄露。將“”文件中顯示這些信息的代碼注釋掉,可以使系統不顯示這些信息。

一種方法是在顯示這些信息的代碼行前加“#”:…#echo"">/etc/issue#echo"$R">>/etc/issue#echo"Kernel$(uname-r)on$a$(uname-m)">>/etc/issue##echo>>/etc/issue…另一種方法是將保存有系統信息的文件/和issue刪除。這兩個文件分別用于在遠程登錄和本地登錄時向用戶提供相關信息。刪除這兩個文件的同時,仍需要完成方法一中的注釋工作,否則,系統在啟動時將會自動重新生成這兩個文件。

·

禁止提供finger服務。使用finger命令可以顯示本地或遠程系統中目前已登錄用戶的詳細信息。禁止提供finger服務的有效方法是,通過修改該文件屬性、權限,使得只有root用戶才可以執行該命令。·

處理“”文件。該程序通過“/etc/”文件獲得inetd在監聽哪些網絡端口,為每個端口啟動哪些特定服務等信息,會泄露大量的敏感信息。

(4)保護堆棧·

加入函數建立和銷毀代碼。前者在函數返回地址后增加一些附加字節,返回時要檢查這些字節有無被改動。·

使堆棧不可執行——非執行緩沖區技術,使入侵者無法利用緩沖區溢出漏洞。

2.3.3格式化字符串攻擊格式化字符串攻擊也稱為格式化字符串漏洞,同其他許多安全漏洞一樣是由于程序員的疏漏造成的。不過,這種疏漏來自程序員使用格式化字符串函數的不嚴謹。

1.格式化字符串函數族ANSIC定義了一系列的格式化字符串函數,如·

printf——輸出到一個stdout流。·

fprintf——輸出到一個文件流。·

sprintf——輸出到字符串。·

snprintf——輸出到字符串并檢查長度。·

vprintf——從va_arg結構體輸出到一個stdout流。·

vfprintf——從va_arg結構體輸出到一個文件流。·

vsprintf——從va_arg結構體輸出到一個字符串。·

vsnprintf——從va_arg結構體輸出到一個字符串并檢查長度。·

基于這些函數的復雜函數和非標準函數,包括setproctitle、syslog、err*、verr*、warm、*vwarm等。這些函數有一個共同的特點,就是都要使用一個格式化字符串。例如對于大家熟悉的prontf函數,它的前一個參數,就是格式化字符串。

2.格式化字符串漏洞為了說明對格式化字符串使用不當而產生的格式化字符串漏洞,請先看下面的程序。例2.3.2#include<>intmain(){ char*name; gets(s);printf(s);}abcdeabcde%08x,%08x,%08x000002e2,0000ffe4,0000011d下面是該函數的兩次運行結果。

當輸入“abcde”時,輸出仍然是“abcde”。當輸入“%08x,%08x,%08x”時,輸出的卻是“000002e2,0000fe4,0000011d”。這就是格式化字符串漏洞所造成的問題。因為,在printf函數中,s被解釋成了格式化字符串。當調用該函數時,首先會解析格式化字符串,一次取一個字符進行分析:如果字符不是“%”,就將其原樣輸出;若字符是“%”,則其后面的字符就要按照格式化參數進行解析。當輸入“abcde”時,由于沒有包含“%”,所以每個字符都被原樣輸出了。而當輸入“%08x,%08x,%08x”時,就要將每個“%”后面的“x”都解釋為一個十六進制的數據項,但函數沒有這樣3個數據項。于是,就將堆棧中從當前堆棧指針向堆棧底部方向的3個地址的內容按十六進制輸出出來,這就是“000002e2,0000fe4,0000011d”。一個啟發:當格式化字符串中包含有許多“%”時,就會有機會訪問到一個非法地址。

3.格式化字符串攻擊的幾種形式(1)查看內存堆棧指針開始的一些地址的內容由例可知,使用類似于printf(“%08x,%08x,%08x”);的語句,可以輸出當前堆棧指針向棧底方向的一些地址的內容,甚至可以是超過棧底之外的內存地址的內容。(2)查看內存任何地址的內容所查看的內存地址內容,也可以從任何一個地址開始的內存內容。例如語句printf(“\x20\02\x85\x08_%08x,%08x,%08x”);將會從地址0x08850220開始,查看連續3個地址的內容。

(3)修改內存任何地址的內容格式化字符串函數還可以使用一個格式字符“%n”。它的作用是將已經打印的字節數寫入一個變量。請觀察下面的程序。例2.3.3#include<>intmain(){ inti; printf(“china\%n\n”,(int*)&i); printf(“i=%d\n”,i);}程序運行的結果如下:

即i的值為前面已經打印的字符串“china”的長度——5。利用這一點,很容易改變某個內存變量的值。

#include<>intmain(){ inti=5; printf(“%108u%n\t”,1,(int*)&i);printf(“i=%d\n”,i); printf(“%58s123%n\t”,””,&i);print(“i=%d\n”,i);}程序執行結果如下:

語句printf(“%108u%n\t”,1,(int*)&i);用數據“1”的寬度——108來修改變量i的值。而語句

printf(“%58s123%n\t”,””,&i);是用字符串“”加上字符串“123”的存放寬度——23+3來修改變量i的值。使用同樣的辦法,可以向進程空間中的任意地方寫一個字節。以達到下面的目的:·

通過修改關鍵內存地址內容,實現對程序流程的控制;·

覆蓋一個程序儲存的UID值,以降低和提升特權;·

覆蓋一個執行命令;·

覆蓋一個返回地址,將其重定向到包含shellcode的緩沖區中。

2.4欺騙類攻擊

返回電子欺騙(spoofing)是與認證(authentication)和信任(trust)相聯系的一個概念。認證是網絡上的計算機相互間進行識別的過程。信任是經過認證獲準連接的相互關系。信任有程度之分,有高度信任關系的兩臺計算機進行連接,一般不需要嚴格的認證;而信任程度較低的兩臺計算機之間進行連接,就需要進行嚴格的認證。電子欺騙就是在兩臺建立了信任關系的計算機之間,冒充其中一臺,對另一臺進行欺騙性連接,而后對其發起攻擊。這種欺騙可以通過不同的網絡協議漏洞進行。欺騙策略與等級假冒可信站點通信假冒可信站點,同時使可信站點癱瘓2.41IP欺騙1.IP欺騙原理IP欺騙就是偽造別的機器的IP地址用于欺騙第三者。假定有兩臺主機S(設IP地址為)和T(設IP地址為),并且它們之間已經建立了信任關系。入侵者X要對T進行IP欺騙攻擊,就可以假冒S與T進行通信。下面介紹IP欺騙的過程。(1)確認攻擊目標施行IP欺騙的第一步是確認攻擊目標。為此要研究哪些系統容易被入侵。實際上,IP欺騙僅僅能對一些特定的服務進行。下面是容易受到電子欺騙攻擊的服務類型:·

運行SunRPC(SunRemoteProcedureCall,Sun遠程過程調用)的網絡設備;·

基于IP地址認證的任何網絡服務;·

提供R系列服務的機器,如提供rlogin、rsh、rcp等服務的機器。其他沒有這類服務的系統所受到的IP欺騙攻擊雖然有,但要少得多。

2)使計劃要冒充的主機無法響應目標主機的會話當X要對T實施IP欺騙攻擊時,就要假冒S(稱為被利用者,現在地址為)與目標主機T進行通信。但是,X并不是地址的實際擁有者。因此,雖然X可以用偽造的地址與T進行通信時,但(T)的所有回應信息都要發回到實際擁有的S主機,而不是X。也就是說,X的所有操作都是一種盲操作,它無法知道自己的操作是否被T接受,也不知道T發給自己的數據報文是什么內容,更糟糕的是會由于(S)會對(T)的數據報文產生反應而使自己的攻擊露餡。為此,X一定要先設法使(S)癱瘓,使之無法響應目標主機(T)的數據報文。使(S)癱瘓的辦法是對其實施拒絕服務攻擊,例如通過SYNFlood攻擊使之連接請求被占滿,暫時無法處理進入的其他連接請求。通常,黑客會用一個虛假的IP地址(可能該合法IP地址的服務器沒有開機)向目標主機TCP端口發送大量的SYN請求。受攻擊的服務器則會向該虛假的IP地址發送響應。自然得不到回應,得到的是該服務器不可到達的消息。而目標主機的TCP會認為這是暫時的不通,遂繼續嘗試連接,直到確信無法連接。不過這已經為黑客進行攻擊提供了充足的時間

(3)精確地猜測來自目標請求的正確序列數X為了使自己的攻擊不露餡的另一個措施是取得被攻擊目標(T)主機的信任。由于TCP是可靠傳輸協議,每臺主機要對自己發送出的所有字節分配序列編號,供接收端確認并據此進行報文裝配。由圖可以看出,在通過三次握手建立TCP連接的過程中,客戶端首先要向服務器發送序列號x;服務器收到后通過確認要向客戶端送回期待的序列號(x+1)和自己的序列號。由于序列號的存在,給IP欺騙攻擊增加了不少難度,要求攻擊者X必須能夠精確地猜測出來自目標機的序列號,否則也會露餡。

那么,如何精確地猜測來自目標機的序列號呢?這就需要知道TCP序列號的編排規律。如圖所示,TCP序列號由32位的字段提供,因此其值為0~232-1,并且每一個TCP連接交換的數據都是順序編號的。

讀者可能會認為,當服務器每次啟動后會自動初始化TCP的序列號為0。但實際上并非如此。初始的TCP序列號是由tcp_init函數確定的,可以說是一個隨機數,并且它每秒鐘增加128000。這表明,在沒有連接的情況下,TCP的序列號每小時會復位一次。而有連接時,每次連接把TCP序列號增加64000。

此外,隨機的初始序列號的產生也是有一定規律的。在Berkeley系統中,初始序列號由一個常量每秒鐘加1產生。于是,TCP序列號的估計也并非絕對不可能。但是,為此攻擊者還需要估計他的服務器與可信服務器之間的往返時間(RTT)。RTT一般是通過多次統計平均計算出來的。在沒有連接的情況下,TCP序列號為128000*RTT;如果目標服務器剛剛建立過一個連接,就還要加上64000。

根據估計的精確度的不同,可能出現以下4中情形:·

估計的序列號是準確的:進入的數據將被放置在接收緩沖器供使用。·

估計的序列號小于期待的數字:被放棄。·

估計的序列號大于期待的數字,且在滑動窗口之內:被認為是一個未來的數據,TCP將等待中間缺少的數據。·

估計的序列號大于期待的數字,但不在滑動窗口之內:被放棄,并返回一個期待的數據序列號。

上述分析是一種理論上的分析。黑客通常的做法是通過對目標主機的合法連接,來獲得目標主機發送IP數據包的序列記錄。具體步驟為:1請求連接目標主機;2目標主機送回帶序列號的回應;3記錄序列號并斷開連接。在一般情況下,通過對所記錄的序列號的分析,可以猜測出認證要求序列號的規則。(4)冒充受信主機連接到目標主機。(5)根據猜出的正確序列號,向目標主機發送回應IP包。(6)進行系列會話。

2.IP欺騙的防范利用IP欺騙進行的攻擊比較普遍,而且產生的危害性很大。下面是IP欺騙的一些預防策略:(1)放棄基于IP地址的信任策略:IP欺騙是基于IP地址信任的。而IP地址很容易偽造。因此,阻止這類攻擊的一種非常簡單的方法是放棄以IP地址為基礎的驗證。例如,不允許r*類遠程調用命令的使用、刪除.rhost文件、清空/etc/文件等,迫使所有的用戶使用其他遠程通信手段(如Telnet,SSH等)。

(2)使用隨機化的初始序列號:序列號是接收方TCP進行合法檢查的一個重要依據。黑客攻擊能夠得逞的一個重要因素就是,序列號有一定的選擇和增加規律。堵塞這一漏洞的方法就是讓黑客無法計算或猜測出序列號。Bellovin提出了一個公式:ISN=M+F(localhost,localport,remotehost,remoteport)其中,M為4微秒定時器,F為加密Hash函數,localhost為本地主機,localport為本地端口,remotehost為遠方主機,remoteport為遠方端口。Bellovin建議F是一個結合連接標識符和特殊矢量(,隨機數,基于啟動試卷的密碼)的HASH函數,它產生的序列號不能通過計算或猜測出。

(3)在路由器中加上一些附加條件:這些條件包括:不允許聲稱是內部包的外部包(源地址和目標地址都是本地域地址)進入——防止外部攻擊者假冒內部主機的IP欺騙;禁止帶有內部資源地址的內部包出去——防止內部用戶對外部站點的攻擊。當然,這一措施對于實施欺騙的主機和被攻擊的主機處于同一子網絡內部或欺騙主機假借被攻擊主機的外部信任主機的攻擊,是無效的。(4)配置服務器,降低IP欺騙的可能:分析自己的服務器,看哪些服務容易遭受IP欺騙攻擊,并考慮這些服務有無保留的必要。(5)使用防火墻和其他抗IP欺騙的產品。

2.4.2TCP會話劫持1.關于TCP會話劫持及其攻擊原理會話劫持(SessionHijack)與IP欺騙有點相似。假設A、B、C是一個網段上的三臺主機,如圖所示。其中,B是一臺被入侵者控制了的主機,A、C是兩臺正在會話的主機。由于三臺主機在一個(以太)網段上,所以B能收到A與B的所有數據包。如果當A正等待C的數據包時,C槍先給A一個偽造的數據包,A就會對這個數據包進行回應,B也再次響應。當C的真正的數據包傳送到A時,由于A所期待的序列號已經變化而不再認識C的數據包,遂將之丟棄,繼續同B(冒充A)會話。C無法與A進行會話,卻不知道問題所在,會誤K數據報文認為是網絡一時故障。于是不停向A發送ACK數據報文,試圖重傳。而A卻不斷將這些數據報文丟棄。這樣不停地重復,就會產生ACK“風暴”。這是一種結合了嗅探以及欺騙技術在內的攻擊手段。廣義上說,會話劫持就是在一次正常的通信過程中,黑客作為第三方參與到其中,或者是在數據流(例如基于TCP的會話)里注射額外的信息,或者是將雙方的通信模式暗中改變,即從直接聯系變成有黑客聯系。

2.TCP會話劫持攻擊原理造成TCP會話劫持的原因有2點:(1)傳統的以太網以共享方式工作,每一個節點都可以接收到其他節點之間的通信。(2)主機只在連接時進行一次IP地址的驗證。在TCP連接的過程中,TCP程序只跟蹤序列號,而不檢查MAC地址。所以一旦有MAC地址發生變化(入侵者冒充信任者),計算機不會發現。因此,入侵者通過了解目標主機產生序列號的方式,猜測出SYN/ACK包中的序列號,就可以冒充受信計算機與目標主機進行通話。

3.會話劫持攻擊工具(1)JuggernautJuggernaut是由MikeSchiffman開發的一個可以被用來進行TCP會話攻擊的網絡sniffer的開放的自由軟件。可以運行于Linux操作系統的終端機上,安裝和運行都很簡單。可以設置值、暗號或標志這三種不同的方式來通知Juggernaut程序是否對所有的網絡流量進行觀察。例如,一個典型的標記就是登錄暗號。無論何時Juggernaut發現這個暗號,就會捕獲會話,這意味著黑客可以利用捕獲到的用戶密碼再次進入系統。(2)HuntHunt是Kra開發的一個用來聽取、截取和劫持網絡上的活動會話的程序。(3)TTYWatcherTTYWatcher是一個免費的程序,允許人們監視并且劫持一臺單一主機上的連接。(4)IPWatcherIPWatcher是一個商用的會話劫持工具,它允許監視會話并且獲得積極的反會話劫持方法。它基于TTYWatcher此外還提供一些額外的功能,IPWatcher可以監視整個網絡。

2.4.3ARP欺騙1.ARP協議ARP(AddressResolutionProtocol,地址解析協議)是一種將IP轉化成以IP對應的網卡的物理地址的一種協議,或者說ARP協議是一種將IP地址轉化成MAC地址的一種協議。為什么要將IP轉化成MAC呢?簡單的說,這是因為在TCP網絡環境下,一個IP包的走向靠路由表定義。但是,當IP包到達該網絡后,哪臺機器響應這個IP包卻是靠該IP包中所包含的MAC地址來識別。也就是說,只有機器的MAC地址和該IP包中的MAC地址相同的機器才會應答這個IP包。因為以太網在子網層上的傳輸需要靠48位的MAC地址決定。地址解析是通過軟件實現的。地址解析軟件要根據使用的協議和硬件編址方案來進行地址解析。對不同的物理網絡,由于協議和編址方案不同,解析方法也不相同。例如,將IP地址解析為以太網地址與解析為ATM網地址的方法是不相同的。一般說來,大體上有三種地址解析方法。

(1)查表(tablelookup)方法:將地址綁定信息存放在內存的一張表中,當要進行地址解析時,可以查表找到所需的結果。這種方法常用于WAN。(2)相似形式計算(close-formcomputation):網絡中主機的IP地址分配通過對硬件地址的簡單邏輯運算和算術運算得到,因而在IP地址與物理地址之間存在一種函數關系,可以直接運算求出。這種方法常用于可配置的網絡。

(3)報文交換(messageexchange)法:前兩種方法是集中式地址解析,而報文交換是分布式地址解析方法,即當一臺機器要解析同一網絡中另一臺計算機的IP地址時,先通過網絡發送一個請求報文——請求對指定IP地址的解析,之后收到一個應答——回答對應的硬件地址。這種方法常用于靜態編址的LAN。那么,請求報文如何發送呢?通常有兩種方法:一是在網絡中設立一臺或幾臺服務器,專門用來回答地址解析的請求;一是向全網廣播,由各臺計算機自己解析自己的IP地址。為了使適應網絡拓撲的動態變化并使ARP高速運行,通常每臺主機上都要設置一個ARP高速緩存,用于存放最近IP地址到硬件地址之間的映射記錄,并且要對高速緩存進行動態更新。通常高速緩存中每項的生存時間是20分鐘。

通常主機在發送一個IP包之前,它要到該轉換表中尋找和IP包對應的MAC地址。如果沒有找到,該主機就發送一個ARP廣播包,為了使所有的計算機共同認可地址解析消息的精確格式和含義,TCP/IP的地址解析協議ARP定義了兩種基本的消息:ARP請求消息(一個請求包含一個IP地址和對相應硬件的請求,格式如圖所示)和ARP應答消息(一個應答消息既包含發來的IP地址,也包含相應的硬件地址)。ARP規定:所有ARP請求消息都直接封裝在LAN幀中,廣播給網上的所有計算機,每臺計算機收到這個請求消息后都要檢測其中的IP地址;與IP地址匹配的計算機即發出一個應答消息,而其他計算機則丟棄收到的請求,不發出任何應答。可以看出,IP地址是32位的,而以太網地址是48位的。

2.ARP欺騙ARP是無狀態的協議,在沒有請求時也可以發送應答的包。入侵者可以利用這一點,向網絡上發送自己定制的包,包中包括源IP地址、目的IP地址以及硬件地址,不過它們都是偽造的。這些偽造的數據,會修改網絡上主機中的ARP高速緩存。例如,網絡上有三臺主機,有如下的信息:主機名

IP地址

硬件地址A 1 AA:AAB 2 BB:BBC 3 CC:CC這三臺主機中,B是一臺被入侵者控制了的主機,它具有root權限,而A信任C。入侵者的目的就是偽裝成C獲得A的信任,以便獲得一些無法直接獲得的信息等。下面介紹入侵者利用B進行ARP欺騙的過程。通常,入侵者要使用一些ARP欺騙的工具,如send_arp。

(1)入侵者控制主機B向主機A發送一個ARP應答,ARP應答中包括:源IP地址()、源硬件地址(BB:BB)、目標IP地址()、目標硬件地址(AA:AA)。這條應答被A接受后,就被保存到A主機的ARP高速緩存中了。但是,由于網絡上C主機也是活動的,也有可能向A發出自己的ARP應答,將A的ARP緩存改回正確的硬件地址。因此,B在進行ARP欺騙時還必須使C不能向A發送ARP應答。入侵者的辦法是也向C發ARP應答,將A的硬件地址改為一個虛假的地址(不存在的硬件地址)如“DD:DD”,使得C發向A的ARP應答,根本無法受到。

2)A根據ARP緩存中的緩存記錄,將發往C(,CC:CC)的數據報文,發向了B(,BB:BB)。圖為這個過程的示意圖。

3.ARP欺騙的防范(1)MAC地址綁定,使網絡中每一臺計算機的IP地址與硬件地址一一對應,不可更改。(2)使用靜態ARP緩存,用手工方法更新緩存中的記錄,使ARP欺騙無法進行。(3)使用ARP服務器,使其他計算機的ARP配置只接受來自ARP服務器的ARP響應。

2.4.4DNS欺騙1.DNS及其工作過程DNS(DomainNameSystem,域名系統)是一種用于TCP/IP應用程序的分布式數據庫,它提供主機名字和IP地址之間的轉換以及有關電子郵件的選路信息。DNS有兩個重要特性:·

DNS對于自己無法解析的域名,會自動向其他DNS服務器查詢。·

為提高效率,DNS會將所有已經查詢到的結果存入緩存(Cache)。正是這兩個特點,使得DNS欺騙(DNSSpoofing)成為可能。不過,還是先看一下DNS的正常工作過程。設有如圖所示的三臺主機。其中,B向A提供DNS服務,A想要訪問C()。這個過程如下。

1A向B發一個DNS查詢請求,要求B告訴的IP地址,以便與之通信。2B查詢自己的DNS數據庫,找不到找不到的IP地址,遂向其他DNS服務器求援,逐級遞交DNS請求。3某個DNS服務器查到了的IP地址,向B返回結果。B將這個結果保存在自己的緩存中。4B將結果告訴A。5A得到了C的地址,就可以訪問C了(如向C發出連接請求)。在上述過程中,如果B在一定的時間內不能給A返回要查找的IP地址,就會給A返回主機名不存在的錯誤信息。

2.DNS欺騙實施DNS欺騙的基本思路是:讓DNS服務器的緩存中存有錯誤的IP地址,即在DNS緩存中放一個偽造的緩存記錄。為此,攻擊者需要做兩件事:·

先偽造一個用戶的DNS請求。·

再偽造一個查詢應答。但是,在DNS的消息格式中還有一個16位的查詢標識符(QueryID),它將被復制到DNS服務器的相應應答中,在多個查詢未完成時,用于區分響應。所以,回答信息只有QueryID和IP都吻合才能被DNS服務器接受。因此,進行DNS欺騙攻擊,還需要能夠精確地猜測出QueryID。由于QueryID每次加1,只要通過第一次向將要欺騙的DNS服務器發一個查詢包并監聽其QueryID值,隨后再發送設計好的應答包,包內的QueryID就是要預測的QueryID。下面結合圖,介紹一次DNS欺騙過程。1入侵者先向B(DNS服務器)提交查詢的IP地址的請求。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論