干貨分享 | 一次源碼免殺 ,重在思路
現在的shellcode分離免殺,遠程內存加載已經很流行也比較實用了,基本被殺了改改又可以過,本篇分享下最近的一次免殺的思路,主要是思路,遇到一個點如何去對下一步進行處理。
用到的工具:
1. VC6.0++ 2. 一款源碼控 3. 輔助工具包
正文:
一個老款的控,先看下界面和簡單的目錄結構

update目錄下文件

主要對dat和dll文件進行處理,載入Resource看了下資源信息,又看了看dat主程序代碼,不是資源釋放的dll,而是通過dll加載到dat完成的生成小馬流程。
不用分開單獨做,一個一個殺軟去做就行了
火絨
server.dat:
爆后門病毒,myccl特征碼定位
[特征] 0002E070_00000002
載入C32發現定位到沒用的日志處

對源碼進行區段合并預處理,vc編譯模式簡單設置一下并取消產生日志編譯模式
#pragma comment(linker, "/defaultlib:msvcrt.lib /opt:nowin98 /IGNORE:4078 /MERGE:.rdata=.text /MERGE:.data=.text /section:.text,ERW")

組建編譯,檢測還是爆后門病毒,覺得不應該,重新myccl定位了一遍,這才定位到點上了
[特征] 00020D6E_00000002 GetModuleHandleA wsprintfA [特征] 00020DC4_00000004 無法確認定位的內容
函數在vc6中搜索挨個動態調用

00020DC4此處無法修改,通過對第一處定位的函數動態調用 組建后重新載入C32中,得到真正的特征函數VirtualAlloc、VirtualProtect
動態調用即可過掉火絨。
server.dll:
隱藏字符串就過了
[特征] 0001B0BB_00000002 HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0 [特征] 0001B355_00000002 %s%s*.*

-------------------------------------------------------------
360 QVM + 鯤鵬
server.dat:
鯤鵬不殺,QVM報07
經測試PETools填空.rsrc資源段免殺
將資源信息刪幾個,對主程序文件MainFunc主函數代碼塊加入異常處理語句
try
{
if(1+1==2)throw 19;
}
catch (...)
{
代碼塊
}

組建 還是爆QVM07,Petools再次填充.rsrc區段,免殺,直接給資源文件Loader.rc刪了
有些遠控這么大動作會上不了線,注意測試上線

過掉本地QVM
server.dll:
鯤鵬先暴了惡意軟件病毒
[特征] 0001C60F_00000002
C32跟進,定位在最下方空白處,填充空白可以免殺但有時也不行,懷疑是資源信息干擾了特征碼的判斷

刪掉資源文件Script1.rc,組建出錯了不能刪,還原了下代碼
對主程序文件預編譯合并區段,不殺了,但是程序報錯無法正常上線,鼓搗了一會編譯模式再次定位,還是在空白處。
對dll文件主函數DllMain內所有函數進行動態調用,被殺—定位—還在空白處,嘗試添加資源,加了一堆 程序直接無法生成

刪掉一些資源只留了icon和versions,組建,報QVM27,什么羈絆,全給資源信息刪掉,免殺了
值得一提的是,測免殺不要一直在一個目錄測,名稱也不要一直是一樣的。

鯤鵬不殺后QVM也沒動靜了
生成小馬測試上線,被殺了

對小馬定位
[特征] 0002141D_00000024 kernel32.dll dll主程序開頭延時加載
生成小馬還是被殺,Petools填充小馬的.rsrc區段免殺了,上線也沒問題。。
但是在源碼里將DLL工程中的Script1.rc文件刪掉就出錯了,很頭大,重新載入myccl定位,進入死循環,鼓搗了一小會,最后換了個版本定位,使用d3填充,可以正常定位了
[特征] 000215E4_00000002 strcmp [特征] 000215EA_00000004 strcmp [特征] 000215F6_00000005 MSVCRT.dll
延時加載MSVCRT.dll ,對strcmp動態調用,小馬還是被殺
(后面才知道殺軟查殺了數據流,也就是上線配置的信息,需要對dll進行加密加載到dat中解密)
------------------------------------------------------------------
云引擎
server.dat:
針對云引擎的特征碼定位聽著像是扯淡,其實也是看一點RP,像這里云引擎對dat爆QVM07,定位的時候只處理07的文件就好了
定位出的內存地址:00421B09
載入OD,上下移位沒發現什么可以利用的字符,省事了直接做腳本免殺
00421B0E |. 895D FC mov [local.1],ebx 00421B11 |. 6A 02 push 0x2
對當前位置代碼前兩行上下位置互換,復制到可執行文件測試,云引擎暴QVM19,07處理完成,測試正常上線

虛擬機被感染的感覺不繼續弄了,QVM19剩下的可以加殼改個殼,pe頭處理,加減資源改md5等等很好弄了。