web攻擊日誌分析之新手指南

wyzsk發表於2020-08-19
作者: 奔跑的小胖子 · 2015/03/30 11:00

from:http://resources.infosecinstitute.com/log-analysis-web-attacks-beginners-guide/

0x00 前言


現實中可能會經常出現web日誌當中出現一些被攻擊的跡象,比如針對你的一個站點的URL進行SQL隱碼攻擊測試等等,這時候需要你從日誌當中分析到底是個什麼情況,如果非常嚴重的話,可能需要調查取證誰來做的這個事情,攻擊流程是什麼樣子的。

除此之外,還有其他場景。

作為一名管理員,理解如何從安全的角度來分析日誌真的很重要。

這篇文章內容包括了日誌分析的一些基礎知識,可以解決上述需求。

0x01 準備


出於演示目的,我進行以下設定。

Apache 伺服器

預安裝在Kali Linux

可以用以下命令開啟:

service apache2 start

enter image description here

MySQL

預安裝在Kali Linux

可以用以下命令開啟:

service mysql start

enter image description here

使用PHP-MySQL建立一個有漏洞的web應用

我使用PHP開發了一個有漏洞的web應用並且把它放在上面提到的 Apache-MySQL裡面。

上述設定完成後,我用了一些Kali Linux中的自動工具(ZAP、w3af)掃描這個有漏洞的應用的URL。

現在讓我們來看看分析日誌中的不同情況。

0x02 Apache服務中的日誌記錄


Debian系統上Apache伺服器日誌的預設位置為:/var/log/apache2/access.log

日誌記錄只是在伺服器上儲存日誌。我還需要分析日誌以得出正確結果。在接下來的一節裡,我們將看到我們如何分析Apache伺服器的訪問日誌以找出web站點上是否有攻擊嘗試。

分析日誌

手動檢查

在日誌量較小的情況下,或者如果我們查詢一個指定關鍵詞,可以使用像grep表示式這樣的工具觀察日誌。

在下圖中,我們在URL中試圖搜尋所有關鍵詞為“union”的請求。

enter image description here

從上圖中,我們可以看到URL中的“union select 1,2,3,4,5”請求。很明顯,ip地址為 192.168.56.105的某人嘗試了SQL隱碼攻擊。 類似地,當我們有自己的關鍵詞時可以搜尋特殊的關鍵詞。

enter image description here

在下圖中,我們正在搜尋試圖讀取“/etc/passwd”的請求,很明顯是本地檔案包含嘗試。

如上面的截圖所示,我們有許多本地檔案包含的嘗試,且這些請求傳送自ip地址 127.0.0.1。

很多時候,能輕易透過日誌看出是否是自動化掃描器產生的。

舉例來說, IBM appscan在許多攻擊payload中使用“appscan”這個詞。所以,在日誌中檢視這樣的請求,我們基本就可以判斷有人在使用appscan掃描網站。

Microsoft Excel也是一個開啟日誌檔案和分析日誌的不錯的工具。我們可以透過指定“空格”為分隔符以用excel開啟日誌檔案。

當我們手頭沒有日誌分析工具時,這個也挺好用的。

除了這些關鍵詞,在分析期間要了解HTTP狀態程式碼的基礎知識。以下是關於HTTP狀態程式碼的高階資訊的表格。

enter image description here

0x03 Web shells


webshell是網站/伺服器的另一個問題。webshell可以已web server許可權控制伺服器。

在一些情況下,我們可以使用webshell來訪問所有放在相同伺服器上的其他站點。

以下截圖顯示了Microsoft Excel 中開啟相同的access.log檔案。

enter image description here

我們清楚地看到有一個叫“b374k.php”的檔案被訪問了。“b374k”是一個流行的webshell,因此這個檔案是很可疑的。

檢視相應程式碼“200”,本行表明有人上傳了一個webshell並訪問了它。

在許多情況下,攻擊者重新命名webshell的名字以避免懷疑。我們必須變得聰明點,看看被訪問的檔案是否是常規檔案或者是否他們看起來不太一樣。我們可以更進一步,如果任何檔案看起來可疑的話,還可以檢視檔案型別和時間戳。

One single quote for the win

SQL隱碼攻擊是web應用中最常見的漏洞之一。大多數學習web應用安全的人是從學習SQL隱碼攻擊開始的。

識別一個傳統的SQL隱碼攻擊很容易,給URL引數新增一個單引號看看是否報錯。

任何我們傳遞給伺服器的東西都會被記錄,並且可以朔源。

以下截圖顯示了日誌當中記錄了有對引數user傳入單引號測試是否有SQL隱碼攻擊的行為。

%27是單引號的URL編碼。

enter image description here

