文章列表

EP50 - 從遊戲外掛到逆向工程大師 | 資安研究員 馬聖豪

Podcast連結


本集章節

00:32 踏入資安圈的契機
01:04 從使用外掛到自己做外掛
05:46 遊戲外掛產業
10:57 外掛與資訊安全的關聯
12:51 什麼是逆向工程 Reverse Engineering
15:25 學習與邁向逆向工程大師之路
19:52 在各大資安研討會演講的經驗
21:09 資安研究員都在做什麼?
22:32 資安研究員與駭客的差異
24:19 台灣資安的現況
29:20 寫書的契機與目的
32:39 給聽眾的資安防護技巧

遊戲外掛與資訊安全

早期聖豪是因為接觸遊戲外掛而開始學習到資安相關技術

最初在拿到別人寫好的外掛後,想要去解開其他破解者替外掛設下的限制而開始研究相關技術,後來著逐漸開始研究遊戲本身,尋找遊戲的漏洞來開發自己的外掛。

在參加過HITCON研討會以後,發現自己用來破解遊戲與外掛的技術其實就是資安上常用逆向工程。

在破解遊戲的時候,會需要去研究龐大的遊戲系統,尋找遊戲缺陷跟漏洞,並利用這些漏洞來開發外掛,而在資安上研究員會要去研究整個作業系統,尋找系統上的漏洞,透過這些漏洞來開發惡意程式或是研究防禦方法和修補,這兩者上是有很大的相似度的。

逆向工程

前情提要:程式編譯

人類說的語言與電腦能理解的語言不同,我們無法直接透過人類的語言對電腦下指令,反之我們也無法直接讀懂電腦的語言。

編譯器就像是一個翻譯,它會把人類讀得懂的程式語言轉化為電腦讀得懂的二進位檔案(如exe檔)。

在寫程式的時候,我們會先用程式語言來撰寫我們的指令,再用編譯器來將它轉換為電腦的語言,讓電腦知道我們想要它做什麼。

很多時候學校老師會說編譯是一個不可逆的行為,當我們透過編譯器把程式語言轉化為電腦讀得懂的二進位檔案後就無法將那個檔案回復為程式語言了,但實際上我們可以透過逆向工程的技術做到這件事。

逆向工程 Reverse Engineering

概括而言,逆向工程就是將一個程式透過包含旁錄、側錄行為、反編譯工具等等的不同方式,去釐清程式背後的行為以及這個程式會達到什麼效果

逆向工程會透過晶片領域的方式去思考,將二進位的檔案回推出它是怎麼跑的

逆向工程能夠處理的不只有二進位的檔案,也包含了C++、Python、.NET、Node.js等等的程式語言。只要檔案有因為經過編譯變得無法直接解讀,去解析跟逆推這個目標的邏輯都算是逆向工程。

通俗的說法就是,將一個原本只有電腦讀得懂的檔案反推回人類讀得懂的語言

逆向工程的學習資源

AIS3

教育部所推出的 新型態資安實務主題課程 AIS3,是為期一週的暑期資安實務課程,以透過實際操作來提昇資安能力,開放給大專院校及高中生參與,想參加須先通過 pre-exam 的測試。AIS3 課程內容,邀請了國內教授、業界前輩、國外資安相關企業成員來擔任講師,傳授目前社會與實際企業遇到的資安問題與相關連的技術。

書籍

  • Windows APT Warfare - 聖豪自己寫的書
  • 加密與解密 - 段鋼
  • 逆向工程核心原理 - 李承遠

頂級研討會的研究員分享

透過追蹤大型資安研討會的研究員在研究什麼,來了解逆向工程的最新趨勢

資安研究員

聖豪目前在台灣的一資安公司擔任資安研究員,主要工作是在研究新的攻擊領域的東西,每天會要研究不同學術論文以及網路上其他人分享的攻擊研究,在發現新東西以後會先想辦法去複製這樣的攻擊或是行為,並研究公司所提供的資安解決方案是否能正確地去應對這些新的攻擊和手法,如果不行的話就要去想辦法更新和修補。

許多國外的駭客也都是資安研究員,他們在發現新東西以後也會以部落格的形式分享在網路上,因此每天追蹤不同資安研究員的新發現也是很重要的工作項目。

駭客精神

駭客代表的是對技術研究有一定熱忱的研究員,指的不一定是既定印象中有牽扯犯罪行為的那些人。

很多有駭客精神的人都是資安領域的專家,但他們都有賺錢養家的需求,因此會選擇不同的賺錢方式,包含了當黑帽駭客在黑市賣漏洞或是惡意程式,以及當白帽駭客來替資安公司研究其他攻擊者的攻擊方式並幫忙防守。

台灣的現況

當我們提到駭客以及資安相關工作,即便是以攻擊者的角度執行,也不是很多人腦中想的做壞事、散播惡意程式那種,透過攻擊者的角度來研究,可以幫助組織跟企業了解他們面對了哪些威脅。

聖豪認為,台灣目前資安產業中還是以做防禦方以及解決方案的人比較多,缺乏更多的攻擊方觀點與人才。

目前有許多企業都只是為了應付法規而去購買一些最便宜的資安產品,這樣的行為並不能真正的確保他們產品的安全性。

當台灣有更多從事攻擊角度的研究員的話,就可以讓台灣的企業和商家去了解有多少危險潛伏在四周,從而正視資安的重要性,才能讓台灣的企業去更認真地看待資安並提升他們產品的防護。

寫書動機

要精通逆向工程會需要了解三大領域:資料結構、作業系統的原理與實作、逆向工程的技巧

目前台灣在逆向工程相關的書籍很匱乏,市面上沒有一本書是有完整的涵蓋了這三大領域。實務上逆向工程最常被用來分析惡意程式,在這個部分市面上的書本以及網路上的文章較多是教你見招拆招,比較沒有資源是教你逆向工程的核心心法,讓你知道如何去了解惡意程式的行為。

因此聖豪決定結合自己的知識與經驗來自己寫一本逆向工程的書,希望這本書可以幫助到想要踏入資安、逆向工程領域的學生去更完整的理解和認識逆向工程。

書中會從作業系統開始,教我們理解Windows作業系統是怎麼運作的、作業系統是怎麼去執行一個程式,從這個角度去理解作業系統可能會有哪些漏洞以及各國的網軍是怎麼利用這些漏洞來進行攻擊。

Windows APT Warfare:惡意程式前線戰術指南 博客來天瓏書店

污點分析 Taint Analysis

污點分析是資安和軟體工程上會使用的一種技術,透過檢視應用程式中用戶的輸入流程,來了解預期外的輸入會不會對應用程式的執行造成惡意的影響。

就像是一個房子漏水的時候,我們可以在水塔中滴入紅墨水並追蹤房子內的哪些管線有出現紅墨水,透過這個方式來追蹤找出房子哪裡漏水。

在實務上當攻擊者要對目標執行攻擊時,可以對目標進行污點分析來了解可以接觸到目標的方式,這可能是Email、社群網站或是目標會下載程式的網站,接著攻擊者就可以從這些角度去發動攻擊,像是寄送釣魚信件、發送釣魚訊息、散佈木馬程式等等的。

除了用來攻擊跟分析以外,我們也可以透過污點分析的方式來了解跟保護自己,我們可以在上網過程中思考自己當下的行為是不是安全的,有沒有可能出現一些弱點。在瞭解了自己的上網行為以後,接著確保自己覺得重要的網站、程式,是由安全、可信任的來源取得的,不是從有疑慮的網站下載無法確定安不安全的程式。

聯絡資訊

Facebook:馬聖豪 Ma Sheng Hao

部落格:Hao’s Arsenal

Twitter: @aaaddress1

商業工作洽談請聯繫經紀人:蝦蝦 [email protected]il.com