国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro

這篇具有很好參考價(jià)值的文章主要介紹了惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

利用IDA PRO分析Lab05-01.dll
實(shí)驗(yàn)?zāi)康?/strong>
利用IDA Pro分析Lab05-01.dll中發(fā)現(xiàn)的惡意代碼,回答以下問(wèn)題:

  1. DLLMain的地址是什么?

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
可以空格轉(zhuǎn)入反匯編查看DLLMain地址,或者
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
DLLMain的地址是.text:0x1000D02E。

  1. 使用Imports窗口并瀏覽到gethostbyname,導(dǎo)入函數(shù)定位到什么地址?

這樣的三步來(lái)尋找地址。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
地址是.idata:100163CC。

  1. 有多少函數(shù)調(diào)用了gethostbyname?

光標(biāo)滑到函數(shù)所在位置,按下+開(kāi)啟交叉引用。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
數(shù)一數(shù)發(fā)現(xiàn)不同地址的函數(shù)共有5個(gè),所以gethostbyname被5個(gè)不同的函數(shù)調(diào)用了9次。
類型p是被調(diào)用的引用,類型r是被讀取的引用。

  1. 將精力集中在位于0x10001757處的對(duì)gethostbyname的調(diào)用,你能找出哪個(gè)DNS請(qǐng)求將被觸發(fā)嗎?

按下G,快速跳轉(zhuǎn)。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
調(diào)用了函數(shù),32位匯編通常把參數(shù)存在eax中,查看一下什么東西導(dǎo)入了eax。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
后面正好有一句eax+0xD,所以解析的是后面這一部分的網(wǎng)址。

  1. IDA Pro 識(shí)別了在0x10001656處的子過(guò)程中的多少個(gè)局部變量?

按G定位到函數(shù),后面是負(fù)數(shù)的是局部變量。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
一共23個(gè)。

  1. IDA Pro識(shí)別了在0x10001656處的子過(guò)程中的多少個(gè)參數(shù)?

后面是正數(shù)的是參數(shù),所以共有一個(gè)參數(shù)。

  1. 使用Strings窗口,來(lái)在反匯編中定位字符串 \cmd.exe /c, 它位于哪兒?

+ 打開(kāi)Strings窗口,搜索該字符串。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
它的位置是 xdoors_d:10095B34 。

  1. 在引用 \cmd.exe /c的代碼所在區(qū)域發(fā)生了什么?

跳轉(zhuǎn)到它的調(diào)用部分。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
看起來(lái)像是遠(yuǎn)程攻擊者開(kāi)啟了一個(gè)遠(yuǎn)程shell對(duì)話。

  1. 在同樣的區(qū)域,在0x100101C8處,看起來(lái)dword_1008E5C4好像是一個(gè)全局變量,它幫助決定走哪條路徑。那惡意代碼是如何設(shè)置dword_1008E5C4的呢?(提示:使用交叉引用)

雙擊進(jìn)入data處,查看交叉引用,發(fā)現(xiàn)只有一處是對(duì)它進(jìn)行了修改。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft

.text:10001673 call sub_10003695
.text:10001678 mov dword_1008E5C4, eax

進(jìn)入該函數(shù)看一看,

.text:10003695 VersionInformation= _OSVERSIONINFOA ptr -94h
.text:10003695
.text:10003695 push ebp
.text:10003696 mov ebp, esp
.text:10003698 sub esp, 94h
.text:1000369E lea eax, [ebp+VersionInformation]
.text:100036A4 mov [ebp+VersionInformation.dwOSVersionInfoSize], 94h
.text:100036AE push eax ; lpVersionInformation
.text:100036AF call ds:GetVersionExA
.text:100036B5 xor eax, eax
.text:100036B7 cmp [ebp+VersionInformation.dwPlatformId], 2
.text:100036BE setz al
.text:100036C1 leave
.text:100036C2 retn
.text:100036C2 sub_10003695 endp

