惡意軟件逆向工程:Ghidra 入門 -第二部分
逆向工程惡意軟件是網(wǎng)絡(luò)安全學(xué)科中最高級別的技能之一,它的薪資反映了其在網(wǎng)絡(luò)安全生態(tài)系統(tǒng)中的地位的提升。它需要多年的勤奮學(xué)習(xí)才能熟練掌握。惡意軟件逆向工程在整個(gè)網(wǎng)絡(luò)安全中被用作解開惡意軟件運(yùn)作秘密的方法,并提供歸因的線索。
在第一部分時(shí),我們簡單學(xué)習(xí)和了解了Ghidra,這是由美國國家安全局(也稱為 NSA)發(fā)布的開源逆向工程工具。在本教程中,我們將開始使用它來破解一些簡單的軟件,以幫助你熟悉這個(gè)出色的工具。
1、打開Ghidra
第一步,當(dāng)然是啟動(dòng) Ghidra,啟動(dòng)一個(gè)項(xiàng)目并打開一個(gè)文件。
練習(xí)程序下載:https://github.com/Maijin/radare2-workshop-2015/tree/master/IOLI-crackme

2、查找導(dǎo)出
下一步是轉(zhuǎn)到Symbol Tree,如下所示并展開導(dǎo)出(請記住,導(dǎo)出的函數(shù)是暴露給其他模塊供自己使用的模塊。要使用其他模塊導(dǎo)出的這些函數(shù),模塊必須先導(dǎo)入它們) .

你應(yīng)該在那里找到一個(gè)標(biāo)記為 _mainCRTStartup 的函數(shù)。
當(dāng)你單擊它時(shí),它將在反編譯窗口中打開其代碼,如下所示。

雙擊mingw_CRTStartup()函數(shù)跟進(jìn)


在第30行左右可以看到主函數(shù)。
3、展開 _main 函數(shù)
雙擊跟進(jìn),展開_main 函數(shù)


這些就是程序執(zhí)行時(shí)打印的語句


在printf語句下方,我們看到了 scanf 語句。這表示會從鍵盤接收用戶的輸入并將其放入名為local_lc的變量中。

在第 14 行,代碼對第 13 行中捕獲的字符串變量進(jìn)行字符串比較 (_strcmp),并將其與數(shù)字進(jìn)行比較。

這串?dāng)?shù)字可能是密碼。如果兩個(gè)字符串相同,字符串比較命令將返回 0,如果它們不同,則返回 1。
然后將比較結(jié)果的值被放入標(biāo)記為iVar1的變量中,該變量在第 5 行 (int iVar1) 中被聲明為整數(shù)變量。
在下一部分(第 15-22 行)中,代碼檢查 iVar1 中的值是等于 0 還是 1。如果等于 0,則打印Password OK:并驗(yàn)證用戶。如果等于 1,則打印Invalid Password!,并退出程序。

運(yùn)行嘗試

本節(jié)概括
Ghidra 能夠破解這個(gè)簡單的crackme,使我們能夠發(fā)現(xiàn)代碼中的密碼。接下來我們將破解越來越難的軟件,并利用 Ghidra 的功能來揭開它們的秘密!
說明
本文由合天網(wǎng)安實(shí)驗(yàn)室編譯,如需轉(zhuǎn)載,請注明來源 原文地址:Reverse Engineering Malware: Getting Started with Ghidra, Part 2 (hackers-arise.com): https://www.hackers-arise.com/post/reverse-engineering-malware-getting-started-with-ghidra-part-2
關(guān)于合天網(wǎng)安實(shí)驗(yàn)室
合天網(wǎng)安實(shí)驗(yàn)室(www.hetianlab.com)-國內(nèi)領(lǐng)先的實(shí)操型網(wǎng)絡(luò)安全在線教育平臺: http://www.hetianlab.com)-國內(nèi)領(lǐng)先的實(shí)操型網(wǎng)絡(luò)安全在線教育平臺
真實(shí)環(huán)境,在線實(shí)操學(xué)網(wǎng)絡(luò)安全 ; 實(shí)驗(yàn)內(nèi)容涵蓋:系統(tǒng)安全,軟件安全,網(wǎng)絡(luò)安全,Web安全,移動(dòng)安全,CTF,取證分析,滲透測試,網(wǎng)安意識教育等。