重放攻擊

計算機術語之一

重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊,是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。

簡介


攻擊攻擊類型,攻擊斷惡欺詐復效據傳輸,攻擊,攔截該據敵。攻擊網路監式盜取證憑據,證伺服器。釋,密效防止劫持,防止攻擊。攻擊網路訊程。攻擊計算黑客攻擊式,義密碼學的人來說比較抽象。

類型


根據消息來源

.協議輪攻擊:協議輪消息
.協議輪攻擊:協議輪消息根據消息.偏轉攻擊:改消息 .攻擊:消息送收偏轉攻擊.反射攻擊:消息返送 .攻擊:消息協議合雙詳攻擊容攻擊計算黑客攻擊式,謂攻擊攻擊送收包,達欺騙系統,份證程。抵禦攻擊,份證般采“挑答”(/)式。戶 系統 -----申請登陸----〉 〈---送挑值---- 客戶端計算答值(算計算答值) ------送答值--〉 系統算 判斷答值否確 〈---證(確)-- 確則斷連 注挑值熵值必須(化量,般隨),若挑值化量,攻擊需截獲足夠挑答系,攻擊。(具“挑答”式流程算)典型例攻擊cookie我們監聽http數據傳輸的截獲的敏感數據大多數就是存放在cookie中的數據。其實在web安全中的通過其他方式(非網路監聽)盜取cookie與提交cookie也是一種重放攻擊。我們有時候可以輕鬆的複製別人的cookie直接獲得相應的許可權。關於cookie,我想應該用單獨的一篇文章來說明,在這裡就不重複了。防禦方案時間戳“時戳”──代表當前時刻的數 基本思想──A接收一個消息當且僅當其包含一個對A而言足夠接近當前時刻的時戳 原理──重放的時戳將相對遠離當前時刻 時鐘要求──通信各方的計算機時鐘保持同步 處理方式──設置大小適當的時間窗(間隔),越大越能包容網路傳輸延時,越小越能防重放攻擊 適用性──用於非連接性的對話(在連接情形下雙方時鐘若偶然出現不同步,則正確的信息可能會被誤判為重放信息而丟棄,而錯誤的重放信息可能會當作最新信息而接收)序號通信雙方通過消息中的序列號來判斷消息的新鮮性 要求通信雙方必須事先協商一個初始序列號,並協商遞增方法提問與應答“現時”──與當前事件有關的一次性隨機數N(互不重複即可)基本做法──期望從B獲得消息的A 事先發給B一個現時N,並要求B應答的消息中包含N或f(N),f是A、B預先約定的簡單函數 原理──A通過B回復的N或f(N)與自己發出是否一致來判定本次消息是不是重放的 時鐘要求──無 適用性──用於連接性的對話 重放攻擊是對協議的攻擊中危害最大、最常見的一種攻擊形式。會話劫持劫持原理可以把會話劫持攻擊分為兩種類型:1、中間人攻擊(Man In The Middle,簡稱MITM);
2、注射式攻擊(Injection);並且還可以把會話劫持攻擊分為兩種形式:1、被動劫持,2、主動劫持;被動劫持實際上就是在後台監視雙方會話的數據流,從中獲得敏感數據;而主動劫持則是將會話當中的某一台主機"踢"下線,然後由攻擊者取代並接管會話。TCP劫持如果劫持一些不可靠的協議,那將輕而易舉,因為它們沒有提供一些認證措施;而TCP協議被欲為是可靠的傳輸協議,所以要重點討論它。根據TCP/IP中的規定,使用TCP協議進行通訊需要提供兩段序列號,TCP協議使用這兩段序列號確保連接同步以及安全通訊,系統的TCP/IP協議棧依據時間或線性的產生這些值。在通訊過程中,雙方的序列號是相互依賴的,這也就是為什麼稱TCP協議是可靠的傳輸協議(具體可參見RFC 793)。如果攻擊者在這個時候進行會話劫持,結果肯定是失敗,因為會話雙方"不認識"攻擊者,攻擊者不能提供合法的序列號;所以,會話劫持的關鍵是預測正確的序列號,攻擊者可以採取嗅探技術獲得這些信息。 TCP協議的序列號 現在來討論一下有關TCP協議的序列號的相關問題。在每一個數據包中,都有兩段序列號,它們分別為: SEQ:當前數據包中的第一個位元組的序號 ACK:期望收到對方數據包中第一個位元組的序號 假設雙方現在需要進行一次連接: S_SEQ:將要發送的下一個位元組的序號 S_ACK:將要接收的下一個位元組的序號 S_WIND:接收窗口 //以上為伺服器(Server) C_SEQ:將要發送的下一個位元組的序號 C_ACK:將要接收的下一個位元組的序號 C_WIND:接收窗口 //以上為客戶端(Client)它們之間必須符合下面的邏輯關係,否則該數據包會被丟棄,並且返回一個ACK包(包含期望的序列號)。 C_ACK <= C_SEQ <= C_ACK + C_WIND S_ACK <= S_SEQ <= S_ACK + S_WIND 如果不符合上邊的邏輯關係,就會引申出一個"致命弱點"。這個致命的弱點就是ACK風暴(Storm)。當會話雙方接收到一個不期望的數據包后,就會用自己期望的序列號返回ACK包;而在另一端,這個數據包也不是所期望的,就會再次以自己期望的序列號返回ACK包……於是,就這樣來回往返,形成了惡性循環,最終導致ACK風暴。比較好的解決辦法是先進行ARP欺騙,使雙方的數據包"正常"的發送到攻擊者這裡,然後設置包轉發,最後就可以進行會話劫持了,而且不必擔心會有ACK風暴出現。當然,並不是所有系統都會出現ACK風暴。比如Linux系統的TCP/IP協議棧就與RFC中的描述略有不同。注意,ACK風暴僅存在於注射式會話劫持。 TCP會話劫持過程假設主機A和主機B進行一次TCP會話,C為攻擊者,劫持過程如下:A向B發送一個數據包SEQ (hex): X ACK (hex): YFLAGS: -AP--- Window: ZZZZ,包大小為:60B回應A一個數據包SEQ (hex): Y ACK (hex): X+60FLAGS: -AP--- Window: ZZZZ,包大小為:50A向B回應一個數據包SEQ (hex): X+60 ACK (hex): Y+50FLAGS: -AP--- Window: ZZZZ,包大小為:40B向A回應一個數據包SEQ (hex): Y+50 ACK (hex): X+100FLAGS: -AP--- Window: ZZZZ,包大小為:30攻擊者C冒充主機A給主機B發送一個數據包SEQ (hex): X+100 ACK (hex): Y+80FLAGS: -AP--- Window: ZZZZ,包大小為:20B向A回應一個數據包SEQ (hex): Y+80 ACK (hex): X+120FLAGS: -AP--- Window: ZZZZ,包大小為:10現在,主機B執行了攻擊者C冒充主機A發送過來的命令,並且返回給主機A一個數據包;但是,主機A並不能識別主機B發送過來的數據包,所以主機A會以期望的序列號返回給主機B一個數據包,隨即形成ACK風暴。如果成功的解決了ACK風暴(例如前邊提到的ARP欺騙或者其他方式),就可以成功進行會話劫持了。HTTP劫持Web應用程序是通過2種方式來判斷和跟蹤不同用戶的:Cookie或者Session(也叫做會話型Cookie)。其中Cookie是存儲在本地計算機上的,過期時間很長,所以針對Cookie的攻擊手段一般是盜取用戶Cookie然後偽造Cookie冒充該用戶;而Session由於其存在於服務端,隨著會話的註銷而失效(很快過期),往往難於利用。所以一般來說Session認證較之Cookie認證安全。會話型cookie也是可以通過程序獲得的,換句話說我們進行TCP會話劫持的時候如果針對http會話劫持的話可以截獲所有http內容包括Session信息。信息泄露原因2016年央視315晚會上,中國網際網路協會秘書長盧衛說互動過程中發生的信息泄露有兩個方面原因,一個是因為無線網路登錄加密的等級較低,或者路由器本身就存在安全漏洞,很容易被黑客入侵,截獲無線路由器所傳輸的數據。另外一個,是因為手機上有些軟體沒有按工信部有關規定的要求,對信息數據採取必要的保護措施,使得黑客能從所截獲的數據中提取到用戶姓名、出生日期、身份證件號碼、住址等個人信息。