調(diào)用了GetVersionEx,用于獲取操作系統(tǒng)版本的信息,其中將dwOSVersionInfoSize與數(shù)字2進(jìn)行比較,來(lái)確定如何設(shè)置AL寄存器。如果PlatformId為VER_PLATFORM_WIN32_NT,AL會(huì)被置位,只是簡(jiǎn)單的判斷當(dāng)前操作系統(tǒng)是否Windows 2000或更高版本,我們可以得出結(jié)論,該全局變量通常會(huì)被置為1.

  1. 在位于0x1000FF58處的子過(guò)程中的幾百行指令中,一系列使用memcmp來(lái)比較字符串的比較。如果對(duì)robotwork的字符串比較是成功的(當(dāng)memcmp返回0),會(huì)發(fā)生什么?

.text:10010444 loc_10010444: ; CODE XREF: sub_1000FF58+4E0j
.text:10010444 push 9 ; Size
.text:10010446 lea eax, [ebp+Dst]
.text:1001044C push offset aRobotwork ; “robotwork”
.text:10010451 push eax ; Buf1
.text:10010452 call memcmp
.text:10010457 add esp, 0Ch
.text:1001045A test eax, eax
.text:1001045C jnz short loc_10010468
.text:1001045E push [ebp+s] ; s
.text:10010461 call sub_100052A2
.text:10010466 jmp short loc_100103F6

如果memcmp返回0,jnz是不是零的時(shí)候就跳轉(zhuǎn),會(huì)執(zhí)行sub_100052A2函數(shù),進(jìn)入函數(shù)內(nèi)部看看。

.text:100052DF push eax ; phkResult
.text:100052E0 push 0F003Fh ; samDesired
.text:100052E5 push 0 ; ulOptions
.text:100052E7 push offset aSoftwareMicros ; “SOFTWARE\Microsoft\Windows\CurrentVe”…
.text:100052EC push 80000002h ; hKey
.text:100052F1 call ds:RegOpenKeyExA

發(fā)現(xiàn)首先用RegOpenKeyExA函數(shù)打開(kāi)了注冊(cè)表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,然后查詢了aWorktime和aWorktimes鍵也就是worktime和worktimes鍵的值,然后調(diào)用了sub_100038EE函數(shù),
雙擊進(jìn)入sub_100038EE函數(shù)查看,發(fā)現(xiàn)其調(diào)用了了malloc函數(shù)創(chuàng)建了內(nèi)存空間,然后又調(diào)用了send函數(shù),最后調(diào)用了free函數(shù)釋放內(nèi)存空間,所以猜測(cè)可能是對(duì)注冊(cè)表SOFTWARE\Microsoft\Windows\CurrentVersion進(jìn)行了修改或查詢操作,然后再將結(jié)構(gòu)發(fā)送出去。

  1. PSLIST導(dǎo)出函數(shù)做了什么?

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
通過(guò)菜單View->Open Subview->Exports,查看該DLL的導(dǎo)出表。在其中可以看到PSLIST,雙擊它,光標(biāo)來(lái)到0x10007025處,也就是導(dǎo)出項(xiàng)代碼的起始處。這個(gè)函數(shù)選擇兩條路徑之一執(zhí)行,這個(gè)選擇取決于sub_100036C3的結(jié)果。sub_100036C3函數(shù)檢查操作系統(tǒng)的版本是Windows Vista/7,或是 Windows XP/2003/2000。這兩條路徑都使用CreateToolhelp32Snapshot函數(shù),從相關(guān)字符串和API調(diào)用來(lái)看,用于獲得一個(gè)進(jìn)程列表。這兩條代碼路徑都通過(guò)send將進(jìn)程列表通過(guò)socket發(fā)送。

  1. 使用圖模式來(lái)繪制出對(duì)sub_10004E79的交叉引用圖。當(dāng)進(jìn)入這個(gè)函數(shù)時(shí),哪個(gè)API函數(shù)可能被調(diào)用??jī)H僅基于這些API函數(shù),你會(huì)如何重命名這個(gè)函數(shù)?

首先定位到0x10004E79,然后將光標(biāo)移動(dòng)到感興趣的函數(shù)名上,通過(guò)菜單的View->Graphs->User Xrefs Chart,我們可以得到函數(shù)的交叉引用圖。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
該函數(shù)調(diào)用了GetSystemDefaultLangID和send,該信息告訴我們,該函數(shù)可能通過(guò)socket發(fā)送語(yǔ)音標(biāo)志,因此,右擊函數(shù)名,給他一個(gè)更有意義的名字,例如send_languageID

  1. DllMain直接調(diào)用了多少個(gè)Windows API?多少個(gè)在深度為2時(shí)被調(diào)用?

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
DLLMain直接嗲用了strncpy,strnicmp、CreateThread 和 strlen這些API。進(jìn)一步地,調(diào)用了非常多的API,包括Sleep、WinExec、getthostbyname,以及許多其他網(wǎng)絡(luò)函數(shù)調(diào)用。

  1. 在0x10001358處,有一個(gè)對(duì)Sleep(一個(gè)使用一個(gè)包含要睡眠的毫秒數(shù)的參數(shù)的API函數(shù))的調(diào)用。順著代碼向后看,如果這段代碼執(zhí)行,這個(gè)程序會(huì)睡眠多久?

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
查看一下什么進(jìn)了eax。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
是個(gè)30。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
乘了1000。
所以惡意代碼會(huì)休眠30秒。

  1. 在0x10001701處是一個(gè)對(duì)socket的調(diào)用,它的3個(gè)參數(shù)是什么?

2,1,6

  1. 使用MSDN頁(yè)面的socket和IDA Pro中的命名符號(hào)常量,你能使參數(shù)更有意義嗎?修改后,參數(shù)是什么?

Winsock2.h

SOCKET WSAAPI socket(
  [in] int af,
  [in] int type,
  [in] int protocol
);

https://learn.microsoft.com/zh-cn/windows/win32/api/Winsock2/nf-winsock2-socket
它的每個(gè)值的含義都在這里面。
我找了找,分別對(duì)應(yīng):
AF_INET
SOCK_STREAM
IPPROTO_TCP
可以這樣進(jìn)行修改。
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft

  1. 搜索in指令(opcode 0xED)的使用。這個(gè)指令和一個(gè)魔術(shù)字符串VMXh用來(lái)進(jìn)行Vmware檢測(cè)。在這個(gè)惡意代碼中被使用了嗎?使用對(duì)執(zhí)行in指令函數(shù)的交叉引用,能發(fā)現(xiàn)進(jìn)一步檢測(cè)Vmware的證據(jù)嗎?

惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
有“VMXh”樣式字符串,可能有檢測(cè)虛擬機(jī)的行為。

  1. 將你的光標(biāo)跳轉(zhuǎn)到0x1001D988處,你發(fā)現(xiàn)了什么?

在0x1001D988處可以看到一些看起來(lái)隨機(jī)的數(shù)據(jù)。

  1. 如果你安裝了IDA Python插件(包括IDA Pro的商業(yè)版本插件),運(yùn)行Lab05-01.py,一個(gè)IDA Pro Python腳本(確定光標(biāo)是在0x1001D988處),在運(yùn)行該腳本后發(fā)生了什么?

首先安裝IDAPython,參考鏈接如下:
https://blog.csdn.net/betabin/article/details/7318233
https://www.cnblogs.com/afublog/p/11228771.html
惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro,惡意代碼分析實(shí)戰(zhàn),c++,java,microsoft
運(yùn)行之后,不再是亂碼了。

  1. 將光標(biāo)放于同一位置,你如何將這個(gè)數(shù)據(jù)轉(zhuǎn)成一個(gè)單一的ASCII字符串?

按下A鍵,就可以將其變?yōu)橐粋€(gè)可讀字符串了:

xdoor is this backdoor, string decoded for Practical Malware Analysis Lab :)1234

  1. 使用一個(gè)文本編輯器打開(kāi)這個(gè)腳本。它是如何工作的?
sea = ScreenEA()

for i in range(0x00,0x50):
        b = Byte(sea+i)
        decoded_byte = b ^ 0x55
        PatchByte(sea+i,decoded_byte)

該腳本的工作原理是,對(duì)長(zhǎng)度為0x50字節(jié)的數(shù)據(jù),用0x55字節(jié)的數(shù)據(jù),用0x55分別與其進(jìn)行異或,然后用PatchByte函數(shù)在IDA中修改這些字節(jié)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-654490.html

到了這里,關(guān)于惡意代碼分析實(shí)戰(zhàn) 3 IDA Pro的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包