[資安服務] 002 滲透測試流程與相關規範

飛飛 | 2021-12-05

滲透測試流程

滲透測試流程

與客戶進行簽約,取得合法的測試權限後,以下為簽約與接洽需要注意:

  1. 企業是否了解滲透測試可能造成的危害性
  2. 企業是否針對目標進行備份與還原的測試
  3. 企業是否允許測試人員存取內部敏感資料
  4. 企業是否能提供測試環境供測試人員檢測
  5. 企業是否禁止特殊測試方法,以下不限於:
    • 提權攻擊:取得一般權限,確認環境內是否檢測有提升權限的危害
    • ZeroDay 攻擊:駭客已知但廠商未知未修補的弱點
    • 社交工程:針對人性的弱點進行攻擊
    • 物理攻擊:實體入侵
    • 密碼爆破:使用密碼字典檔進行檢測
    • 中間人攻擊:攔截封包,確認傳輸輸的安全性
  6. 企業進行滲透測試之後是否需要進行複測

開始進行正式的滲透測試,分成以下六個階段:

  1. 資訊蒐集
  2. 漏洞識別
  3. 漏洞利用
  4. 清除紀錄
  5. 撰寫報告
  6. 修復複測

資訊蒐集:蒐集目標的所有資訊

此階段為是滲透測試最重要的階段,在這個階段蒐集最多的資訊,能加速後續的漏洞識別與漏洞利用。

根據目標進行資訊蒐集,分成主動情蒐與被動情蒐:

  1. 被動情蒐:蒐集公開在網路中可被利用的資訊:如 WHOIS 資訊、公司資訊(聯絡人信箱、名稱)等。
  2. 主動情蒐:直接與目標進行存取,透過掃描工具收集資訊:如端口掃描、服務枚舉。

漏洞識別:判別目標的漏洞風險

透過資訊蒐集的階段所收集的資料,去識別目標是否存在漏洞和弱點,
除了手動測試之外,也會透過弱點掃描工具輔助,
針對系統弱點掃描 Open-VAS 與 Nessus、
針對網站安全弱點掃描 AWVS 與 OWASP ZAP 的工具。

若識別目標有存在漏洞和弱點,會在下一階段確認漏洞的風險與危害性。

漏洞利用:確認漏洞存在與危害

當識別出有漏洞和弱點,根據簽約時,所允許的檢測方式檢測弱點,
並針對找到的弱點和漏洞進行評估危害性。

針對目標系統進行分析,利用已知漏洞或自行撰寫的 POC 驗證弱點存在,
重大風險的漏洞,造成的影響可能是任意遠端執行目標系統的指令(Remote Code Execution)
或是可任意存取、修改、刪除企業內部的敏感資料。

清除紀錄:清除測試過程的檔案

若測試範圍在於「正式環境」,在檢測結束之後,
測試資料、測試帳號、上傳檔案都需要紀錄與移除,
若無法刪除的資料,須告知企業,請企業協助刪除,
因為測試資料可能會影響企業內部營運。

撰寫報告:撰寫修正建議給企業

透過報告讓客戶了解這次滲透測試發現的漏洞與危害,通常以下大點敘述:

  1. 聲明:此章節說明該測試有經過正式授權,測試內容為敏感資料等
  2. 方法:測試目的、測試方法、測試流程
  3. 摘要:測試結果的摘要,可能透過圖表的方式呈現
  4. 過程:測試的過程、如何利用、重現弱點與影響性
  5. 解決:該弱點有什麼解決方案

修復複測:修復後進行再次驗證

提供報告給受測企業之後,企業依據報告內容進行修復弱點。

複測:根據第一次的檢測內容,查看企業是否已經修復完畢,
複測結束後會提供,複測報告給企業。

滲透測試相關規範

  • OSSTMM (Open Source Security Testing Methodology Manual)
    • 開放原始碼安全測試方法指南
    • 內有包含針對客戶可確認的問題
    • http://www.osstmm.org/
  • PTES Technical Guidelines
    • 提供測試的注意事項與細節
  • OWASP APSVS (OWASP Application Security Verification Standard)
    • OWASP 應用程式安全驗證標準
  • OWASP (Open Web Application Security Project)
    • OWASP 提供 WEB 的測試指南

