15

[安全攻防进阶篇] 十.熊猫烧香病毒机理IDA和OD逆向分析--病毒释放过程(中)

 3 years ago
source link: https://blog.csdn.net/Eastmount/article/details/111394046
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[安全攻防进阶篇] 十.熊猫烧香病毒机理IDA和OD逆向分析--病毒释放过程(中)

如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢!

IDA和OD作为逆向分析的“倚天剑和“屠龙刀”,学好它们的基本用法至关重要。本文重点分析熊猫烧香病毒的功能函数,大家掌握这些技巧后才能更好地分析更多的代码。同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了~

在这里插入图片描述

上一篇文章讲解了“熊猫烧香”病毒样本的反汇编代码入口处的分析,接下来我们分析病毒的核心部,其分析思路基本一致,同时越深入核心部分会遇到越多的API函数。我们将利用OD和IDA工具结合调用函数的参数进行分析,它将有助于我们更好地理解病毒行为。同时,将分析出的每一个CALL函数,改为我们能够理解的名字,这往往也有助于对后续程序的理解。作者结合两篇文章绘制了一张分析图,希望加深大家对熊猫烧香的了解。这系列文章写得不容易,希望大家给点个赞和收藏,也欢迎评论和交流。

在这里插入图片描述

从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

接下来我将开启新的安全系列,叫“安全攻防进阶篇”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~


一.实验背景

对病毒进行逆向分析,可以彻底弄清楚病毒的行为,从而采取更有效的针对手段。为了节省篇幅,在这里我不打算将“熊猫烧香”进行彻底的分析,只会讲解一些比较重要的部分,大家只要掌握了这些思想,那么就可以处理很多的恶意程序了。

这里主要使用的工具包括:

  • PEiD:病毒加壳、脱壳基础性分析
  • IDA Pro:静态分析
  • OllyDbg:动态分析

实验文件:

  • setup.exe:熊猫烧香病毒

基本流程:

  • 利用查壳工具检查病毒是否带壳
  • 利用OD动态分析病毒
  • 利用IDA静态分析病毒

注意:由于OD工具会将程序运行起来,所以我们在进行恶意代码分析时尽量在搭建好的虚拟机中操作。如果病毒传播性较强如WannaCry,建议断开网络和断开共享分析。

在这里插入图片描述

实验思路:

  • 1.利用OD分析每一个CALL的功能
  • 2.使用IDA Pro在宏观上把握程序的功能并及时对函数进行重命名操作

上篇回顾:

  • 0x0040CB7E call sub_403C98
    – 重命名为:AllocStackAndCopyString
    – sub_403D08:分配内存空间
    – sub_402650:字符串拷贝功能
  • 0x0040CB9F call sub_00405360
    – 重命名为:DecodeString
    – 0x004053CC:循环入口点
    – 0x004053E8:获取“xboy”解密字符
    – 0x00405408:完成异或解密操作
  • 0x0040CBAC call sub_404018
    – 重命名为:CMPString
    – 0x00404041:循环入口点
    – 功能:字符串比较“武汉男生感染下载者”
  • 0x0040CBCC loc_40CBBC
    – 功能:字符串解密和比较操作,解密字符“whboy”
    – DecodeString
    – CMPString

二.sub_408024核心函数分析

上一篇文章我们详细介绍了熊猫烧香病毒起始阶段的初始化操作,这篇文章将进入该病毒的核心功能函数,进行相关的逆向分析。Let’s Go!!!

1.sub_40277C子函数

第一步,打开IDA Pro载入我们的病毒样本。

在这里插入图片描述

第二步,定位到loc_40CBE6位置。
这里看到了三个call函数,它们又是什么功能呢?这三个call是熊猫烧香病毒最重要的功能,也是我们接下来要深入逆向分析的内容。

  • sub_408024
  • sub_40CA5C
  • sub_40C97C
在这里插入图片描述

