判斷Web Security 入侵個跡象
這篇文章主要說明網站受到入侵的幾個重要的跡象,
一般的防火牆或是 IDS也是根據這樣的跡象來偵測並且採取並要的行動。
主要參考 OWASP 組織中,Appensor 這個專案所定義的相關建議。
通常一個入侵可能是多種跡象的結合,為減少誤判機率,會在加上時間軸內發生的次數與異常頻率。
這些設定的組合就會形成一個入侵偵測與防火牆的 rule。
Request Exception
這類指的主要是client端送到 Web Server時,Http Request的異常行為,舉幾個例子
- 網站只有支援 Http GET/Post但是卻出現了其他像是HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT
- 出現其他非標準的 Http Method
- 非預期的參數的傳遞。例如 URL 中或是 Http Post參數中,額外出現像是 admin=true。
- 參數傳遞出現非預期的字元,或是過長的字元。
Authentication
這類主要都是跟身分認證有關。比較常見的像是用多組帳號密碼來做猜測。利用已知的帳號名稱加上常見的密碼。其他一些攻擊的特徵,例如:
- 同一個IP來源,但是不斷的替換使用不同的使用者名稱登入
- 有許多失敗的密碼登入。這表示有可能有人在嘗試各種密碼的組合。
- 短時間內有大量的登入。
- 使用者名稱的字元長度異常。
- 參數輸入過多或是過少,例如帳號或是密碼為空白。多了額外的 Http post 參數。
- 帳號名稱為一些常見的測試帳號。例如:admin, test
- 帳戶登入的 GeoIP 異常
Session
這類的異常大多跟 cookie 有關。因為登入之後,Browser會記錄登入的連線相關資訊。
Cookie有一個特性就是,每次Browser與網站溝通時,都會再次傳送 cookie給網站。這類的異常包含:
- 非法的Cookie,傳送的Cookie可能已經經過修改。
- 新增的Cookie值。
- 被刪除的cookie。有些Cookie的值被刪除。
- 盜用別人登入的Cookie
- 該Cookie 的來源IP位置異常。有可能為使用者A的Cookie被使用者B盜用
- User Agent 有異常的修改。例如原本是IE 但是卻變成FireFox
Access Control
這類大多是針對網路資源存取的控制。瀏覽器存取網站資源不外乎為Http Get/Post,因此對於HTTP Get/POST 的存取必須加以權限的控管。
- 例如 /viewpage?page=home 修改為/viewpage?page=home&user=admin
- 強制瀏覽特別的網址例如: www.example.com/download 或是 www.example.com/admin
Input Exception
- 違反黑名單或是白名單的規則
- 資料的輸入違反系統。例如間接修改 .htaccess or apache2.ini
- 透過XSS。常見的XSS 測試,例如
<script>alert(document.cookie);
</script> <script>alert();
</script> alert(String.fromCharCode(88,83,83))
<IMG SRC=”javascript:alert(‘XSS’);”>
<IMG SRC=javascript:alert(‘XSS’)>
<IMG SRC=javascript:alert("XSS")>
<BODY ONLOAD=alert(‘XSS’)>
Encoding
攻擊者透過 encoding的方式躲過防火牆的偵測。
- 例如將alert(document.cookie)透過 UTF7編碼,讓防火牆無法偵測alert
Command Injection
這類指的主要是對於系統或是資料庫等的指令執行。最常見的像是 SQL injection。
- OR 1=1– xp_cmdshell UNION JOIN 例如這個例子,會透過SQL Server 執行 command shell
- 偵測是否有異常或是額外的回傳值。正常的查詢可能為5-10筆資料。但是如果突然有5萬筆資料的回傳,那也表示查詢的異常。
File IO
- 檢查檔名是否有 NULL or %00。攻擊者可能透過檔名為NULL的方式,入侵該作業系統。
- 偵測是否有很大檔案被上傳。
- 是否有大量的檔案備上傳。
Honey Trap
透過一些測試資料或是測試帳號了解相關測試帳號存取資源、帳號使用的一些規則。
User Trend
這類主要是透過一些使用者的使用習慣來進行分析。
- 異常的使用者行為
- 使用的速度。有些行為因為點選的速度過快,有可能是程式電腦所為,並非人的操作行為。
- 使用者使用的頻率。例如,正常應該一星期一次。但是變成一天數次。
System Trend
這類似透過系統的一些軌跡來判斷異常。例如:
- logout 的次數大幅增加
- Login 的次數大幅增加
- 讀取的次數大幅增加
採取行動
根據這些異常行為,系統可以採取一些行動。例如,通知,限制使用者功能、甚至是關閉使用者使用權限等。
行動 | 說明 | 舉例 |
None | No response | No Response |
Silent | User unaware of application’s response | Logging Change |
Administrator Notification | ||
Other Notification | ||
Proxy | ||
Passive | Changes to user experience but nothing denied | User Status Change |
User Notification | ||
Timing Change | ||
Active | Application functionality reduced for user(s) | Process Terminated |
Function Amended | ||
Function Disabled | ||
Account Logout | ||
Account Lockout | ||
Application Disabled | ||
Intrusive | User’s environment altered | Collect Data from User |