駭客避開檢測的手段(轉)

gugu99發表於2007-08-14
駭客避開檢測的手段(轉)[@more@]

  駭客的聰明並不只是在於他們知道如何去入侵伺服器,還在於他們知道如何去偽裝自己的攻擊。惡意的攻擊者會使用多種逃避的手段來讓自己不會被檢測到,所以作為系統管理員,也應當瞭解這些手段以應付可能發生的攻擊。

  這篇文章的主要目的不是揭示駭客新的攻擊手法,而是對那些駭客所用到的逃避檢測的手法以及他們可能留下的證據做描述。這些手段的欺騙性很大,所以想檢測到它們也更加的困難。

  網路伺服器

  我們的實驗環境使用兩種最常用的網路伺服器,Apache和微軟的InternetInformationServer(IIS)。我們在RedHatLinux上執行Apache1.3.9,在WindowsNT4.0上執行IIS4.0。並且兩種都採用普通和允許SSL的版本,所以我們可以對加密和未加密的伺服器的攻擊做測試。

  16進位制編碼

  一種最簡單的將攻擊偽裝的手段就是修改URL請求。作為管理員,我們一般會在日誌檔案中查詢某些字串,或是一些普通文字的字符集。例如我們在請求中查詢匹配已知漏洞的字串。例如,我們在我們的IIS伺服器中發現瞭如下的字串,我們就知道有人正在查詢是否有IIS中可以遠端利用的MDAC漏洞:

  06:45:2510.0.2.79GET/msadc/302

  要知道攻擊者是如何躲過這種匹配檢測的,請參考以下作為惡意攻擊者策略一部分的請求。要確定msadc目錄是否存在,攻擊者可能鍵入以下內容:

  [root@localhost/root]#nc-n10.0.2.5580

  GET/msadcHTTP/1.0

  這就會產生我們以上所見的日誌檔案。攻擊者可以將請求進行十六進位制的ASCII字元編碼。在以上的例子中,字串msadc在十六進位制編碼以後就會變為6D73616463。你可以使用WindowsCharmap程式來快速的進行字元的ASCII到十六進位制的轉換。以上的HTTP請求,將字串msadc用十六進位制編碼以後,就變成了:

  [root@localhost]#nc-n10.0.2.5580

  GET/%6D%73%61%64%63HTTP/1.0

  IIS的日誌檔案顯示:

  07:10:3910.0.2.31GET/msadc/302

  應當注意的是,雖然採用了十六進位制編碼的手段,但是所產生的日誌和沒有使用十六進位制編碼的URL產生的是一樣的。所以在這個例子裡,編碼並沒有幫助攻擊者逃避檢測。但是,如果我們看看看Apache的日誌情況,那麼就是另外一個情形了。以下列出了攻擊者使用來搜尋某個CGI指令碼的命令,後面跟著的是使用十六進位制編碼以後的同樣命令:

  [root@localhost]#nc-n10.0.0.280

  HEAD/cgi-bin/test-cgiHTTP/1.0

  [root@localhost]#nc-n10.0.0.280

  HEAD/%63%67%69-bin/test-%63%67%69HTTP/1.0

  現在我們來檢視一下access_log檔案:

  10.10.10.10--[18/Oct/2000:08:22:47-0700]"HEAD/cgi-bin/test-cgiHTTP/1.0"2000

  10.10.10.10--[18/Oct/2000:08:23:47-0700]"HEAD/%63%67%69-bin/test-%63%67%69HTTP/1.0"2000

  首先應注意到的是在這兩個例子中都是200程式碼說明命令完成成功。但是在第二中情況中,日誌中出現的是十六進位制的值而不是明文的。如果我們是依賴於形式來對這種攻擊進行檢測的話,那麼我們是不可能檢測到所發生的攻擊的。許多的入侵檢測系統使用的格式匹配技術智慧化都不高,並且有些產品不會將十六進位制的URL轉換過後進行匹配。但是不論所使用的入侵檢測軟體是否能夠對十六進位制的程式碼進行轉換,所有的網路管理員都應當對這種伎倆有所瞭解。

  代理伺服器

  因為對攻擊者而言完全隱藏攻擊行為是很難做到的,所以掩蓋攻擊的真實來源也就成為相當重要的課題了。如果駭客可以隱藏他的源IP地址的話,那麼他就可以在不用擔心被抓住的情況下進行攻擊。而駭客用來隱藏他們的源IP地址的一種手段就是使用代理伺服器。

  代理伺服器是被合法的用來從一個單一的訪問點轉發多種協議的。一般來說,內部使用者必須透過代理伺服器才能訪問Internet,因此管理員就可以在代理伺服器指定外部訪問以及內部訪問的限制策略。使用者首先是和代理伺服器建立連線,然後代理伺服器就將連線請求轉發到真正的目的地址。目的地址會記錄下代理伺服器的IP地址以作為請求的源地址,而不是最初發出請求的系統的IP地址。

  但是不幸的是代理伺服器在Internet上的放置太隨意了。(可以檢視Proxys-4-All來獲得這些錯誤配置機器的列表。)這些伺服器經常會存在配置錯誤使得Internet使用者可以連線到這些代理伺服器上。一旦某個Internet使用者透過代理伺服器連線到某個伺服器上,該伺服器就會將代理伺服器的IP地址作為發出請求的源地址記錄在日誌中。而在被攻擊伺服器的日誌中對攻擊者的記錄其IP地址是屬於一個沒有任何攻擊行為的“無辜”主機的,而不是攻擊者的真正地址。我們來看以下的例子。

  下面的例子顯示了駭客的攻擊和攻擊在日誌中產生的相關資訊。

  攻擊者

  [root@10.1.1.1/]#nc-v10.8.8.880

  HEAD/HTTP/1.0

  日誌檔案

  10.1.1.1--[18/Oct/2000:03:31:58-0700]"HEAD/HTTP/1.0"2000

  在下面這種情況中,我們看到攻擊者達到了同樣的目的,但是這次他使用了代理伺服器。

  攻擊者

  [root@10.1.1.1/]#nc-v216.234.161.8380

  HEAD

  日誌檔案

  216.234.161.83--[18/Oct/2000:03:39:29-0700]"HEAD/HTTP/1.1"2000

  注意在這個例子中,日誌檔案中所出現的地址是代理伺服器的(216.234.161.83,proxy.proxyspace.com),而不是攻擊者的真實地址。在這個案例中,攻擊者成功的隱藏了攻擊的來源地址。不過網路管理員如果能得到代理服務的支援的話還是可以追蹤到攻擊的真正來源。大多數的代理伺服器都會儲存一份相當詳細的日誌,所以多半也就可以從中找到攻擊的來源。但是道高一尺魔高一仗,駭客也有相應的方法來反跟蹤:他們可以使用多重代理,也可以說是一個“代理鏈”來進行攻擊。而管理員和執法部門也就必須對所有的中間代理伺服器進行依次檢查來獲得攻擊來源。在駭客的團體中這種“代理鏈”的使用非常的普遍,並且有類似SocksChainforWindows這樣的工具可供使用。

  SSL

  對此以往很多人進行了討論,但是它現在值得再一次提出:允許SSL的伺服器是不會被網路入侵檢測系統所檢測到的。如果讓一個駭客在80埠(HTTP)和443埠(HTTPS)之間做一個選擇的話,攻擊者每一次都會選擇443埠的。這實際上並不是什麼手段,而是由於加密通訊的使用所造成的副作用。你可以使用網路伺服器日誌檔案來監視443埠的請求。

  結論

  我們向你演示了一些網路上的駭客常用的欺騙伎倆。無須多說,這些手段是隨著駭客們的想象力和創造力不斷增加而不斷擴充套件的。例如十六進位制編碼這樣的技術不光是用在欺騙性的日誌檔案入口這樣的地方;它同樣也欺騙網路伺服器的URL解析機制,並可能導致例如原始碼暴露之類的漏洞的出現。攻擊者某些時候也使用多代理伺服器來進行掃描和攻擊,讓管理員很難跟蹤攻擊的真正來源。當然,SSL某些時候為“安全駭客行為”鋪平了道路。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-956767/,如需轉載,請註明出處,否則將追究法律責任。

相關文章