前段時間為了加強內部安全意識,需要進行釣魚郵件演練,于是通過JXWAF快速搭建了一個釣魚網站,發現效果不錯,特此分享。
PS:本文僅用于技術討論及分享,嚴禁用于非法用途
首先假設攻擊場景為獲取公司內部OA賬號,內部OA域名為oa.testing.com。那么第一步就是注冊域名,比如去萬網注冊釣魚域名oa.testlng.com,地址指向為釣魚網站IP地址。
為了方便這里以DVWA來當成OA進行演示。
先來分析登陸成功和登陸失敗的特征。
登陸失敗。
登陸成功。
如圖,登陸失敗和登陸成功的區別在于response中Location的指向,失敗指向為login.php,成功指向為index.php,那么我們就以此為特征來設置兩條規則,一條識別登陸失敗的賬號,一條來識別登陸成功的賬號,當然也可以不用這么精細,直接設置規則記錄輸入的賬號密碼。
分析結束,接下來是搭建JXWAF及配置規則,搭建可以參考 https://github.com/jx-sec/jxwaf,規則配置如下:
登陸JXWAF,在自定義規則組中新建規則組 “釣魚專用規則”。
先來設置第一條規則(不建議用這種方式),無論登陸成功失敗直接記錄輸入賬戶密碼,這是釣魚網站通常的做法,因為他們沒有用戶數據庫,也就只能這么處理了。規則配置如下,比較簡單。
結果如下:
設置第二條規則,只有驗證用戶名密碼失敗時才記錄(不截圖直接放規則)。
{
??? "rule_action": "deny",
??? "rule_category": "其他",
??? "rule_update_category": "resp",
??? "rule_log": "true",
??? "rule_serverity": "high",
??? -
??? "rule_matchs": [
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "URI"
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "login.php$",
??????????? "rule_negated": "false"
??????? },
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "REQUEST_METHOD"
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "POST",
??????????? "rule_negated": "false"
??????? },
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "RESP_HEADERS",
??????????????????? -
??????????????????? "rule_specific": [
??????????????????????? "Location"
??????????????????? ]
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "index.php$",
??????????? "rule_negated": "false"
??????? }
??? ],
??? "rule_id": "10012",
??? "rule_detail": "記錄用戶登陸成功賬號密碼"
}
結果如下:
設置第三條規則,只有驗證用戶名密碼成功時才記錄(不截圖直接放規則)。
{
??? "rule_action": "deny",
??? "rule_category": "其他",
??? "rule_update_category": "resp",
??? "rule_log": "true",
??? "rule_serverity": "high",
??? -
??? "rule_matchs": [
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "URI"
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "login.php$",
??????????? "rule_negated": "false"
??????? },
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "REQUEST_METHOD"
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "POST",
??????????? "rule_negated": "false"
??????? },
??????? -
??????? {
??????????? -
??????????? "rule_transform": [
??????????????? "none"
??????????? ],
??????????? -
??????????? "rule_vars": [
??????????????? -
??????????????? {
??????????????????? "rule_var": "RESP_HEADERS",
??????????????????? -
??????????????????? "rule_specific": [
??????????????????????? "Location"
??????????????????? ]
??????????????? }
??????????? ],
??????????? "rule_operator": "rx",
??????????? "rule_pattern": "index.php$",
??????????? "rule_negated": "false"
??????? }
??? ],
??? "rule_id": "10012",
??? "rule_detail": "記錄用戶登陸成功賬號密碼"
}
結果如下:
只需花幾分鐘時間配置規則即可實現釣魚網站的搭建,因為是通過jxwaf反向代理到真實的目標網站地址,所以整個釣魚網站,除了域名外其他都跟實際網站是一致的,隱蔽性比起自建的釣魚網站更強,也更不容易引起攻擊目標的警覺。在釣魚演練過程中發現,當有些用戶反映過來時候,會通過XSS攻擊,SQL注入等方式嘗試反X釣魚網站,所以這種方式的另一好處就是安全,因為攻擊流量都導入真實網站去了,就是被成功攻擊也是真實網站的事情,釣魚網站在這個過程中全程打醬油。 而且在釣魚過程中會有些用戶故意”搗亂”,或者是謹慎的先嘗試錯誤的密碼看網站是不是都返回正確登陸,那么通過這種方式會使得釣魚過程更真實,同時獲取用戶的輸入數據也是真實的,方便事后統計結果。