20145208 蔡野 《网络对抗》Exp4 恶意代码分析
问题回答
- 总结一下监控一个系统通常需要监控什么、用什么来监控。
- 监控一个系统通常需要监控这个系统的注册表,进程,端口,服务还有文件。
- 使用一些软件读取系统的注册表,进程表等信息来实现实时监测他们的变动。
- 如果在工作中怀疑一台主机上有恶意代码,请设计下你准备如何找到对应进程、恶意代码相关文件。
- 重启计算机,并对计算机的注册表,进程,端口,服务等内容进行检测,并使用抓包软件进行抓包,通过观察注册表,进程等内容的变化筛选出可疑的对象,然后针对可疑的对象在抓包过程中具体分析,看看有没有可以的建立套接字(也就是连接其他IP地址)的可疑操作,观察可以对象的流量是否异常,对数据包类型解析看看是否有可疑的内容。
- 通过这些手段相结合还筛选出后门可能性较大的进程找到相应的代码进行深入分析和排查来找到恶意代码。
实验总结与体会
- 恶意代码的免杀和恶意代码的分析检测可以说是相辅相成,相爱相杀,二者之间一直都在博弈,经过这次实践与上次实践的相结合,更是觉得二者之间的博弈很有意思。恶意代码一方面改变自己的特征码,给自己加壳加编译来逃过杀软的查杀,一方面也要注重自己隐蔽性,通过dns隧道技术等方法来逃过防火墙等手段的阻截;而杀软则不断的收集大数据来分析可能的恶意代码特征,还要关注计算机内的可疑行为来试图发现新的恶意代码。
- 对于学习网络对抗来说,分析恶意代码的特征和行为还有杀软的免杀机制都可以让我们对这些内容有一个深入的理解,通过对系统注册表和进程端口等信息的分析来理解一个后门程序对计算机做了哪些事情,举一反三可以猜测如果存在恶意代码的话,要从哪些地方着手去发现和清理恶意代码。
实践过程记录
通过VirScan网站的行为分析来分析恶意代码:
- 通过VirScan网站来分析恶意代码的方法,在之前的两次实践中我们已经做过几次了,测试起来也比较方便,点击行为分析就可以得到分析结果了,相当于网站后台解析了上传的文件来分析代码的行为,下面用前两次的后门程序分别分析一下,前者是不能免杀的,后者是可以免杀的:
- 从对比中可以看出,其实网站并没有运行我们上传的程序,不然的话是可以检测到具体的行为的,所以只通过网站对恶意代码进行分析是不够的。
使用分析软件动态分析
PE explorer
- PE explorer在老师给的XP虚拟机中我没有找到,所以自己下载了一个。可以使用这个软件打开后门程序查看一些基本信息和导入导出表等:
- 上图可以看到程序的文件头的信息。
- 上图可以看到程序节头的信息和一些指向操作信息
- 这里可以看到程序引入了哪些dll。
- 还可以通过反汇编指令去反汇编程序,得到一个大致的程序汇编语言:
PEiD
- 使用PEiD查壳:
- 可以看到和之前网站的行为分析结果相同。
sysinternals工具集
- 在这个微软官方出品的工具集中有许多工具,十分丰富强大,在本文中也只是列举了一小部分。
TCPview工具
- 可以查看系统中的TCP连接的进程
- 哇哦,360和Java建立了好多tcp连接,从中可以看到目的ip和端口等信息
sysmon工具
- 安装sysmon工具的时候需要管理员权限,所以在安装前需要用管理员权限打开命令行,打开方法就是右键cmd程序在菜单中选择管理员权限就可以了。
- 一开始我直接复制的参考资料上面的模版来配置sysmon,但是没能成功,检查报错后明白是版本号不对,将模版第一行的版本号改为3.10即可。
- 再次配置,结果成功
- 可以使用
sysmon -c
查看配置:
- 但是不知道什么原因打不开服务:
- 看了一下服务的列表,sysmon是已启动状态,那么???所代表的服务是什么呢 ?
- 经过老师的提醒,原来服务其实已经打开了,接下来应该去查找日志,在运行里面运行事件查看器或者在控制面板的管理工具里面找(win10是直接在开始菜单栏输入事件查看器就好),然后进入sysmon日志查看信息,日志打开过程可能比较慢,请耐心等候:
- 接下来分析一下sysmon的日志内容,在日志里面我看到了之前的日志,这证明我之前其实是安装成功了,而且sysmon已经在我不知道的时候记录了我的行为记录,很尴尬,之前成功了都不知道,浪费那么多时间在弄一个不存在的问题.
- 因为日志数量太庞大了,现在设置一下筛选条件,我设置为24小时内的ID为1的事件,也就是进程创建事件:
- 其中不少事件能够看得懂,比如打开360浏览器、打开qq拼音输入法
- 但是更多的还是不熟悉的进程,也就是在后台运行而不在我们眼前运行的进程,比如下面的rundll32.exe进程:
- 这个还算好理解,rundll顾名思义就是执行dll文件呗,下面的commandline就是标识这个进程执行了什么命令,看得出来是指向了一个dll,从dll所在位置来看好像是迅雷?跑到指定的文件夹里面一看,果然是迅雷的网络工程文件夹,但是问题来了,我没开迅雷啊!这个挺可疑的,现在来看看它是一次的调用还是经常性的:
- 一对比,发现了没,每三十分钟系统后台会自动调用一下这个dll,鬼知道他们用这个dll干什么了!如果只是用来收集一些用户偏好还好,万一是窥探一些用户计算机内其他的一些信息呢?反正他干了什么绝大多数用户也不知道对吧,就像360,最大权限的在我们的电脑里面看这看那,光明正大的和终端进行数据传输。
- 继续上面的话题,好奇之下我把这个dll的名字在网上查了一下,呵呵,不止我一个发现的:
- 经过这么一折腾,对迅雷也没多大好感了,虽然之前好感也不大,但是知道他在跟用户也就是我耍流氓,还是不爽他。
- 从发现迅雷流氓的这个过程,可以发现有一个监控日志多好,设置一下筛选信息,然后开始找一些不熟悉的可疑进程或者文件变动网络连接什么的,找到自己觉得可疑的就开始针对他,在日志里面看和他有关的,如果带有规律性,比如迅雷流氓的半小时一次,或者有频繁的与未知网络的联网操作等等可疑的信息,然后就可以根据具体信息分析一下,找找问题所在地,上网搜索一下可疑之处关键字什么的,这些都是我通过揪出迅雷流氓的过程感受到的。
- 之前实践中的动态分析也好,静态分析也好,很容易漏掉一些恶意代码,比如这个半小时执行一次的迅雷流氓,我猜没人会抓包或者动态分析半个小时吧,所以就会忽略他,这也是为什么说记录了一天半天日志来观察一下的原因。
SysTracer v2.10
- 这里使用SysTracer v2.10分析软件来对后门软件的运行过程来进行分析
分析对象上选择之前在网页上分析对比没有检测出行为的免杀后门
20145208_shellcode.exe
,还是由虚拟机Kali作为攻击方进行监听,自己的主机作为靶机进行回连。- 首先在执行后门之前打开安装好的SysTracer然后进行一次快照
- 然后在执行后门程序回连成功之后第二次快照
- 在kali通过msf对靶机进行截屏之后第三次快照
- 在kali通过msf获得靶机shell权限的时候第四次快照
然后通过对比四次快照的变动来分析行为:
- 先分析第一次和第二次的不同,可以看到注册表里面出现了新的表项,开放了新的端口:
- 第二次和第三次的对比,可以发现注册表有了增减:
- 开放端口也有了变动,比较明显的可以看到后门程序的痕迹,比如端口是之前设置的208:
- 将第三次与第四次对比,注册有所变动,进程中有了新的cmd进程,而靶机没有打开cmd,这是kali攻击方通过msf打开的cmd:
wireshake
- 对回连过程进行抓包:
- 可以看到靶机与攻击机三次握手建立连接,还有大量的TCP连接数据包,虽然不知道是有什么作用,但是看这个流量之大,想必后门一旦运行之后隐蔽性不高:
- 在上面的抓包结果中绝大部分数据包是主机与靶机的TCP通信包,还有一些DNS和ARP包。
- 对截屏操作进行抓包:
- 可以看到与之前不同,多出了很多由靶机向攻击方发送的数据长度很大的PUSH ACK数据包,所以判断传输截屏数据的数据包就是这些长度较大的PUSH ACK包。
- 对获取shell过程进行抓包
- 虽然看不到数据包内的内容,但是通过长度可以猜测内容长度,由攻击方发送的长度为240的包应该是指令,靶机返回的1120长度的应该是返回的信息,在这次操作中是文件列表:
计划任务并记录联网行为
- 设置计划任务让计算机每分钟执行一次NETSTAT.EXE的
>>c:\netstat.txt
命令将联网行为存储,>>
重定向方式不会覆盖原有记录。 - 不同的系统设置方式略有不同。
- 但是这样做并没有生成期望的文件,可能是参数问题,所以下面尝试建立一个很简单的脚本,建立一个text文件,在里面输入
netstat >>文件位置
然后保存为.bat
格式就可以了。脚本结束之后最好加一个exit来关闭cmd。 - 这回用计划任务每分钟执行一次脚本:
- 这下果然可以了,在几分钟期间我访问了爱奇艺等连接建立的多的网站来让效果明显一点,通过这个记录就可以知道我们的计算机每天都在和哪些IP勾搭。