第三步,查看函数sub_408024内容。
在这个函数的最开始位置我们看到了将84h赋值给ecx,84h表示循环的次数。循环的主体是下面两个push,其中每一个push能开辟8个字节(32位)的空间,两个字节能获得16个字节的空间。这样的空间一共申请了ecx(84h)次。

  • mov ecx, 84h
  • push 0
  • push 0
在这里插入图片描述

第四步,我们主要分析call函数,往下看到第一个函数sub_40277c。

在这里插入图片描述

第五步,接着用OD载入exe程序,进行动态的分析,直接跳转到该地址。

  • 0x0040804D call sub_40277C

基本流程为右键“转到”->“表达式”->输入“0040804D”,按下F2增加断点。

在这里插入图片描述

按F9直接执行到该位置。

在这里插入图片描述

该函数我们可以在IDA中先双击查看,会发现该函数首先调用了GetModuleFileNameA。

  • 0x004027A0 call GetModuleFileNameA
  • 该函数功能主要是获取当前进程已加载模块文件的完整路径
在这里插入图片描述

第六步,回到OD中sub_40277C函数,按下F7单步进入函数。
接着进入函数后按F8单步步过,可以看到GetModuleFileNameA右下角的内容,在这个PathBuffer里,会保存即将获取的路径信息。

  • 0x004027A0 call 00401100
  • PathBuffer
在这里插入图片描述

接着选中PathBuffer值,右键点击“数据窗口中跟随”。

在这里插入图片描述

注意:按下F8,大家可以在数据窗口中留意该值的前后变化。发现它成功获取了该样本的本地路径。

  • C:\Users\14551\Desktop\setup.exe
在这里插入图片描述

第七步,我们打开IDA给sub_40277C函数重命名。

小技巧
IDA中双击会进入对应的函数,那么如何返回上一层呢?按下ESC即可返回,如下图所示,从GetModuleFileNameA中按ESC返回sub_40277C位置。而按F5键会逆向出C语言程序。

在这里插入图片描述

然后选中函数重命名,快捷键为N。

在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_40277C -> GetFilePathAndName
  • 功能:获取文件的完整路径及文件名称
在这里插入图片描述

2.sub_405684子函数

接着往下看,函数如下:

  • 0x0040805E call sub_405684
在这里插入图片描述

第一步,继续在OD中进行跟进。
首先我们表达式跳转到“00408052”位置,然后按下F2增加断点,按下F9执行过来。

在这里插入图片描述

我们首先可以看看它压入的参数是什么?

第二步,在数据窗口中跟随EAX。
按下F7单步执行,在寄存器中选中EAX,右键“数据窗口中跟随”。

在这里插入图片描述

显示结果如下图所示,可以看到EAX中保存的是刚刚获取的病毒文件完整路径。

在这里插入图片描述

第三步,在数据窗口中跟随EDX。
按下F7单步执行,在寄存器中选中EDX,右键“数据窗口中跟随”。目前EDX还是空值。

在这里插入图片描述

第四步,进入后面的call(00405684),查看它的内容。
先选中EAX右键“数据窗口中跟随”。

在这里插入图片描述

然后按下F7进入函数,可以看到这里出现了粗线条,说明它是一个循环。我们步入循环分析其内容。

在这里插入图片描述

前面按下F8执行,然后到循环位置按F7步入。

  • mov eax, [local.1]
在这里插入图片描述

注意这里简单介绍下局部变量的概念。

小技巧
[LOCAL]是局部变量的意思,例如[LOCAL.1]就是第一个局部变量,存放在栈里的[EBP-4]位置,[LOCAL.2]就是[EBP-8],图片上的命令其实就是MOV EAX, [EBP-4]。

方法一:可以在OD的选项->调试设置->分析里面有个选项把勾去掉设置

在这里插入图片描述

方法二:选中该命令右键“汇编”即可,但修改后会显示灰色

在这里插入图片描述

