二進制安全是一個比較偏向於底層的方向,因此對學習者的計算機基礎要求較高,如
C/C++/Python 編程、匯編語言、計算機組成原理、操作系統、編譯原理等,可以在 MOOC 上找到很
多國內外著名高校的課程資料,中文課程推薦網易雲課堂的大學計算機專業課程體系,英文課程推
薦如下。
- Harvard CS50 Introduction to Computer Science
- CMU 18-447 Introduction to Computer Architecture
- MIT 6.828 Operating System Engineering
- Stanford CS143 Compilers
在具備了計算機基礎后,二進制安全又可以細分為逆向工程和漏洞挖掘與利用等方向。學習的
目標是掌握各平台上靜態反匯編(IDA、Radare2)和動態調試(GDB、x64dbg)工具,能夠熟練閱
讀反匯編代碼,理解 x86、ARM 和 MIPS 二進制程序,特別要注意程序的結構組成和編譯運行的細
節。此階段,大量動手實踐是達到熟練的必經之路。推薦資料如下。
- Secure Coding in C and C++, 2nd Edition The Intel 64 and IA-32 Architectures Software Developer’s Manual
- ARM Cortex-A Series Programmer’s Guide
- See MIPS Run, 2nd Edition Reverse Engineering for Beginners
- 《程序員的自我修養——鏈接、裝載與庫》
- 《加密與解密,第 4 版》
接下來,就可以進入軟件漏洞的學習了,從 CTF 切入是一個很好的思路,此階段還
可以通過讀 write-ups 來學習。在掌握了這些基本知識之后,就可以嘗試分析真實環境中的漏洞,或
者分析一些惡意樣本,推薦資料如下。
- RPI CSCI-4968 Modern Binary Exploitation
- Hacking: The Art of Exploitation, 2nd Edition
- The Shellcoder’s Handbook, 2nd Edition
- Practical Malware Analysis
- 《漏洞戰爭:軟件漏洞分析精要》
有了實踐的基礎之后,可以學習一些程序分析理論,比如數據流分析(工具如 Soot)、值集分
析(BAP)、可滿足性理論(Z3)、動態二進制插樁(DynamoRio、Pin)、符號執行(KLEE、angr)、
模糊測試(Peach、AFL)等。這些技術對於將程序分析和漏洞挖掘自動化非常重要,是學術界和工
業界都在研究的熱點。感興趣的還可以關注一下專注於自動化網絡攻防的 CGC 競賽。推薦資料如下。
- UT Dallas CS-6V81 System Security and Binary Code Analysis
- AU Static Program Analysis Lecture notes
如果是走學術路線的朋友,閱讀論文必不可少,一開始可以讀綜述類的文章,對某個領域的研
究情況有全面的了解,然后跟隨綜述去找對應的論文。個人比較推薦會議論文,因為通常可以在作
者個人主頁上找到幻燈片,甚至會議錄像視頻,對學習理解論文很有幫助。如果直接讀論文則感覺
會有些困難,這里推薦上海交通大學“蜚語”安全小組的論文筆記。堅持讀、多思考,相信量變終
會產生質變。
為了持續學習和提升,還需要收集和訂閱一些安全資訊(FreeBuf、SecWiki、安全客)、漏洞披
露(exploit-db、CVE)、技術論壇(看雪論壇、吾愛破解、先知社區)和大牛的技術博客,這一步
可以通過 RSS Feed 來完成。隨着社會媒體的發展,很多安全團隊和個人都轉戰到了 Twitter、微博、
微信公眾號等新媒體上,請果斷關注他們(操作技巧:從某個安全研究者開始,遍歷其關注列表,
然后遞歸,即可獲得大量相關資源),通常可以獲得最新的研究成果、漏洞、PoC、會議演講等信息
甚至資源鏈接等。
最后,我想結合自己以及同學畢業季找工作的經歷,簡單談一談二進制方向的就業問題。首先,
從各種企業的招聘需求來看,安全崗位相比研發、運維和甚至算法都是少之又少的,且集中在互聯
網行業,少部分是國企和銀行。在安全崗位中,又以 Web 安全、安全開發和安全管理類居多,而二
進制安全由於企業需求並不是很明朗,因此崗位僅僅存在於幾個頭部的甲方互聯網公司(如騰訊、
阿里等)的安全實驗室,以及部分乙方安全公司(如 360、深信服等)中,主要從事安全研究、病毒
分析和漏洞分析等工作,相對而言就業面狹窄,門檻也較高。隨着各種漏洞緩解機制的引入和成熟,
軟件漏洞即使不會減少,也會越來越難以利用,試想有一天漏洞利用的成本大於利潤,那么漏洞研
究也就走到頭了。所以,如果不是對該方向有強烈的興趣和死磕一輩子的決心,考慮到投入產出比,
還是建議選擇 Web 安全、安全管理等就業前景更好的方向。好消息是,隨着物聯網的發展,大量智
能設備的出現為二進制安全提供了新的方向,讓我們拭目以待。
摘抄自《CTF權威指南pwn篇》