# OSEP (Evasion Techniques and Breaching Defenses (PEN-300) 心得分享
### 前言
2020年退伍前考了一張OSCP,想說退伍後如果要對企業的內網做檢測,自己的技能應該不夠充足,
雖然有拆惡意程式的經驗和一點紅隊演練的經歷,但還是覺得不太夠。
這張證照有趣的地方就是,教材教你的各種繞過方法,只要再加工一下,就可以繞過Windows Defender了,雖然繞過了,但是隔了一個月後,又被殺掉了 囧。
## OSEP 簡介
OSEP 是 Offensive Security Experienced Pentration Tester 的縮寫,這門課也是 Offensive Security 今年把OSCE 拆分成3張的其中一張證照,OSWE、OSEP、OSED,而OSEP 是一張涵蓋比較常見的攻擊手法和框架的一張證照,其中也有介紹及拆解 Cobalt Strike 的 Payload 和還原,AD 物件權限提升、Office 巨集、PowerShell AMSI Bypass、C# Shellcode Loader、Process Injection、Bypassing Antivirus、Linked SQL Server Attack,等攻擊手法。
推薦有在做威脅獵捕或是想知道惡意程式怎麼使用 Windows API 和攻擊者進到内網後的手法
雖然不是所有攻擊手法,但是也算是比較有系統性的把現在已知的攻擊手法統整的一套課程,對於惡意程式這塊一直撞牆的人和防禦方有很大的幫助。
## 報名及教材
因為LAB的關係所以價格上只有60或90天可以選擇,不過推薦90天,課程教材內容有很多需要直接實作驗證的東西。
如果之前有考過OSCP,直接延用之前的帳號。
不過價錢頗貴 QQ

