全部,PE注射圖像遷移
我一直在試圖弄清楚這幾天現在,我需要一些幫助。
對於一個研究項目我寫了一些自定義的惡意軟件,惡意軟件本身並不是問題,我不會分享任何代碼,但我確實需要一些幫助。
我有一些問題,試圖完全理解如何以及何時需要執行手動重定位。目前我沒有重新定位並使用virtualallocex的隨機地址,並且一切正常。我的惡意軟件exe運行,我沒有問題,除非遠程進程PE加載的內存位置與我的惡意軟件PE首選基地址重疊。
我沒有使用NtUnmapViewOfSection,因爲它被AntiVirus檢測到,基本上只是一個垃圾函數,它隨機不起作用,所以我的計劃是使用VirtualAllocEx提供的隨機地址,並在需要時重新定位(我不明白,請看下面的問題)。
這是我目前的工作方法(除非目標進程與preferredbase重疊):
- 下載惡意軟件的exe和發生在緩衝
- 的CreateProcess啓動受害人過程
- 掛起線程之後(我我沒有使用CREATE_SUSPENDED標誌,因爲這在win10中不起作用)
- 從緩衝區(PIMAGE_DOS_HEADER,PIMAGE_NT_HEADERS)獲取必要的標題信息,也從遠程進程獲取ImageBase地址PEB
- 分配在目標進程(VirtualAllocEx的)內存,採用NULL爲lpAddress所以VirtualAllocEx的可以選擇的位置
- 寫PE頭和部分內存位置
- 保護內存
- 變化EAX新的入口點
- 變化PEB新baseAddress
- ResumeThread
- 利潤
所以,請幫助我瞭解以下內容:
爲什麼沒有做任何手動遷移這項工作,有沒有做這個即使我注射的背景有些神奇的PE裝載器?
當目標進程與首選基地址重疊時,它爲什麼不起作用? PE映像本身被複制到一個不重疊的內存位置,所以當目標進程不重疊時,如何在地獄中與我的工作解決方案有所不同。它應該只是從我的第一個問題做魔術搬遷的事情。
爲什麼我看到很多人在將圖像寫入內存之前先更改圖像中的preferredBaseAddress?據我所知,這個字段僅用於將PE映射到他們的首選baseaddress,如果他們不能這樣做PE加載器執行重定位。看到注入代碼通常執行自己的手動重定位,我不知道他們爲什麼會改變它。
希望有人能幫助我理解,因爲這會讓我瘋狂:)。
此致敬禮!
所有的,我創建了我自己的重定位代碼,現在它可以工作,但在將圖像複製到內存之前,我必須更改圖像中的preferredBaseAddress。 仍然搞清楚爲什麼它沒有重定位代碼,爲什麼我需要改變首選基地以及PEB – yannickwe87