Cd Chen's Services

ba ba ba la~~

從伺服器的記錄尋找駭客的蛛絲馬跡

概述

當伺服器被攻擊時,最容易被人忽略的地方,就是記錄檔,伺服器的記錄檔了駭客活動的蛛絲馬跡。在這裏,我為大家介紹一下兩種常見的網頁伺服器中最重要的記錄檔,分析伺服器遭到攻擊後,駭客在記錄檔中留下什麼記錄。

目前最常見的網頁伺服器有兩種:Apache 和微軟的 Internet Information Server (簡稱IIS)。這兩種伺服器都有一般版本和 SSL 認證版本,方便駭客對加密和未加密的伺服器進行攻擊。

IIS 的預設記錄檔位址在 c:\winnt\system32\logfiles\w3svc1 的目錄下,檔案名是當天的日期,如 yymmdd.log。系統會每天產生新的記錄檔。預設的格式是 W3C 延伸記錄檔格式 (W3C Extended Log File Format),很多相關軟體都可以解譯、分析這種格式的檔案。記錄檔在預設的狀況下會記錄時間、用戶端 IP 位址、method (GET、POST 等)、 URI stem (要求的資源)、和 HTTP 狀態 (數位狀態代碼)。這些欄位大部分都一看就懂,可是HTTP狀態就需要解讀了。一般而言,如果代碼是在 200 ~ 299 代表成功。常見的 200 狀態碼代表符合用戶端的要求。300 ~ 399 代表必須由用戶端採取動作才能滿足所提出的要求。400 ~ 499 和 500 ~ 599 代表用戶端和伺服器有問題。最常見的狀態代碼有兩個,一個是 404,代表用戶端要求的資源不在伺服器上,403 代表的是所要求的資源拒絕服務。 Apache 記錄檔的預設儲存位置在 /usr/local/apache/logs。最有價值的記錄檔是 access_log,不過 ssl_request_log 和 ssl_engine_log 也能提供有用的資料。 access_log 記錄檔有七個欄位,包括用戶端IP地址、特殊人物識別符、用戶名稱、日期、Method Resource Protocol (GET、POST等;要求哪些資源;然後是協定的版本)、HTTP 狀態、還有傳輸的位元組。

我在這裏所用的是與駭客用的相似的類比攻擊網站方式和工具。(注意:在本文中所介紹的方法請大家不要試用,請大家自覺遵守網路準則!)

分析過程