## 課程大綱
大概 700 頁 pdf 教材和19小的影片教學,跟著影片動手做,有時候自己看章節的時候反覆驗證教學影片中的內容還蠻重要的。
### Operating System and Programming Theory
主要介紹會使用到的作業系統和程式語言及WINDOWS API 和相關註冊表,這些東西在後面章節都會使用到
### Client Side Code Execution With Office
這章主要介紹從一般 Office Dropper 到使用 VBA invoke Windows API 塞入你的 Shellcode 執行,及C#編譯時會有暫存檔案產生到把暫存檔案消除的方法
### Client Side Code Execution With Jscript
這章開始就會開始使用 C# 一步一步做出 Shellcode Loader
VirtualAlloc、CreateThread、WaitForSingleObject,比較常見惡意程式毀使用到的 Windows API
和在 Powershell 中使用 DLL 調用編後的 Shellcode Loader
### Process Injection and Migration
這邊主要介紹為Process Injection的一些要件,及那些場合要使用那些Windows API及介紹Process Hollowing的原理。
這章的練習也不錯,複習PE結構和映射到記憶體後的狀況和如何取代VirtualAlloc和WriteProcessMemory,達到 Mapping shellcode 目的
(一查發現網路上很多 XDDD)
如果想要瞭解更詳細可以參考 [aaaddress1](https://github.com/aaaddress1/Windows-APT-Warfare) 大大的書(大推)。
### Introduction to Antivirus Evasion
這邊講解當產生惡意程式後靜態特徵去除,用凱薩加密、XOR,和時間差上的Shell code,還有抹掉 Word 上的巨集相關資訊及使用 VBA 混淆。
但因為它的環境用小紅傘比較舊的版本,所以我在自己建立的環境下一下就被殺掉了。
### Advanced Antivirus Evasion
這邊主要開始介紹 Antimalware Scan Interface AMSI 在微軟的防禦架構面是如何防禦,以及用 Frida 抓幾個比較關鍵的函數像是 AmsiInitialize,AmsiOpenSession、AmsiScanBuffer、AmsiScanString,等在 Powershell 中如何 hot patch 掉這些函數讓回傳的值失敗,藉此繞過檢查
如果懶得用可以參考這個網址,直接產生 bypass XDD
[amsi.fail](https://amsi.fail/)
不過在行為分析上這些都被看光光了 QQ
### Application Whitelisting
從白名單繞過,繞過微軟內建的AppLocker的規則,資料夾權限檢查,Powershell 語言模式繞過,自定義 powershell Runspaces和反安裝的方式去執行惡意程式,還有釣魚郵件常見的MSHTA
### Bypassing Network Filters
這一章主要介紹一般,攻擊框架中所產生的惡意程式所用的傳輸的加密憑證,一般會直接被抓到憑證特徵,所以用自己產生的憑證就有可能繞過檢查。
### Linux Post-Exploitation
這章主要提到的是 Linux 環境下如何用內建的方式做 Keylogger和簡單的繞過卡巴的 Linux 檢查
### Kiosk Breakouts
如果有使用過Remote APP 的管理者或是剛好有測試過的人可以理解的章節,因為有時候可以莫名其妙叫出那台Remote APP Server 的終端或是看到其他使用者的資料
### Windows Credentials
此篇章主要說 HIVE及Lsass 記憶體要如何取得,不過Windows 2012 以後有 Credential Guard ,即便你有Debug Privilege 也不能下載 lsass,那怎辦?
有這個 [PPLdump](https://github.com/itm4n/PPLdump)
只要你可以取得System 以下這些版本 通通可以取得 lsass 的記憶體,還不趕快 patch XDD
| Windows version | Build | Edition | Arch | Admin | SYSTEM |
| --- | :---: | :---: | :---: | :---: | :---: |
| Windows 10 20H2 | 19042 | Pro | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 10 20H2 | 19042 | Pro | x86 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 10 1909 | 18363 | Pro | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 10 1507 | 10240 | Educational | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 10 1507 | 10240 | Home | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 10 1507 | 10240 | Pro | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows Server 2019 | 17763 | Standard | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows Server 2019 | 17763 | Essentials | x64 | :heavy_check_mark: | :heavy_check_mark: |
| Windows 8.1 | 9600 | Pro | x64 | :warning: | :warning: |
| Windows Server 2012 R2 | 9600 | Standard | x64 | :warning: | :warning: |
### Windows Lateral Movement
這章主要介紹 Windows 橫向移動中,RDP session、RDP 開 Shell、偷取RDP明文帳號密碼、Tunnel,改對方機器服務的方式帶起惡意程式。
### Linux Lateral Movement
這章主要接介紹Linux Server 中的 枚舉 SSH 中的被密碼加密的 key file ,劫持 SSH 的 ControlMaster、Ansible Playbook 及Kerberos on Linux 問題等
### Microsoft SQL Attacks
一般 SQL Server 的低權限使用者其實都可以使用 xp_dirtree 、xp_filexist 等相關功能,
這時候攻擊者就可以在 Linked SQL Server 上執行 NTLM relay,藉由偽冒對方的SMB,來竊取NTLM,進而達到竊取Linked SQL Server 的 SAM檔。
[ntlm-relay-backflips](https://web.archive.org/web/20201127144223/https://labs.asteriskinfosec.com.au/ntlm-relay-backflips/)
### Active Directory Exploitation
主要介紹 AD 中物件的權限,及那些權限可以被權限提升和枚舉AD中的相關物件、樹系。
通常為擁有WRITE_DAC、WRITE_OWNER、GENERIC_ALL的權限可以都是可以修改AD物件中的屬性。
這種權限常見在 Exchange Server 及Share Pointer 中
此篇章應該就是整篇的重點,其中介紹群組、使用者、電腦之間的委派的安全議題。
其中又以模擬 Share point,及 Exchange Server 中委派的安全問題
[Kerberos委派攻擊](https://www.cnblogs.com/websecyw/p/12461990.html)
### Combining the Pieces
這章主要是將前面的章節的攻擊手法串聯起來打一次
### Challenge LAB
LAB 總共有六台,和 OSCP 一樣要取得 local和proof
個人覺得一定程度上已經模擬大部分的企業環境,大部分的考試內容都是從LAB變形出來而已,並不會變化太大,但是LAB出現的安全問題,其實大部分的企業内網可能都會有,像是本地端的管理者密碼都相同,或是根本沒有變更過,導致可以用相同的NTLM去嘗試其他機器。
## 資源
[defcon27_csharp_workshop](https://github.com/mvelazc0/defcon27_csharp_workshop)
[Offensive Security Experienced Penetration Tester (OSEP) 簡介](https://hackmd.io/@0xbc000/H1OXfyGnu)
## 後記
- 遇到今年疫情爆發,剛好有三個月的練習時間,這三個月的LAB練習可以說是很扎實阿,覺得看惡意程式有稍微輕鬆一點了 XD
- 考試時間48小時,在度過12小時的瘋狂提權後,終於拿到最終的Secret,由於剩下36小時,把剩餘的時間做更完整的截圖及報告的撰寫。
- 在學習的過程中,總會發現新的漏洞可以適用在考試的LAB裡面( 因為是 Windows 嘛 : )像是很夯的印表機弱點 Printnightmare,或是以 EfsRpcOpenFileRaw 攻擊為基礎,利用模擬system token 都能直接讓 Windows 淪陷。可以想像一下你的 IIS 主機服務都會有 SeImpersonatePrivilege 的權限。如果被上傳Webshell,就可以直接變 System : )
- 強烈建議可以試試 BloodHound 針對不同的網域使用者及機器做物件的收集,可以發現很多看不到的委派權限。
- 感謝 [billy](https://hackmd.io/@0xbc000) 大大對於 LAB中的問題不厭其煩地解說。
- 考完後約兩天就收到通過通知 效率變快了!