出於管理目的,我們還可以執行查詢監視來檢視資料庫中的哪個請求被執行了。

enter image description here

如果我們觀察以上圖片,傳遞一個單引號給引數“user”的SQL語句被執行了。

0x04 使用自動化工具分析


當存在大量日誌時。手動檢查就會變得困難。在這種情景下,除了一些手動檢查之外我們可以使用自動化工具。

雖然有許多高效的商業工具,但是我要向你們介紹一款被稱為“Scalp”的免費工具。

據他們的官方連結所說,Scalp是用於Apache伺服器,旨在查詢安全問題的日誌分析器。主要理念是瀏覽大量日誌檔案並透過從HTTP/GET中提取可能的攻擊。

Scalp可以從以下連結下載:

https://code.google.com/p/apache-scalp/

Scalp是python指令碼,所以要求我們的機器中安裝python。

以下圖片顯示該工具的幫助。

enter image description here

如我們在上圖所見,我們需要使用標誌-l來提供要分析的日誌檔案。

同時,我們需要提供使用標誌-f提供一個過濾檔案讓Scalp在access.log檔案中識別可能的攻擊。

我們可以使用PHPIDS專案中的過濾器來檢測任何惡意的嘗試。

該檔名為“default_filter.xml ”,可以從以下連結中下載:

https://github.com/PHPIDS/PHPIDS/blob/master/lib/IDS/default_filter.xml

以下程式碼塊是取自上面連結的一部分。

#!html
<filter>
      <id>12</id>
      <rule><![CDATA[(?:etc\/\W*passwd)]]></rule>
      <description>Detects etc/passwd inclusion attempts</description>
      <tags>
          <tag>dt</tag>
          <tag>id</tag>
          <tag>lfi</tag>
      </tags>
      <impact>5</impact>
</filter>

它是使用XML標籤定義的規則集來檢測不同的攻擊測試。以上程式碼片段是檢測檔案包含攻擊嘗試的一個示例。

下載此檔案之後,把它放入Scalp的同一資料夾下。

執行以下命令來使用Scalp分析日誌。

#!bash
python scalp-0.4.py –l /var/log/apache2/access.log –f filter.xml –o output –html

enter image description here

“output”是報告儲存的目錄。如果不存在的話,由Scalp自動建立。-html是用來生成HTML格式的報告。 如我們在上圖看到的那樣,Scalp結果表明它分析了4001行,超過4024並發現了296個攻擊模式。

執行上述命令後在輸出目錄內生成報告。我們可以在瀏覽器內開啟它並檢視結果。 下面截圖顯示的輸出顯示了目錄遍歷攻擊嘗試的一小部分。

enter image description here

MySQL中的日誌記錄


本節論述了資料庫中的攻擊分析和監視它們的方法。

第一步是檢視設定了什麼變數。我們可以使用“show variables;”完成,如下所示。

enter image description here

接下來顯示了上述命令的輸出。

enter image description here

如我們在上圖中看到的,日誌記錄已開啟。該值預設為OFF。

這裡另一個重要的記錄是 “log_output”,這是說我們正在把結果寫入到檔案中。另外,我們也可以用表。

我們可以看見“log_slow_queries”為ON。預設值為OFF。

所有這些選項都有詳細解釋且可以在下面提供的MySQL文件連結裡直接閱讀:

http://dev.mysql.com/doc/refman/5.0/en/server-logs.html

MySQL的查詢監控


請求日誌記錄從客戶端處收到並執行的語句。預設記錄是不開啟的,因為比較損耗效能。

我們可以從MySQL終端中開啟它們或者可以編輯MySQL配置檔案,如下圖所示。

我正在使用VIM編輯器開啟位於/etc/mysql目錄內的“my.cnf”檔案。

enter image description here

如果我們向下滾動,可以看見日誌正被寫入一個稱為“mysql.log”的檔案內。

enter image description here

我們還能看到記錄“log_slow_queries” ,是記錄SQL語句執行花了很長時間的日誌。

enter image description here

現在一切就緒。如果有人用惡意查詢資料庫,我們可以在這些日誌中觀察到。如下所示:

enter image description here

上圖顯示了查詢命中了名為“webservice”的資料庫並試圖使用SQL隱碼攻擊繞過認證。

0x05 更多日誌記錄


預設地,Apache只記錄GET請求,要記錄POST資料的話,我們可以使用一個稱為“mod_dumpio”的Apache模組。要了解更多關於實現部分的資訊,請參考以下連結:

http://httpd.apache.org/docs/2.2/mod/mod_dumpio.html

另外,我們可以使用“ mod security”達到相同結果。

Reference http://httpd.apache.org/docs/2.2/logs.html

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章