實時檢測攻擊行為 9種IDS入侵檢測系統方法

2021-06-27 06:01:47 字數 3050 閱讀 6903

入侵檢測系統,英文簡寫為ids,顧名思義,它是用來實時檢測攻擊行為以及報告攻擊的。如果把防火牆比作守衛網路大門的門衛的話,那麼入侵檢測系統(ids)就是可以主動尋找罪犯的巡警。 因而尋求突破ids的技術對漏洞掃瞄、指令碼注入、url攻擊等有著非凡的意義,同時也是為了使ids進一步趨向完善。

snort是很多人都在用的乙個ids了,其實它也並不是萬能的,筆者下面就來談談突破諸如snort這類基於網路的ids的方法:多型url技術。

提起多型二字,大家可能會聯想到編寫病毒技術中的「多型」、「變形」等加密技術,其實我這裡所要講的url多型編碼技術和病毒的多型變形技術也有神似之處,就是用不同的表現形式來實現相同的目的。

對於同乙個url,我們可以用不同形式的編碼來表示。ids在實時檢測時,將它檢測到的資料與其本身規則集檔案中規定為具有攻擊意圖的字串進行對比,如果相匹配的話,則說明系統正在受攻擊,從而阻止攻擊以及發出警報。因為實現同一目的的url可以用不同的形式來表示,所以經過變形編碼後的url可能就不在ids的規則集檔案中,也就擾亂了ids的識別標誌分析引擎,從而就實現了突破、繞過ids的效果!

多型url編碼技術有許多種,筆者在此介紹9種常用且有一定代表性的方法。為了便於講解,這裡以提交位址為/msadc/ msadcs.dll的url來作為例。「/msadc/msadcs.dll」已經被收集到snort等各大ids的規則集檔案中,因而當我們向目標機器直接提交/msadc/ msadcs.dll時都會被ids截獲並報警。

第一招:「/./」 字串插入法

鑑於「./」的特殊作用,我們可以把它插入進url中來實現url的變形。比如對於/msadc/msadcs.dll,我們可以將它改寫為/././msadc/././msadcs.dll、/./msadc/.//./msadcs.dll等形式來擾亂了ids的識別標誌分析引擎,實現了欺騙ids的目的。而且改寫後編碼後的url與未修改時在訪問效果上是等效的。筆者曾經通過實驗表明這種方法可以繞過snort等ids。

第二招:十六進製制編碼

對於乙個字元,我們可以用轉義符號「%」 加上其十六進製制的ascii碼來表示。比如/msadc/msadcs.dll中第乙個字元「/」可以表示為%2f,接下來的字元可以用它們對應的16 進製的ascii碼結合「%」來表示,經過此法編碼後的url就不再是原先的模樣了,ids的規則集檔案裡可能沒有編碼後的字串,從而就可以繞過ids。但是這種方法對採用了http預處理技術的ids是無效的。

第三招:「00 」 ascii碼

前段時間動網上傳漏洞就是利用的這一特性,大家肯定對此很熟悉了。它的原理就是計算機處理字串時在ascii碼為00處自動截斷。我們就可以把/msadc/msadcs.dll改寫為/msadc/msadcs.dll iloveheikefangxian,用winhex將「.dll」與ilove之間的空格換為00的ascii碼,儲存後再用nc配合管道符提交。這樣在有些ids看來/msadc/msadcs.dll iloveheikefangxian並不與它的規則集檔案中規定為具有攻擊意圖的字串相同,從而它就會對攻擊者的行為無動於衷。瞧!「計算機處理字串時在ascii碼為00處自動截斷」這一原理的應用多麼廣泛啊!從哲學上講,事物之間相互存在著聯絡,我們應該多思考,挖掘出內在規律,這樣就會有新的發現。

第四招。非法unicode編碼

utf-8編碼允許字符集包含多餘256個字元,因此也就允許編碼位數多於8位。「/」字元的十六進製制的ascii碼是2f,用二進位制數表示就是00101111。utf-8格式中表示2f的標準方法仍然是2f,但是也可以使用多位元組utf-8來表示2f。字元「/」可以像下表中所示使用單位元組、雙位元組、三位元組的utf-8編碼來表示:

「/」字元表示方式 二進位制 十六進製制

單位元組 0******x 00101111 2f

