学习笔记-第一章 恶意代码分析实战
第一章
从可执行文件提取有用信息的多种方法,包括以下技术:
1.使用反病毒软件来确认程序样本的恶意性;
2.使用哈希来识别恶意代码;
3.从文件的字符串列表,函数和文件头信息中发掘有用信息。
字符串包括 ASCII 和Unicode俩种编码
加壳 混淆之后的程序字符串可供打印的字符串会减少。
链接库与函数 通过导入表可以帮助我们了解链接那些代码库
1.6.2
常见的dll程序
Kernel32.dll 常见的dll,它包含核心系统功能,如访问内存,文件,硬件等等
Advapi32.dll 对核心windows组件的访问,比如服务管理器,注册表
User32.dll 包含所有用户界面组件,如按钮,滚动条,以及响应程序操作的组件
Gdi32.dll 图形显示和操作的函数
Ntdll.dll windows内核的接口,kernel32.dll间接导入,如果一个可执行文件导入
了这个文件,这意味作者企图使用那些不是正常提供给windows程序使用的函
数。一些如隐藏功能和操作进程等任务会使用这个接口
Wsock32.dll和Ws2_32.dll 俩个联网的dll,访问其中任一个的程序非常可能链接网络
,或者执行和网络相关的任务。
Wininet.dll 更高层次的网络函数, 如FTP,HTTP,NTP等协议。
函数命名约定
后面加A或者W表明只是可以接受字符串的参数,搜索api的时候可以去掉
1.6.4 导出函数
dll导出,可以被其他程序调用,
课后作业
Lab 1-1
这个实验使用Lab01-01.exe和Lab01-01.dll文件,使用本章描述的工具和技术来获取关于这些文件的信息。
问题
1.将文件上传至 virusTotal.com进行分析查看报告,文件匹配到已有的反病毒软件的特征吗?
A:可以成功匹配到反病毒的特征
2.这些文件是什么时候编译的?
A:通过查看pe文件头可以查看编译时间。
3.这俩个文件中是否存在迹象说明它们是否被加壳或混淆了?如果是,这些迹象在哪里?
A:经过exeinfo pe查看之后没有发现加壳迹象。
4.是否有导入函数显示出了这个恶意代码是做什么的?如果是,是那些导入函数?
A:通过exeinfo pe查看导入函数发现调用 api
<1> CreateFileA 创建文件
<2> CopyFileA 复制文件
<3> FindFirstFileA 查找文件
推测这个exe可能具有自我复制的能力
查看dll的导入函数发现 ws2_32.dll 经过学习发现这个动态链接库和网络有关系。
查看 kernel32.dll 发现
<1> CreateProcessA 创建进程
<2> CreateMutexA 创建互斥量
<3> CloseHandle 关闭句柄
5.是否有任何其他文件或基于主机的迹象,让你在受感染系统上查找?
A:搜索Lab01-01.exe的字符串可以查看到 kerne132.dll 推测可能是伪装成这个动态链接库来运行us
搜索Lab01-01.dll的字符串可以查看到exec推测可能是执行命令有关,sleep推测可能是让程序休眠
6.是否有基于网络的迹象,可以用来发现受感染机器上的这个恶意代码?
A:搜索Lab01-01.dll的字符串可以查看到一串ip地址, 127.26.152.13 推测是要访问这个ip地址。
7.你猜这些文件的目的是什么?
A:将自己伪装到系统目录下,创建进程访问ip地址,可以去下载木马并执行获取系统的会话。
Lab 1-2
分析Lab01-02.exe文件
问题
1.将Lab01-02.exe文件上传至 VirusTotal.com进行分析并查看报告,文件匹配到了已有的反病毒软件特征吗?
A:可以成功匹配到反病毒的特征
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果文件被加壳,请进行脱壳,如果可能的话。
A:使用esp定律脱壳。
通过esp突变定位查找入口
jmp到入口点
3.有没有任何导入函数能够暗示这个程序的功能?如果是,是那些导入函数,它们会告诉你什么?
查看脱壳之后的导入表,发现4个dll。
<1>CreateServiceA 创建一个服务
<2>StartServiceCtrlDispatcherA 连接主线程作为服务的管理者 (查看英文文档,翻译的可能不太好)
<3>GetModuleFileNameA 获取模块的文件名
<4>OpenMutexA 打开互斥量
<5>CreateMutexA 创建互斥量
<6>CreateThread 创建线程
wininet.dll
<7>InternetOpenUrlA 打开一个url链接
<8>InternetOpenA 初始化一个应用程序
4.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
A:通过查看字符串发现 ie8.0 和一个网站推测是使用ie打开这个网站。
Lab 1-3
分析Lab01-03.exe文件
问题
1.将Lab01-03.exe文件上传到VirusTotal.com 进行分析并查看报告,文件匹配到已有的反病毒软件特征吗?
A:可以成功匹配到反病毒的特征
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果文件被加壳,请进行脱壳,如果可能的话。
A:使用peid查壳发现是FSG加壳,使用olldbg简单脱壳。 如果需要继续正常运行,还需要修复导入表。
<1>查看加壳信息
<2>通过下esp断点发现长跳转,猜测跳转到入口
<3>右键,从目标中删除代码分析查看有明显的入口特征
3.有没有任何导入函数能够暗示这个程序的功能?如果是,是那些导入函数,它会告诉你什么?
A:查看导入表发现ole32.dll
<1>OleInitialize 和模块初始化有关
4.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?
A:上图,使用查看字符串发现一个网站,推测是会访问这个网站。
Lab 1-4
分析Lab01-04.exe文件
问题
1.将Lab01-04.exe文件上传至 VirusTotal.com进行分析并查看报告,文件匹配到了已有的反病毒软件特征吗?
A:可以成功匹配到反病毒的特征
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。
A:使用exeinfo pe没有发现加壳迹象。
3.这个文件是什么时候被编译的?
A:使用PETools 发现文件头的时间是2019-8-30不符合当前的时间,推测是被修改过的信息。
4.有没任何导入函数能够暗示出这个程序的功能?如果有,是那些导入函数,它们会告诉你什么?
A:使用exeinfo pe 查看导入表发现
<1>WinExec 和执行命令有关的函数
<2>WriteFile 写入文件
<3>CreateFileA 创建文件
<4>GetCurrentProcess 获取当前的进程
<5>OpenProcess 打开进程
ADVAPI32.dll
<6>AdjustTokenPrivileges 提升权限
<7>LookupPrivilegeValueA 查看权限
推测可能会将程序提权,然后执行某些指令或者文件。
5.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?
A:没有查看隐藏资源仅仅查看字符串还不能发现和网络有关的代码。
查看隐藏资源之后发现通过一个网站来下载upater.exe这个程序。
查看隐藏资源的导入表发现
<1>URLDownloadToFileA 通过URL来下载文件
<2>WinExec 执行命令
<3>GetWindowsDirectoryA 获取系统的路径
查看字符串推测可能将下载的程序伪装成wupdmgrd.exe 伪装在system32目录下来运行。
脱壳之后的程序
6.这个文件在资源段中包含一个资源,使用Resource Hacker工具来检查资源,然后抽取资源,从资源中你能发现什么吗?
使用Resource Hacker打开发现资源,然后一个可执行程序。通过petools查看文件头,发现dll没有打勾。