第五步,接着分析循环。
分析语句“mov eax, dword ptr ss:[ebp-0x4]”,首先将EBP-4赋值给EAX,而当前的EBP-4就是所获取的病毒的完整路径。**

  • mov eax, [local.1]
  • mov eax, dword ptr ss:[ebp-0x4]
在这里插入图片描述

然后再按F8,这里是将EAX加上EBX再减1,其中EAX是病毒完整路径的首地址,EBX是20,它又是什么呢?

  • mov al, byte ptr ds:[eax+ebx-0x1]

我们查看EBX,如下图所示。凡是由Delphi编写的程序,它会在字符串减4的位置保存一个数值。这个数值就是字符串的长度,我们可以看到当前路径长度是0x20。

  • [eax+ebx-0x1]:计算字符串最后一个字母的位置,即“e”,下图中也显示出来了“ds:[02140127]=65(e)”
在这里插入图片描述

第六步,继续按F8执行,这里结合IDA分析分析0x5C、0x2F、0x3A对应的值。
我们在0x004056B4看到有一系列的比对,然后右键分别选中0x5C、0x2F、0x3A,解析成对应的值,或者选中按下R键。

在这里插入图片描述

5C代表斜杠(\),2F代表反斜杠(/),3A代表冒号(:)。

在这里插入图片描述

小结,该循环是将病毒所在完整的路径从后向前检索,直到遇到斜杠(\)、反斜杠(/)、冒号(:)结束。结合病毒来看,它找斜杠的位置,其实这段程序要么是想不包含病毒文件名的路径,要么想获取病毒的文件名(setup.exe)。

在这里插入图片描述

第七步,在OD中继续按F8调试,注意观察数据窗口的变化。
发现该程序不断地从后往前获取路径信息,并进行对比。

在这里插入图片描述

接着发现程序在调用完call函数之后,会出现一个新的字符串。事实上很明显,它是想获取去除病毒文件名后的路径。可见,程序将去除了文件名的路径拷贝到了之前申请的空间中,于是可以将sub_405684重命名。

  • 0x004056D8 call 0040412C
在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_405684 -> GetFilePath
  • 功能:获取去除病毒文件名后的路径
  • IDA位置:0x0040805E
在这里插入图片描述

3.sub_403ED4子函数

第一步,继续在OD中往下分析代码,赋值语句。
返回的第一句代码是将我们之前所获取的不带文件名的地址赋值给EAX。

  • lea eax, dword ptr ss:[ebp-0x3B4]
在这里插入图片描述

我们选中EAX在数据窗口中跟随,可以看到对应的值是“02140138”。

在这里插入图片描述

对应的值如下图所示,即不带文件名的文件路径。现在EAX保存的就是这个地址。

在这里插入图片描述

第二步,继续分析代码,接下来将“Desktop_.ini”赋值给EDX。注意,0x44表示为D(十进制68对应的ASCII码)。

  • mov edx, 0x40862C
在这里插入图片描述

第三步,通过IDA大致看看call函数00403ED4。

  • 0x0040806E call sub_403ED4
在这里插入图片描述

但是通过这个很难分析出它的具体功能,我们不妨只关注它的两个参数。观察执行完该函数后的参数位置有什么变化。

第四步,我们留意着数据窗口,然后按F8执行。
可以看到刚才所获取的不带文件的路径名,在其后面增加了一个“Desktop_.ini”,从而组成了新的字符串。

在这里插入图片描述

分析这里我们就知道sub_403ED4功能是将上面所获取的不带文件名的路径的地址赋值给eax,然后将字符串“Desktop_.ini”的地址赋给edx。

总结,重命名及对应功能如下:

  • sub_403ED4 -> StringCat
  • 功能:拼接字符串,包含“Desktop_.ini”后缀
在这里插入图片描述

同样,我们可以进入sub_403ED4进行详细分析。

在这里插入图片描述

4.sub_4057A4子函数

接着继续分析sub_4057A4子函数功能。

  • 0x00408079 call sub_4057A4
在这里插入图片描述

第一步,我们在OD中查看EAX的地址。
在这里我们跟踪查看这个地址,选中堆栈数值,右键“数据窗口中跟随数值”。

在这里插入图片描述

可以看到,它的这个参数是我们之前已经连接好的字符串的首地址。

  • 0x020F0138
在这里插入图片描述

第二步,按下F8运行至Call 4057A4函数,再按F7进入该函数分析。

在这里插入图片描述

继续按下F7进入call 0040573C,发现有个FindFirstFileA函数,我们直接来看看它的参数。注意,很多时候右边注释内容是没有的,需要我们手动分析。

在这里插入图片描述

按下F8执行到函数调用前位置,可以看到EAX中存放是的是刚才连接出来的字符串。该函数的作用就是说明要查找当前目录下Desktop_.ini文件是否存在。

  • C:\Users\14551\Desktop\Desktop_.ini
在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_4057A4 -> CheckFileExist
  • 功能:检测文件“Desktop_.ini”是否存在
在这里插入图片描述

5.分析sub_4057A4后续删除功能

接着我们继续分析,由于之前进行了重命名操作,所以代码的可读性更好了,从0x00408079位置下面的代码我们都能看懂。

  • 0x0040807E test al, al
  • 0x00408086 push 80h
  • 0x 004080C5 call SetFileAttributesA

它会根据上一段代码的查找结果进行判定al,即如果当前目录下Desktop_.ini文件存在,那么就会调用SetFileAttributesA函数。该函数会改变他的属性,将它的属性改为80h所代表的值,即该文件的文件属性调整为NORMAL(正常属性)。

在这里插入图片描述

继续往下看, 调用了一个Sleep函数停止1毫秒。停止1毫秒之后,它接着调用DeleteFileA函数将Desktop_.ini删除。正常来讲,病毒还没有运行的时候,这个Desktop_.ini文件应当是不存在的;如果存在的话,病毒首先会改变这个文件的属性,再将这个病毒给删除掉。

  • push 1
  • call Sleep
  • call DeleteFileA
在这里插入图片描述

这里看到一个未知函数sub_4040CC,它的参数是[ebp+var_3C4],事实上3C4就是文件的路径。将文件路径赋值给EAX,我们进入sub_4040CC函数。发现其功能:

  • 验证EAX是否存在,即判定文件的路径是否为空

如果文件不存在它会直接执行loc_408110位置的函数,sub_4040CC其实就是一个验证机制,在IDA中按下ESC返回,我们给它进行重命名。

在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_4040CC -> CheckPathIsExist
  • 功能:检测文件的路径是否存在
在这里插入图片描述

6.sub_4078E0子函数

继续往下分析,我们看到sub_4078E0函数。

  • 0x00408126 call sub_4078E0
在这里插入图片描述

第一步,我们在IDA中大致看下函数的内容。
我们可以看到这个函数非常的长,且也调用了很多其它的函数,那么看上去很难分析清楚这个函数到底是做什么的。这里我们先不管其具体的实现细节,只看看该函数执行完后,这些参数或寄存器位置发生了什么变化,主要关注该函数执行前后,程序使用了哪些寄存器。

在这里插入图片描述

第二步,打开OD跳转到40811D位置,按下F2增加断点,再按F9执行过来。
注意,病毒逆向分析就是调用IDA和OD反复调试的过程。

在这里插入图片描述

第三步,在OD中分析具体代码。

  • mov eax, dword ptr ss:[ebp-0x3CC]
  • lea edx, dword ptr ss:[ebp-0x4]
  • call 004078E0

首先它是将EBP-3CC赋值给EAX,再将EBP-4赋值给EDX,调用call函数。

在这里插入图片描述

我们现在按F8来步过这个call函数,再观察数据窗口中存在什么变化。可以看到执行完call函数后,这个函数用了很大一片区域写入了非常多看似无意义的字符,结合右边的ASCII码,可以将这些内容理解为暴力P解的字典。

  • 病毒的编写者企图利用暴力P解的方式来攻破计算机中某些验证机制