雙位元組 110***xx 10****** 11000000 10101111 c0 af

三位元組 1110***x 10****** 10****** 11100000 10000000 10101111 e0 80 af

按照此方法,我們可以對整個字串都進行相應的編碼。雖然編碼後的url的最終指向的資源都相同,但它們的表達方式不同, ids的規則集檔案中就可能不存在此過濾字串,從而就實現了突破ids的目的。

第五招。加入虛假路徑

在url中加入「/」字串後,在該字串後的目錄就沒有了意義,作廢了。因此利用「/」字串可以達到擾亂了識別標誌分析引擎、突破ids的效果!

第六招:插入多斜線

我們可以使用多個 「/」來代替單個的「/」。替代後的url仍然能像原先一樣工作。比如對/msadc/msadcs.dll的請求可以改為msadcmsadcs.dll,經筆者曾經實驗,這種方法可以繞過某些ids。

第七招:使用路徑分隔符「」

對於像微軟的iis這類web伺服器,「「也可以當「/」一樣作為路徑分隔符。有些ids在設定規則集檔案時並沒有考慮到非標準路徑分隔符「」。如果我們把/msadc/msadcs.dll改寫為msadc msadcs.dll就可以逃過snort的法眼了,因為snort的規則集檔案裡沒有msadc msadcs.dll這一識別標誌。值得一提的是路徑分隔符「」還有個妙用,就是前段時間《黑客防線》上提到的「%5c」暴庫**,「%5c」就是「」的16進製制表現形式。

第八招: 多餘編碼法

多餘編碼又稱雙解碼。還記的2000-2023年iis的unicode解碼漏洞和雙解碼漏洞鬧得沸沸揚揚,那時有許多朋友稀里糊塗的以為unicode解碼漏洞就是雙解碼漏洞,其實它們兩者是兩回事,前者的原理筆者已在上述的「非法unicode編碼」中有所描述。而多餘編碼就是指對字元進行多次編碼。比如「/」字元可以用%2f表示,「%2f」中的「%」、「2」、「f」字元又都可以分別用它的ascii碼的十六進製制來表示,根據數學上的排列組合的知識可知,其編碼的形式有2的3次方,於是「%2f」可以改寫為:「%25%32%66」、「%252f」等等來實現url的多型,編碼後的字串可能沒被收集在ids的規則集檔案中,從而可以騙過有些ids。

第九招:綜合多型編碼

聰明的你一看這個小標題就知道了,所謂綜合,就是把以上介紹的幾種多型變形編碼技術結合起來使用,這樣的話效果會更好。

後記:當我剛才提到「00 ascii碼」以及非標準路徑分隔符「」時,大家可能會倍感熟悉,因為這與前段時間流行的動網上傳漏洞以及暴庫**有著密切聯絡。黑客是門藝術,黑客講究的是靈感是思路,我們通過深入思考,舊的知識也可以創造出新的技術!

攻擊行為 ddos

目錄攻擊後的應對 寫指令碼,指令碼內容是分析日誌裡面對 訪問次數超過限定值的ip的數量,當超過一定的數量,就應當將其加入到防火牆的拒絕列表裡面,防火牆的拒絕列表也要定期清空,不能一直攻擊某個ip位址,因為可能是這個ip是肉機。指令碼示例 bin bash bin netstat na grep es...

使用機器學習異常檢測攻擊行為

一般現有的內部威脅檢測演算法都會被轉化為異常檢測來做。內部威脅檢測領域除了異常檢測之外。識別攻擊動機以及區分異常和攻擊也是重點。內部威脅檢測主要是基於使用者的網路 檔案 裝置 郵件等審計日誌構建正常使用者行為模型,之後使用包括圖 機器學習 整合學習等方法對當前行為進行異常檢測。基於機器學習的異常檢測...

黑客的一次攻擊行為

主要由 隱藏自己 預攻擊探測 攻擊行為 擦除痕跡 四個步驟構成。一般完整的攻擊過程都是先隱藏自身,在隱藏好自己後再進行預攻擊探測,檢測目標機器的各種屬性和具備的被攻擊條件,然後採取相應的攻擊方法進行破壞,達到自己的目的,之後攻擊者會刪除自己的行為日誌。1 隱藏自己 常見的攻擊者隱藏自身的方式有以下幾...