生活随笔
收集整理的這篇文章主要介紹了
你知道钓鱼网站的形成步骤吗?一次网络钓鱼演练带你了解(增强安全意识)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、前言
在攻防演練中大家常用的方法就是釣魚(懂的都懂)。隨著大型攻防演練常態化的實施,我們認為演練+安全意識培訓相結合的方式是比較理想的。 下文就是釣魚演練中遇到的問題與思考,結合大師傅們的開源軟件整理一篇”利用開源軟件進行甲方釣魚演練“。演練最終目的是安全意識摸底,公司或者部門級別的安全意識培訓,方便在釣魚演練后有連貫性的學習,加深印象。
注意:本文僅供學習參考研究,切勿利用所學知識做違法亂紀之事,否則后果自負!
二、規劃演練
釣魚的方式選擇
憑證類釣魚方式選擇的初衷
- 通過釣魚獲取賬號憑證。我們要哪些登錄權限,釣到的賬號密碼外網是否可用?模擬外部攻擊場景,如果克隆頁面外部不能訪問就容易被業務挑戰。確保獲取內部登錄頁面信息的合理性,證明通過釣魚得到的賬號密碼可以被進一步利用,證明危害性。 甲方優勢是知道資產中的賬號關聯哪些敏感重要的系統和信息,賬號是否被二次認證導致無法使用等各種內部信息。這里也有部分好處推動相關的賬號平臺增加多因子驗證。
- 甲方的優勢就是知道自己公司的習慣和使用細節,體現在,公司用的郵箱系統,公司員工的個人電腦配置是什么樣的操作系統如研發是mac,其他業務線是windows,具體到系統版本,殺軟等特性。
- 檢測業務同事是否有意識將釣魚郵件事件通過正確的渠道反饋給安全部門。
木馬釣魚方式與憑證類釣魚區別
- 木馬釣魚的初衷是獲取個人電腦信息和建立據點橫向拓展,此時就將的演練的初衷變成與辦公網的殺毒軟件、流量審計、防守方的發現處置能力對抗,非特殊情況不采取該方式演練。
- 木馬釣魚更接近于紅藍對抗場景,對用戶的侵入性較大,不適宜大面積演練使用,控制不好會容易導致業務的反感。
- 本次演練選擇獲取賬號憑證,批量發送郵件方式釣魚。
【網絡安全技術學習文檔】
三、實施釣魚階段 步驟
話術與劇本
第一原則禁止損害國家個人利益,內容不可以是政治、疫情、輿情、緋聞相關的釣魚內容。角色扮演者 ,誰發起的一項活動,這個角色有一定的合理性。舉例HR、行政、企業IT,幾乎會和每一名員工有工作交集。事件合理性,發起這個郵件的互動一定遵循看似合理性,習慣性。合理性就是我因為看到郵件,所以我要點擊這個鏈接參活動。這里就要充分利用甲方的優勢做信息收集加以轉換。如常見的公司通知是什么樣的?對比外部攻擊就要更關注郵件泄露或者是發送來往郵件觀察郵件習慣了。驅動受害者的動作,利誘或者威逼來使其來執行你想要讓其做的事情,如點擊一個頁面,跳轉到登錄頁,輸入賬號密碼。
選擇釣魚頁面的原則
釣什么賬號最有價值,我們要關心的點是得到該賬號我們能做什么?登錄郵箱?合同系統等,這一步驟是能夠說明危害點也是真實攻防過程中的一個攻擊鏈路。 最好的選擇是具有外部sso 內部erp混用的這種登錄頁面作為釣魚克隆頁面首選。確定克隆頁面以后要考慮,該頁面在釣魚話術的合理性。 如果釣魚郵件賬密,那么就劇本就是點擊修改郵箱賬號密碼,所以克隆的頁面應該是修改郵箱密碼登錄頁面。 如果調用erp賬號密碼,那么就去把劇本到erp通用賬號登錄頁面。 所以我們在選型登錄頁面的時候要考慮話術配合的合理性。
克隆釣魚頁面制作
克隆頁面是內網服務,如果是內網頁面就選擇用”SiteCopy“去把頁面克隆回來部署到你的國外VPS上,這里講一下為什么使用國外VPS ,因為涉及到混淆的域名,所以這里也涉及到備案的問題。解決方案 : 外網VPS + 外網域名。內網系統的登錄頁面會有一定的挑戰,那就是會被問內網的登錄是如何泄露的,這一點一定要考慮攻擊場景充分且合理。克隆頁面是外網服務,直接用 “Pricking” , 但是有些情況可能不會成功因為有一些復雜的登錄頁面還是不支持”Pricking"這種方式的。所以可以用“SiteCopy” 我們在本地部署一臺VPS上,在“Pricking” hook登錄的賬密。\頁面部署
克隆的的fake頁面需要部署到VPS中,選擇寶塔這里咱們只是從快速部署的角度觸發,如果有安全問題的話自行搭建Nginx。使用寶塔簽https非常方便,這樣能夠解決瀏覽器上的嘆號提示問題。域名綁定綁定域名目錄非常方便,有時候一個vps需要多個服務的時候就非常方便了。上傳文件的web管理界面也非常方便。關于克隆頁面服務(寶塔安全)權限最小原則,服務最少原則非必要不開啟服務,0day什么的就不考慮了。 用的時候開啟服務不用的時候關閉。
跳轉的trick
合理的提示+跳轉,Pricking是nginx代理原理,所以他會記錄我們的實際流量中的請求數據,我們為了偽造的閉環,在用戶點擊提交以后,也就是POST 或者 GET數據后 ,我們的fake靜態頁面是不支后端服務的,所以數據請求后一定是走error模塊,這里設置一個alert彈框提示"xxx活動結束" 在跳轉到公司的論壇或者wiki(不是Pricking不支持哦)這里利用場景不同。 我們僅僅用Pricking的hook用戶名密碼功能。前端js提示彈框修改alert的代碼
window.alert = function(msg, callback) {var div = document.createElement("div");div.innerHTML = "<style type="text/css">"+ ".nbaMask { position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); } "+ ".nbaMaskTransparent { position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0; } "+ ".nbaDialog { position: fixed; z-index: 5000; width: 80%; max-width: 300px; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); background-color: #fff; text-align: center; border-radius: 8px; overflow: hidden; opacity: 1; color: white; }"+ ".nbaDialog .nbaDialogHd { padding: .2rem .27rem .08rem .27rem; } "+ ".nbaDialog .nbaDialogHd .nbaDialogTitle { font-size: 17px; font-weight: 400; } "+ ".nbaDialog .nbaDialogBd { padding: 0 .27rem; font-size: 15px; line-height: 1.3; word-wrap: break-word; word-break: break-all; color: #000000; } "+ ".nbaDialog .nbaDialogFt { position: relative; line-height: 48px; font-size: 17px; display: -webkit-box; display: -webkit-flex; display: flex; } "+ ".nbaDialog .nbaDialogFt:after { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid #e6e6e6; color: #e6e6e6; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } "+ ".nbaDialog .nbaDialogBtn { display: block; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; color: #09BB07; text-decoration: none; -webkit-tap-highlight-color: transparent; position: relative; margin-bottom: 0; } "+ ".nbaDialog .nbaDialogBtn:after { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid #e6e6e6; color: #e6e6e6; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(0.5); transform: scaleX(0.5); } "+ ".nbaDialog a { text-decoration: none; -webkit-tap-highlight-color: transparent; }"+ "</style>"+ "<div id="dialogs2" style="display: none">"+ "<div class="nbaMask"></div>"+ "<div class="nbaDialog">"+ " <div class="nbaDialogHd">"+ " <strong class="nbaDialogTitle"></strong>"+ " </div>"+ " <div class="nbaDialogBd" id="dialog_msg2">彈窗內容,告知當前狀態、信息和解決方法,描述文字盡量控制在三行內</div>"+ " <div class="nbaDialogHd">"+ " <strong class="nbaDialogTitle"></strong>"+ " </div>"+ " <div class="nbaDialogFt">"+ " <a href="https://www.zuoyebang.cc" class="nbaDialogBtn nbaDialogBtnPrimary" id="dialog_ok2">確定</a>"+ " </div></div></div>";document.body.appendChild(div);var dialogs2 = document.getElementById("dialogs2");dialogs2.style.display = 'block';var dialog_msg2 = document.getElementById("dialog_msg2");dialog_msg2.innerHTML = msg;// var dialog_cancel = document.getElementById("dialog_cancel");// dialog_cancel.onclick = function() {// dialogs2.style.display = 'none';// };var dialog_ok2 = document.getElementById("dialog_ok2");dialog_ok2.onclick = function() {dialogs2.style.display = 'none';callback();};};alert("很遺憾活動結束!")
前端任意跳轉的js代碼
第一種:(跳轉到b.html)
<script language="javascript" type="text/javascript">
window.location.href="b.html";
</script>
第二種:(返回上一頁面)
<script language="javascript">
window.history.go(-1);
</script>
第三種:
<script language="javascript">
window.navigate("b.html");
</script>
第四種:
<script language="JavaScript">
self.location=’b.html’;
</script>
第五種:
<script language="javascript">
top.location=’b.html’;
</script>
域名的準備
國外的域名,原因綁定國外的vps快速解析,沒有域名備案的煩惱。如果實戰場景需要避免被快速溯源可以選擇開啟域名隱私保護。瀏覽器的對抗,chrome新版本的瀏覽器會有釣魚頁面風險提示,猜測是根據主域名的相似度來判斷的,所以我們可以用子域名混淆的方式來繞過,當然文件名可以做的逼真一些,新版本chrome瀏覽器會識別釣魚頁面,如圖
- login.0day.com/redict.html 被識別概率較高
- login.oday.com.sso1.xyz/redict.html 識別率低
- 223.21.233.22 ip方式暫時沒有被瀏覽器識別風險問題
- chrome 新版本的防釣魚功能詳見 chrome](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fblog.chromium.org%2F2021%2F07%2Fm92-faster-and-more-efficient-phishing-detection.html%253Echrome)?M92 中更快、更高效的網絡釣魚檢測 所以在發送郵件前測試域名是否會被識別為釣魚頁面。
獲取釣魚頁面中的賬號密碼
釣魚演練最好能夠確認用戶的密碼是正確的,理論上應該調用sso接口查詢出該賬號密碼是否正確,這樣輸出的用戶名,密碼是準確的業務方不會挑戰數據準確性。 密碼也不做保留記錄只記錄賬號和是否是正確密碼即可。如果沒有sso記錄,就在fake頁面中password獲取input表單數據的地方用md5加密密碼,這樣保證不會看到大量的用戶明文密碼。避免一些不好的影響,且項目前也把代碼給一些業務方去review保證整個演練流程中不存在存儲用戶賬密行為。
四、批量發送郵件
郵箱發送的準備
outlook首選,垃圾過濾機制這塊白名單會好一些。注冊的話,可以用10分鐘郵箱注冊,在利用接碼平臺認證郵箱,outlook改昵稱方式來混淆郵箱地址。henggeFish中用的大量的163郵箱,去某些交易軟件搜索關鍵詞,163的郵箱呢在配置SMTP的時候需要手機認證,目前是1個手機號認證15個郵箱。腳本是1個郵箱發10個地址。再根據演練人數就能計算需要用多少個郵箱賬號了。 SMTP郵箱開啟后會有個臨時密碼,這個密碼才是發送郵件腳本使用的。密送方式發送,用郵箱發送郵件的時候選擇密送方式發送,這樣收件人無法查看到這封郵件同時還發送給誰。但是小心會因為數據量大被ban。切記不要隨便找一個郵件組就發送郵件,導致超出演練范圍的人收到郵件。所有工作準備好以后整體的去測試下全流程。
總結
以上是生活随笔為你收集整理的你知道钓鱼网站的形成步骤吗?一次网络钓鱼演练带你了解(增强安全意识)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。