Windows逆向工程師-學習路線
02-01
大多數安全從業者對「Web安全工程師」比較熟悉,但是對「Windows逆向工程師」這個職業卻了解甚少,總體歸納起來可能主要有如下幾點:需要的系統底層技能較多,自學學習難度係數比較大,並且往往在入門後無法深入研究下去。本文將在coolsmurfs大牛的引領下讓大家輕鬆掌握「Windows逆向工程師」的學習思路和整體進階路線。
推薦閱讀:
職位描述:
- 參與漏洞挖掘、分析和利用技術研究;
- 分析當月高危漏洞原理和利用技巧,撰寫相關技術總結文檔;
- 挖掘瀏覽器、Office、Adobe Reader、flash等客戶端軟體以及網路協議常見漏洞;
- 研發相應的漏洞挖掘和分析的一體化框架平台;
- 惡意程序分析以及其他程序內部實現邏輯分析;
- 對公司其他部門提供技術支持。
- written by: coolsmurfs
職位要求:
- 熟悉x86/x64系列彙編語言、c/c++語言,能熟練讀懂彙編代碼;
- 有較好的逆向功底,熟練使用IDA、Windbg、Ollydbg、Immunity Debugger、Bindiff等分析工具以及Metasploit等滲透測試工具;
- 至少掌握一門編程語言,包括C/C++/python/ruby/perl/javascript;
- 熟悉瀏覽器、office、adobe以及flash等軟體內部工作原理以及相應軟體漏洞分析與利用技術優先;
- 熟悉操作系統的相關安全機制,掌握繞過漏洞緩解措施的基本方法;
- 熟悉windows系統安全,掌握windows核心編程優先;
- 熟悉漏洞挖掘和分析相關技術、工具以及平台,如Fuzzing測試,補丁比較、符號執行技術等。
- 能夠流暢的閱讀漏洞方面的英文資料,具備較強的漏洞學習和理解能力;
- 熟悉技術文檔的寫作、PPT製作、具備基本的工作彙報能力;
- 學習能力強、富有團隊精神、有責任心和進取能力;
- written by: coolsmurfs
學習路線:
- 漏洞相關概念熟悉基本概念和原理(二進位漏洞基本原理、漏洞類型、漏洞利用方法、常見漏洞挖掘、shellcode編寫)。
- 通過關鍵字(棧溢出、堆溢出、整數溢出、UAF、double-free、shellcode)進行Google/SecWiki等了解基本概念;
- 閱讀《Q版本緩衝區溢出》《0day漏洞挖掘》等書籍,學習二進位漏洞形成的基本原理和基本的利用方法,並進行實踐操作;
- 學習《加密與解密》中部分章節,熟悉Windows系統的重要數據結構、函數傳參方法以及PE文件結構等基礎知識。
- written by: coolsmurfs
- 熟悉相關的工具和平台使用
熟悉IDA、WinDbg、Ollydbg、Immunity Debugger、Bindiff,Metasploit等常見的漏洞分析調試和集成平台使用;
- 了解這些工具的使用背景和用途,可以通過Google/SecWiki等搜索了解。
- 下載安裝相應的工具和搭建相應的平台。
- 學習這些工具的功能和基本使用方法,收集有用的工具插件(如mona、idapython)。教程可以通過Google或者SecWiki上搜索。
- 學習常見工具的插件和腳步編寫方法,如WinDbg插件編寫、IDC和IDApython腳步編寫、od腳本編寫,具體可以Google相關教程。
- 熟悉Metasploit滲透工具的使用,重點熟悉漏洞模塊選擇、查看、配置利用以及shellcode導出配置等功能,並利用Metasploit進行實踐。具體教程可以Google:如Metasploit教程
- 待基本工具都熟悉後將相關工具做成一個工具箱。
- written by: coolsmurfs
- 漏洞樣本分析掌握基本的漏洞原理和利用思路後開始分析分析各種類型的漏洞並撰寫分析報告。
- 通過搜索引擎各大漏洞披露平台(exploit-db、CVE、binvul等)搜集歷年爆出來的比較經典的各種類型的二進位漏洞進行整理歸類,並同時搜集相應的漏洞分析教程。
- 根據漏洞描述搭建相應的漏洞調試分析環境,利用Metasploit生成樣本來進行漏洞重現,並根據漏洞分析報告自己調試分析。
- 待調試分析完成並掌握了漏洞觸發的原因和相應的利用方法後,認真總結,並撰寫自己的調試分析報告。
- 根據Metasploit中生成樣本的ruby源碼和調試過程的分析,自己嘗試編寫漏洞poc並進行驗證。
- 各個類型的漏洞分析3-5個,總結各種類型的漏洞的形成機理並及時進行歸納總結。
- written by: coolsmurfs
- 高級漏洞利用技術
學習掌握現在的主流高級漏洞利用技術,了解操作系統以及編譯器的各種漏洞利用緩解和保護措施以及相應的繞過方法。
- 了解現在操作系統以及編譯器的漏洞利用緩解和保護措施,如GS、DEP、ALSR、CFI等。
- 學習掌握針對這些緩解保護措施的基本方法,如SEH利用、堆噴射、ROP導向編程等。
- 學習掌握一些針對特定應用程序的高級利用技術:如IE腳步引擎高級利用技術、office漏洞利用繞過ALSR、office漏洞利用堆噴射、Flash高級漏洞利用技術。
- 通過一些在線掃描網站平台如malwr、VirusTotal、widespread kits等搜集一些在真實環境中使用的樣本(推薦通過閱讀一些安全公司的分析報告並獲取相關樣本的MD5值然後搜索下載),分析這些在野外使用的樣本中的各種高級漏洞利用技術並進行總結。
- 關注一些安全峰會的分享議題(如BlackHat等),對其中涉及到漏洞利用的高級技術進行學習和研究。
- written by: coolsmurfs
- 漏洞挖掘平台使用掌握主流的漏洞挖掘方法Fuzz測試以及各個Fuzz測試平台的使用。
- 熟悉Fuzz測試的基本原理,了解主流的Fuzz測試平台,如Peach-fuzz,AFL等。
- 搭建Peach-fuzz測試框架,熟悉Peach-fuzz的使用範圍,熟悉Peach-Fuzz的各個模塊的基本工作原理,掌握Peach-pit語法規則。
- 閱讀peach-pit的模板,以簡單的文檔格式為基礎,參照編寫相應的Peach-pit文件並對目標軟體進行Fuzz測試。
- 了解AFL的基本工作原理,掌握AFL的基本使用方法,下載安裝Windows平台的winafl,熟悉其使用,並利用其對Windows平台下的非開源軟體進行Fuzz測試。
- 在熟練使用以上Fuzz測試平台的基礎上,閱讀工具源碼,對其工作原理進行更深層次的了解,並在此基礎上根據自己需要開發定製化的工具。
- 熟悉掌握其他Fuzz測試框架或者平台。
- written by: coolsmurfs
- 關注安全動態、安全社區與安全會議關注相關的安全社區和安全大牛,掌握行業最新的安全資訊和安全發展動態。
- 收集國內外與安全相關的站點並及時整理製作瀏覽器書籤,每天定期抽時間查看,了解行業的最新動態和新時間。如(SecWiki-安全維基、Freebuf、看雪論壇、Binvul二進位安全、吾愛破解;
- 收集整理常見的漏洞披露平台製作成瀏覽器書籤,如exploit-db、CVE、Protekresearchlab,及時關注最新漏洞,對於感興趣的或者重要的漏洞都去實際分析調試一下。
- 通過Weibo、微信等平台關注國內一些安全大牛的博客或者一些知名的安全公賬號,及時了解安全達人的最新分享以及安全研究進展。
- 通過Twitter關注一些國外的安全界著名人士,,很多國外研究者都會定期在Twitter上發布其最新的研究成果,隨時跟蹤便可以了解國外的最新研究方向和研究現狀。
- 關注一些重要的安全峰會,如BlackHat、RSA等,收集相關感興趣的議題,對其中相關的議題進行學習研究。
- written by: coolsmurfs
- 腳步編程和符號執行框架學習選擇腳步語言Python、Perl、JavaScript中的一種,對語法進行熟悉,對常見庫進行學習,推薦學習Python,Python庫比較完善,可以大大提高工作效率。
- 搭建相應的開發環境,根據自己的喜好選擇相應的IDE,推薦Sublime等。
- 選擇一本合適的教程學習Python基礎語法,如《Python核心編程》。
- Python的基本語法學習完後,可以針對性的學習一些Python應用於逆向工程的庫,推薦學習《Python灰帽子》裡面介紹了常見的用於逆向工程的Python庫以及Python應用於immunity debugger和IDApython等方面的應用,利用這些庫可以開發很多自動化的分析工具,節省分析時間。
- 學習一些動態插樁分析工具,如intel開發的pin,並利用pin插樁平台可以開發一些污點追蹤分析的工具,同時可以在github上搜索與pin有關的項目,加入並學習。
- 學習一些符號執行框架或者平台,符號執行在程序分析和漏洞挖掘上被認為是最有潛力的研究方向,符號執行已經有成熟的框架被用於程序程序分析、自動化漏洞挖掘與利用。推薦學習平台:s2e、klee、angr。
- 搜集一些與符號執行相關的學術論文,進行學習。
- written by: coolsmurfs
- 漏洞自動化分析與挖掘安全工具的開發隨著人工智慧的發展,安全領域的研究也將向著以機器代替人的方向發展,在今年舉辦的CGC挑戰賽中,其主題"THE WORLDS FIRST ALL-MACHINE HACKING TOURNAMENT」就體現了由機器來代替人進行網路攻防對抗的理念,開發自動化的工具也將是下一步進一步發展方向。
- 在對各種漏洞類型成因有深入的研究和了解後,逐步對各個類型的漏洞建立相應的漏洞模型。
- 綜合利用符號執行以及機器學習等方法,結合建立的漏洞模型,開發相應的自動化漏洞挖掘原型系統,在人工盡量參與少的情況下自動化進行漏洞挖掘。
- 深入分析漏洞觸發的原因以及漏洞條件,結合符號執行的方法,建立一套針對漏洞自動化分析的平台,能夠支持挖掘系統產出的異常樣本進行可利用性評估以及利用生成等高級功能。
- 深入分析漏洞利用的過程以及利用技巧,建立相應的攻擊檢測模型,並開發相應的檢測系統,能夠針對各種類型的漏洞攻擊進行檢測並報警。
- written by: coolsmurfs
更多安全技能盡在:安全技能 -SecWiki,也歡迎大家通過微信對此文「Windows逆向工程師」學習技能進行讚賞!
-----微信ID:SecWiki-----
SecWiki,5年來一直專註安全技術資訊分析!SecWiki:https://www.sec-wiki.com推薦閱讀: