[系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

本文为笔者从0基础学习系统安全相关内容的笔记,如果您对系统安全逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注。本系列文章将会随着笔者在未来三年的读研过程中持续更新,由于笔者现阶段还处于初学阶段,不可避免参照复现各类书籍内容,如书籍作者认为系统安全模式侵权请告知,笔者将立刻删除。强调本系列所有内容仅作为学习研究使用,作者对此文章中的代码造成的任何后果不负法律责任。

前文链接
[系统安全] PE文件格式详解1
[系统安全] PE文网络安全知识内容件格式详网络安全法解2
[系统安全] Windbg Preview调试记录
[系统安全]《黑-客免杀攻-防》MFC逆向基础实战
[系统安全] windo逆向分析ws下C++编写第一个加壳程序
[系统安全] PE文件格式分析实战基础—分析helloworld文件
[系统安全]《黑-客免杀攻-防》逆向基础之经典脱壳基础
[系统安全] 反病-毒与免杀原理概论


本篇文章为《恶意代码分析实战》学习过程中结合网上相关资料查询后的总结笔记网络安全平台作业登录,作为个人学习过程中的记录,如果书籍作者认为侵权请告知,立即删除。

@[toc]

恶意代码分析概论

恶意代码分析有两类大的方向,一个是静态分析,另一个系统安全验证是动态分析。

基础静态分析包括通过一些工具简单的检查可执行文件的一些特征。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会获得一些简单的网络特征码。
系统安全主要是指础动态分析软件逆向分析需要运行恶意代码并观察它在系统上的行为,可以用来验证静态分析的特征码。
高级静态分析主要是对恶意代码进行逆向分析,来检查安全技术交底内容恶意代码具体做了那些行为。
高级动态系统安全验证分析使用网络安全主题班会调试器检查恶意代码运行时的内部状态。

基础分析参考恶意代码检测理论(静态与动态分析基础系统安全)

上传系统安全到Virustotal进行初步诊断

virustotal会调用多个反病-毒软件的特征库来对文件进行审查,可以从这里获取对恶意代码分析的报告。并且此网站还提供了api接口,可以用python编码来测试恶意代码文件。

脚本链接

https://blog.csdn.net/weixin_42172261/article/details/121754949

strings工具查找字符网络安全知识

strings会找到长度大于等于5的可打印字符串,例如程序中如果使用一些函数或者ip域名等字符串棋牌逆向分析都会被打印出来,通过查看这些字符串可以对分析的文件的功能有一个大致的方向。

PEiD检查加壳

有些恶意代码会将自己的主体部分加壳,以此来安全技术交底内容隐藏掉部网络安全法分特征来达到免杀的效果。可以通网络安全平台作业登录过工具PEiD来检网络/安全查程序是否加壳,但是要注意,有些PE文件的某些数据会被修改从而逃过PEiD的判断。


                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录
找到安全技术交底内容了加的什么壳就可以找相应的工具进行脱壳处理,然后进行下一步分析。

Dependency W系统安全alker查看动态链接函数

使用这个工具可以查看可执行文件的导入函数和相应的dll动态库


                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录
通过导入函数和导逆向分析入的dll动态库可以获取一些线索

加壳和混淆代码通常至少会包含LoadLibrary和G网络安全知识etProcAddress函数,它们是用来加载和使用其他函数功能的。

常见dll程序 dll文件名 描述
Kernel32.dll 包含核心系统功能,如访问和操作内存、文件和硬件
Advapi32.dll系统安全技术包括哪些 提供了对核心Windows组件的访问,比如服网络/安全务管理器和注册表
User32.dll 包含了所有用户界面组件,如按钮、滚动条以及控制和响应用户操作的组件
Gdi32.dll 包含了图形显示和操作的函数
Ntdll.dll Windo网络安全教育ws内核的接口。可执行文件通常不直接导入这个函数,而是由Kernel32.dll间接导入,如果系统安全控制的第三道防线是什么一个可执行文件导入了这个文件,这意味着作者企图使用网络安全主题班会那些不是正常提供给Windows程序使用的函数。一些如隐藏功能和操作进程等任务会使用这个接口
Wsock32.dll和Ws2_32.dll 联网DLL,访问其中任一个 DLL的程序非系统安全技术包括哪些常可能连接网络,或是执行网络相关安全技术交底范本的任务
Wininet.dll 包含了更高层次的网络函数,实现了如FTP、HTTP和 NTP等协议

函数命名约定
当微软更新一个函数,而且新函数与原先函数不兼网络安全主题班会容的时候,微软还会继续支持原先的旧函数。这时新函数会给一个与旧函数相同的名字,安全技术与管理专业是干什么的并在后面加上Ex后缀。而被显著更新过两次的函数,则会在它们的名字后面有两个Ex后缀。

包含字符串参数的函数有着两个不同安全技术措施的版本:以A结尾的输入参数类型为ASCII字符串,而以w结尾的输入参数为宽字符字符串。

Resource Hacker查看资源节

此工具可以分析PE文件的资源信息,一定程度上可以获取系统安全设计与数据容灾技术分析到文安全技术与管理件隐藏的在资源节的数据。比如下图为查看计算器的资源和检查了一个把可执行文件藏到资源里的文件信息。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

PEview分析PE文件

此软件根据微软官方定义的PE数据结构来分析PE文件数据,例如可以通过区段头表的内存大小和磁盘所占大小判断是否为加壳,或者查看文件的导入表信息。
分节大小在检测加壳可执行文件时非常有用。例如,若虚拟大小比原始数据大得多,则这个节在内存中占用了比磁盘上存储更多的空间。往往意味着加壳代码的存在,特别是当.text分节在内存中较磁盘上更大一些时。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

rundll32.exe运行dll

rundll32.exe程序提供了一个运行dll的平台,命令如网络安全平台作业登录

rundll32.exe dllfilename, export funcname
rundll32.exe dllfilename, #number

Process Monitor进程监视器

可以通过设置过滤选项来网络安全法开始施行的时间是安全技术与管理专业就业方向获相应进程的安全技术交底内容行为或者捕获特定的进程。


                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

Process Expl安全技术与管理专业orer进程浏览器

和任务管理器差不多,可以查看进安全技术交底内容程在磁盘上的镜像路径。还可以查看PE文件在磁盘上的字符串和运行后在内存上的字符串,通过比较判断进程是否在运行时被修改。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

Regshot比较注册表快照

使用非常简单,在运系统安全理论行程序前拍一次快照,运行程序一段时间后再拍一次快照,然后比较查看两次注册表快照判断是否被修改。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

ApateDNS拦截系统安全理论的概念中错误的是DNS查询

有些恶意软件会有网络系统安全请求,比如一逆向分析些装有后门或者反弹shell的软件。既然有网络请求就一定会有dns查询,可以用它在本地进行拦截,然后用nc来监听。比如下图就是用ApateDNS拦截dns后,用nc监听80端口,再棋牌逆向分析用浏览器系统安全访问www.baidu.com后的截图。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

INetSi网络安全主题班会m模拟网络服务

INetSim是linux下的软件,可以在一定程度上模拟很多网络服务。配合上面的ApateDNS,在windows中拦截dns,到linux中。

kali中使用INetSim
kali自带INetSim,修改配置文件/etc/inetsim/inetsim.conf,把ip改成本机ip

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

输入命令sudo inetsim运行,然后去win7下访问www.baidu.com,可以看到被重定向到kali机。

                                            [系统安全] 恶意代码分析实战基础之必备知识点和常用工具记录

常见Windows函数

这里只记录前一部分,全部内容参见《恶意代码分析实战》附录A安全技术类别c类,整理电子版链接

https://download.csdn.net/download/weixin_42172261/74415829
accept
用来监听入站网络连接,这个函数预示着程序会在一个套接字上监听入站网络连接。
AdjustTokenPrivileges
用来启用或禁用特定的访问权限。执行进程注入的恶意代码经常会调用这个函数,来取得额外的权限。
AttachThreadInput
将一个线程处理的输入附加到另一个线程上,使得第二个线程接收到输入事件,如键盘和鼠标事件。
击键记录器和其他间谍软件会使用这个函数。
bind
用来将一个本地地址关联到套接字上,以监听入站网络连接。
BitBlt
用来将图形数据从一个设备复制到另一设备。间谍软件有时会使用这个函数来捕获屏幕。
这个函数也经常被编译器作为共享库代码而添加。
callNextHookEx
在由SetWindowsHookEx函数设置了挂钩事件的代码中使用。
CallNextHookEx函数会调用链上的下一个挂钩函数。
分析调用callNextHookEx的函数可以确定出SetwindowsHookEx设置挂钩的用意。
CertOpenSystemStore
用来访问在本地系统中的证书。
CheckRemoteDebuggerPresent
检查一个特定进程(包括你自己的)是否被调试。这个函数通常在一种反调试技术中被使用。
CoCreateInstance
创建一个COM对象。COM对象提供了非常多样化的功能。类标识(CLSID)会告知你哪个文件包含着实现COM对象的代码。
connect
用来连接一个远程套接字。恶意代码经常使用底层功能函数来连接一个命令控制服务器。