在这里插入图片描述

当然这些内容还是非常多的,病毒作者也写入了很多其他信息,有兴趣的作者可以好好分析下。这些信息有助于我们获取病毒的行为信息,只有当我们深入分析其原理和实现过程,才有助于我们获取病毒的行为信息。

在这里插入图片描述
在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_4078E0 -> WriteVirusInfoToMem
  • 功能:写入病毒信息到内存中,病毒作者企图利用暴力P解的方式,来攻破计算机中的某些验证机制
在这里插入图片描述

7.sub_403C44子函数

继续在OD中分析sub_403C44子函数。

第一步,查看[EBP-8]地址对应的值。
在数据窗口中,可以看到eax的值为ebp+var_8的地址,通过OD可以知道,这个地址中保存的是0,可以理解为没有数据。

  • 00 00 00 00
在这里插入图片描述

第二步,我们按下F7进入这个call,查看具体内容。

  • 0x0040812E call 00403C44
在这里插入图片描述

可以看到,它首先是将EAX的内容赋值给EDX,我们按下F8可以看到EDX也变成了0值。

  • mov edx, dword ptr ds:[eax]
在这里插入图片描述

之后的test运算,使得ZF变为1,满足跳转条件,直接跳转至retn,那么本段函数也就结束了。

在这里插入图片描述

刚才我们通过test edx, edx发现ZeroFlag标志位变成了1。这个标志位变为1,说明这个值是一个0,这段函数似乎并没有实现什么特别清晰具体的功能,那么不妨将这个操作理解为某种标志的设置。

在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_403C44 -> SetZeroFlag
  • 功能:设置零标志位重设,将其设置为0
在这里插入图片描述

8.sub_403ECC子函数

回到OD,我们分析sub_403ECC子函数。

第一步,查看并分析[EBP-4]保存的内容。

  • mov eax, dword ptr ss:[ebp-0x4]
在这里插入图片描述

在数据窗口中跟随,可以看到“MZP”,这里大致是保存了一个PE文件,事实上就是将这个PE文件的首地址赋值给这个EAX,接着看看这个call。

在这里插入图片描述

第二步,分析call 403ECC函数。
按下F7进入这个call函数,首先调用“TEST EAX, EAX”验证PE文件是否存在。

在这里插入图片描述

按下F8继续,这里是跳转不成立,然后出现在EAX-4位置,我们在数据窗口中跟随内容。

  • mov eax, dword ptr ds:[eax-0x4]

小技巧
这里需要特别强调的是,由于本病毒程序是使用Delphi编写的,因此字符串的首地址减去4后,所取出的4个字节的内容就是此字符串的长度。

换句话说,这段代码中的[eax-4]就是eax所指向的文件长度,字符串长度就是EC00,这条语句就是将EC00保存在寄存器里面。于是可以将sub_403ECC重命名。

  • 字符串长度:EC00
  • 现在EAX保存的就是字符串的长度,即PE文件的长度
在这里插入图片描述
在这里插入图片描述

总结,重命名及对应功能如下:

  • sub_403ECC -> GetFileLen
  • 功能:获取PE文件的长度

之前这个文件的长度是保存在EAX里面,这里又将文件长度赋值给EBX。

在这里插入图片描述

接下来,在获取文件长度后,程序会跳转到loc_408163处执行。首先它会验证EBX是否为零(文件长度是否为0),正常来说文件长度是不为0的,也就是这个文件是真实存在的,所以接下来的跳转不成立,会继续往下执行。

  • test ebx, ebx
  • jle short loc_408171
  • mov eax, [ebp+var_4]
在这里插入图片描述

接着我们尝试用OD进行分析,跳转到0x00408163的位置。按下F2增加断点,再按F9让它执行过来。

在这里插入图片描述

按F8跳转不成立继续执行,可以看到将[EBP-4]赋值给EAX,事实上就是让EAX重新指向这个PE文件的起始位置。

  • mov eax, dword ptr ss:[ebp-0x4]
