# TeamT5 Security Camp 2024 筆試題目說明及下載 ![](https://hackmd.io/_uploads/H1BcVdQGa.jpg) * 最新公告: * 20231207 🎉 筆試報名截止,感謝大家參與,我們將於 12/12(二)寄出錄取通知 * 20231206 🚴 筆試最後倒數囉~ 大家加油!🚴 * 20231130 新增:⏰ 因不少同學反應卡到期中考週,筆試繳交截止日延長為 12/06(三)囉,請大家保握時間!🤩 * 20231126 新增:若要提供作品檔案(例如,類別三:遊戲外掛之實作的 dll 檔案),因報名表單無法直接上傳 PDF 等之外的檔案格式,歡迎將程式檔案加密碼後自行上傳到自己的雲端空間,於分析報告上提供連結即可(記得設定好分享給其他人瀏覽的權限唷) --- 歡迎來到筆試題目的下載及說明頁面 我們共準備了三大類型題目,歡迎自行選擇擅長題目作答,不需三類型題目皆作答,請提交至少一類別的題目分析報告結果即可。(當然也歡迎每一題都作答哦,我們將會選擇完成度最佳的類別分析報告計分,其餘題目的分析報告將不會納入計分) ## 注意事項 * 若想繳交多題作答,請將各題分析報告獨立撰寫 * 筆試題目下載:https://reurl.cc/Wv8b87 * 筆試題目繳交&報名連結:https://reurl.cc/RyydrD * 主辦方保留活動修改之權益 * 若有任何問題,歡迎來信:camp@teamt5.org * 活動相關資訊,歡迎持續追蹤:https://www.facebook.com/TeamT5.org ## 重要時程 ![截圖 2023-11-30 下午3.35.15](https://hackmd.io/_uploads/H1PUi2rrp.png) ## 類別一:惡意程式分析 ![](https://hackmd.io/_uploads/BJlbN_7Gp.jpg) 某天…你在某個公開沙箱上撿到了一個奇怪的 ZIP 檔案,身為威脅情資研究員的你是否能夠辨認裡面內容是否有害呢?一起來研究看看吧! 以下為答題重點: * 分析相關樣本 * 受害者觸發惡意程式的方式 (載入流程/誘發方式/可能有的加解密/等等) * 惡意程式族群 * 樣本編譯時間 + 推測攻擊時間 * Decoy 檔案 * C2 * 常駐方式 * 相關 traffic * 其他你認為重要或者覺得有用的資訊 * 分析受害/攻擊者身分 * 受害國家 * 攻擊族群 * 加分題 * Payload decoding/decryption algorithm * Malware obfuscation techniques * Config offset + decoding method * Capability * 其他視情況/細節給分 能夠回答得越詳細越好,沒有標準答案的! 就算有你覺得答不出來的,也還是盡量寫寫看 ♪♪(oᐛ)o~♪♪ * 執行題目系統需求 * Windows 7+ * Microsoft Office 任意版本 * 提示 * ZIP 檔案解壓縮後會得到三個檔案,其中合法執行檔執行後會透過 DLL side-loading 帶起惡意 DLL,為 APT 族群慣用的手法,因此請著重分析在惡意 DLL 而非合法執行檔上 * x32dbg/x64dbg debug DLL 方式:`rundll32.exe <DLL filename>,<Export function name>`,例如:`rundll32.exe msi.dll,MsiProvideQualifiedComponentW` 請於分析報告中詳述分析的流程、使用的工具… 等等,盡可能描述與呈現更多您的思考過程,或找到的任何可能跡象,有助於讓我們更了解您的分析程序。 ### 題目檔案 - `OnesNotem.zip` - SHA256 `1716db145789dab95052fe9fda71a0d493c331f71b5d225660f40d7eb281f4f0` - 附件密碼 `AcI6W6Wq_73--X_0R-_Na_l6-eCVv2N5` * <font color="#f00">警語</font> * <font color="#f00"><<<記得在虛擬機或測試環境跑! 建議連 Email 都在測試環境底下開。>>></font> ## 類別二:漏洞研究 ![](https://hackmd.io/_uploads/ByDsNOXGp.jpg) 以下題組為對 Tenda 路由器和其一系列 [CVE](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=tenda) 的研究,包含韌體的解包和逆向、遠程服務的模擬、漏洞的分析和復現等。研究的目標設備為 Tenda AC10 v1.0,韌體版本 V15.03.06.23,可以從[官方載點](https://www.tendacn.com/download/detail-3105.html)下載。請回答下列問題,並匯整於一份報告中。 - 部份題目需要進行逆向分析並截圖,建議使用 IDA 或 Ghidra。 - 需要實作的題目請額外附上原始檔或腳本,並說明執行的方式和環境 (例如: 需安裝的套件或作業系統等),若不易說明可以直接給 Dockerfile。 - 要分析的漏洞為 [CVE-2022-42168](https://nvd.nist.gov/vuln/detail/CVE-2022-42168) 和 [CVE-2023-37144](https://nvd.nist.gov/vuln/detail/CVE-2023-37144),可以參考公開的分析文章。 - 報告最後請附上參考資料連結 ### 1. 解包和逆向分析 (30%) * 1.1 韌體解包 (5%) 下載該韌體檔 US_AC10V1.0RTL_V15.03.06.23_multi_TD01.bin,並解開內部包含的 squashfs 檔案系統,說明所用的工具和指令。 * 1.2 Web 服務分析 (10%) 找出負責響應 web 登入頁面/管理頁面 (下圖) 的服務和其主執行檔 (httpd),並分析它的啟動流程,包含它和系統中其它服務 (daemon) 的執行順序或依賴關係、交互方式等。 ![](https://hackmd.io/_uploads/BkYkBumG6.png) ![](https://hackmd.io/_uploads/B1YZBu7fa.png) * 1.3 漏洞和攻擊面分析 (15%) 自行查尋 CVE-2022-42168 和 CVE-2023-37144 的相關資訊,並在 httpd 中找出這兩個漏洞。請在逆向工具中截圖、給出漏洞所在的大概位址,並簡略說明這兩個漏洞的原因和觸發方式。例如: 需要送出的 HTTP request 為何? 是否需要多次交互? 此外,說明其他可能的攻擊面,特別是 pre-auth 的部份,即不需先登入即可觸發的攻擊面。例如: 特定的路徑或是 httpd 中某些函式。 ### 2. Web 服務模擬實作 (30%) 使用 qemu-user 或 Qiling 等工具或框架,模擬運行上題中分析的 web 服務主程式 (httpd)。由於缺乏實際的硬體和 kernel,該 web 服務的主程式沒辦法完全直接執行,需要對該 binary 或相關的 shared library 進行修改。建議的方式為: - 編譯並掛載一個 .so 檔,覆蓋某些 shared library 函式。由於該系統中的 ld-uClibc.so.0 不支援 LD_PRELOAD,因此需要以替換 library 的方式掛載,或重新編譯 ldso (見 bonus-1)。附件中有預先編譯好的 ld-uClibc.so.0 和 Makefile 範例,可以直接修改使用。(==請詳見 [ldso_tools.tar.xz](https://drive.google.com/drive/u/0/folders/1JzyKAkR2uohsg_uajW5iWFzkUcBLv96a) 檔案==) - 直接對主程式或相關 library 進行 binary patch。 - 若使用 Qiling,可以用 address hook 修改其行為。 提示: - 某些函式可以完全跳過 (直接返回常數),會有部份功能受影響,但頁面顯示和有關前述 CVE 的部份還是可以運作 - Web 服務實際上需要跟其它 daemon 互動,可以直接 patch 掉這部份 (也可以同時運行其它 daemon 的模擬,但難度較高) - 若使用 root 執行,需注意可能影響到真實系統。可以使用 unshare 或 chroot,或使用 docker 封裝整個環境。也可以修改 bind port (原為 80) 以避免 root 權限。 - 執行的輸出應該會出現 `"webs: Listening for HTTP requests at address {ip}:{port}"` 字樣,且能以瀏覽器開啟。使用 curl 測試時注意可能有 redirect 和 set-cookie 要處理,使用 python requests 的 Session 會比較方便。 - 由於預設為空白密碼,開啟時會跳過登入頁面直接顯示管理頁面。此為正常行為。 Bonus-1 (+10%) 自行編譯 ld-uClibc.so.0,可以參考其 SoC 之 [SDK](https://github.com/AskeyDB40/RTL8197_3411D_2) 中 uclibc 的設定參數。請在報告中寫出方法、指令等。 Bonus-2 (+10%) 使模擬的 web 服務需要登入。瀏覽器首次開啟時會顯示登入頁面,輸入正確密碼後才進入管理頁面。此外,請給出能以正確帳號密碼登入的測試腳本。 提示: - 較容易實作的方式是 patch/hook httpd 取得帳密設定的程式邏輯,直接回傳固定的 username 和 password hash。 - 正確的 hash 值可以分析 binary 後計算或直接 sniff web request 來取得。 ### 3. 漏洞利用實作 (40%) 以下漏洞利用的實作,評分標準包含腳本的完成度,和能否完整模擬並驗證 PoC 或 exploit 的運作。Demo 部份,附上執行模擬器和腳本的步驟,並對執行的結果截圖即可。此外,如果前一大題沒有完成,可以撰寫只模擬目標漏洞函式的程式來做測試。 #### 3.1 Exploit CVE-2023-37144 (15%) 撰寫一份 CVE-2023-37144 的概念驗證腳本或程式 (PoC): - 請選擇能「遠端」驗證是否執行成功的 shell command(s),並透過該漏洞來執行。 - 可以假設已知登入帳密或不需登入。 - 如果可行,使用前面完成的 web 服務模擬,來進行 demo,包含前述遠端驗證的部份。 #### 3.2 Exploit CVE-2022-42168 (25%) 撰寫一份 CVE-2022-42168 的利用腳本或程式 (exploit): - 需要能執行任意 shell command (RCE)。 - 可以假設已知登入帳密或不需登入。 - 嘗試只使用 binary 中的 ROP gadgets,即: 假設 shared library、stack、heap 等會受 ASLR 影響,只使用具固定位址的 gadgets。 - 如果可行,使用前面完成的 web 服務模擬,來進行 demo。 Bonus-3 (+10%) 上述的漏洞都需要先登入才能觸發,因此只是 post-auth,實際上的影響並不大。但只要有能取得密碼或繞過登入驗證的漏洞就可以串接成 pre-auth RCE。已知此韌體版本存在能繞過登入驗證的 CVE 漏洞,請嘗試找到它並將上面的 PoC/exploit 實作為 pre-auth RCE。 如果模擬的 web 服務具有登入功能,請用它來 demo 改良後的 PoC/exploit。 ## 類別三:遊戲外掛實作 ![](https://hackmd.io/_uploads/BkfVr_7za.jpg) [題目檔案](https://drive.google.com/drive/u/0/folders/1qr9vhdqU3djmiYbIDM3hibaja4Se7yDW)是一個類似爆爆王的遊戲,把 zip 檔中的東西放到同個目錄後執行 CrazyArcade.exe 即可開始遊戲。目的是實作外掛,下方描述要達到的目標,繳交的檔名與副檔名請跟繳交項目寫的一致。在期限內就算只做完一部分,甚至其中一題,也歡迎繳交。 ### 繳交項目 - Report.pdf:分析報告。說明你做了哪些功能以及如何做到的,越詳細越好。遊戲外掛有任何相依檔案或特別的操作,都可以在報告中補充,主辦方會盡量配合。 - 玩遊戲 - 開發與測試環境 - 分析 - 寫外掛 - 測試 - Kernel 題:此題為申論題,在報告中說明該如何繞過保護機制,讓 dll 能正常被載入到遊戲中。 - InternalHack.cpp、InternalHack.dll:從遊戲 Process 內部修改的外掛程式。 - 適用於基礎題、進階題 - 得分方式:主辦方在 Windows 10 1909 用<font color="#F08080">一般使用者</font>執行遊戲後,會用 Cheat Engine 載入你提交的 InternalHack.dll 到遊戲的 Process 中,依照完成的功能給分。 ### 基礎題 (40% ~ 50%) 提示:使用 [Cheat Engine](https://www.cheatengine.org/downloads.php) 找到控制變數的記憶體位址,寫一個 dll 持續寫入目標記憶體位址。對開發 dll 不熟的話可以參考[逐步解說: (C++) 建立和使用您自己的動態連結程式庫](https://learn.microsoft.com/zh-tw/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170)。 - [控制炸彈數](https://drive.google.com/file/d/1Bg0r4sJNG_CB510e11soDJINi1kk2R99/view?usp=sharing) - 得分條件:在吃任何道具前就有 2 顆以上的炸彈。 - [控制火力](https://drive.google.com/file/d/1fKERw4r5bVu8kfBUdwXgnX9O0pi9hf72/view?usp=sharing) - 得分條件:在吃任何道具前就有長度為 2 以上的火力。 - [控制走路速度](https://drive.google.com/file/d/1_gtEA-XrFskVY2IXtDSBro-7gBSv3ndD/view?usp=sharing) - 得分條件:在吃任何道具前就有比原本快的速度,這項可以調快一點主辦方比較容易辨認,但也別調太快因為會破圖。 - [永久盾牌](https://drive.google.com/file/d/1o0-TSC4lRXetCe9ZkoKPcDEjBIzIBTtQ/view?usp=sharing) - 得分條件:在吃任何道具前就有盾牌效果。 ### 進階題 (50% ~ 60%) 提示:可能需要逆向分析理解程式邏輯、了解遊戲使用的 Library,Hook 特定函數、位址,改寫程式邏輯與實作功能。對 Hook 不熟的話可以參考[【Day 09】Hook 的奇妙冒險 - Ring3 Hook](https://ithelp.ithome.com.tw/articles/10270919)。 - [倒數時間暫停](https://drive.google.com/file/d/1Q7K-x7ulahwWLU2q-U4Q0w-87HFq_YH_/view?usp=sharing) - 得分條件:讓時間停止倒數。 - [穿牆](https://drive.google.com/file/d/1-qIUPMHXLUJIdADWWUUg5dTbIftlPL4H/view?usp=sharing) - 得分條件:讓人物可以任意行走在障礙物上。 - [用游標移動角色](https://drive.google.com/file/d/1WyHzWEdkGKTjxC5L5aRXZWCL2WPQnPhc/view?usp=sharing) - 得分條件:讓人物跟著游標移動。 - [用滑鼠左鍵放炸彈](https://drive.google.com/file/d/13W6Voxgo3HqfDiv9lW5zHbiMlauscPwM/view?usp=sharing) - 得分條件:按滑鼠左鍵放炸彈。 ### Kernel 題 (10% ~ 20%) 研究 [ObRegisterCallbacks](https://learn.microsoft.com/zh-tw/windows-hardware/drivers/ddi/wdm/nf-wdm-obregistercallbacks) 遊戲保護機制,想辦法繞過或破壞保護機制,讓你的 dll 能夠成功被載入。在使用 Administrator 權限啟動遊戲時,會載入遊戲保護的驅動程式 (CrazyArcade.sys、SelfProtect.sys)。這個步驟<font color="#f00">請務必在 VM 中操作</font>,因為可能會讓你的系統不穩定和產生弱點,在比較新版本的 Windows 系統會崩潰,建議使用跟主辦方環境相同的 Windows 10 1909。 - 破解遊戲保護 - 得分條件:在報告中說明該如何繞過保護機制。 ### 加分題 (5% ~ 10%) 如果有任何有趣的發現或是外掛功能是上述題目沒有提到,你想到或實作出來都可以補充在分析報告中。