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

网友投稿 403 2022-10-04


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

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

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

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

@[toc]

恶意代码分析概论

恶意代码分析有两类大的方向,一个是静态分析,另一个是动态分析。

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

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

上传到Virustotal进行初步诊断

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

脚本链接 Walker查看动态链接函数

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

加壳和混淆代码通常至少会包含LoadLibrary和GetProcAddress函数,它们是用来加载和使用其他函数功能的。

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

函数命名约定当微软更新一个函数,而且新函数与原先函数不兼容的时候,微软还会继续支持原先的旧函数。这时新函数会给一个与旧函数相同的名字,并在后面加上Ex后缀。而被显著更新过两次的函数,则会在它们的名字后面有两个Ex后缀。

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

Resource Hacker查看资源节

PEview分析PE文件

rundll32.exe运行dll

rundll32.exe程序提供了一个运行dll的平台,命令如下

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

Process Monitor进程监视器

可以通过设置过滤选项来捕获相应进程的行为或者捕获特定的进程。

Process Explorer进程浏览器

Regshot比较注册表快照

ApateDNS拦截DNS查询

INetSim模拟网络服务

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

常见Windows函数

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

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 用来连接一个远程套接字。恶意代码经常使用底层功能函数来连接一个命令控制服务器。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:带你了解Java中Static关键字的用法
下一篇:Mirai 僵尸网络解释:青少年诈骗者和闭路电视摄像机如何几乎让互联网瘫痪 Mirai(mirai丰田价格)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~