防禦方案


(1)加隨機數。該方法優點是認證雙方不需要時間同步,雙方記住使用過的隨機數,如發現報文中有以前使用過的隨機數,就認為是重放攻擊。缺點是需要額外保存使用過的隨機數,若記錄的時間段較長,則保存和查詢的開銷較大。
(2)加時間戳。該方法優點是不用額外保存其他信息。缺點是認證雙方需要準確的時間同步,同步越好,受攻擊的可能性就越小。但當系統很龐大,跨越的區域較廣時,要做到精確的時間同步並不是很容易。
(3)加流水號。就是雙方在報文中添加一個逐步遞增的整數,只要接收到一個不連續的流水號報文(太大或太小),就認定有重放威脅。該方法優點是不需要時間同步,保存的信息量比隨機數方式小。缺點是一旦攻擊者對報文解密成功,就可以獲得流水號,從而每次將流水號遞增欺騙認證端。
在實際中,常將方法(1)和方法(2)組合使用,這樣就只需保存某個很短時間段內的所有隨機數,而且時間戳的同步也不需要太精確。
對付重放攻擊除了使用本以上方法外,還可以使用挑戰一應答機制和一次性口令機制,而且似乎後面兩種方法在實際中使用得更廣泛。

應用案例


重放操作

一個電子商務網站,要求客戶對電子訂單簽名以防止非授權用戶下訂單。攻擊者如要冒充某位客戶下訂單,最好可以獲得他的私鑰,如果不成功,攻擊者可以監聽這位顧客的通信,將顧客以前發送的訂單記錄下來,然後他就可以直接將這些訂單發給網站了。因為這些訂單的確是合法客戶簽名過的,如果網站沒有一種識別重放訂單的機制,它就會不加猶豫地接收這些訂單。

防止操作

可以在訂單內設置時間欄位,標識下訂單的時間。網站檢查下訂單的時間,早前的訂單可以可以當作重放攻擊訂單丟掉。假如時間的精度是秒,在一秒內發送多個訂單是可能的,所以單憑時間也許是不夠的。可以為訂單增加一個隨機數數值,如果發現同一秒內出現兩個隨機數相同的訂單,有理由懷疑後面那個訂單是重放攻擊訂單。利用隨機數,可以有效地防範短時間內地重放攻擊。