[資安服務] 001 滲透測試定義與資安服務比較

飛飛 | 2021-12-03

常見資安服務分成弱點掃描、滲透測試、紅隊演練。本篇文章介紹滲透測試的測試方式定義(黑箱、白箱與灰箱)服務比較,分析每個服務差異性。

資安服務

何謂滲透測試

以駭客的角度,針對企業的網路、系統、網站進行檢測弱點與漏洞,並撰寫一份滲透測試報告提供給企業,該報告內容包含測試過程結果與修復建議,企業收到此報告後,可根據報告內容進行弱點修復。

為什麼要做滲透測試

企業內部常有敏感資料(客戶資料、業務資料、財務資料等)、公司資產、企業的 Know How,這些資料若被駭客取得並且流於市面,可能造成業務財產損失重大。

因此在被惡意駭客利用弱點或漏洞攻擊之前,先委託資安公司進行滲透測試,針對公司的網路、使用系統與網站是否安全。

滲透測試目標與範圍

滲透測試的目標,針對企業所使用的:

  1. 應用程式(包含但不限於網站系統設備等軟硬體)
    • 標的不管是自行開發、委外給第三方開發、或購買他人服務/設備皆算範圍
  2. 網路服務
    • 企業內部網路/網段

受測試方主要需提供以下資訊,供測試方進行時程評估與報價:

  1. 測試域名/IP(須證明合法持有該域名/IP)
  2. 是否限制特定時間進行檢測
  3. 其他需求

測試目標需要與企業進行溝通與接洽,確認目標後進行簽約,保障雙方權益。
因測試行為可能會構成刑法妨害電腦使用罪等罪名,因此需要透過簽約,取得合法授權,再進行滲透測試。

滲透測試的測試類型

根據受測試方提供的資訊與接洽的結果,可根據測試目標所獲得的資訊量,分成以下三種滲透測試類型:

  1. 黑箱測試
  2. 白箱測試
  3. 灰箱測試

黑箱測試

  • 甲方只提供目標的名稱/網址/IP
  • 乙方需要自行蒐集資訊

進行黑箱測試,除了知道目標名稱和 IP 之外,受檢測方沒有提供其他資訊,以模擬惡意的攻擊者,針對性進行攻擊的狀況。因為沒有太多資訊,因此需要花費許多時間在「蒐集資訊」的時間,測試方會花費大量的時間與成本(導致報價也會提高)。

可透過設定條件減少檢測成本,以受測網站帳號密碼被竊取為出發點,受檢測方提供帳號密碼,可加入測試方檢測時間。

白箱測試

  • 甲方提供目標的各種資訊(基礎建設部屬與程式碼)
  • 乙方可事先針對程式碼進行審查,擬定攻擊的方式

進行白箱測試,受檢測方提供目標的內部結構、基礎設施與應用程式的程式碼、帳號密碼與目標的所有資訊。

灰箱測試

  • 甲方盡最大的能力提供目標資訊
  • 乙方仍需要透過自行蒐集資訊

藉由白箱與灰箱之間,測試人員取得有限的目標資訊,可能因為程式、系統委外給第三方開方,因此沒有詳細的服務手冊。

滲透測試能檢測到的弱點/漏洞

測試人員以滲透工具與檢測手法,發現目標系統/網站存在,以下但不限於的弱點/漏洞類型:

  1. 未經授權可存取/修改/刪除敏感資料
  2. 因人為設定錯誤,導致敏感資料外洩
  3. 已發布重大漏洞但尚未更新的服務/系統/韌體/作業系統
  4. 開發過程中注意的業務邏輯漏洞

資安服務的比較

常見的資安服務分成弱點掃描、滲透測試、紅隊演練。

弱點掃描

以弱點掃描軟體進行針對企業的固定範圍如企業內部網段或企業指定網站,可分成以下兩種:

  1. 網路弱點掃描
    • 常透過商業掃描軟體 Nessus、開源軟體 Open VAS 針對企業網路內部尋找企業的服務、系統是否存在已知的漏洞,類型通常為作業系統版本、插件版本過低。
  2. 網站弱點掃描
    • 常透過商業掃描軟體 Acunetix Web Vulnerability Scanner(AWVS)、開源軟體 OWASP ZAP 針對企業網站進行檢測,漏洞類型通常為 SSL 版本過低、TLS 版本脆弱、Cookie 未加上 Httponly 或 secure 等弱點。

常有誤判的可能性,因此要透過人工驗證確認是否有誤判。

紅隊演練

以企業整體進行演練,包含完整滲透測試、後滲透(橫向移動等),依據客戶需求可能包含社交工程、 DDoS、實體安全。

重點統整

  1. 滲透測試的定義
  2. 滲透測試的目標與範圍
  3. 滲透測試的類型
  4. 常見的資安服務比較

資安服務資安服務

[資安職涯] 001 資安工程師是駭客嗎

飛飛 | 2021-12-03

本篇文章介紹進入資安界不能不知的刑法妨害電腦使用罪,並以淺顯的用詞科普駭客與資安工程師的差異,文章內提到的資安工程師偏向滲透測試工程師的定義,最後提及資安的工作類型。

關於資安工程師

我其實很少對非相關領域的人介紹自己的工作,一方面是覺得自己蠻懶得解釋專有名詞,所以我通常會簡稱自己為工程師,就是坐在電腦前面的生物,這篇文章將會以淺顯的用詞科普駭客與資安工程師的差異,文章內提到的資安工程師偏向滲透測試工程師。

資安乃資訊安全,許多人一聽到資安工程師總是會問我,「你的工作是在當駭客嗎?」、「你可以駭進去我的電腦裡面嗎?」、「你可以盜我的帳號嗎?」這些問題有如颱風天的雨水迅速地灑在我的臉上。

我的工作跟「駭客」有 87 % 相似,但解釋工作內容之前,可以先參考刑法第三十六章妨害電腦使用罪,裡面提到非法的事情,都不會接觸到,所有工作內容均遵守法律規範。

資安工程師 VS. 駭客

我們要先正名,其實駭客這個詞是非常中性的,甚至說有一點稱讚,所謂駭客的定義其實是熱衷於研究、建設網路世界,讓這個網路更美好,也可以說是資訊高手,而怪客 Cracker 才有沒有道德標準,可能會肆意破壞他人的網站,或針對性的去竊取他人機密,也有可能因為政治因素,攻擊他人。

駭客是技術能力很厲害的人,但大家的誤解,可能時常聽到駭客非常邪惡,常常盜取民眾或企業的敏感資料(如個人資料、商業機密)或是惡意破壞某個組織的網站,又可以從駭客的利益去判別類別的,分別為黑帽駭客、灰帽駭客和白帽駭客,當然絕對不是因為帽子的顏色不同而區分這個人是好人還是壞人

駭客種類

駭客種類的差異

  1. 黑帽駭客:惡意竊取他人的機密或是進行攻擊,甚至侵害他人隱私。
  2. 白帽駭客:
    針對企業內有網站或服務,企業會委託資安公司進行資安檢測,由資安工程師進行檢測。

如同醫生對人類身體進行健康檢查檢查身體有沒有生病,檢查完畢,收到一份健檢報告,從報告裡面知道自己身體有什麼地方需要加強,比如要定期運動增加免疫力或吃藥殺菌並定期追蹤。
資安工程師會幫企業檢查他們的網站有沒有問題,檢查完畢寫一份報告,告知企業網站哪裡有問題(弱點、漏洞),如何修復這些問題。

  1. 灰帽駭客:根據利益性(竊取他人機密或公益回報問題)來判別偏向黑帽還是白帽。

資安工程師是就像網站的醫生,透過檢測手法(醫生的醫術),找到網站的弱點(病原),撰寫報告告知修復方式(開藥單與改善方式),讓網站更安全(讓身體更健康)。

自身工作內容

我的工作內容有大致上分為企業資安服務(弱點掃描、滲透測試、紅隊演練)和 IoT 物聯網設備(自動化檢測產品維護與漏洞挖掘),這段內容比較多專有名詞,可以想像成依據受測方的需求提供不同服務

  1. 弱點掃描:透過「弱點掃描軟體」掃描目標網站,根據掃描結果以人工審查方式判別是否為誤判與漏判弱點,再撰寫弱點掃描報告。
  2. 滲透測試:以惡意攻擊者的攻擊思維,針對目標企業網站,透過滲透檢測流程,深入檢測網站的安全性,並撰寫滲透測試報告。
  3. 紅隊演練:以惡意攻擊者的攻擊思維,針對目標企業網段,以不同的攻擊思路與廣度,針對企業環境全面性的進行檢測,可能於企業外網,想辦法打進內網或是透過社交工程等攻擊手段,最後再撰寫紅隊演練報告。
  4. IoT 物聯網自動化檢測:公司產品,主要針對市面上物聯網設備進行自動化檢測,維護檢測段的程式碼。
  5. IoT 物聯網設備漏洞挖掘:針對市面上物聯網設備進行檢測,挖掘未被公諸於世的漏洞。
  6. 企業資安環境檢測:會去中小型企業確認企業內部環境架構並且提供建議與改善方式。

自身興趣

  1. 資安教育訓練:喜歡透過淺顯易懂的圖解加上 LAB,讓學員可以更認識資安概論、網站安全、滲透測試、物聯網安全。
  2. 資安文章:不管是科普文章、還是技術文章,凡走過必留下痕跡,之所以寫文章,原本是因為自己的小腦袋紀錄不下太多東西,因此透過寫文章的方式讓自己記起來。

資安工作類型

因為自己比較接觸攻擊檢測類的,所以文章會比較介紹檢測相關的資安服務,其實在職場上,資安工程師還有許多類型,比如在資安公司可以簡單區分成攻擊類型與防禦類型,工作內容可以分成以下:

  • 攻擊檢測:紅隊演練、滲透測試、弱點掃描、資安健診等…
  • 數位鑑識:分析惡意程式、分析 log 來了解駭客攻擊手法等…
  • 防禦類型:惡意程式偵測、攻擊偵測系統、防毒軟體等…
  • 資安監控:SOC、稽核等…
  • 資安治理:ISO27001、資安長、制定資安政策
  • 人工智慧:將資安加上 AI 訓練模型等…
  • 也有在乙方擔任資安部門防禦自家公司也算是資安工程師
  • 還有很多工作類型,一一列舉不完,如果有想補充的夥伴有可以留言給我。

飛飛的文章連結

如果你想學習網站安全,我撰寫了一篇給新手的網站安全路徑指南,提供給新手從 Linux、git、網站基礎、網站相關漏洞、滲透測試、Windows 相關的學習資源,可參考這篇文章:

如果你想了解所謂的駭客集團是什麼,或是現在有哪些所謂的網軍在攻擊,ATT&CK® 是一個紀錄駭客集團的攻擊手法與情資分享的資料庫,你可以參考以下的科普文章:

如果你對於物聯網設備的攻擊手法有興趣,可以參考以下的文章:

有什麼問題都可以在底下詢問我,如果可以請幫我按愛心與拍手拍五下,感謝你們!

[新手入門] 002 Google Hacking

飛飛 | 2021-12-01

新手入門必學的技巧,學會 Google 你也可以輕鬆上手資訊安全,不管你是要進行資安檢測還是查詢資料,Google 都是非常好用的工具,本篇文章介紹如何透過 Google 找尋你要的資料,透過簡單的語法,找到指定的資訊,是滲透測試中被動搜查最好用的工具。

(閱讀全文...)

[安裝教學] 003 安裝 Windows 子系統 Linux 版(WSL 安裝)

飛飛 | 2021-06-14

本文手教手教大家在 Windows 安裝子系統 Linux 簡稱 WSL,並以 Ubuntu 為範例。

(閱讀全文...)

[安裝教學] 002 在 Virtualbox 安裝 Ubuntu

飛飛 | 2021-06-07

本文章手把手示範如何在虛擬機軟體 Virtualbox 安裝作業系統 Ubuntu。

若還沒有安裝,可參考文章:[安裝教學] 在 Windows 10 安裝虛擬機軟體 Virtualbox

Ubuntu

Ubuntu 作業系統是基於 Debian,有三個版本,包括圖形化介面、伺服器版(只能用指令)及用於物聯網設備的 Core 版本。

安裝教學

https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/blogger.jpg

  • 搜尋 Ubuntu iSO 檔案

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu001.jpg

  • 點選網站,進入下載頁面

    https://ubuntu.com/download/desktop

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu002.jpg

  • 點選 Accept all and visit site 接受

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu004.jpg

  • 點選 Dowload,進行下載

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu005.jpg

  • 開始下載

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu006.jpg

  • 等待下載

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu007.jpg

  • 下載完畢後,開啟 Virtual box,點選新增

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu008.jpg

  • 輸入名稱與儲存資料夾,選取類型 Linux 與版本 Ubuntu(64-bit)

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu009.jpg

  • 記憶體大小,輸入 2048 MB 也等於 2GB

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu010.jpg

  • 選取【立即建立虛擬硬碟】,點選【建立】

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu011.jpg

  • 選擇 VDI,點選下一步

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu012.jpg

  • 選擇動態分配,點選下一步

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu013.jpg

  • 選擇路徑,硬碟大小 20GB,點選建立

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu014.jpg

  • 成功建立後,點選兩下,就會開啟虛擬機

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu015.jpg

  • 掛載 ISO 點選資料夾

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu016.jpg

  • 點選加入

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu017.jpg

  • 選擇剛剛下載的 ISO 檔案

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu018.jpg

  • 點選選擇

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu019.jpg

  • 點選開始

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu020.jpg

  • 等待安裝過程

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu021.jpg

  • 進入下載精靈,這裡可以選擇繁體中文,示範以英文為範例,點選 Install Ubuntu

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu023.jpg

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu024.jpg

  • 點選預設的鍵盤樣式,點選 Continue

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu025.jpg

  • 更新選取預設,點選 Continue

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu026.jpg

  • 選擇安裝類型,因為是虛擬硬碟,因此可以直接抹除硬碟後進行安裝,點選 Continue

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu027.jpg

  • 確認抹除,點選 Continue

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu028.jpg

  • 選擇時區Tapei,點選 Continue

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu030.jpg

  • 輸入帳號密碼 請務必記得自己的帳號密碼

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu031.jpg

  • 等待安裝

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu032.jpg

  • 安裝完畢後重新開機

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu033.jpg

  • 點選使用者,並輸入密碼

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu035.jpg

  • 點選 Skip

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu036.jpg

  • 點選 Next

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu037.jpg

  • 點選 No 再點選 Next

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu039.jpg

  • 點選 Next

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu040.jpg

  • 點選 Done

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu041.jpg

  • 對著桌面點選 Open in Terminal

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu042.jpg

  • 開始輸入指令

    https://github.com/fei3363/blogger/raw/main/install-ubuntu-on-virtualbox/ubuntu043.jpg

插入 Guest Additions CD

Guest Additions 可以讓我們在操作虛擬機更加的方便,可以提供虛擬機以及本機共用剪貼簿共用資料夾拖放功能,並且也可以讓虛擬機的畫面隨著視窗大小調整,因此非常推薦使用。

  1. 安裝所需套件

    bash=
    sudo apt install gcc make perl

  2. 點選裝置插入 Guest Additions CD 映像...

  3. 點選 Run

  4. 輸入密碼,並點選 Authenticate

  5. 等待安裝完成,並按下Enter

  6. 關機並重新啟動虛擬機

  7. 安裝成功

  8. 開啟共用剪貼簿

    前面提到的功能都可以在裝置當中開啟
    點選裝置 > 共用剪貼簿 > 雙向

疑難排解 - VT-x

VirtualBox 的虛擬機需要開啟虛擬化技術 VT-x才可以使用
如果在開啟虛擬機時遇到錯誤 VT-x is disabled in the BIOS ... 這樣的錯誤訊息,請到電腦的 BIOS 當中找到 VT-x 的選項將它開啟。
每個電腦進入 BIOS 的方式有些微差異,一般來說可以嘗試在開機出現電腦 logo 時點擊 del 或是 F12 進入。

[安裝教學] 001 在 Windows 10 安裝虛擬機軟體 Virtualbox

飛飛 | 2021-06-07

本篇文章手把手教你在 Windows 10 安裝虛擬機軟體 Virtualbox,文章內包含大量的圖文解釋,讓你不會迷失在安裝的路途中,讓你輕鬆安裝虛擬機。

(閱讀全文...)