網頁伺服器版本是很重要的資訊,駭客一般先向網頁伺服器提出要求,讓伺服器送回本身的版本資訊。只要把「HEAD / HTTP/1.0」這個字串用常見的 netcat utility (相關資料網址:http://www.l0pht.com/~weld/netcat/) 和 OpenSSL binary(相關資料網址:http://www.openssl.org/)送到開放伺服器的通訊埠就成了。注意看下面的示範:

  C:>nc -n 10.0.2.55 80
  HEAD / HTTP/1.0
  HTTP/1.1 200 OK
  Server: Microsoft-IIS/4.0
  Date: Sun, 08 Mar 2001 14:31:00 GMT
  Content-Type: text/html
  Set-Cookie: ASPSESSIONIDGQQQQQPA=IHOJAGJDECOLLGIBNKMCEEED; path=/
  Cache-control: private
 

這種形式的要求在 IIS 和 Apache 的記錄檔中會產生以下記錄:

  • IIS:
    15:08:44 11.1.2.80 HEAD /Default.asp 200
  • Linux:
    11.1.2.80 - - [08/Mar/2001:15:56:39 -0700] "HEAD / HTTP/1.0" 200 0

雖然這類要求合法,看似很平常,不過卻常常是網路攻擊的前奏曲。access_log 和 IIS 的記錄檔沒有表明這個要求是連到 SSL 伺服器還 是一般的網頁伺服器,可是 Apache 的 ssl_request_log 和 ssl_engine_log(在 /usr/local/apache/logs 目錄下)這兩個記錄檔就會記錄是否有聯機到 SSL 伺服器。請看以下的 ssl_request_log 記錄檔:

[07/Mar/2001:15:32:52 -0700] 11.1.1.50 SSLv3 EDH-RSA-DES-CBC3-SHA "HEAD / HTTP/1.0" 0

第三和第四個欄位表示用戶端使用的是哪種加密方式。以下的 ssl_request_log 分別記錄從 OpenSSL、 Internet Explorer 和 Netscape 用戶端程式發出的要求。

  [07/Mar/2001:15:48:26 -0700] 11.1.1.50 SSLv3 EDH-RSA-DES-CBC3-SHA "GET / HTTP/1.0" 2692
  [07/Mar/2001:15:52:51 -0700] 10.0.2.55 TLSv1 RC4-MD5 "GET / HTTP/1.1" 2692
  [07/Mar/2001:15:54:46 -0700] 11.1.1.50 SSLv3 EXP-RC4-MD5 "GET / HTTP/1.0" 2692
  [07/Mar/2001:15:55:34 –0700] 11.1.2.80 SSLv3 RC4-MD5 “GET / HTTP/1.0” 2692
 

另外駭客通常會複製一個網站 (也就是所謂的鏡射網站),來取得發動攻擊所需要的資訊。網頁原始碼中的批註欄位常有目錄、檔案名甚至密碼的有用資料。複製網站常用的工具包括視窗系統的 Teleport Pro(網址:http://www.tenmax.com/teleport/pro/home.htm) 和 Unix 系統的 wget(網址:http://www.gnu.org/manual/wget/)。在這裏我為大家分析 wget 和 TeleportPro 這兩個軟體攻擊網頁伺服器後記錄檔中的內容。這兩個軟體能全面快速搜尋整個網站,對所有公開的網頁提出要求。只要檢查一下記錄檔就知道,要解譯鏡射這個動作是很簡單的事。以下是 IIS 的記錄檔:

  16:28:52 11.1.2.80 GET /Default.asp 200
  16:28:52 11.1.2.80 GET /robots.txt 404
  16:28:52 11.1.2.80 GET /header_protecting_your_privacy.gif 200
  16:28:52 11.1.2.80 GET /header_fec_reqs.gif 200
  16:28:55 11.1.2.80 GET /photo_contribs_sidebar.jpg 200
  16:28:55 11.1.2.80 GET /g2klogo_white_bgd.gif 200
  16:28:55 11.1.2.80 GET /header_contribute_on_line.gif 200
 

注:11.1.2.80這個主機是Unix系統的用戶端,是用wget軟體發出請求。

  16:49:01 11.1.1.50 GET /Default.asp 200
  16:49:01 11.1.1.50 GET /robots.txt 404
  16:49:01 11.1.1.50 GET /header_contribute_on_line.gif 200
  16:49:01 11.1.1.50 GET /g2klogo_white_bgd.gif 200
  16:49:01 11.1.1.50 GET /photo_contribs_sidebar.jpg 200
  16:49:01 11.1.1.50 GET /header_fec_reqs.gif 200
  16:49:01 11.1.1.50 GET /header_protecting_your_privacy.gif 200
 

注:11.1.1.50系統是視窗環境的用戶端,用的是TeleportPro發出請求。

注意:以上兩個主機都要求 robots.txt 這個檔案,其實這個檔案是網頁管理員的工具,作用是防止 wget 和 TeleportPro 這類自動抓檔軟體對某些網頁從事抓取或搜尋的動作。如果有人提出 robots.txt 的要求,常常代表是要鏡射整個網站。但,TeleportPro 和 wget 這兩個軟體都可以把要求 robots.txt 這個檔的功能取消。另一個偵測鏡射動作的方式,是看看有沒有同一個用戶端IP反復提出資源要求。

駭客還可以用網頁漏洞稽核軟體:Whisker(網址:http://www.wiretrip.net/),來偵查網頁伺服器有沒有安全後門 (主要是檢查有沒有 cgi-bin 程式,這種程式會讓系統產生安全漏洞)。以下是 IIS 和 Apache 網頁伺服器在執行 Whisker 後產生的部分記錄檔。

  • IIS:
      13:17:56 11.1.1.50 GET /SiteServer/Publishing/viewcode.asp 404
      13:17:56 11.1.1.50 GET /msadc/samples/adctest.asp 200
      13:17:56 11.1.1.50 GET /advworks/equipment/catalog_type.asp 404
      13:17:56 11.1.1.50 GET /iisadmpwd/aexp4b.htr 200
      13:17:56 11.1.1.50 HEAD /scripts/samples/details.idc 200
      13:17:56 11.1.1.50 GET /scripts/samples/details.idc 200
      13:17:56 11.1.1.50 HEAD /scripts/samples/ctguestb.idc 200
      13:17:56 11.1.1.50 GET /scripts/samples/ctguestb.idc 200
      13:17:56 11.1.1.50 HEAD /scripts/tools/newdsn.exe 404
      13:17:56 11.1.1.50 HEAD /msadc/msadcs.dll 200
      13:17:56 11.1.1.50 GET /scripts/iisadmin/bdir.htr 200
      13:17:56 11.1.1.50 HEAD /carbo.dll 404
      13:17:56 11.1.1.50 HEAD /scripts/proxy/ 403
      13:17:56 11.1.1.50 HEAD /scripts/proxy/w3proxy.dll 500
      13:17:56 11.1.1.50 GET /scripts/proxy/w3proxy.dll 500
     
  • Apache:
      11.1.1.50 - - [08/Mar/2001:12:57:28 -0700] "GET /cfcache.map HTTP/1.0" 404 266
      11.1.1.50 - - [08/Mar/2001:12:57:28 -0700] "GET /cfide/Administrator/startstop.html HTTP/1.0" 404 289
      11.1.1.50 - - [08/Mar/2001:12:57:28 -0700] "GET /cfappman/index.cfm HTTP/1.0" 404 273
      11.1.1.50 - - [08/Mar/2001:12:57:28 -0700] "GET /cgi-bin/ HTTP/1.0" 403 267
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "GET /cgi-bin/dbmlparser.exe HTTP/1.0" 404 277
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /_vti_inf.html HTTP/1.0" 404 0
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /_vti_pvt/ HTTP/1.0" 404 0
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /cgi-bin/webdist.cgi HTTP/1.0" 404 0
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /cgi-bin/handler HTTP/1.0" 404 0
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /cgi-bin/wrap HTTP/1.0" 404 0
      11.1.1.50 - - [08/Mar/2001:12:57:29 -0700] "HEAD /cgi-bin/pfdisplay.cgi HTTP/1.0" 404 0
     

大 家要偵測這類攻擊的關鍵,就在於從單一 IP 位址發出大量的 404 HTTP 狀態代碼。只要注意到這類資訊,就可以分析對方要求的資源;於是它們就會拼命要求提供 cgi-bin scripts (Apache 伺服器的 cgi-bin 目錄;IIS 伺服器的 scripts 目錄)。

小結

網頁如果被人探訪過,總會在記錄檔留下什麼線索。如果網頁管理員警覺性夠高,應該會把分析記錄檔作為追查線索,並且在檢查後發現網站真的有漏洞時,就能預測會有駭客攻擊網站。

接下來我要向大家示範兩種常見的網頁伺服器攻擊方式,分析伺服器在受到攻擊後駭客在記錄檔中痕跡。

  • MDAC攻擊

    MDAC攻擊法可以讓網頁的用戶端在IIS網頁伺服器上執行命令。如果有人開始攻擊 IIS 伺服器,記錄檔就會記下用戶端曾經呼叫 msadcs.dll 檔案:

      17:48:49 12.1.2.8 GET /msadc/msadcs.dll 200
      17:48:51 12.1.2.8 POST /msadc/msadcs.dll 200
     
  • 利用原始碼漏洞

    第二種攻擊方式也很普遍,就是會影響 ASP 和 Java 網頁的暴露原始碼漏洞。最晚被發現的安全漏洞是 +.htr 臭蟲,這個 bug 會顯示 ASP 原始碼。如果有人利用這個漏洞攻擊,就會在IIS的記錄檔裏面留下這些線索:

      17:50:13 11.1.2.80 GET /default.asp+.htr 200
     

網頁常會只讓有許可權的使用者進入。接下來我們要讓各位看 Apache 的 access_log 記錄檔會在登錄失敗時留下什麼線索:

  12.1.2.8 - user [08/Mar/2001:18:58:29 -0700] "GET /private/ HTTP/1.0" 401 462
 

注:第三欄裏面的使用者名稱是「user」。還有要注意 HTTP 的狀態代號是 401,代表非法存取。

本文摘錄自 http://network.ccidnet.com/pub/article/c782_a221883_p1.html

這篇內容的 Trackback 網址:

http://cdchen.idv.tw/trackback/51