在这里插入图片描述

按下F8继续执行,这里是将 [EAX+EBX-1],由于EAX指向的是文件起始地址,而EBX是文件的长度,减一是获取整个PE文件最后一个字符它是什么。事实上,CMP语句就是验证这个文件最后一个数据它是否为零,如果为0,则接下来的跳转不成立。

  • cmp byte ptr [eax+ebx-0x1], 0x0
在这里插入图片描述

经过OD的动态分析发现,因为这里显示跳转未实现,故文件尾端的值为0,所以不执行跳转,继续向下执行。

在这里插入图片描述

写到这里,该部分关于sub_408024核心函数的部分功能就介绍完毕,请大家一定要动手跟着调试,先感受下这部分的实验,后面的文章我们将继续分析熊猫烧香病毒感染的过程。

在这里插入图片描述

再次感谢姜晔老师,经过这篇文章的讨论,我们详细调试了病毒的各个模块。当然,整个病毒的所有功能都没时间完全概述,文章更多是提供一种恶意样本分析的方法和思路,带领大家入门,正如姜老师所说“只要各位读者勤于动手,并将所讲的逆向分析的基本原理搞清楚,那么这个病毒分析根本不在话下”。

最后简单总结这篇文章的逆向过程,主要分析sub_408024核心函数。

  • 0x0040804D call sub_40277C
    – 重命名为:GetFilePathAndName
    – 功能:获取文件的完整路径及文件名称
  • 0x0040805E call sub_405684
    – 重命名为:GetFilePath
    – 功能:获取去除病毒文件名后的路径
    – IDA位置:0x0040805E
    – 技巧:循环将病毒的完整路径从后往前检索,直到遇到斜杠(\)、反斜杠(/)、冒号(:)结束,从而提取病毒的路径或病毒的文件名(如setup.exe)
  • 0x0040806E call sub_403ED4
    – 重命名:StringCat
    – 功能:拼接字符串,包含“Desktop_.ini”后缀
  • 0x00408079 call sub_4057A4
    – CheckFileExist
    – 功能:检测文件“Desktop_.ini”是否存在
  • 0x00408105 call sub_4040CC
    – CheckPathIsExist
    – 功能:检测文件的路径是否存在
  • 0x00408126 call sub_4078E0
    – WriteVirusInfoToMem
    – 功能:写入病毒信息到内存中,病毒作者企图利用暴力P解的方式,来攻破计算机中的某些验证机制
  • 0x0040812E call sub_403C44
    – SetZeroFlag
    – 功能:设置零标志位,将其设置为0
  • 0x00408136 call sub_403ECC
    – GetFileLen
    – 功能:获取PE文件的长度
  • CMP语句就是验证PE文件最后一个数据是否为零

再给出这张图,希望加深大家对熊猫烧香的了解。这系列文章写得不容易,您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者目的是与安全人共同进步,加油~

在这里插入图片描述

学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。

2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

20200819045459172.png

(By:Eastmount 2020-12-19 星期六 下午6点写于武汉 http://blog.csdn.net/eastmount/ )


参考文献:
姜晔老师真的非常佩服和值得去学习,包括他苏宁到卡巴斯基的故事,推荐大家去阅读。也希望自己和大家的技术能不断提升,加油!
[1] 姜晔老师技术分享 - B站
[2] 姜晔老师的技术空间目录 - CSDN
[3] [网络安全自学篇] 木马原理详解、远程服务器IPC $漏洞及木马植入实验
[4] 腾讯安全联合实验室 - 知乎文章
[5] [网络安全自学篇] 七十九.Windows PE病毒原理、分类及感染方式详解
[6] [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[7] [安全攻防进阶篇] 八.那些年的熊猫烧香及PE病毒行为机理分析
[8] [网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制源码详解
[9] https://blog.csdn.net/ioio_jy/article/details/41207265


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK