Array
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    ###### tags: `LSA2` `系統安全` `強化` `監控` # 系統安全強化與監控 [TOC] ## 資訊系統分類 - 資訊:經過處理過的資料 - 系統:由一群實體 (entity) 交互作用,可以達成共同目標的組合 - 資訊系統 - ( 人 + 軟體 + 硬體 + 資料 + 通訊網路 ) + 共同目標 ### 依功能區分 - 交易處理系統 TPS(Transaction Processing System) - 組織基本日常交易、作業處理所使用的系統 - e.g. ERP、圖書館借書系統 - 企業資源規劃 (ERP) : 整合企業各部門的日常業務的系統,如會計、採購、人資等,協助流程自動化與資訊流通 - 決策支援系統 DSS(Decision Support System) - 提供各種決策模型協助人分析、擬定決策 - e.g. HiView ![](https://hackmd.io/_uploads/r1qdSonSh.png) - 專家系統 ES(Expert System) - 知識庫系統 (Knowledge system) - 取代人為決策 - e.g. Mycin 利用 AI 診斷腦膜炎、推薦抗生素的系統 - 主管資訊系統 EIS(Executive Information System) - 以提供高階主管可視、即時、整合的關鍵成功因素 (CFS) 資訊為主要功能 - e.g. 行程、郵件、公文、事件追蹤、圖表分析 - 具高階主管個人直覺偏好、操作習慣的系統 - 策略資訊系統 SIS(Strategic Information System) - 可以成為組織提升競爭力、增強績效的策略武器 - e.g. : 花旗銀行是美國第一間提高 ATM 覆蓋率的銀行,讓服務可以 24 小時提供,短時間提高民眾在銀行內的存款量 ### 資訊系統舉例 - 校務系統 - 提供校內人員進行學校相關事務處理的系統 - 校務系統有選課、查課、查成績、查修課紀錄、填意見調查等等功能 ![](https://hackmd.io/_uploads/rypbTAwV3.png) - Ref :::spoiler - [資訊系統導論](http://www.enghong.com.tw/E-COM/%E8%B3%87%E8%A8%8A%E7%B3%BB%E7%B5%B1%E6%A6%82%E8%AB%96.htm) - [企業資訊系統_PDF](https://www.cyut.edu.tw/~chrischang/Download/Sub2/ch%201.pdf) - [EIS](https://www.dgbas.gov.tw/public/Data/193010101171.pdf) - [CFS](https://asana.com/zh-tw/resources/critical-success-factors) - [TPS](https://zh.wikipedia.org/zh-tw/%E4%BA%A4%E6%98%93%E8%99%95%E7%90%86%E7%B3%BB%E7%B5%B1) ::: ## 系統安全 ### 重要性 - 何謂系統不安全 - 無法正常提供系統服務、系統資料被未授權的人讀取或修改等狀況 - 如果校務系統不安全 - 修課紀錄可以被任意使用者修改 - 按下選課精靈的按鈕就會離開系統 - 避免系統不安全的狀況就必須重視系統安全的重要性 ### 目標與需求 - [資安鐵三角](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F%40wyping%2FSJ6AYRqM3#%E8%B3%87%E5%AE%89%E9%90%B5%E4%B8%89%E8%A7%92) - 同時兼顧以下目標達到資訊安全 - 機密性(Confidentiality) - 系統檔案、功能只有授權使用者才能讀取、使用 - 學生、行政、老師等與校務相關人員才能使用校務系統 - 每位學生只能檢視自己在校務系統中的資料 - 完整性(Integrity) - 有足夠權限的使用者才能更改系統檔案和資源 - 校務系統中的課名、課綱,甚至是修課上限人數應限制非開課老師不得修改 - 確保一致性 - 同時存取、使用時,取得相同的資訊與功能 - 每位學生校務系統的選課精靈按鈕點了都會跳出選課頁面 - 每位學生同時看同一堂課的課綱需相同 - 可用性(Availability) - 系統資源應確保可以供所有授權使用者訪問 - 情境舉例 - 選課期間,每位學生都要可以使用校務系統的選課功能 - 違反可用性 - 如果只有一個使用者或程序就佔用所有系統資源,造成其他使用者無法使用服務 ## [:link: MITRE ATT&CK](https://attack.mitre.org/) ### 框架介紹 #### MITRE - 美國的非營利組織 - 進行國防領域技術研發 - 協助資安相關研究 - 維運 CVE 漏洞資料庫 (Appendix - 1) - 提出 ATT&CK 框架 #### ATT&CK - Adversarial Tactics, Techniques & Common Knowledge - 對抗策略、技巧和常識 - 由攻擊面出發的資安框架 - 駭客進行 **進階持續性威脅**(Advanced Persistent Threat,APT) 的策略與技巧 - Advanced: 嚴謹的攻擊計畫 - Persistent: 長時間監控潛伏 - 對特定對象進行長期、多方面的網路攻擊 - 存在意義 - 讓組織有共同語言與架構方便溝通 - 如果沒有框架會怎麼樣? - :mag_right: 觀察搜尋到三種網路攻擊步驟 1. [偵查、植入攻擊武器、發覺漏洞、安裝、指揮與控制、進行惡意目的](https://netmag.tw/2015/09/16/%E8%A7%80%E9%BB%9E-%E5%A6%82%E4%BD%95%E7%A0%B4%E5%A3%9E%E7%B6%B2%E8%B7%AF%E6%94%BB%E6%93%8A%E7%9A%84%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F) 2. [偵查、武裝、傳送、利用、安裝、控制、行動](https://infosecdecompress.com/posts/ep42_cyber_kill_chain) 3. [偵查、初步入侵、命令與控制、橫向移動、目標達成、滲透與破壞](https://www.wangan.com/wenda/12306) - 各單位對於攻擊步驟的定義不盡相同 - 了解攻擊手法 - 協助扮演攻擊者的團隊找出系統弱點 - 協助開發團隊評估平台安全 #### MITRE ATT&CK 的種類 - Enterprise - 企業架構 - 架構分支 - PRE - Windows - macOS - Linux - Cloud - Network - Containers - Mobile - 行動裝置架構 - 架構分支 - Android - iOS - ICS (Integrated Circuits & Systems, ICS) - 積體電路與系統 #### MITRE ATT&CK 其中的 Enterprise 怎麼看 - ![](https://hackmd.io/_uploads/rkrX-REU2.png) - 策略 (Tactics) - 在每個攻擊中**可能**會用到的策略 :::info 如果想要偷看許光漢洗澡,我們應該如何規劃? `以下情境純屬虛構與想像` ![](https://hackmd.io/_uploads/B18rHkHLn.png) ::: 1. Reconnaissance 偵查蒐集 - 事前作業 - <font color="#438EB9">盡可能蒐集所有許光漢的相關資料 - Google 許光漢長相、經紀人、手機品牌、電話號碼、有沒有養寵物、生活習慣、唱片公司的相關資訊、經紀公司的相關資訊、近期出席活動等公開資訊 - 掃描許光漢生活周遭的已知主機、IP </font> 2. Resource Development 資源開發 - <font color="#438EB9">開發可以遠端操控許光漢周遭電腦的惡意軟體或病毒 </font> 3. Initial Access 初級存取 - 開發之餘,找到其他能夠入侵的方法 - <font color="#438EB9">寄已感染的 USB 到唱片公司 - 到唱片或經紀公司網站上掃描有沒有常見的弱點 </font> 4. Execution 實際執行 - 惡意程式感染對方的主機,成功入侵 - <font color="#438EB9">把 Resource Development 階段開發好的工具,透過 email 、通訊軟體訊息包裝,傳給經紀公司、唱片公司、經紀人、許光漢本人等,讓他們觸發惡意程式的執行 - 經紀人上鉤了! </font> 5. Persistence 持續潛伏 - 達到能夠**隨時進入**的目的 - <font color="#438EB9">把自己的 SSH public key 放進許光漢經紀人的主機裡,讓自己能夠不用密碼就 SSH 進去 - 發現主機內有一個 `藝人個資` 的目錄,但需要 root 的權限才能讀取 </font> 6. Privilege Escalation 提升權限 - 實現的技術、方法常與 Persistence 重疊 - <font color="#438EB9">尋找系統漏洞讓自己擁有 root 的權限 - 進到目錄底下,成功得到許光漢的基本個資 </font> 7. Defense Evasion 防禦規避 - 避免自己在對方主機裡被發現 - <font color="#438EB9">安裝 rootkit 隱藏自己在許光漢經紀人的主機中做的事情 </font> 8. Credential Access 取得憑證 - 盡可能取得這個帳號多一些資訊 - <font color="#438EB9">竊聽經紀人主機的網路流量,閱讀未加密的封包內容 - 查看常用來儲存密碼、憑證的位置,試著取得經紀人各個平台帳號的權限 - 成功登入經紀人的 google 帳號 </font> 9. Discovery 環境資訊發現 - 為攻擊其他台主機做資料蒐集的準備 - <font color="#438EB9">從經紀人的系統檔案、目錄、瀏覽器紀錄、雲端共享等等,搜集與許光漢相關的各式資料 - 發現許光漢與經紀人在雲端共享了一份遠端桌機密碼的檔案 </font> 10. Lateral Movement 橫向移動 - 藉由初始攻擊對象,攻擊其他台主機 - <font color="#438EB9">透過經紀人的電腦,遠端控制許光漢家裡的桌機 - 發現許光漢的桌機裡有安裝居家網路攝影機的控制軟體 </font> 11. Collection 搜集 - 在受害系統中尋找、聚集想要的資料 - <font color="#438EB9">電腦裡找不到洗澡的影片,只好自己想辦法錄影 - 透過遠端操控許光漢桌機,執行居家網路攝影機,錄下洗澡影片 </font> 12. Command and Control 命令與控制 - <font color="#438EB9">建立 「我 - 經紀人 - 許光漢的桌機」或「我 - 許光漢的桌機」能夠安全傳輸資料的通道 </font> 13. Exfiltration 竊取資料 - <font color="#438EB9">想辦法把影片傳給自己 - 用 google 雲端把洗澡的影片分享給自己 </font> 14. Impact 其他影響 - <font color="#438EB9">把許光漢桌機上的洗澡影片刪除 </font> - 技巧 (Techniques) - 在每個策略中**可能**會用到的技術 - Ref :::spoiler - [vmware](https://www.vmware.com/tw/topics/glossary/content/mitre-attack.html) - [ithome](https://www.ithome.com.tw/news/129054) - [freedom.net](https://www.freedom.net.tw/ict-insight/security/cyber-kill-chain.html) - `FIXEME: MITRE Engage Matrix` - [APR](https://blog.trendmicro.com.tw/?p=123) ::: :::info ## Appendix ### 1 - Common Vulnerabilities and Exposures (CVE) - 公共漏洞與暴露 - 收集各種公司發行的軟體之漏洞資料庫 - 便於公眾查閱 - 幫助各公司了解漏洞的優先級並加以處理,進而提高系統的安全性 - CVE 條目中只會有漏洞資訊,不會有技術數據、風險、影響和修復有關的資訊 #### 相關連結 - [CVE.org](https://www.cve.org/) :link: - 編號編碼規定 - `CVE-YYYY-NNNNN` - YYYY 為西元年 - NNNNN 為流水號 - [CVE Trends](https://cvetrends.com/) :link: - 過去 24 小時從 twitter 被爬蟲爬到、有被討論的漏洞編號 - Ref :::spoiler - [REF1](https://medium.com/hannah-lin/%E5%BE%9E%E9%97%9C%E9%8D%B5%E5%AD%97%E8%AA%8D%E8%AD%98%E8%B3%87%E5%AE%89-2-security-lingo-d9a841e66a86) - [REF2](https://ithelp.ithome.com.tw/articles/10291883) - [REF3](https://zh.wikipedia.org/zh-tw/%E5%85%AC%E5%85%B1%E6%BC%8F%E6%B4%9E%E5%92%8C%E6%9A%B4%E9%9C%B2) ::: ::: --- ### 1. Reconnaissance 偵查蒐集 - 攻擊者在一開始試著蒐集相關資訊 - 利用蒐集的資訊規劃攻擊行動 - **被動情蒐** :蒐集公開於網路上的可利用資訊,如:社交軟體、公司公開 - **主動情蒐** :與目標直接進行存取,利用掃描工具收集資訊資訊 :::info - 盡可能蒐集所有許光漢的相關資料 - **被動情蒐** :Google 許光漢長相、經紀人、手機品牌、電話號碼、有沒有養寵物、生活習慣、唱片公司的相關資訊、經紀公司的相關資訊、近期出席活動等公開資訊 - **主動情蒐** :掃描許光漢生活周遭的已知主機、IP ::: #### T1595 - Active Scanning 主動情搜 - [REF](https://attack.mitre.org/techniques/T1595/) :link: - **Scanning IP Blocks** - **Port scanning** - 對象 - 主機中指定的 port 號範圍 - 目的 - 測試 port 是否開啟以及提供的服務類型等狀態 - **Network scanning** - 對象 - 區域網路中指定的 IP address 範圍 - 目的 - 測試目標網路上各主機狀況與服務,便於縮小攻擊範圍 ##### Tool Introduce : NMAP - 開源軟體 FOR FREE - 主要用來 Port Scan - 延伸用途 - 網路探測及安全稽核 - 網路管理 - 監控運行服務的主機 - 解析IP位址的主機、網路、運行的服務(應用程式名稱及版本)、運行的作業系統版本 - 封包過濾 - .etc - Kali 已內建 :::danger :warning: **在校如須測試請務必架設靶機測試,並設定好 NAT 環境** :warning: ::: > [REF](https://minmin0625.medium.com/%E6%BB%B2%E9%80%8F%E6%B8%AC%E8%A9%A6lab-nmap-%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4part1-%E5%9F%BA%E6%96%BCkali-2021-metasploitable%E7%92%B0%E5%A2%83%E5%9F%B7%E8%A1%8C-17adc4e3aa6) ##### Zenmap - Nmap 的好朋友 - GUI 界面讓使用者更直觀使用 :::success ## Lab ### 1 - 簡單の NMAP Demo - 基本指令,進行常規掃描 Regular scan ``` nmap <ip address> ``` #### 常用參數簡介 - `-sV` 探測端口服務 - `-sS` TCP SYN 半公開 (只做一半的三項交握) - `-sP` ping ICMP 掃描 - `-v` 顯示掃描過程 - `-p` 指定 port 號 - `-A` 全面的系統檢測,Nmap 認為高使用度的 port 號,啟用常見漏洞腳本檢測、掃描等 - `-script` Metasploit 腳本掃描,確認漏洞存在與否 - `-T0~5` 調整掃描速度,數字越大越快 --- - Nmap 參數很多,有很多好用的組合參數,詳細講完大概就隔天了... - 所以一起來用 Zenmap 吧 > [REF](https://hackmd.io/@Not/nmapparameter) #### Zenmap - 目前無法用 apt 安裝,須上官網自行下載 - [Download link](https://nmap.org/download.html) :link: - ![](https://hackmd.io/_uploads/r1ww7l4Hh.png) - 只提供 rpm ,須自行轉成 deb - 有更快的裝法 - **Kaboxer** - 如果要供大眾下載需要合乎標準 - Kali Application boxer 幫你把一些不符合且不能直接放在 apt 上的軟體放在裡面 ``` sudo apt install kaboxer sudo apt install zenmap-kbx kaboxer ls ``` - 有顯示在 kaboxer 裡面 代表安裝成功,主選單也會一併出現在裡面 - ![](https://hackmd.io/_uploads/Bks7ZMErh.png) #### 功能簡介 - **Intense Scan** - 密集的掃描,包含了 -A 參數的功能 (全面系統檢測、啟用腳本檢測、掃描等) - **Intense scan plus UDP** - 密集的掃描,加上 UDP 協定的掃描 - **Intense scan, all TCP ports** - 密集的掃描,加上 TCP 所有的 port 號 - **Intense scan, no ping** - 密集的掃描,但不使用 ping 去確認主機狀態 - **Ping scan** - 只去確認主機存在,不用掃 port 號 - **Quick scan** - 快速掃描 常用的 100 個 port 號 - **Quick scan plus** - 更快的掃描 - **Quick traceroute** - 掃網段時很方便,掃完只回傳 ip addr - 會幫你畫拓樸圖 - **Regular scan** - 正規掃描 - **Slow comprehensive scan** - 慢速綜合掃描 - 多種功能及參數的綜合 #### 實際 DEMO - 針對主機確認狀態 Ping - ![](https://hackmd.io/_uploads/SJtpZMNrn.png) - 針對網段的 Quick traceroute - ![](https://hackmd.io/_uploads/rJ3d-zNSh.png) - ![](https://hackmd.io/_uploads/H1Aj-GES2.png) > [REF1](https://www.oreilly.com/library/view/nmap-network-exploration/9781786467454/c2f2fbd2-1f60-461e-8bcf-437882bf72f6.xhtml) > [REF2](https://hackmd.io/@Not/nmapparameter) ::: - **Vulnerability Scanning 弱點掃描** - 攻擊者可根據目標主機之應用程式、系統設定或系統版本來確認弱點。 - 對於企業可以利用此方法找出弱點。 - 下面內容會詳細提到,詳情請看資安服務 - [弱點掃描傳送門](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw?view#%E5%BC%B1%E9%BB%9E%E6%8E%83%E6%8F%8F) - **Wordlist Scanning 字典掃描** - 根據字典檔對網頁伺服器進行掃描 - 可根據網頁目錄或根據子網域 - 找出網頁目錄的存在與否 - [REF1](https://ithelp.ithome.com.tw/m/articles/10268248) - [REF2](https://ithelp.ithome.com.tw/articles/10275958) ##### Tool Introduce : dirb - Kali Linux 內建 - 目錄掃描工具 - 可使用內建字典檔 :::success ## Lab ### 2 - dirb - Command: `dirb <target> <wordlist>` - ![](https://hackmd.io/_uploads/ByI-D3hrh.png) - ![](https://hackmd.io/_uploads/S11fv3hSh.png) - [REF](https://ithelp.ithome.com.tw/articles/10216943) ::: #### T1594 - Search Victim-Owned Websites 搜索目標方網站 - 被動情蒐 - 網站上可能會有各種資訊 (EX. 目標之聯繫資訊、名字、電子郵件) - 利用收集來的資訊可進行更進一步的偵查 (網路釣魚、社交工程) --- ### 2. Resource Development 資源開發 - 建立可進入目標之資源技術 :::info - 開發可以遠端操控許光漢周遭電腦的惡意軟體或病毒 ::: #### T1587 - Develop Capabilities 開發能力 ##### Malware 惡意軟體 - 試圖破壞安全性或試圖改變正常的程序之軟體 - 利用軟體去禁用或損壞系統 - 這些軟體被設計用於盜取資訊、破壞電腦系統、操縱電腦等等。 - 常見惡意軟體 => - **Trojan Horse 特洛伊木馬** :::info ## Appendix ### 2 - 木馬屠城記 - 為了爭奪世界上最美的女人海倫,希臘遠征軍進攻特洛伊,卻因為特洛伊人的頑強抵抗而傷透腦筋,面對特洛伊城建立的堅實防禦,希臘人想到了一個異想天開的做法:他們製作了一個巨大的木馬,並在裡面駐滿了希臘勇士,然後把這個木馬遺留在了特洛伊城外便退兵了,特洛伊人以為這是祭神的供品,所以就把他拉進了城中大肆慶祝,結果在全城熟睡之際,希臘人的內應便敲了敲木馬給出暗號,木馬裡的士兵們從木馬中竄出,大肆破壞了特洛伊城。 ::: - 以故事情境去看概念 - **將木馬送入特洛伊城** - 木馬病毒完成後,第一步要透過某個手段將木馬送進特洛伊城(也就是你的電腦),可能是郵件的附件、網路連結或社交工程誘騙人們在裝置運行惡意軟體。 - **內應給出暗號放出士兵** - 木馬病毒最常見的觸發方式是偽裝成一個使用者會不疑有他而執行的程式(改變圖示、名稱等讓使用者相信他就是個一般的程式)。 - **士兵竄出大肆破壞** - 在侵入電腦、被觸發後執行破壞,木馬有各式不同的行為,像是盜取使用者資料、密碼、竊聽鍵盤資訊、遠端控制裝置,破壞系統檔案等。 > [Torjan_REF](https://ithelp.ithome.com.tw/articles/10186616) - **Trap Door 暗門程式** - 程式或伺服器中未公開的秘密通口,利用暗門程式可以自由進出系統,而不被別人發現 - 最早的暗門程式是程式設計師預留做為追蹤、監控、除錯甚至修復系統。但後來演變成駭客入侵後,為了方便未來可以直接進入系統而保留的入口 - 此種漏洞很難尋找,通常需要往跟系統有關的重要檔案去尋找 - 若電腦系統的管理者發現了漏洞,將漏洞補好了, 駭客仍可利用早就安插好的暗門程式,繼續入侵此系統 > [REF](https://wportfolio.wzu.edu.tw/ezfiles/0/1000/academic/45/academic_74735_519894_75597.pdf) - **Spyware 間諜軟體** - 通常會隨著使用者下載**免費程式**或**共享程式**一起被下載 - 如 軟體破解程式 - 下載後對使用者的系統投放廣告,尤其是在使用者點擊特定網站時,會建立一個彈出式視窗 - 同時也會蒐集關於使用者、其電腦或瀏覽習慣的資訊並回傳至該間諜軟體的資料中心 - 利用蒐集到的資訊可以對使用者發送垃圾郵件 :email: - 2010 年間,據估計,90 % 的垃圾郵件是透過這種方法傳遞的。 - Spyware 與 Adware 的關聯性 - 廣告程式是在電腦上安裝元件,企圖在網頁瀏覽器中顯示廣告程式。 - 通常會在系統上造成令人反感的效果,像是不斷跳出煩人的廣告。廣告程式通常會隨著間諜軟體一起安裝。 - 這兩種程式會互相利用彼此的功能,間諜軟體會針對被感染使用者的網際網路瀏覽習慣建立基本資料,而廣告程式則會針對收集到的使用者基本資料顯示特定廣告。 > [REF1](https://blog.trendmicro.com.tw/?p=143) > [REF2](https://www.websecurity.digicert.com/zh/tw/security-topics/what-are-malware-viruses-spyware-and-cookies-and-what-differentiates-them) - **Ransomware 勒索軟體** - 將本機與網路儲存上的檔案加密之後要求支付贖金才能解開檔案。 - 檔案本身對駭客來說沒有什麼價值,但對擁有者來說非常有價值 - 駭客開發這類惡意程式的目的就是為了經由數位勒索來牟利。 - 使用者可能支付了贖金之後檔案無法解開 <!-- 跟一般與犯罪者打交道一樣--> - 勒索軟體本身也會加密,因此無法用暴力方式取得解密金鑰,想要救回資料的唯一方式,就只能從之前的備份來還原資料。 - 防範勒索軟體最好的方式就是備份 - 駭客會要求以虛擬加密貨幣支付贖金 (以 Bitcoin 為主),透過這樣的方式收取贖金可降低被逮的風險。 > [REF](https://www.trendmicro.com/zh_tw/what-is/ransomware.html) - **Viruses 病毒** - 可以通過電子郵件、下載、共享文件、網路釣魚和隨身碟等途徑進入電腦系統。 - 在未授權的情況下可以自我複製並傳播 - 以下列出一些病毒類型做舉例 - **Bootstrap Sector Virus 開機型病毒** - 藏匿或感染硬碟的啟動磁區 ( Boot Sector ) 和主啟動磁區 ( Master Boot Record, MBR ) ( Appendix - 3 ) - 開機動作後進行感染 - 正常情況:未被感染的 MBR 或 Boot Sector 的程序會取得控制權,分析並計算系統文件的位置,載入這些文件並執行。 - 感染情況:對於被感染的硬碟或磁區被啟動時,病毒的程式碼將取代 MBR 或 Boot Sector 控制權 - 正式取的控制權後,再進一步的感染或破壞電腦 > [REF](https://ithelp.ithome.com.tw/articles/10188404) - **File / Infector Virus 檔案型病毒** - 病毒通常都寄生在可執行檔 ( `.exe` 檔 ) - 當檔案被執行時,病毒的程式就跟著被執行。 - 又可再分成以下兩種 - **非常駐型病毒 (Non-memory Resident Virus)** :藏在執行檔,如果該檔案被執行就會嘗試地去傳染給另一個或多個檔案。 - **常駐型病毒 (Memory Resident Virus)** : 常駐型病毒會躲在記憶體中,一旦常駐型病毒進入了記憶體中, 只要執行檔被執行,它就對其進行感染的動作。將它趕出記憶體的唯一方式就是冷開機 ( Appendix - 4 )。 - **Multi-Partite Virus 複合型病毒** - 兼具開機型病毒以及檔案型病毒的特性。可以感染可執行檔,也可感染 Boot Sector - 一開始針對可執行檔 - 感染的可執行檔如果被執行 -> 病毒常駐在記憶體 - 因為已經常駐在記憶體,所以病毒也可以輕鬆感染開機磁區 - 之後所執行的可執行檔皆在運行時會被受感染 - 1990 年於德國第一次發現,FLIP 病毒 > [REF](https://ithelp.ithome.com.tw/articles/10188404) - **Macro Virus 巨集病毒** - 常見於具有巨集能力之軟體 ( Ex.某要錢還很貴的文書軟體 ) - 程式讓使用者在一個文件中嵌入**巨集功能**,使得某種操作得以自動執行 - 巨集可能是包含一連串的文書操作,使得複雜的動作能化減成一步並且自動執行。 - 所以病毒則得以用上述這種方式嵌入表格中,進一步的攻擊或竊取資料 - 1996 年 於台灣流行的 13 號 Taiwan NO.1 Macro Virus - 會感染所有 Word 開啟的檔案 - 每月 13 號發作 - ![](https://hackmd.io/_uploads/BJEt00D4n.png) - 會有計算題要你計算,如果回答錯了就會有震撼教育,像是無法開啟 Word 檔案 > [REF](https://blog.trendmicro.com.tw/?p=56820) - **Virus 生命週期** - 創造期:駭客寫可以便於傳播的病毒 - 孕育期:開始散播在各處 - 潛伏感染期:慢慢的傳染與感染 - 發病期:挑一個良辰吉時或是用倒數的方式 - 根除期:發現病毒,研究如何移除,也可能藉由防毒軟體 > [REF](https://www.eduhk.hk/has/comp/compviru/cycle.htm) - **Worms 蠕蟲** - 蠕蟲是會自我複製的惡意軟體,不斷地透過網路傳播,防禦能力弱的牠越喜歡 - 其實早期的蠕蟲是設計來找系統的弱點,利用它不斷繁殖的個性,以不損壞電腦系統的方式進行 - 主要目標為 LANs 的設備 - 蠕蟲的能力: - 借蠕蟲之力投放其他惡意軟體 - 消耗網路頻寬 - 竊取資料 - 開啟後門 - 耗盡硬碟儲存空間 - 佔用大量系統資源 (CPU, Memory) - 基本蠕蟲流程: - 已經受 **Worm** 攻擊的設備系統會向欲攻擊對象的系統寫入一個叫 **Hook** 的程式 - **Hook** 目的是用來進一步將 **Worm** 複製到目標設備上 - 重複做上述的事之後,直到感染完 LANs 中的設備 - 進入之後蠕蟲可以不斷生成自己的副本,完成該蠕蟲想做的事 - ![](https://hackmd.io/_uploads/SJlcCAvNh.png) > [REF](https://www.geeksforgeeks.org/system-security/) - 實際例子 Mirai - Mirai Botnet 殭屍網路 - 目標為 IoT 設備 (如:網路攝影機、印表機、智慧型電視) - 利用 Worm 的個性,感染區域網路之後,再往外擴及 - 掃描物聯網裝置的 IP 位址和連接埠 - 透過多種常用預設帳號和密碼嘗試攻擊裝置 - 成功後安裝 Mirai - 利用大量裝置進行 DDoS 目標攻擊 => [DDoS_傳送門](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw#14-Impact) - ![](https://hackmd.io/_uploads/B1gmyngL3.png) > [REF_Mirai](https://www.cc.ntu.edu.tw/chinese/epaper/0043/20171220_4309.html) - **Compare with Virus and Worms** - 病毒與蠕蟲的比較 | | Virus | Worms | |:-----------------:|:------------------------------------------------------:|:----------------------:| | Method | 附加在可執行檔後進行感染 (也可能利用 autorun 的特性) | 自動執行程式而進行感染 | | Actions | 手動 | 自動 | | Speed of Spread | 慢 | 快 | | Protection Method | 防毒軟體 | 防毒軟體與防火牆 | > [REF](https://www.javatpoint.com/virus-vs-worm) :::info ## Appendix ### 3 - Master Boot Record ( MBR ) - 主啟動磁區 / 主開機紀錄 / 主啟動磁碟 - 負責在電腦上加載作業系統,也包含有關硬碟上的分割區及佈局的資訊 - MBR 存放在系統磁碟的第一個磁區 - ![](https://hackmd.io/_uploads/HkaECCPN2.png) - **MBR 結構** - ![](https://hackmd.io/_uploads/ByIO00PVh.png) - **Master Boot Code 主開機代碼:** 加載作業系統的代碼。是電腦上的硬體特有。 - **Disk Partition 分割表:** 此表包含有關硬碟分割區的資訊。包括每個分割區的起始位置和大小以及使用的檔案系統類型 - **Boot Signature 主開機記錄簽名:** 這是一小段代碼,用於驗證 MBR 代碼是否有效。 - **開機流程** - BIOS 啟動,進行系統自檢,檢查硬體及相關設定 - 讀取 MBR , BIOS 將 MBR 讀入 RAM - 檢查 MBR 結尾 ( Boot Signature ) ,如果等於規定之標誌,則 BIOS 再交給啟動裝置,反之則轉去嘗試其他啟動裝置。 - **BIOS (Basic Input / Output System)** - 開啟電腦時第一個會運行的開機程式,它會進行開機自我測試 (Power-On Self Test) - 他會確定該連接的裝置是否正常運行、或位置是否正確 - 如果沒問題會繼續進行開機流程,有問題則跳出 error 畫面或警示音效 > [REF1](https://tw.easeus.com/diskmanager/master-boot-record.html) > [REF2](https://zh.wikipedia.org/zh-tw/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95) ### 4 - 開機分冷暖? - **冷開機** - 將電腦進行完全關機,之後再按開機鍵進行開機 - 硬體的一些設定並恢復狀態 ( Ex. 記憶體 ) - **暖開機** - 保持開機的狀態下,利用指令或是按重新啟動的方式 - 硬體保持狀態,只針對軟體的設定重新啟動 ::: #### T1068 - Stage Capabilities 部屬能力 ##### Upload Malware 上傳惡意軟體 - 攻擊者將 Malware 上傳至第三方網站、商店或線上儲存空間 - 藉此讓使用者下載,成為攻擊對象 - 再根據軟體特性進行破壞系統或盜取資料。 ##### SEO Poisoning 最佳化中毒 - SEO = Search Engine Optimization 搜尋引擎最佳化 - 利用搜尋引擎的運作規則 ( EX. 排名演算法 )來調整網站 - 以提高搜尋引擎內的排名作為目標 - 以此方式達到更好的網路行銷 - 利用 SEO 的方式將自己設計的網站提高搜尋排名 - 根據時事話題設計網站,或是偽裝成某個正常軟體的下載頁面 - SEO Poison 實例 - Bumblebee 勒索軟體 - 冒充多個知名網站:Zoom、Cisco AnyConnect、ChatGPT、Citrix Workspace 等 - 據觀察,駭客先已一個遭駭入的 WordPress 網站,冒充成 Cisco AnyConnect - 在該下載連結植入該惡意軟體 - 利用 Google 關鍵字廣告與 SEO 的方式吸引與欺騙需要的使用者下載 - [REF](https://www.twcert.org.tw/tw/cp-104-7073-1dd5b-1.html) --- ### 3. Initial Access 初期存取 - 駭客在發動攻擊之前,摸索入侵途徑的方法 - 設立攻擊者在受害系統的立足點 - 藉由第一次進入,建立一個方便進出的方法,讓攻擊者能方便未來繼續進入 :::info - 寄已感染的 USB 到唱片公司 - 到唱片或經紀公司網站上掃描有沒有常見的弱點 ::: #### T1091 - Replication Through Removable Media - 針對外接式媒體 (EX. USB, Smartphone... ) - 將外接式裝置插入已被惡意軟體感染之系統 - 軟體將複製自己到外接式裝置上 - 如果將已感染的外接式裝置插入系統開啟自動執行外接式儲存裝置…,利用該特性,插入後感染系統 - 實際例子 - KAVO 病毒 盛行於 2008 , XP 時代 - 利用 Windows 自動執行的特性 - 三個檔案 - `Kavo.exe` - 主程式 複製以下兩個程式 - 另外還有關閉顯示隱藏檔案的惡意操作 - `Ntdelect.com` - 複製 Kavo.exe 的程式至 `C:\windows\system32` - `autorun.inf` - 自動執行為內建功能,當隨身碟或光碟插入時自動執行或播放 - 利用該特性導向自動安裝,也就是導向 `Ntdelect.com` > [REF](http://ms2.ctjh.ntpc.edu.tw/~luti/96-2/kavo.htm) #### T1190 - Exploit Public-Facing Application - 根據已知系統弱點 - 針對對外公開之軟體與設備進行弱掃 - 大多為軟體漏洞及錯誤、臨時故障或伺服器配置錯誤 - 通常是針對 OWASP Top 10 公佈之漏洞為大宗 - 實際例子 - **Command Injection** - CVE 2020-0688 and CVE 2020-17144 - 針對以上兩個已知漏洞,在 MS Exchange 之伺服器進行攻擊 - 藉此取得存取權後,在伺服器部屬 Web Shell ,以進行惡意行動。 - ![](https://hackmd.io/_uploads/SJe4pg3hr2.png) - [REF](https://www.ithome.com.tw/news/138440) --- ### 4. Execution 執行 - 在被攻擊者設備中執行惡意程式 - 導致受害者網路被入侵、竊取資料或遠端操控受害者電腦 :::info - 把 Resource Development 階段開發好的工具,透過 email 、通訊軟體訊息包裝,傳給經紀公司、唱片公司、經紀人、許光漢本人等,讓他們觸發惡意程式的執行 - 經紀人上鉤了! ::: #### T1204 - User Execution - 利用社交工程攻擊 - 要求使用者使用,或偽裝成看來無害的東西並給使用者使用。 - 根據執行類型可再分成 => - Malicious Link - 利用連結,使用者點擊後導向執行應用程式 - 利用連結,引導使用者下載相關惡意軟體或檔案 - Malicious File - 受社交工程、網路釣魚影響,使用者收到惡意檔案,有可能是文件、可執行檔 - 看起來無害,但其實危險性極高 - 甚至有些會利用密碼保護文件,並提供密碼供解鎖,讓它看起來很正常 - Malicious Image - Docker, AWS .etc 的 Container - 運行時設置惡意軟體 - image 會上傳至公共的網站 - 會看起來很無害,使用者不會意識到有惡意問題。 - 實例: - ![](https://hackmd.io/_uploads/rJ84sW2r3.png) - TeamTNT 集團用於入侵 - 針對 未授權訪問的 Docker REST API 漏洞 - ![](https://hackmd.io/_uploads/ByYQ4UhB2.png) - 在 Docker 中執行門羅幣的挖礦 > [REF](https://blog.trendmicro.com.tw/?p=70792) --- ### 5. Persistence 持續潛伏 - 確保攻擊者能夠一直進出受害者之系統 - 保持使用者的立足點 :::info - 把自己的 SSH public key 放進許光漢經紀人的主機裡,讓自己能夠不用密碼就 SSH 進去 - 發現主機內有一個 `藝人個資` 的目錄,但需要 root 的權限才能讀取 ::: #### T1098 - Account Manipulation - 攻擊者針對取的的帳戶進行操作,像是修改權限、特權升級 ...etc - 也可利用該帳號破壞安全規定 ##### SSH Authorized Keys - 確保目標主機中的 `/etc/ssh/sshd_config` 是允許金鑰認證的登入方式 - 攻擊者產生自己的 public key,將檔案複製到 `~/.ssh/authorized_keys` 內以達成免密碼登入 #### T1136 - Create Account - 利用工具得到最高權限後 - 可利用該最高權限創建所需訪問權限的帳戶 - 目的:不須長時間利用惡意工具的部屬進出系統 - 創建攻擊者只須存取的服務的帳戶,減少被發現的機會 #### T1037 - Boot or Logon Initialization Scripts - 啟動後自動執行腳本 - 系統允許特定權限使用者登錄自動執行腳本 - 利用腳本再進行惡意操作 --- ### 6. Privilege Escalation 提升權限 :::info - 尋找系統漏洞讓自己擁有 root 的權限 - 進到 `藝人個資` 的目錄底下,成功得到許光漢的基本個資 ::: #### Principle of Least Privilege 最小權限原則 PoLP - 檔案、系統資源等的權限只開給需要執行相關工作的人 - 像是部屬 Web 服務會使用 www-data 或 apache 等帳號,並非使用 root 權限 - 避免任一使用者有不應該有的特權 - 舉例 - 可以進出女宿的人應該只有住宿生、宿舍管理員等**需要**的人 - 雖然校長是學校的管理階層最高層,但不應有可以任意進出女宿的權限 - Ref - [Ref_PoLP](https://www.paloaltonetworks.com/cyberpedia/what-is-the-principle-of-least-privilege) - [Ref_PoLP 舉例](https://www.1111.com.tw/news/jobns/147779) #### 應用程式降權 - 以 lighttpd 為例 - 如要 start or stop 時需要用到 sudo,表示執行該行指令的身份為 root - 觀察一下 lighttpd 的程序是誰執行的 - `ps aux | grep lighttpd` - ![](https://hackmd.io/_uploads/rkRg0Gf8n.png) - 可以發現是 `www-data` 這個身份去執行的 - 為了不讓攻擊者在使用者網頁設置錯誤或是有漏洞的時候直接拿到 root 權限,應用程式應做降權的動作 - Red Hat 系列 (Cent OS ...etc) 許多在執行應用程式時是用 root 身份運行的 - 相對來說較不安全 - ![](https://hackmd.io/_uploads/Bk1nCqxLh.png) #### 攻擊者為什麼需要提權 - 針對攻擊的漏洞所分配的並非為 root 的情況下,例如: www-data 或其他使用者 - 為了取得機密資料或是破壞系統就需要較高的權限 #### 常見提權方式 - 攻擊利用 root 執行的軟體漏洞 - Kernel 漏洞 - 目標系統的錯誤設定 - 惡意軟體 #### 提權分類 - **水平提權**:控制其他相同權限使用者 - 就像詐騙集團偽裝成銀行客服,以客服的名義去騙錢 - **垂直題權**:控制更高權限的使用者 - 有更高的權限去做更多的惡意操作 #### 實際事件 - CVE-2021-4034 **PwnKit** - PolicyKit (PolKit) 其中的 pkexec 工具發現漏洞 - pkexec 工具類似 sudo 指令 - 當使用者在修改 sudo 設定檔時不小心改壞了可以利用 pkexec 修復 - ![](https://hackmd.io/_uploads/SyXgNwxIn.png) - ![](https://hackmd.io/_uploads/SJlbEwxI3.png) - ![](https://hackmd.io/_uploads/ryTNOyHIh.png) > [REF_pkexec](https://magiclen.org/sudo-permission-error/) - 漏洞長達 12 年,CVSS 被評為 7.8 分 - 影響範圍:linux kernal 版本介於 2.8 ~ 4.X 之間 - 2009 年 kernel 版本介於 2.8 ~ 4.X 都可能有這種漏洞 - **漏洞操作** ``` wget https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit chmod +x PwnKit ./PwnKit ``` - ![](https://hackmd.io/_uploads/ByBpKyHUh.png) > [REF_Pwnkit](https://blog.davidou.org/archives/2637) > [REF_PoLP](https://ithelp.ithome.com.tw/articles/10280999?sc=rss.iron) --- ### 7. Defense Evasion 防禦規避 - 設法繞過系統的防禦機制,避免攻擊者的身分被發現 - 常見: - 利用、禁用、濫用安全軟體 - 偽裝成受信任的 Process - ...etc :::info - 在經紀人的主機安裝 rootkit 隱藏自己在許光漢經紀人的主機中做的事情 ::: #### T1014 - RootKit - 將 rootkit 拆成兩個字來看 - root : 最高權限之使用者 - kit : 工具箱 - 合起來就是最高權限使用者的工具程式 - 原用意是用於隱藏 process 的功能,可對系統進行存取或將系統核心中所使用的行程隱藏起來,避免使用者在操作時不小心而影響到系統運作 - 變相讓駭客利用它的特性去隱藏在使用者的系統中, - 攻擊手法:社交工程、網路釣魚、利用作業系統漏洞及透過其他檔案夾帶 - Rootkit 常見可以做到的事 - 掩蓋更多惡意軟體:利用 Rootkit 的特性讓其他 Malware 更難被發現 - 篡改或停用安全程式:Rootkit 可以隱藏自己,避開或停用電腦的安全程式,以達到使用者更難發現它的效果 - 竊聽資訊、侵犯隱私:借助 Rootkit,駭客可以攔截網路流量,追蹤按鍵敲擊,甚至讀取受害者的電子郵件。 - 竊取資料 - 取得遠端控制權限 > [REF_Rootkit_1](https://www.netadmin.com.tw/netadmin/zh-tw/technology/F632D1F9D2B34E8B9FCC725B45509BB5) > [REF_Rootkit_2](https://nordvpn.com/zh-tw/blog/rootkit-saomiao/) --- ### 8. Credential Access 取得身分驗證 - 取得受害方信任的憑證,如合法的帳號、密碼 - 盡可能取得這個帳號多一些資訊 :::info - 竊聽經紀人主機的網路流量,閱讀未加密的封包內容 - 查看常用來儲存密碼、憑證的位置,試著取得經紀人各個平台帳號的權限 - 成功登入經紀人的 google 帳號 ::: #### T1557 - Adversary-in-the-Middle - Man-in-the-Middle (MitM) - ![](https://hackmd.io/_uploads/BygFhmZI3.png) > [圖片來源](https://www.wallarm.com/what/what-is-mitm-man-in-the-middle-attack) - 原本的通訊 : A - B - 被中間人後的通訊 : A - C - B - 針對攻擊**網路協定**,達到進行竊聽、修改、偽造等行為的目的 ##### ARP spoofing - ARP (Address Resolution Protocol,位址解析協定) - 用 IP address 查詢對應的 MAC address (用學號找座號) - 駭客用自己的 MAC addresss 欺騙通訊雙方主機的 ARP 快取,駭客就可以接收到受害主機的所有封包,查看其中訊息 - 檢查自己的 ARP Table ```cmd=! arp -a ``` - 中毒:有兩筆相同 MAC 位址但分別對應到不同 IP ##### BGP Hijacking - BGP (Border Gateway Protocol,邊界閘道器協定) - ![](https://hackmd.io/_uploads/ry5F-H-83.png) > [圖片來源](https://www.apnic.net/community/policy/policy-environment_obsolete/) - Internet Assigned Numbers Authority,IANA - 網際網路號碼分配局 - Regional Internet Registry,RIR - 地區性的網際網路註冊機構 - ![](https://hackmd.io/_uploads/SJ9FfrbLh.png) > [圖片來源](https://zh.wikipedia.org/zh-tw/File:Regional_Internet_Registries_world_map.svg) - National Internet Registry,NIR - [臺灣網路資訊中心 (Taiwan Network Information Center,TWNIC)](https://www.twnic.tw/index.php) - Internet Service Provider,ISP - 網際網路服務供應商 - 台灣大哥大 - 中華電信 - ![](https://hackmd.io/_uploads/HJFTi4Z82.png) > [圖片來源](https://ithelp.ithome.com.tw/m/articles/10239485) - Autonomous System,AS - 自治系統 - ISP、大型組織(公司、教育機構、政府機構等) - AS15169 Google LLC - AS32934 Facebook, Inc. - AS3462 中華電信HINET - AS1659 Taiwan Academic Network(TANet) - 透過 AS 交換彼此的 router 資訊,BGP 提供**最有效率** AS 向外傳送封包的路線 - BGP Hijacking - 「經由我傳送會更快!」 - ![](https://hackmd.io/_uploads/rJRbdUbIn.png) > [圖片來源](https://www.cloudflare.com/zh-tw/learning/security/glossary/bgp-hijacking/) - 實際案例 - 2018/11/12 Google 服務中斷,流量都被導向中國電信 (China Telecom) - 奈及利亞 ISP 業者錯誤配置 BGP,宣稱自己的 AS 是到 Google IP 的最佳路徑 - 2020/04/01 全球約 200 家 CDN 供應商流量導向俄羅斯 - Google、Amazon、CloudFlare、GoDaddy、臉書 (Facebook) 及 Line 等 - Ref :::spoiler - [1](https://ithelp.ithome.com.tw/articles/10194660) - [2](https://ithelp.ithome.com.tw/m/articles/10239485) - [3](https://www.cloudflare.com/zh-tw/learning/security/glossary/what-is-bgp/) - [4](https://www.cloudflare.com/zh-tw/learning/network-layer/what-is-an-autonomous-system/) - [5](https://www.netadmin.com.tw/netadmin/zh-tw/technology/094EC6974B37420AAAA7D6B0826C2530) - [6](https://www.cloudflare.com/zh-tw/learning/security/glossary/bgp-hijacking/) ::: #### T1040 - Network Sniffinging - 網路監聽 - 透過**獲得網路封包**,取得網路中未加密的傳遞內容 e.g. 密碼、電子郵件、使用者登入的身分驗證資訊等 - 透過監聽也可以判斷網路是否穩定、設備是否異常 > 並非僅限用於攻擊 - 達成竊聽的方式 - [MitM](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw?view#T1557---Adversary-in-the-Middle) - 訊號溢波 - ![](https://hackmd.io/_uploads/B1jPOvWU2.png) > [圖片來源](https://home.myt.mu/offers/wifi-at-home/) - [2023/01 離職員工在公共區域連回公司 WIFI 盜匯 11 萬 5 千顆泰達幣 (USDT) ,約新台幣 300 萬元](https://www.ettoday.net/news/20230118/2425913.htm) - Side Chennel Attack - 旁路攻擊 - 透過判讀電腦散發的輻射、鍵盤打字的聲音、波動的頻率等物理資訊,破解洩漏出的資訊 - [Hertzbleed](https://technews.tw/2022/06/17/new-hertzbleed-side-channel-attack-affects-all-modern-amd-and-intel-cpus/) - AMD([CVE-2022-23823](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-1038.html#affected))、Intel([CVE-2022-24436](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-1038.html)) - 分析 CPU 動態調節電壓的省電機制所造成的功率差,擷取加密金鑰等資訊 - Ref :::spoiler - [1](https://jackforsec.blogspot.com/2009/11/blog-post_10.html) - [2](https://csrc.nist.gov/glossary/term/side_channel_attack) - [3](https://www.inside.com.tw/article/23299-what-is-a-side-channel-attack) ::: #### 防範措施 ##### 多因子認證 (Multi-Factor Authentication,MFA) - 又稱 多重(ㄔㄨㄥˊ) 要素驗證、2FA - 目的 - 避免使用者帳戶被偽裝、盜用身分的方法 - 方法 - 除了讓使用者輸入密碼之外,設計額外的步驟認證登入者身分 - e.g. - 要求輸入傳送到註冊信箱、手機號碼的驗證碼 - 回答使用者設計、知道的問題 - 辦郵政、銀行業務時被問「哪間國小畢業」 - 生物特徵驗證,如指紋、視網膜、聲音 - Ref - [Ref_AWS](https://aws.amazon.com/tw/what-is/mfa/) :::info ## Appendix ### 5 - 自適應多重要素驗證 (Adaptive Multi-Factor Authentication) - 目的 - 減少進行多重要素驗證的頻率,在安全要求與使用者體驗取得平衡 - 方法 - 發現使用者有可疑活動時,回傳活動訊息給使用者驗證 - 嘗試登入的失敗次數 - 嘗試登入的日期與時間 - 登入者的地理位置 - 登入所使用的裝置 - 登入來源的 IP 位址 - Ref - [Ref_AWS](https://aws.amazon.com/tw/what-is/mfa/) ::: <!-- #### T1555 - Credentials from Password Stores - 在裝置上儲存鉻個帳號 --> --- ### 9. Discovery 環境資訊發現 - 為攻擊其他台主機做資料蒐集的準備 :::info - 從經紀人的系統檔案、目錄、瀏覽器紀錄、雲端共享等等,蒐集與許光漢相關的各式資料 - 發現許光漢與經紀人在雲端共享了一份遠端桌機密碼的檔案 ::: #### T1087 - Account Discovery - 找到系統使用者與相關資訊,決定之後是否要進行暴力破解、網路釣魚、盜用身分等動作 #### T1010 - Application Window Discovery - 主機開啟的視窗 #### T1217 - Browser Information Discovery - 瀏覽器的書籤、帳號、瀏覽紀錄等 #### T1580 - Cloud Infrastructure Discovery - 在雲端基礎設施的設施與資源 #### T1083 - File and Directory Discovery - 檔案與目錄 #### T1135 - Network Share Discovery - 與目標主機遠端共享的檔案等資源 - 評估橫向移動的對象 #### [T1040 - Network Sniffing](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw?both#T1040---Network-Sniffinging) - 網路傳輸的內容 #### T1069 - Permission Groups Discovery - 主機上各群組、群組成員與群組權限等設定 --- ### 10. Lateral Movement 橫向移動 - 藉由初始受害對象,進入或遠端控制其他機器並取得訪問權限 :::info - 透過經紀人的電腦,遠端控制許光漢家裡的桌機 - 發現許光漢的桌機裡有安裝居家網路攝影機的控制軟體 ::: #### T1534 - Internal Spearphishing - 內部魚叉式釣魚 - 透過**控制受害系統信任的帳戶**對系統內其他使用者進行網路釣魚,藉此提高釣魚成功的可能性 - 實際案例 - EyePyramid ( 2017 年初破獲) - 2010 - 2016 年 - 從政府機關、私人企業和公家機構竊取高達 87GB 的資料 - 共 100 多個電子郵件網域和 18,000 多個電子郵件帳號受害 - 透過已感染的帳號發送釣魚信件 - 郵件附件壓縮檔、執行檔包裝惡意軟體 - 惡意軟體透過「 [6. Privilege Escalation 提升權限](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw?view#6-Privilege-Escalation-%E6%8F%90%E5%8D%87%E6%AC%8A%E9%99%90) 」,新增具有管理員權限的遠端操控使用者,完成橫向移動的準備 - Ref :::spoiler - [1](https://blog.trendmicro.com.tw/?p=53044) - [2](https://blog.trendmicro.com.tw/?p=44354) - [3](https://securelist.com/the-eyepyramid-attacks/77098/) - [4](https://blogs.blackberry.com/en/2017/01/threat-spotlight-eyepyramid-malware) ::: #### T1563 - Remote Service Session Hijacking - 遠端服務連線劫持 - 在不須驗證身分的狀況下與其他主機遠端連線 - 利用受感染的主機與其他主機之間的信任關係 ##### [SSH](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F7kiV5QwqT3y7L46EZF8DQQ#SSH) Hijacking - SSH (Secure SHell server) ##### RDP Hijacking - 遠端桌面協定(Remote Desktop Protocol,RDP) - ![](https://hackmd.io/_uploads/By6AmkGI3.png) > [圖片來源](https://www.cyberlinkasp.com/insights/remote-desktop-work/) - 提供遠端存取桌上型電腦最常用的通訊協定 - 滑鼠移動、按鍵輸入等所有資料由 TCP/IP 傳輸 - 預設 3389 port - Ref :::spoiler - [1](https://www.cloudflare.com/zh-tw/learning/access-management/what-is-the-remote-desktop-protocol/) - [2](http://www.korznikov.com/2017/03/0-day-or-feature-privilege-escalation.html) - [3?](https://doublepulsar.com/rdp-hijacking-how-to-hijack-rds-and-remoteapp-sessions-transparently-to-move-through-an-da2a1e73a5f6) ::: ##### 避免方式 - 關閉不必要的服務 - 啟用防火牆隔絕內外網不必要的流量 - 確實管理各帳號權限 - 不要讓特權使用者有權限進行遠端連線 - 遠端連線使用者符合最小特權原則 - Ref - [1](https://cloud.tencent.com/developer/news/104235) --- ### 11. Collection 搜集 - 在受害系統中尋找、聚集想要的資料 - e.g. 瀏覽器紀錄、聲音、影片、電子郵件 :::info - 電腦裡找不到洗澡的影片,只好自己想辦法錄影 - 透過遠端操控許光漢桌機,執行居家網路攝影機,錄下洗澡影片 ::: #### [T1557 - Adversary-in-the-Middle](https://hackmd.io/AE-0B4poQqqp5XHBxQlwLw?both#T1557---Adversary-in-the-Middle) #### T1123 - Audio Capture - 透過控制其他外接設備或應用程式擷取錄音 - e.g. 麥克風、鏡頭、語音通話 #### T1119 - Automated Collection - 利用自動化技術收集系統資料 - 定時搜索與複製檔案、雲端服務的 API - 避免方式 - [提高資料機密性](https://hackmd.io/@wyping/SJ6AYRqM3#%E6%A9%9F%E5%AF%86%E6%80%A7%EF%BC%88Confidentiality%EF%BC%89) --- ### 12. Command and Control 指令與控制 - C2 or C&C - 建立讓受害主機可以接收遠端主機命令的伺服器 - Control and Command Server :::info - 建立 「我 - 經紀人 - 許光漢的桌機」或「我 - 許光漢的桌機」能夠安全傳輸資料的 C2 通道 ::: #### T1071 - Application Layer Protocol - 混入正常流量避免被 IDS / IPS 偵測到 - protocol 類型 - Web Prtocol - File Transfer Protocols - Mail Protocols - DNS <!-- #### T1090 - Proxy - 反向代理 (Reverse Proxy) - ![](https://hackmd.io/_uploads/Hk3HXgvV2.png =90%x) - cache 存網站內容,不用每次都向 server 發送 request - 隱藏 server IP - load balance - 避免方式 - 部屬 IPS (Intrusion Detection and Prevention Systems) 過濾網路流量 - ##### Internal Proxy ##### Externel Proxy ##### Muti-hop Proxy ##### Domain Fronting --> - Ref :::spoiler - [1_pdf](https://www.fisc.com.tw/Upload/2e644695-04a9-44cf-8841-80936503cc5a/TC/9402.pdf) - [2](https://www.cc.ntu.edu.tw/chinese/epaper/0051/20191220_5104.html) ::: --- ### 13. Exfiltration 竊取資料 - 竊取目標的敏感資料,打包與加密回傳給自己 :::info - 想辦法把影片傳給自己 - 用 google 雲端把洗澡的影片分享給自己 ::: #### T1020 - Automated Exfiltration ##### Traffic Duplication - 流量複製 - 鏡像流量 (Traffic Mirroring) - 將經過特定**主機**或特定**埠號**的封包轉發至原先目的地之外的設備 - ![](https://hackmd.io/_uploads/S1JeU-fL3.png) > [圖片來源](https://hackernoon.com/wtf-is-aws-traffic-mirroring-2s6i329k) - 雲端平台 - AWS Traffic Mirroring - GCP Packet Mirroring - Azure vTap - Ref :::spoiler - [1](https://hackernoon.com/wtf-is-aws-traffic-mirroring-2s6i329k) ::: <!-- #### T1030 - Data Transfer Size Limits - 透過設定傳輸限制,降低被發現的可能 - 實際案例 - Kessel - 避免方式 - --> <!-- #### T1567 `FIXME` --> --- ### 14. Impact :::info - 把許光漢桌機上的洗澡影片刪除 ::: #### T1491 - Defacement ##### Website Defacement - 網頁置換、網頁汙損 - 駭客在入侵系統之後,將原網頁檔案替換成其他駭客自製的網頁 - 目的 - 炫耀技能 - 想留名 - 表達自己對於政治、宗教等議題的立場 - 實例 - [:link:全球置換攻擊受害者資料庫](http://www.zone-h.org/) - [:link:zone-h_2020_長濱鄉觀光暨產業行銷網站](http://www.zone-h.org/mirror/id/34288819) ![](https://hackmd.io/_uploads/By2Op0LN2.png) - [:link:zone-h_2022_峨眉鄉公所](http://www.zone-h.org/mirror/id/39744427) ![](https://hackmd.io/_uploads/rk1HTRI4n.png) - 應對方式 - 制定網站事件應變處理流程 - 關閉原網站,導向網頁維護頁面或將備份網頁上線 - 評估影響範圍 - 確認入侵途徑,或進行鑑識處理 - 依照入侵方式進行漏洞修補、權限設定、密碼變更等 - 防禦方式 - 定期更新程式與修補漏洞 - 定期備份網頁內容與資料庫 - 加強網管者的密碼強度或複雜度、多因子認證 - Web server 實施最小特權原則 - 反向代理 (Reverse Proxy) - ![](https://hackmd.io/_uploads/Hk3HXgvV2.png =90%x) - cache 存網站內容,不用每次都向 server 發送 request - 隱藏 server IP - load balance - 部署 Web Application Firewall (WAF) (Appendix 6) - Ref :::spoiler - [Ref_cisesurity](https://www.cisecurity.org/insights/spotlight/cybersecurity-spotlight-website-defacements) - [Ref_TWCERT](https://www.twcert.org.tw/newepaper/cp-92-6387-506c2-3.html) - [Ref_NTU](https://www.cc.ntu.edu.tw/chinese/epaper/home/20221220_006302.html) - [Ref_事件分析報告](https://portal.cert.tanet.edu.tw/docs/pdf/2019032804031111927055681912994.pdf) - [Ref_111-1 LSA Proxy](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F%409wMI71WWT7iMKm40e4ZcoA%2FrJbxS-mMj#Reverse-Proxy-amp-Load-Balance) - [Ref_cloudflare_Proxy](https://www.cloudflare.com/zh-tw/learning/cdn/glossary/reverse-proxy/) - [Ref_Input Validation](https://www.makeuseof.com/what-is-input-validation/) ::: :::info ## APPENDIX ### 6 - Web Application Firewall (WAF) - 網路應用程式防火牆 - 用在 OSI Layer 7 應用層的防火牆 ![](https://hackmd.io/_uploads/BkUkzxP42.png =80%x) > [圖片來源](https://www.a10networks.com/glossary/osi-network-model-and-types-of-load-balancers/) - 篩選、過濾想要與網頁伺服器連線的流量 - ![](https://hackmd.io/_uploads/ryKIMyvVn.png) > [圖片來源](https://blog.cloudmax.com.tw/waf/) - Ref - [Ref_cloudfalre](https://www.cloudflare.com/zh-tw/learning/ddos/glossary/web-application-firewall-waf/) - [Ref_Cloudmax](https://blog.cloudmax.com.tw/waf/) ::: ::: #### T1498 - Network Denial of Service - Denial of Service 阻斷服務攻擊 - 阻斷服務的方式 - 消耗網路資源 - 消耗主機資源 - **Distributed** Denial of Service 分散式阻斷服務攻擊 - 遠端操控多台感染惡意軟體的設備發動攻擊 - 單一台設備 : zombie、bot、魁儡機、肉機 - 中毒設備的總稱 : 殭屍網路、Botnet - 因實際發動攻擊的是分散在世界各地的設備,降低了攻擊流量被識別的風險 - 每台殭屍仍是合法流量 ![](https://hackmd.io/_uploads/B1Zbk1u42.png) > [圖片來源](https://www.gaia.net/tc/news_detail/2/52/ddos-ddos) ##### Direct Network Flood - 消耗網路資源的攻擊 - ICMP 攻擊 - 網際網路控制訊息協定(ICMP) - 特性 - 封包長度很動態,隨著訊息型態有不同長度 - 最少為 1 byte,最多為 64K bytes [Ref](http://dns2.asia.edu.tw/~wzyang/slides/info_net/cha5.pdf) - 伺服器、路由器和命令列工具檢查指定的網路位址之設備是否有連線 (online) - 發送請求到 IP address, 如果設備在連線狀態,回送確認訊息 - `ping` 指令 - ping flooding - 向伺服器發送很多 ICMP 請求,讓伺服器無法正常提供服務 - 應用層攻擊 - R.U.D.Y. 攻擊 - 「Are you dead yet?」 1. 先確認目標網站有表單欄位可以輸入 2. 送出 HTTP POST 請求並在 header 的 content length 欄位寫內容很長 3. 用非常慢的速度且一次只發送少量訊息的 packet 佔住與 server 的連線 - 意外 - 網站短時間湧入大量、預期之外的使用者 - 消耗系統資源的攻擊 - 透過占用系統資源,讓系統無法提供正常服務 - 系統資源 : CPU、硬碟、buffer、I/O ... - TCP 攻擊 - TCP - 網路通訊的最基礎協定 - 三向交握 - SYN flooding - client 端發送大量 SYN 建立 tcp connetcion,塞滿 server 端的 Queue - 當其他使用者也想通訊、發送 SYN 的時候,伺服器已經無法回應 - ![](https://hackmd.io/_uploads/By5SqlHBh.png) - 應用層攻擊 - Slowloris 攻擊 > 數位鑑識 - 先與目標伺服器建立許多 HTTP 連線 - 為了不讓連線逾時、被伺服器釋放執行緒,再定期傳送維持連線狀態的請求 - 當伺服器用完可用執行緒後,就沒辦法與正規流量連線、提供正常服務 ##### Reflection Amplification - 反射與放大攻擊 - ![](https://hackmd.io/_uploads/Bygfk1uVn.png) - Attack 偽裝成 Victim 向第三方發送請求 - 反射:第三方將請求結果傳送給 Victim - 放大:第三方回應 Victim 的流量比請求更多 - e.g. DNS 放大攻擊 (收到 IP 清單) - UDP 可以達到 IP spoofing - response 比 request 大很多 - Ref :::spoiler - [Ref_techtarget](https://www.techtarget.com/whatis/definition/active-attack) - [Ref_paloaltonetworks](https://www.paloaltonetworks.com/cyberpedia/what-is-a-denial-of-service-attack-dos) - [Ref_StackExchange](https://serverfault.com/questions/868317/how-to-prevent-get-slash-http-ddos-attack-from-frontend/869553#869553) - [Red_docker_IEEE](https://ieeexplore.ieee.org/document/7557545) - [Ref_wiki](https://zh.wikipedia.org/zh-tw/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) - [Ref_ICMP flooding](https://www.cloudflare.com/zh-tw/learning/ddos/ping-icmp-flood-ddos-attack/) - [Ref_ICMP_網管人](https://www.netadmin.com.tw/netadmin/zh-tw/technology/111381F2995A4AB48672E965F63133AE) - [Ref_ithome_狀況](https://ithelp.ithome.com.tw/articles/10274014) - [Ref_AWS](https://aws.amazon.com/tw/shield/ddos-attack-protection/) - [Ref_CDN](https://www.wingwill.com.tw/zh-tw/%E9%83%A8%E8%90%BD%E6%A0%BC/%E8%B3%87%E5%AE%89%E7%AE%A1%E7%90%86%E6%87%89%E7%94%A8/cdn%E6%98%AF%E4%BB%80%E9%BA%BC/) - [Ref_Slowloris](https://www.cloudflare.com/zh-tw/learning/ddos/ddos-attack-tools/slowloris/) - [Ref_R.U.D.Y.](https://www.cloudflare.com/zh-tw/learning/ddos/ddos-attack-tools/r-u-dead-yet-rudy/) - [Ref_imperva_RUDY](https://www.imperva.com/learn/ddos/rudy-r-u-dead-yet/) - [Ref_反射放大攻擊](https://www.twcert.org.tw/tw/cp-14-6710-e8a18-1.html) - [Ref_DDoS_TWCERT](https://www.twcert.org.tw/tw/cp-157-6408-e0c62-1.html) - [Ref_NTP 放大攻擊](https://www.cloudflare.com/zh-tw/learning/ddos/ntp-amplification-ddos-attack/) ::: --- ## 資安服務 ### 弱點掃描 Vulnerability Scanning - ![](https://hackmd.io/_uploads/SyiFoPGSh.png) > [img_from](https://simular.co/blog/post/57-%E5%BC%B1%E6%8E%83%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F%E9%97%9C%E6%96%BC%E5%BC%B1%E6%8E%83%E7%9A%84%E4%BA%94%E5%80%8B%E5%B0%8F%E7%9F%A5%E8%AD%98%E8%88%87qa) - 對身體做抽血檢查,抽完的血會拿去自動化精密儀器做檢驗 - 哪個數值超標或太低,就代表身體的某個部份有問題 - 對系統做弱掃,利用自動化的工具,工具內含合乎安全標準值或多種常見駭客手段的弱點與漏洞,就像血液檢測由標準值判別,將這些安全標準作為找出漏洞的標準值。 - 以自動化的方式去尋找弱點 - 針對特性分別可以對網站或主機系統做弱點掃描 - 網站弱掃 - 根據 OWASP Top 10 或更多的常見弱點進行檢測 <!-- 如: XSS, SQL Injection 等等... --> - 系統弱掃 - 根據 CVE 所公佈的系統漏洞進行檢測 - 包含作業系統、惡意軟體及網路設備的檢測 - 流程 - 確定環境及掃描範圍 - 利用工具檢查範圍是否存在漏洞 (開始弱掃) - 修補並複測 - 提交報告、預防 > [REF1](https://www.chtsecurity.com/service/m102) > [REF2](https://www.key-wisdom.com/__VA.php) > [REF3](https://www.pumo.com.tw/security/whatIsWebScan.jsp) > [REF4](https://www.gaia.net/tc/news_detail/2/121/soc) #### 相關工具介紹 ##### Lynis - 開源軟體 FOR FREE - [Lynis 官網](https://cisofy.com/lynis/#introduction) :link: - 也有針對企業的版本 - 多種用途,可用於 - 系統弱掃 - 系統稽核 - 滲透測試 - 漏洞檢測 - 支援系統:UNIX-based Systems - Lynis 會針對系統控制項目進行掃描 - ![](https://hackmd.io/_uploads/B1OQD9fHn.png) - 根據不同種類有更細項的掃描項目 - ![](https://hackmd.io/_uploads/Skhvv5MH3.png) - [Link of security control](https://cisofy.com/lynis/controls/) :link: :::success ## Lab ### 3 - Lynis 實際操作 - 從 Github 上 Clone 下來(沒有 git 的要先安裝下來喔) ``` git clone https://github.com/CISOfy/lynis.git ``` - 打開執行看看 ``` cd lynis/ ./lynis ``` - ![](https://hackmd.io/_uploads/ByKro5frn.png) - 跳出說明頁,確認沒有問題 - 將 lynis 的擁有者調整給 root,確保檔案的權限 ``` cd .. sudo chown -R 0:0 lynis ``` - 開始執行前,務必先檢查是否要更新 ``` cd lynis/ ./lynis update info ``` - ![](https://hackmd.io/_uploads/rknBh5Gr3.png) - 如果 Status 顯示 **Up-to-date** 表示無須更新 - 顯示 **Outdated** 請至 Github 重新 pull 新版本 - 開始掃描 => ``` sudo ./lynis audit system ``` - 可以遠端掃描 ``` ./lynis audit system remote <ip> ``` - **建議使用 sudo ,確保檔案的權限** - 可針對想要的類型 調整參數 - ![](https://hackmd.io/_uploads/S1S0SiMB3.png) - 檢測完成 - ![](https://hackmd.io/_uploads/SJ2mxoMHn.png) - **Hardening index** 為稽核後之分數 - **Tests performed** 測試項數量 - **Plugins enabled** 啟用的外掛數量 - ![](https://hackmd.io/_uploads/rka2Mozrh.png) - **Log 檔案** - 細項 info `/var/log/lynis.log` - Warning and Suggestion `/var/log/lynis-report.dat` - **建議可以用 VSCode 或 Vim 查看,看起來比較舒服** - 查看漏洞細項 ``` ./lynis show details <編號> ``` - 如果看了還是不太舒服,也有提供報表轉換 - 因為要有轉出 HTML 與 XLSX 格式,還需要安裝幾個函式庫 ``` wget https://raw.githubusercontent.com/d4t4king/lynis-report-converter/master/lynis-report-converter.pl chmod +x lynis-report-converter.pl sudo apt install htmldoc sudo apt install libxml-writer-perl sudo apt install libarchive-zip-perl sudo cpan install HTML::HTMLDoc sudo cpan install Excel::Writer::XLSX ``` - 轉換 ``` sudo ./lynis-report-converter.pl -o out.html sudo ./lynis-report-converter.pl -p -o out.pdf sudo ./lynis-report-converter.pl -E -o out.xlsx ``` - ![](https://hackmd.io/_uploads/SkCrTjfSh.png) ::: > [REF1](https://minmin0625.medium.com/%E9%96%8B%E6%BA%90%E8%BB%9F%E9%AB%94-lynis-%E7%B3%BB%E7%B5%B1%E8%B3%87%E5%AE%89%E7%A8%BD%E6%A0%B8-%E5%BC%B1%E9%BB%9E%E6%8E%83%E6%8F%8F-50533fbc65b5) > [REF2](https://ithelp.ithome.com.tw/articles/10217009) ##### Nikto - 開源軟體 FOR FREE - 網頁伺服器掃描器 - 針對網頁伺服器檢測 - 是否有錯誤的配置 - 是否為預設或不安全的文件 - 過時的軟體 - SQL Injection, XSS ...等注入攻擊 :::danger - 建議可以先對靶機進行測試,Nikto 會對目標主機會使用大量請求,這些過量的請求可能會使遠端主機當機。 ::: :::success ## Lab ### 4 - Nikto - Kali linux 已內建,如須更新或是無內建的環境 => ``` git clone https://github.com/sullo/nikto cd nikto/program ./nikto.pl -h <host ip or name> ``` - 可先 `ping` 到靶機測試 - ![](https://hackmd.io/_uploads/H1bs3aMH3.png) - 開始測試 ``` nikto -h <host ip or name> ``` - ![](https://hackmd.io/_uploads/SkzlppGr2.png) - ![](https://hackmd.io/_uploads/HkTeppzrh.png) - 每一行都是一個偵測到的潛在性問題 ::: > [REF](https://ithelp.ithome.com.tw/articles/10272233) ##### sqlmap - 檢測及利用 SQL Injection - 寫好的 payload 進行測試及攻擊 - 支援多種 資料庫系統 - 開源工具 FOR FREE :::success ## LAB ### 5 - sqlmap - Kali Linux 已內建 - 基本指令 ``` sqlmap -u <host> ``` - 常搭參數 | 參數 | func | | ----------- |:------------------------------:| | `-u` | Target Address | | `-cookie` | Session ID | | `--dbs` | 列出資料庫 | | `--tables` | 列出指定資料庫中的所有 table | | `--columns` | 列出指定 table 中的所有 column | | `-D` / `-T` | 選擇指定 db / table | | `-C` | 選擇指定 column 前後加引號 | | `-batch` | 遇到問題以預設值回答 | | `--dump` | 列出過程 | - **例子1:**以 DVWA 實做 - 因為 DVWA 是需要登入的,所以要用 cookie 這個欄位 - ![](https://hackmd.io/_uploads/r1nRNMHIh.png) - ![](https://hackmd.io/_uploads/H15yBMSU2.png) - 成功找到之後,再去根據想要找的 db 去找 tables - ![](https://hackmd.io/_uploads/rJJqBMr83.png) - ![](https://hackmd.io/_uploads/rkwqHfH82.png) - 依序往想找的 table 列 column - ![](https://hackmd.io/_uploads/SylbUzBI2.png) - ![](https://hackmd.io/_uploads/rkIbLfS8h.png) - 之後就成功找到內容了!可喜可賀 - ![](https://hackmd.io/_uploads/ryw7vGBIh.png) - ![](https://hackmd.io/_uploads/rJJEPGr83.png) - **例子2** - 針對一般網站 - 這網站是只有輸入格,並非 php 網頁漏洞 - 貼心提醒你要用什麼參數 - ![](https://hackmd.io/_uploads/SyyGE7CL2.png) - 加入參數後發現找不到任何問題 - ![](https://hackmd.io/_uploads/SkEcN7AIn.png) - 嘗試把等級調高 - ![](https://hackmd.io/_uploads/HyKGIXA82.png) - ![](https://hackmd.io/_uploads/Sk9QL7A83.png) - 成功破解! > [REF_sqlmap_site](https://github.com/splitline/How-to-Hack-Websites/tree/master) > 感謝 Wally 提供資源!! ::: > [REF1](https://www.potatomedia.co/post/3430ac3b-6d97-4b49-b904-8067d6ebcdf2) > [REF2](https://www.mxp.tw/8736/) ### 滲透測試 Penetration Testing - 模擬駭客的行為模式,利用適當工具進行系統入侵的測試行為 - 目的在發現系統的漏洞,提供後續修復的參考依據 - 完成滲透測試且順利通過並不一定能保證不被攻擊 - 就像是家中安裝了新的門,有心人也會想盡各種辦法去利用工具破解這道門 - 即使破不了這道門,科技的日新月異也可能會有新的技術去破解 #### 步驟 - From NIST (National Institute of Standards and Technology) 美國國家標準技術研究所 - 四個階段步驟及流程如下 - ![](https://hackmd.io/_uploads/HJcFX2wV3.png) - **計畫 Planning** : - 訂定滲透測試計畫,內容包含測試規則、範疇及目標 - 委託方、受託方雙方簽訂合約,規劃雙方權利義務 - **發掘 Discovery** : - 進行實際的測試,蒐集及探索目標資訊 - 最常用的方法是掃描服務端口,了解系統提供哪些服務 - **攻擊 Attack** : - 核心階段 - 利用上一步蒐集到的資訊,加上適當的工具進行滲透行為 - 若有資訊不足的情況,可再回上一步 - **報告 Reporting** : - 依測試結果撰寫測試報告 - 將報告提供給委託方,藉以修訂其資訊安全政策及作為 > [REF](https://ithelp.ithome.com.tw/articles/10192674) #### 類型 - 甲方為受檢測單位 - 企業、學校 - 乙方為滲透測試單位 - 公司資安人員 - 測試方式 - **黑箱測試** - 甲方僅提供名稱 / 網址 / IP - 乙方根據除了名稱 / 網址 / IP 其餘資訊必須自行蒐集 - 耗費的時間及成本較多 - **白箱測試** - 甲方提供完整的資訊(ex. 完整的程式碼,系統架構) - 乙方可針對對方所提供的資訊提前進行審查,以方便擬定計畫 - **灰箱測試** - 介於黑與白之間 - 甲方會盡所能提供資訊(甲方可能使用了第三方閉源的資源) - 乙方仍須進行資訊、情報蒐集 - **雙黑箱** - 對乙方人員保密,委託第三方的紅軍來進行 - 第三方人員也沒有任何資訊,也須進行情搜 - **雙白箱** - 三方人員資訊互相流通 - 多請更多專家來幫忙的概念 > [REF_Type](https://feifei.tw/security-service-pentest/) #### 滲透測試工具 - Metasploit - 開源軟體 FOR FREE - 利用蒐集到的資訊及弱點,針對弱點進行自動化的攻擊 - [Exploit DB](https://www.exploit-db.com/) :link: - :arrow_up: 這個資料庫有許多漏洞可供查詢,含相關的攻擊工具和程式碼。 #### 白箱測試 - 靜態分析 Static Application Security Testing (SAST) - 利用完整的程式碼進行檢查 - 不執行檔案的情況下,透過逆向或是直接查看原始碼,分析程式碼內容 - 程式碼太大,肉眼看太花費時間,可利用工具幫你閱讀 - 針對程式常見漏洞:Buffer Overflow (Appendix 7), SQL Injection ...etc #### 黑箱測試 - 動態分析 Dynamic Application Security Testing (DAST) - 功能測試的概念 - 實際運行的方式進行測試 - 針對弱點清單去嘗試破解 ##### 工具介紹 - Flawfinder - C / C++ 源碼掃描工具,靜態分析 - written by python ``` pip install flawfinder sudo apt install flawfinder ``` - 兩種安裝方式擇一即可 ``` flawfinder <code.c or .cpp> ``` - ![](https://hackmd.io/_uploads/B1Awj7rUh.png) :::info ## Appendix ### 7 - Buffer Overflw - 常見於較低階的語言 ( C language、C++ ) - 在使用到固定大小的緩衝區進行資料存取時並不會自己進行緩衝區邊界的檢查 - 一般情況下, Input Size < Buffer Size (你所想的) - ![](https://hackmd.io/_uploads/rywiaAPV2.png) - 如果 Designer 設計讀取輸入值至緩衝區時忽略了檢查輸入值長度 (你沒想到的) - ![](https://hackmd.io/_uploads/B1Z3aAvNh.png) - 使得輸入值覆寫掉一些存在 stack 中的訊息, <!-- - 如圖中的 Return address --> - 如果有意圖的人在輸入時輸入 Shell Code ... - ![](https://hackmd.io/_uploads/Hy22pRDEh.png) - 可能就會讓系統癱瘓,或是導向攻擊者寫入 Shellcode 的位址 - 攻擊者必須精準知道 Buffer 大小、Return address、各個暫存器的值 - 這些值通常會根據不同電腦架構或作業系統而有所不同 - 通常 Buffer Overflow 分成兩種 - 破壞程式的正常執行 - 利用 自己的 code 進行惡意操作 #### ROP Chain - Return-oriented programming 返回導向程式設計 - 漏洞利用技術 針對 Buffer Overflow - 組語程式執行小知識 - `rip` 放下一個 return 的 address - 程式進入 func() 時必須先將原本的位置存到 stack 中 - func() 跑完內容執行 `ret` 之前必須先將 address 從 stack 中 `pop` 到 `rip` - ret 根據 `rip` / `eip` 的 address 繼續執行程式 - 情境舉例 - Ray 今天原本在管院 Moli 打報告,2. 一到要去科三上課,所以執行了 `去科三()` - 上完課之後 有一個 input 接受其他同學的 request - 因為那個同學一直盧,要 Ray 去全家幫他買東西,導致 Buffer Overflow - 剛好 request 後面 寫了 `去全家買東西()` 這個 function 的 Address - 所以 原本要回管院的 function Address 就因此被蓋掉了 - 利用 Buffer Overflow 的概念將 原本存在 stack 的 address 換成想要執行的 address 或 shell code - gadgets - 當沒辦法直接執行自己 inject 進去的指令時,可以利用這個檔案裡面本來就有的程式片段來湊出我們想執行的功能 - 像是 `jmp` 跳到 stack 指定的 address ,就是一個很好的 gadget - 找出 gadget - 觀察大小,進行攻擊 PWN !!! > BTW 期末我們要做這個主題,之後會再詳細解釋喔 > [REF](https://tech-blog.cymetrics.io/posts/crystal/pwn-intro-2/) ##### Example Code - **例子 1** ```clike= // Ref from : https://blog.gtwang.org/programming/c-buffer-overflow-attack-with-example/ #include <stdio.h> #include <string.h> int main() { int pass = 0; char buff[10]; printf("Enter the password:\n"); gets(buff); if(strcmp(buff, "wzray07")) { printf("Fail.\n"); } else { printf("Pass.\n"); pass = 1; } if(pass) { printf("You are root now.\n"); } return 0; } ``` - 一樣以 Stack 的邏輯 - ![](https://hackmd.io/_uploads/BytyCRw42.png) - ![](https://hackmd.io/_uploads/Sy51qYXr3.png) - 但如果 Input 超過了 buff 所宣告的長度 - ![](https://hackmd.io/_uploads/BJOxC0DV2.png) - ![](https://hackmd.io/_uploads/Hksq9Y7H3.png) - 因此而造成了 Buffer Overflow - **例子 2** ```clike= // Ref from : https://25349023.github.io/articles/2021-03/c-str-2/ #include <stdio.h> #include <string.h> int main(void) { int i = 5; char s[8] = "Hi 1234"; strcpy(s, "hello sky"); printf("value of s: %s\nvalue of i: %d\n", s, i); return 0; } ``` - ![](https://hackmd.io/_uploads/SyGlstQrn.png) - 主要問題出自於 `strcpy()` - 原始的 s - ![](https://hackmd.io/_uploads/B1oZACwNn.png) - 經過 `strcpy()` - ![](https://hackmd.io/_uploads/SkUf0AvEn.png) - 覆蓋了 `i` ,導致 `i` 的值被改變了 - 可改用 `strncpy()` , 跟 `strcpy()` 相比他多了限制長度的參數 ##### Summary - 雖然 Buffer overflow 已經很舊,也很久沒出現在 OWASP Top 10 名單內 - 但在 Common Vulnerabilities and Exposures(CVE)(Appendix 7) 所公布的漏洞報告,依然屬於常見的攻擊手法 - 避免的方式,以下供參考 - 改使用較安全的函式。 - 加上輸入值與緩衝區長度檢查機制。 - 改用較高階的程式語言。 - 使用工具檢查程式是否有安全性漏洞 :::warning **執行以上例子不一定會有相同的結果,會因為電腦架構或作業系統不同而產生不同的結果** ::: :::success - **因目前 gcc 有保護機制,所以必須在編譯時手動關閉** ``` gcc <fileName.c> -fno-stack-protector ``` > [REF](https://ithelp.ithome.com.tw/articles/10227814) ::: :::success ## LAB ### 6 - Metasploit - Kali 一樣有內建喔 - 本次 Demo 針對 **vsFtpd 2.3.4 Backdoor** 的漏洞進行攻擊 - ![](https://hackmd.io/_uploads/rJ-jQfEB2.png) - 要先確認靶機 ftp 狀態 - 確認後再確認腳本是否可攻擊 ``` nmap -script ftp-vsftpd-backdoor <ip addr> ``` - ![](https://hackmd.io/_uploads/ryUTXzVrh.png) - **State** 顯示 Exploitable - 資料蒐集工作結束,準備攻擊 - 可以去主選單找,或是對 terminal 輸入 `msfconsole` - ![](https://hackmd.io/_uploads/BJ2qGGEr2.png) - ![](https://hackmd.io/_uploads/ryosfM4H2.png) - 看到這個畫面代表成功進入 - 搜尋腳本 (丟關鍵字即可) ``` search vsftp ``` - ![](https://hackmd.io/_uploads/S1hu4MEr2.png) - 使用腳本 ``` use 0 ``` - ![](https://hackmd.io/_uploads/Hk5tNzNr2.png) - 查看還缺什麼資訊 ``` show options ``` - ![](https://hackmd.io/_uploads/r1U9NMEH2.png) - RHOST 靶機 ip ,須補上 ``` set RHOST <ip addr> ``` - ![](https://hackmd.io/_uploads/rkzjVGVrh.png) - 查看可選擇的 payload,沒得選就不用選 ``` show payloads ``` - ![](https://hackmd.io/_uploads/HkniVzVr2.png) - 開始攻擊 ``` exploit ``` - ![](https://hackmd.io/_uploads/B1q34fVB2.png) - 出現 command shell opened ,表示目前取得權限 - 就可以在靶機裡面為所欲為了 - ![](https://hackmd.io/_uploads/SJVpVfEBn.png) ::: ### 紅隊演練 Red Team Assessment - 紅隊演練 - **攻** : 白帽駭客 - 系統的健康檢查 - 在不影響系統運作的前提下,在有限時間內,用所有方式對各端點進行攻擊,檢查是否有漏洞 - 端點:任何連接到網路並進行通訊的裝置 - e.g. 筆電、桌機、伺服器、物聯網裝置 ... - 藍隊演練 (Blue Team Assessment) - **防** : 企業內部的工程部門或資安人員 - 當紅隊發動攻擊時,需第一時間做出反應、防堵漏洞,將傷害降至最低 - 紫隊 - 通常是紅 + 藍隊的人兼任 - 為了解決紅、藍兩隊因績效指標相反的衝突而存在 - 在兩隊意見不合時做決策 :::info ## Appendix ### 8 - Zero Day 零時差攻擊 - 尚未被發現或已經發現但還沒有修補的系統安全漏洞 - 紅隊演練大多根據零時差攻擊的漏洞進行演練 - 零日攻擊 - ![](https://hackmd.io/_uploads/H1kzmfXHh.png) > [圖片來源](https://medium.com/hannah-lin/zero-day-%E9%9B%B6%E6%99%82%E5%B7%AE%E6%94%BB%E6%93%8A-55bb3843ec9f#567d) ### 9 - HITCON ZeroDay - [LINK](https://zeroday.hitcon.org/vulnerability) :link: - 一個通報組織漏洞的公開平台 in TW - 在未審核與修復之前平台不會公開資訊 - 資安專家和企業組織間的溝通管道 - 如企業久久未回報修補狀況過一段時間還是會公開喔 ### 10 - HackerOne - [LINK](https://hackerone.com/bug-bounty-programs) :link: - Bug Bounty 漏洞賞金機制 - 挖漏洞補錢包洞 - 企業與駭客的平台 - 企業提供機會懸賞金額及相關規定,駭客尋找漏洞 - 須注意規定及確認公司是否有懸賞機制 - 完成懸賞後駭客也會與企業約定不公開且不攻擊,企業方也會進行修補 - [REF](https://ithelp.ithome.com.tw/articles/10205215) ::: ### 三者比較 | | 弱點掃描 | 滲透測試 | 紅隊演練 | |:----:|:-----------------------------------------------------------------:|:----------------------------------------------------------:|:--------------------------------------------------------------------------------------:| | 範圍 | 根據受檢方提供的端點位置,根據表層 (EX. 網站一些輸入框)去尋找弱點 | 根據受檢方提供的端點位置,利用尋找到的弱點確認是否能被應用 | 深入企業 / 組織內部 根據目標進行深度與廣度的演練,有時企業方還是會限制某網段不開放演練 | | 目標 | 尋找目前已公開且確認的弱點 | 驗證弱掃的弱點是否可用 | 根據企業組織與紅隊所訂定的結案條件 (EX. 常見的:拿到企業 AD 的主控權 ) | | 缺點 | 容易誤判弱點 | 無法驗證影響多大 | 人力時間金錢成本高 | > `AD` : MS Windows Active Directory ,擁有該權限可以新增管理者權限之使用者,可利用這組帳號可登入其組織之其他台電腦或部屬大量的應用程式 ## 系統安全強化 ### 權限控管 #### su & sudo 的指令限制 - su (switch user) : 切換使用者,只使用 su 必須使用該使用者之密碼登入 - sudo (super user do) : 超級使用者的權限執行指令,根據 `/etc/sudoers` 配置檔案 - 我們在 ubuntu 上不會使用 root 的身份去做登錄及使用,這是非常不建議大家做的事 - 雖然不鼓勵大家用,但是有心人士會想用阿!XD :::success ## Lab ### 7 - 限制 su 指令 - 更改 PAM 中的設定檔 - PAM ( Pluggable Authentication Module ) 可插入式認證模組 - 可以視為使用者與應用程式的中介角色 - Linux 系統中,PAM 擔任前端,而認證機制 ( ex. passwd ) 則是認證系統的後端 > [REF](https://blog.xuite.net/im2222/blog/303677311) - command : `cd /etc/pam.d/` - `pam.d/` 存放所有 PAM 的設定檔 - `sudo vim su` - 找到 `auth required pam_wheel.so` 把註解拿掉 - ![](https://hackmd.io/_uploads/Sks0zrP4n.png) - 改完之後會發現使用 su 是無法順利執行的,是因為 這個帳號不在 root 的群組 - 回到剛剛的檔案,剛剛那一行後面 加上 `group=<group_name>` - ![](https://hackmd.io/_uploads/HyzjUBwE3.png) - 代表在該群組的使用者皆可使用 su - 要注意如果設定群組,如果 root 不在該群組,root 就無法使用 su (不過也沒在用 root 所以就不用太擔心拉) > [REF](https://www.gushiciku.cn/pl/gmoX/zh-tw) ### 8 - 新增 / 修改 sudo 可使用的使用者 - `sudo vim /etc/sudoers` / `sudo visudo` 更改 `sudo` 的設定檔 - 規則:`<user/%group> 來源主機=(可切換帳號) 可執行的指令` - ![](https://hackmd.io/_uploads/BJqYeJ_43.png) - **來源主機:** 限制使用者從特定網路主機連線時,才能使用 sudo 指令,可用來防止入侵者從不明的主機登入攻擊。若指定為 ALL 則代表不限制來源主機。 - **可切換帳號:** 可以取得哪些帳號的權限。若指定為 ALL 則代表可以取得任何帳號的權限。 - **可執行的指令:** 在取得特殊權限後,可以執行的指令。若指定為 ALL 則代表可以執行任何指令。 - `ray ALL=(ALL) ALL` 允許 ray 使用 sudo - 可執行指令前加上 `NOPASSWD` - `ray ALL=(ALL) NOPASSWD:ALL` 免密碼執行 sudo 所有指令 ### 9 - 設定指定使用者不得使用 sudo passwd root 改密碼 - `sudo vim /etc/sudoers` / `sudo visudo` (nano) 更改 `sudo` 的設定檔 - 在最後面加上: - `<user/%group> ALL=(ALL) ALL,!/usr/bin/passwd root` - 如需針對 group 要記得最前面加 `%` - 如果是 vim 更改的,存檔必須使用強制存的方式 - ![](https://hackmd.io/_uploads/BJ8ygoP43.png) - ![](https://hackmd.io/_uploads/HkhD-ww4h.png) > [REF](https://www.gushiciku.cn/pl/gmoX/zh-tw) ::: #### 檔案權限控制表 (File Access Control List) - **Access Control Lists** 簡稱 ACL - 情境:一門課中可能會有旁聽的學生,不管是旁聽的學生或是正式修課的,只要有去聽課的都在一個群組裡面,讓群組裡面的人都可以拿到講義,但如果今天只想把期中考卷給有修課的人存取,這時候就會需要用到 ACL 的技術去處理 - 那為什麼不用之前所教的 `chmod` ? - `chmod` 是只針對 user 、group 、other 進行管理 - `ACL` 可以針對 user 、group 去做更細緻的管理。 - Ex. 針對群組內的旁聽的人限制存取,其他人可以正常存取 ##### 回想一下 - 權限 - Linux 不同的帳號對於目錄及檔案有以下三種種類 - User - Group - Other - 擁有者可以依不同執行權限進行控管《 R、W、X 》 - **R**ead - **W**rite - e**X**ecute - 如何查看權限 - Command :`ls -l` - **Sticky Bits 黏滯位** - ![](https://hackmd.io/_uploads/SyOAoQDEn.png) - 會以`drwxrwxrwx`的形式呈現 - 開頭的 d 代表是否為 Directory - 後面 9 個字母分別再拆三份 分別為 User / Group / Other - 所以以第一個資料夾為例 權限為 : `rwxr-xr-x` , 代表 User 可讀可寫可執行、 Group 可讀可執行、 Other 可讀可執行 - 有顯示 + 記號代表該檔案有使用到 ACL 技術。 ###### Setuid, Setgid 特性 - 檔案權限設定 setuid / setgid ,其他用戶可以用檔案持有者身份 / 群組執行檔案 - 使用不當會有安全性問題,但卻是 Linux 重要的功能 - `/usr/bin/passwd` 此指令有設置 setuid,一般使用者使用時其實是用 root 身份修改系統內的密碼檔的。 - ![](https://hackmd.io/_uploads/rk3zVSrL3.png) - `s` 表示 `setuid` , `S` 表示 `setgid` - 當攻擊者成功駭進,但無 root 身份時,可利用 setuid 的權限操作惡意軟體 - **防護機制舉例** - 攻擊者無 root 權限的情況其實很難進行惡意操作 - `ls -al /tmp` 會發現權限是 777 - 程式安裝檔暫時放的地方 必須可執行 - 讓所有使用者接可用的空間,須可讀可寫 - 當 Web Application 存在漏洞時,攻擊者可以上傳任何東西並且在此執行 - `mount` 查看所有的掛載資訊 - ![](https://hackmd.io/_uploads/r1T0XSHU3.png) - 會發現其中一項 tmpfs 後面的參數有許多限制,其中一個 Option 就是 nosuid - 還有像是 `nodev`, `noexec` 等限制 - `nodev`: 禁止在指定目錄掛接特殊裝置 - `noexec`: 禁止在指定目錄使用可執行檔 - 根據規定之參數,所有在該路徑上傳的檔案無法掛載, 執行與複製任何 setuid 的檔案 - 所以可以利用這些參數,在 tmp 檔案中做這類的保護機制 > [REF1](https://www.ltsplus.com/linux/linux-set-setuid-setgid-permission) > [REF2](https://blog.gtwang.org/linux/linux-mount/) > [REF3](https://zh.wikipedia.org/zh-tw/Tmpfs) > [REF4](https://learn.microsoft.com/zh-tw/azure/governance/policy/samples/guest-configuration-baseline-linux) :::success ## Lab ### 10 - File ACL - 情境與上面相似,假設有三名同學,一名旁聽,一位老師 - 以情境去做 LAB - ![](https://hackmd.io/_uploads/H1Hos7D42.png) - **查看權限** - command : `getfacl <filename>` - ![](https://hackmd.io/_uploads/HyU3jXwEh.png) #### 基礎操作 - Command : `setfacl <參數> <u/g/o>:<who>:<rwx-> <file>` | 參數 | 說明 | | ----------------- |:---------------- | | `-m` / `--modify` | 調整權限 | | `-x` | 移除指定權限規則 | | `-b` | 清除所有權限規則 | | 權限格式 | 說明 | | ------------- |:---------------------- | | `u` / `user` | 針對指定使用者設定權限 | | `g` / `group` | 針對指定群組設定權限 | | `o` / `other` | 針對其他使用者設定權限 | | `m` / `mask` | 有效權限 | - 有兩個執行檔,一個是給修課同學執行的,一個是給旁聽的人執行的 - **新增規則** - ![](https://hackmd.io/_uploads/HydPiTEV2.png) - 目前群組內的人皆可執行這兩個檔案 - 將 forClassmate 的檔案設定不讓 visitor1 執行 - command :`setfacl -m u:<user>:<rwx-> <file>` - ![](https://hackmd.io/_uploads/S1MJnC4Vn.png) - ![](https://hackmd.io/_uploads/HyaQhRNV2.png) - 將 forVisitor 的檔案讓群組的人無法執行,且只讓 visitor 能執行 - command :`setfacl -m g:<group>:<rwx-> <file>` - ![](https://hackmd.io/_uploads/rJdJDkrVn.png) - ![](https://hackmd.io/_uploads/HyqBwyBVh.png) - 將資料夾中所有的檔案都套上 ACL 規則 - command :`setfacl -Rm <u/g/o>:who:<rwx-> <Dir>` - 有一天決定要把 兩份檔案 都給大家看 - **刪除 / 清除規則** - **移除指定規則** - command :`setfacl -x <u/g/o>:who <file>` - ![](https://hackmd.io/_uploads/HJjsNVLH2.png) - **清除所有規則** - command :`setfacl -b <file>` - ![](https://hackmd.io/_uploads/ByB73kSN3.png) - **清除檔案夾中所有檔案的 ACL 規則** - command :`setfacl -Rb <Dir>` - 有一份執行檔原本要給某幾位學生看,但因為要期中考了,所以老師要把權限收回來,但不想破壞原本所設定好的規定 - **設定有效權限遮罩 mask** - 任何人 (除了 Owner)的權限皆不可超過此 mask 所設定的權限 - 原始規則 - ![](https://hackmd.io/_uploads/S1B582I4h.png) - command :`setfacl -m m:<rwx-> <file>` - ![](https://hackmd.io/_uploads/r1LUDn8En.png) - `#effective` 表示該行規則目前有效的權限 - 如果有需要恢復,只要再把遮罩權限提高即可 - ![](https://hackmd.io/_uploads/S1K8uhLV2.png) #### 進階操作 - **繼承 ACL 設定** - 在指定目錄中加入繼承規則,日後新增檔案時該檔案的權限會使用此規則 - 應用舉例:老師為學生建立專屬的資料夾 - command : `setfacl -m d:<u/g/o>:<who>:<rwx-> <Dir>` - ![](https://hackmd.io/_uploads/S1CiZAUV3.png) - ![](https://hackmd.io/_uploads/SJUt7AUEn.png) - ![](https://hackmd.io/_uploads/B1h3NAL4h.png) > 雖然方便但還是須注意如果產生出來的檔案預設的 mask 權限不夠時還是會有 effective 出現 - **移除繼承** - command : `setfacl -k <Dir>` - ![](https://hackmd.io/_uploads/rkBBS08Nn.png) > 目錄下的檔案仍會保持設定 - **複製 ACL 設定** - command : `getfacl <file1> | setfacl --set-file=- <file2>` - ![](https://hackmd.io/_uploads/rkkKIAINh.png) - **複製繼承** - command : `getfacl --default <Dir1>| setfacl -d -M- <Dir2>` - ![](https://hackmd.io/_uploads/SyGJYA8V2.png) > [REF_ACL_Lab](https://officeguide.cc/linux-acl-access-control-list-setfacl-getfacl-command-tutorial/) ::: ### Linux 安全模組 (Linux Security Modules,LSM) - linux kernel 支援電腦安全模型的框架 - 提供 **強制存取控制 (MAC)** 所需的模組 - 目前官方主要支援的模組:SElinux、AppArmor、Smack、TOMOYO #### 自主存取控制 (Discretionary Access Control,DAC) - 權限設定的主體為 **user** - ![](https://hackmd.io/_uploads/H1q-hrsI3.png) - 系統帳號 - root - 任何權限設定都無效 - 一般使用者 - 由資源擁有者決定其他人的權限 - 缺點 - 任何人拿到 root 身分都可以亂搞 - 有人直接開目錄權限 777 的話,任何人都可以存取、增減目錄內容 #### 強制存取控制 (Mandatory Access Control,MAC) - 避免 DAC 容易造成的問題 - 權限設定的主體:**process** - 針對特定的 process、檔案等權限進行細部設定 `FIXME` - 就算是 root ,在執行特定 process 的時候,權限不一定是 root - process 對系統檔案資源有各自的權限 - 檢查 DAC 之後再看 MAC #### [AppArmor](https://gitlab.com/apparmor/apparmor) - Linux 7.10 之後有內建 - 查看狀態 - `sudo apparmor_status`, `sudo aa-status` ![](https://hackmd.io/_uploads/rJKVmA_H2.png) - 哪些應用程式在哪個模式 - 預設是 Complain 模式 - 設定檔 : `/etc/apparmor.d` ![](https://hackmd.io/_uploads/SkrY8c0I2.png) - 設定檔的命名規則與路徑相關 - 針對 `/usr/bin/firefox` 檔案的設定 <!-- - 生成設定檔 - [aa-genprof] - [aa-easyprof](https://gitlab.com/apparmor/apparmor/-/wikis/manpage_aa-easyprof.8) - `sudo apt install apparmor-easyprof` - `sudo apparmor_parser -r {設定檔路徑}` --> ##### 模式 - Complaining/Learning - 抱怨模式 - 會留下 log 紀錄,但不會阻止存取 - `/var/log/kern.log` - `/var/log/apparmor` - Enforced/Confined - 強制模式 - 改變模式 - `sudo apt-get install apparmor-utils` - `aa-complain`, `aa-enforce` - `sudo aa-complain /etc/apparmor.d/usr.bin.evince` - `sudo {模式} {設定檔位置}` - `sudo aa-complain /usr/bin/evince` - `sudo {模式} {資源本身位置}` #### SELinux - Security Enhanced Linux ##### 相關名詞 - 主體 (Subject) - SELinux 主要管理的對象 - 程序 - 目標 (Object) - 主體存取的內容 - 檔案資源 - 政策 (Policy) - 主體存取目標的安全性 - 由詳細規則 (rule) 組成 - 安全性本文 (security context) - 主體跟目標都有一份 - 類似 rwx - 雙方一致才能順利存取 - `ls -Z` - ![](https://hackmd.io/_uploads/B1BuN1Jv2.png) - Identify:Role:Type:Sensitivity - 身分識別 (Identify) - 瞭解資料是由哪種身份所有 - 除了 root 之外,其他的都會加上『 _u 』 - 角色 (Role) - 知道資料屬於程序、檔案資源還是代表使用者 - object_: 代表的是檔案或目錄等檔案資源 - system_r: 代表的就是程序或一般使用者 - 類型 (Type) - 與程序能不能讀取這個資源相關 - 安全本文的類型 - 靈敏度 (Sensitivity) - s0 - s15 - 預設 s0 ##### 安裝 1. 安裝: `sudo apt install policycoreutils selinux-utils selinux-basics` 2. 啟用: `sudo selinux-activate` 3. 重開機: `reboot` 4. 確認目前狀態、模式與政策: `sestatus` ![](https://hackmd.io/_uploads/B1bfAq0Un.png) - 確認模式 `getenforce` ##### 模式 - Disable - 不啟用 SELinux - Enforcing - 完整啟用 SELinux - 分析、管制網路程序能夠存取的目錄與檔案 - Permissive - 寬容模式 - 有啟用,但僅記錄與分析,不會實際限制程序運作 - 設定檔 `/etc/selinux/config` ![](https://hackmd.io/_uploads/B1xpc-1D2.png) #### Ref :::spoiler - [LSM_vidoe_pdf](https://elinux.org/images/0/0a/ELC_Inside_LSM.pdf) - [LSM_video](https://www.youtube.com/watch?v=RKBBPsp-TZ0) - [kernel.org](https://www.kernel.org/doc/ols/2002/ols2002-pages-604-617.pdf) - [LSM_medium](https://medium.com/@boutnaru/linux-security-lsm-linux-security-modules-907bbcf8c8b4) - [SELinux_vbird_2](https://dic.vbird.tw/linux_server/unit02.php) - [SELinux_vbird_3](https://linux.vbird.org/linux_server/rocky9/0140selinux.php) - [SELinux_vbird_16](https://linux.vbird.org/linux_basic/centos7/0440processcontrol.php#whatis) - [SELinux_vbird_3](https://linux.vbird.org/linux_basic/centos5/0440processcontrol-centos5.php#dac) - [phoenixnap_What Is SELinux?](https://phoenixnap.com/kb/selinux) - [phoenixnap_apparmor-vs-selinux](https://phoenixnap.com/kb/apparmor-vs-selinux) - [phoenixnap_linux-security](https://phoenixnap.com/kb/linux-security) - [redhat](https://access.redhat.com/documentation/zh-tw/red_hat_enterprise_linux/8/html/using_selinux/using-multi-level-security-mls_using-selinux) ::: ## 系統監控 ### 觀察 LOG 記錄檔 - 知道自己的系統發生什麼事情 :::info #### /var/log - `/var/log/syslog` : 紀錄系統登入資訊記錄及 Kernel 錯誤或警示資訊記錄等等 - `/var/log/auth.log` : 包含系統執行驗證與授權過程的訊息,包含 sudo 命令、SSH 登入等常見的 log - `/var/log/boot.log` : 記錄這次開機時的資訊 - `/var/log/cron` : crontab 排程的執行訊息 - `/var/log/kern.log` : 紀錄與 Linux kernel 相關的事件或訊息,通常由 syslog 紀錄 - `/var/log/lastlog` : 記錄系統上所有的帳號最近一次登入時的相關資訊 - 是一個二進制檔案,`lastlog` 指令就是來顯示這個檔案的資訊。 - `/var/log/maillog` 或 `/var/log/mail/*` : 記錄郵件的往來資訊,主要是記錄 postfix (SMTP 協定) 與 dovecot (POP3 協定) 軟體所產生的訊息。 - SMTP 是發信使用的通訊協定 - POP3 則是收信使用的通訊協定 - `/var/log/wtmp`, `/var/log/faillog`:這兩個檔案記錄正確登入系統者的帳號資訊 (wtmp) 與錯誤登入時所使用的帳號資訊 (faillog) 。 - last 指令是將 /var/log/wtmp 檔案格式化輸出。 - Ref - [review](https://hackmd.io/VwcAk54ER0uQOg05NSmAeQ) - [資訊安全 (二)](https://hackmd.io/FXJowMI9Tx-EpMpg4KyJYw#Linux-%E5%B8%B8%E8%A6%8B-log-%E6%AA%94) ::: #### log 怎麼看? - `cat /var/log/mail.log` ![](https://hackmd.io/_uploads/Sya3ujNrn.png) - 事件發生的日期與時間 - 發生事件的主機名稱 - 啟動此事件的服務名稱 (如 systemd, CROND 等) 或指令與函式名稱 (如 su, login..) - 訊息的實際資料內容 #### logwatch - 提高記錄檔的可讀性的工具 - 定時將記錄檔保存、傳給管理者 - 安裝 `sudo apt install logwatch` - 會同時安裝 postfix mail server - 新增 logwatch 暫存目錄 - `sudo mkdir /var/cache/logwatch` ![](https://hackmd.io/_uploads/rJ0ZdFES2.png) - logwatch 的設定檔 - `/usr/share/logwatch/default.conf/logwatch.conf` ![](https://hackmd.io/_uploads/S1zXtK4S3.png) - 備份一份設定檔 - `sudo cp -a logwatch.conf logwatch.conf.backup` - 設定檔內容 - `LogDir = /var/log` - 所有預設放 log 檔案的路徑 - `TmpDir = /var/cache/logwatch` - `Output = stdout` - 輸出 log 的方式 - stdout, mail, file - `Format = text` - text ![](https://hackmd.io/_uploads/H1Rh-5EB3.png) - html ![](https://hackmd.io/_uploads/Syx1z54Bn.png) - `Encode = none` - 是否用 Base64 演算法編碼 - `yes` or `none` - `MailTo = root` - 收件者 - `MailFrom = Logwatch` - 寄件者 - `Filename = /etc/logwatch` - 如果是用 `Output = file` 自訂輸出檔位置 - `Range = yesterday` - 輸出檔案的時間範圍 - All, today, yesterday - `Detail = Low` - 轉換 log 的詳細程度 - Low(0), Med(5), High(10) - `Service = ALL` - 分析哪些服務 - 支援範圍 `ls /usr/share/logwatch/scripts/services` - 排除某些服務 `Service = -sshd` - 指定某些服務 `Service = sshd` - 執行測試 `sudo logwatch` - 設定檔的內容也可以用參數調整 - e.g. - `--detail LOW` - 每天自動執行的設定檔 - `/etc/cron.daily/00logwatch` - ![](https://hackmd.io/_uploads/ByxnhbMU3.png) - `exit 0` 正常執行程序並退出 - Ref :::spoiler - [ref_officeguide](https://officeguide.cc/ubuntu-linux-logwatch-tutorial-examples/) - [ref_netadmin](https://www.netadmin.com.tw/netadmin/zh-tw/technology/7C5DD7C5E3934D4BBF8B8E0679ACBB7A) - [ref_鳥哥](https://linux.vbird.org/linux_basic/centos7/0570syslog.php) - [Ref_DADA](https://github.com/sakura26/DADA/blob/master/log_analysis_intro.md) ::: ### 網路流量 - 除了使用防火牆,其他監控網路流量的方式 #### 入侵偵測系統 (Intrusion-detection system,IDS) - 監聽、偵測保護對象是否遭到惡意攻擊 - 若發現入侵跡象 - 通知系統管理員 - 將事件紀錄寫進 LOG 檔案 ##### ==主機型==入侵偵測系統 (Host-based Intrusion Detection System,HIDS) - 部屬位置:要被保護的主機上 - - 分析主機檔案系統、記錄檔 (log)、程式等是否完整 ![](https://hackmd.io/_uploads/SJUYBgbB2.png) - 優點 - 能即時監控特定主機系統的活動 - 不用額外增加硬體設備 - 缺點 - 占用主機一定的系統資源 - 根據不同作業系統用的稽核記錄檔不同,需安裝不同的 NIDS ##### ==網路型==入侵偵測系統 (Network-based Intrusion Detection System,NIDS) - 部屬位置:要被保護的網段,外網或內網都可以架設 - 分析經過這段網段的所有封包 - 僅外網 (防火牆外) - NIDS 能知道所有對系統的攻擊手段 - 僅內網 (防火牆內) - 流量已由防火牆過濾過一次,能減少 NIDS 的負擔 - 避免 NIDS 遭受攻擊 - 皆架設 ![](https://hackmd.io/_uploads/BJ_FLlbr2.png) > 透過 switch, router 等設備設定鏡像連接埠 (port mirror) 把所有流進的封包複製一份給 NIDS 偵測 :::info - out-of-band - 機器外加於原先的網路架構 - 好處是如果 NIDS 主機掛掉,不會癱瘓整個網路,可以降低風險 ::: - 優點 - 可偵測到未成功或惡意的入侵攻擊 - 不會增加內網主機負擔 - 缺點: - 若為單一主機,流量過大、耗盡資源時就會無法運作、錯過封包 - 無法辨識、分析加密封包 ##### Tripwire - 比對檔案、目錄完整性的 **HIDS** 實際工具 - 相關檔案 - 設定檔 - 指定資料庫與原則檔案路徑、報告檔的生成方式等 - 建好資料庫後要刪除的原始檔案 : `twcfg.txt` - 加密後 : `/etc/tripwire/tw.cfg` - 原則檔 (policy file) - 指定 tripwire 要檢查的資料 - 建好資料庫後要刪除的原始檔案 : `twpol.txt` - 加密後 : `/etc/tripwire/tw.pol` - 資料庫 - 儲存資料原始狀態 - `/var/lib/tirpwire/$(hostname).twd` - 報告檔 (report file) - 紀錄變更、檢測結果 - `/var/lib/tirpwire/report/$(hostname)-$(date).twr` - 金鑰檔 - 用來保護原則檔跟設定檔 - site key - 保護設定檔與原則檔 - 可以多台用一個 key - `/etc/tripwire/site.key` - local key - 保護資料庫與報告檔 - 一台機器一個 key - `/etc/tripwire/$(hostname)-loacl.key` - 運作流程 ![](https://hackmd.io/_uploads/SJngBQJw3.png =80%x) - Ref :::spoiler - [鳥哥](https://linux.vbird.org/somepaper/20030626-Tripwire.doc) - [Ref_1092 的共筆](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F6rqGORCmSCS_veAeUjMtmQ%3Fview) - [Ref_apt install](https://computingforgeeks.com/install-and-configure-tripwire-on-ubuntu/) ::: ##### Ref :::spoiler - [Ref_netqna_HIDS](http://www.netqna.com/2014/04/host-based-intrusion-detection-system.html) - [Ref_netqna_NIDS](http://www.netqna.com/2014/04/network-based-intrusion-detection-system.html) - [Ref_NTU_CC](https://www.cc.ntu.edu.tw/chinese/epaper/0054/20200920_5406.html) - [Ref_思科](https://www.cisco.com/c/dam/global/zh_tw/assets/docs/product3_2.pdf) - [Ref_翻轉工作室](http://www.tsnien.idv.tw/Security_WebBook/%E7%AC%AC%E5%8D%81%E4%B8%80%E7%AB%A0%20%E5%85%A5%E4%BE%B5%E5%81%B5%E6%B8%AC%E8%88%87%E7%B6%B2%E8%B7%AF%E7%97%85%E6%AF%92.html) - [Ref_PPT](https://pws.niu.edu.tw/~hbc/IPSTec_Chu.pdf) ::: #### 入侵防禦系統 (Intrusion Prevention System,IPS) - 延伸、加強 IDS 的功能 - 異常偵測與警告 - **及時阻擋** ![](https://hackmd.io/_uploads/BklJ-9zS3.png) :::info - inline - 裝置本身也是網路架構的組成 - 掛掉的話會造成網路癱瘓 - 可以及時攔阻惡意封包 ::: ##### 運作流程 1. 與資料庫的黑名單比對 IP、URL、Domain,DROP 與黑名單相符的封包 2. 透過存取控制列表將封包分流處理 3. 需要檢測的封包導入 Intrusion Rule 深入檢測 ![](https://hackmd.io/_uploads/BJ37qMMB2.png) [圖片來源](https://www.cc.ntu.edu.tw/chinese/epaper/0054/20200920_5406.html) ##### Ref :::spoiler - [Ref_1092 的共筆](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F6rqGORCmSCS_veAeUjMtmQ%3Fview) - [Ref_PPT](https://pws.niu.edu.tw/~hbc/IPSTec_Chu.pdf) - [Ref_oob vs inline](https://www.garlandtechnology.com/blog/the-101-series-out-of-band-vs-inline-network-security) - [Ref_purplesec_GOOOOOD](https://purplesec.us/intrusion-detection-vs-intrusion-prevention-systems/) ::: #### IDS & IPS 的偵測方式 - 特徵型偵測 (Signature-based Detection) - 誤用偵測 (Misuse Detection) - 利用已知的攻擊手法、系統漏洞建立出各種攻擊特徵資料庫 (Attack Singnature) - 優點 - 不容易誤判 - 缺點 - 新的攻擊入侵型態就抓不到 - 異常偵測 (Anomaly Detection) - 透過統計或機器學習觀察行為模式,分析出使用者的活動是否為正常、合法 - 優、缺點與**特徵型偵測**相反 #### IDS vs IPS | | IDS | IPS | |:--------:|:-------------------------------:|:-----------------------------------------------------------------:| | 防禦方式 | 被動監聽 | 被動監聽+主動防禦 | | 防禦動作 | 通知防火牆 TCP reset 並中斷連線 | 丟棄惡意封包、中斷連線 | | 優點 | 可做深層資料分析或數位證據 | 能夠主動地將符合資格的攻擊行為立即切斷,讓攻擊尚未達成前就立即阻擋 | | 缺點 | log 太多看不完 | 誤判會阻擋合法流量 |

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully