2019年12月26日 星期四

病毒程式(Virus)的淺入介紹

第一次接觸病毒程式大約是在大學三年級,在此之前,就一直很好奇,要如何撰寫病毒的程式碼,那麼在大學期間就一直秉持著,想要學習一種技術,就必須自己實作它,所以就嘗試撰寫Linux平台上的病毒程式碼。

2019年12月18日 星期三

為什麼總是不能完整破解軟體(full crack)

在學習逆向工程的時候,應該有不少人會嘗試想要破解一些軟體的序號驗證,不過常常都破解不完整,像是每次執行軟體後都需要重新輸入序號,雖然已經繞過了驗證序號程序,不過每次輸入序號也很麻煩,那麼如果能完整破解不是更有挑戰性?

2019年12月13日 星期五

劍靈(Blade & Soul) 逆向分析研究 - 列舉人物技能ID

在自動化的過程中,必須要分析人物的攻擊,那麼就要知道程式是使用哪個函式來調用技能,在調用技能之前需要將技能的所有物件和ID列舉出來,所以這次的工作就是把技能物件、技能ID、名稱印出來。

2019年12月7日 星期六

劍靈(Blade & Soul) 逆向分析研究 - 附近怪物的遍歷

上一次的逆向分析是關於人物的血量和魔力值,那麼這次的分析是附近怪物的遍歷,只要是接近我們的怪物就印出怪物的名稱和血量,那麼在尋找遊戲中的遍歷程式碼就相當的關鍵,如果不熟悉遊戲的架構,在分析怪物的物件就會比較困難,因此只要了解任何一款MMORPG的架構,就能輕易的找到遍歷的位址。

2019年11月29日 星期五

108年金盾決賽試題 - Android逆向分析

在今年也剛好有負責金盾決賽的題目,題型是Android逆向分析,需要找出裡面的Flag,雖然難度不難,但也可以學習如何逆向Dex、so相關的執行檔,是個不錯練習的機會,因為金盾賽是只能大專校院學生報名,所以將提供我自己設計的題目給大家知道金盾決賽的題型脈絡。

2019年11月23日 星期六

劍靈(Blade & Soul) - 血量與魔力值分析

在研究Bot時,分析人物的血量是開始的第一步,不過對於不熟悉逆向的同學,可能這步就非常困難,但對於逆向高手當然是輕而易舉,由於人物的血量在遊戲的介面是可以顯示他的數值,因此搜尋血量值就變得相較簡單,那麼在撰寫程式需要獲取他的位移值(Offset Value),這邊有人會有疑問,為什麼要獲取位移值 ? 因為遊戲重新啟動,他的DLL(Dynamic-Link Library)或EXE的模組起始位址可能每次都不一樣,所以如果不獲取到模組的位移值,就不能每次都穩定的抓取血量和魔力值。

2019年11月8日 星期五

壓縮殼(Compression Packer)逆向分析

現今的惡意程式大多數都會加殼(Packer)來保護自己,因為它不想那麼容易被防護軟體或者被別人逆向出運作原理,所以它會透過加殼(Packer)的方式來保護自己,因此如果想要靜態分析(動態分析不一定要解殼(Unpacker),就需要將它解殼(Unpacker)才能完整地看到程式碼。

2019年10月30日 星期三

ICMP Backdoor 逆向分析

之前有討論過關於後門(Backdoor)/木馬(Trojan)的分析,也說明它有兩種運行的方式,大多數惡意程式會使用Reverse Backdoor來建立未授權的遠端連線到駭客的中繼站,那麼它並不會馬上建立Reverse Backdoor的連線,所以需要使用HTTP(80)或SSL(443)來當作媒介,只要駭客傳遞給惡意程式指令,就能建立Reverse Sell(未授權的遠端連線),這樣就很難發現當前系統有被執行Reverse Sell,那麼最常當作媒介不外乎就是HTTP和SSL,這兩種網路協定,因此這篇就討論另一個有趣的協定ICMP,透過它來當作傳遞執行Reverse Sell的指令。

2019年10月17日 星期四

木馬(Trojan)/後門(Backdoor)逆向分析

以前在學習惡意程式分析,都會先了解此惡意程式是如何撰寫的,這樣才能直搗黃龍,那麼此篇就來分析最常遇到的惡意程式:

2019年10月5日 星期六

Linux - Rootkit

現今越來越多惡意程式在肆虐系統,不過大多數的惡意程式,防毒軟體都可以識別,像是後門/木馬、檔案加密、鍵盤側錄等等都可以輕易阻擋,然而也有進階的惡意程式非常難抵抗,像是Rootkit,那麼什麼是Rootkit,顧名思義就是能提升到root權限的程式,不過它有二種形式的運行方式,第一種是在應用層(ring3)幫助駭客提升權限,這種就很好解決它,另一種是存在於核心層(ring0),這種就比較頭痛,因為它能攔截(Hook)系統呼叫(system call),所以能輕易的隱藏檔案、防止檔案被刪除,甚至無法將它移除(需要找到它的實際檔案在哪裡,不然無法根除),因此防毒軟體才會難以阻擋這種高強度的惡意程式,那我們就來瞭解要如何利用Rootkit來提升權限。

2019年9月7日 星期六

How can i get sys_call_table on Linux 64 bit ?

這篇是關於如何獲取sys_call_table位址教學,那麼什麼是sys_call_table,它是Linux平台上提供給Kernel使用的系統呼叫(system call),像是開檔的系統呼叫(sys_open)、寫檔的系統呼叫(sys_write),這些都是提供給Kernel所使用的,因此只要獲取sys_call_table的位址,就能攔截(Hook)系統上的所有系統呼叫,然而駭客只要透過攔截sys_call_table裡的系統呼叫,就能輕而易舉達到隱藏檔案、隱藏網路埠(port),甚至是提權到root,那我們來看看,到底是如何獲取sys_call_table的位址。

2019年8月31日 星期六

Linux 0.11 Compile and running on bochs

對於資訊工程或是駭客技術有興趣的同學,不妨嘗試撰寫作業系統,絕對會讓您的技術更上一層樓,那麼不知道如何從哪裡開始撰寫作業系統的同學,可以參考Torvalds在大學時期撰寫的Linux 0.11版本,不過為什麼要選擇那麼舊的0.11版本,因為此版本僅單純的處理bootloader、paging、heap、virtual filesystem (VFS)、Multitasking、User mode、syscalls,並沒有關於tcp/ip和複雜的演算法等等的程式碼,因此可以很專注的分析基本作業系統的原理。

2019年8月29日 星期四

peter-dbg tutorial

使用bochs模擬器來撰寫屬於自己的作業系統時,可能會遇到一些程式上的Bug或是一些邏輯錯誤,在小型程式(大約幾百行程式碼)都很好解決,那麼我們是撰寫作業系統等級的程式,程式碼都是上萬行,因此需要一款較好用的Debugger,常見的Debugger有GDB (GNU Debuger)、DDD (Data Display Debugger,介面化的GDB),不過這些Debugger都不能觀察GDT (Global Descriptor Table)、IDT (Interrupt Descriptor Table)、LDT (Local Descriptor Table)、Page table、CR 0-4 register (Control Register)等等資訊,如果遇到是關於在建構Page table的問題,就很難知道是這個環節的Bug,因此這篇就是介紹功能強大的Debugger,” peter-dbg”。

2019年8月24日 星期六

Write your own operating system by bochs

以前在大學時,在上作業系統的課程,發現老師只會在課本紙上談兵,並沒有任何的實務操作,然而學習作業系統是必須要撰寫程式才能習得它的精隨所在,像是GDT (Global Descriptor Table)、IDT (Interrupt Descriptor Table)、Paging和Multitasking,這些都是要透過撰寫程式,然後了解它的運作,不然很難真正的體會作業系統厲害之處,其中想要開始撰寫自己的作業系統的同學,我在這邊推薦一款免費又好用的模擬器bochs,安裝和設置都很簡易,這樣能輕易就將自己寫的程式運行在bochs模擬器。

2019年8月16日 星期五

Counter Strike Source - AI

在念研究所的期間利用空閒時間,嘗試撰寫射擊遊戲的Artificial Intelligence,也就是利用自己寫的程式跟遊戲中的電腦互打,在這過程還蠻有趣的,需要分析整個遊戲的地圖,然後再路徑規劃(PathFinder),以及蒐集在記憶體上的人物資訊,例如座標、血量、隊伍等等,有了這些資訊就能追蹤敵人的座標,不過還需要找出控制自己的移動和射擊,這樣就能擊殺敵人了。

2019年8月11日 星期日

Counter Strike Source - Aimbot

這篇是關於射擊遊戲的自動瞄準技術介紹,那麼什麼是自動瞄準 ? 顧名思義就是將射擊的準心自動移到敵人的頭部,有玩過射擊遊戲的人,多少有聽過此類外掛,然而卻不知道自動瞄準的外掛是如何製做的,接下來我們就準備探討它的相關技術。

2019年8月1日 星期四

106年金盾決賽試題 - Heap overflow

在整理檔案時,發現封存在D槽已久的檔案,這個檔案就是當時負責的計劃”金盾決賽題目”,我被分配到的題目難度是困難的等級,因此就有一些大膽的想法。就在不久之前,有同事約我打Defcon的競賽,那次也是第一次參與這個競賽,只解出幾題,同時也發現竟然這些題目都是跟Linux漏洞相關的題目,像是stack、heap、format string等等的弱點分析,當下覺得蠻驚訝的,因為這些都是以前在大學研究過的弱點,很少競賽會將題目出的如此實戰,所以藉由這次比賽經驗,能讓我將題目設計的更加實戰。

2019年7月27日 星期六

Counter Strike Source - Data Collect

此篇是介紹分析射擊遊戲(Counter Strike Source)的結構資訊,因為想要撰寫AimBot(自動瞄準)相關的外掛,或者是添加自己的AI(Artificial Intelligence)讓它自動去尋找獵物,這些免不了需要知道自己和敵人的坐標、血量以及相關的地圖資訊,那麼我們就能利用這些資訊來達成我們的目的。

2019年7月5日 星期五

Windows踩地雷逆向工程

記得在剛上大學時,在電腦教室上課,發現隔壁同學非常認真的在使用電腦,仔細一看,原來是認真的玩Windows內建的踩地雷遊戲,回到宿舍後,我也來玩踩地雷,不過是將它丟到反編譯軟體,分析裡面的運作原裡。

2019年7月1日 星期一

監控Windows平台的cmd.exe輸入指令

在Linux監控使用者輸入指令(Bash)可以使用audit工具,那麼如果在Windows環境下要如何監控cmd.exe的輸入指令呢 ? 從網路上查一下相關資訊,只發現按F7會出現指令的紀錄,沒辦法像audit即時紀錄指令,因此我們只好自己開發了。

2019年6月30日 星期日

pietty 帳密側錄

回想在大學期間練習逆向工程,每次看到執行檔都想直接反編譯的衝動,特別是遊戲相關的程式,不過有時遇到需要輸入帳密的通訊軟體,也特別想去找到處理帳號和密碼的字串,這樣就能輕鬆的獲取登入的帳密了,那麼這次的篇章就是探討pietty的ssh通訊連線軟體,那麼要如何不使用鍵盤側錄的方式來獲取登入的帳號和密碼呢 ?

2019年5月24日 星期五

遊戲外掛入門介紹

由於遊戲外掛是遊走合法與非法的灰色地帶,因此在尋找網路的教學,會比較難找到相關的資訊,入門的門檻也非常高,那麼此篇就來簡單的探討遊戲外掛製作的相關技術。

2019年5月23日 星期四

Android Method Hook

使用IDA Pro動態分析Android APP,有時會因為前端的介面不能逾時太久,不然APP會瞬間崩潰,那麼也有可能會遇到偵測APP是否有被Debug,如果有,APP也會瞬間閃退,因此我們需要透過一種辦法,能不在動態分析APP的情況,也能獲取Method的傳入結果;也要能偽造回傳結果,這樣就能取代傳統的動態分析,因此就不會遇到上述的問題,不過要如何辦到既能獲取Method的傳入結果,也要能偽造回傳結果呢 ?

2019年5月22日 星期三

x64dbg - 程式流程控制圖另存新檔

在x64dbg的分析功能有程式的流程控制圖可以很直觀的判斷它是從哪裡跳轉到哪邊,不過有時圖太大不好截圖說明,那麼就只能將完整的圖再另存新檔,那麼本篇就是教學如何將它另存新檔。

2019年3月27日 星期三

Android odex to dex

本篇主要是教學如何從odex (Optimized Dalvik Executable)轉譯成dex格式檔案,由於Android在運行時會將dex檔案轉成odex放到/data/dalvik-cache目錄下,每次執行都會從這邊將檔案載入,因此從記憶體裡面拖(Dump)出來的檔案都是odex檔,如果將它丟到反編譯的軟體,大部分都會出錯,因此需要轉成dex格式才行。

010Editor 工具應用

在分析Android的Dex (Dalvik Executable)檔案格式,由於使用一般的16進制編輯器只會顯示Ascii碼,因此會非常不好分析,所以可以使用一些有支援Dex格式的編輯器就會比較得心應手。

010Editor是一款商用軟體,不過可以試用30天,因此可以試試看透過它來分析Dex的威力。

2019年3月19日 星期二

不是說好只要改JMP就能破解軟體了嗎

通常在破解軟體時,主要會修改條件式邏輯(JMP),就可以繞過驗證的程序,因此就能一直使用破解後的軟體了。

在十幾年前確實破解軟體僅改JMP就可以破解軟體,不過現今的軟體大部分都會將驗證程序隱藏得很好,抑或是將驗證程序移到其他的DLL檔案,並且使用一些Anti-Debugger的方法來抵擋駭客,因此現今想要破解軟體,很有可能連驗證的JMP都找不到,一定要相當程度的駭客經驗,才能對軟體驗證駕輕就熟。

那麼此篇章就比較一下以前跟現在軟體驗證的差異。