20165207 Exp4 恶意代码分析

1、实验内容

1.1、系统运行监控

1.1.1、使用命令行创建计划任务

使用netstat创建任务计划,每分钟查看一次都有哪些进程联网。
之前实验中,我有使用任务计划的图形界面创建ncat的计划任务,故这次重点实践一下使用命令行命令创建计划任务。
输入如下命令:

对于这个命令,

  • /TN表示task name即任务名称,这里的名字就是netstat当然也可以取别的名字;
  • /SC表示SChedule type计划的类型,指定为分钟(MINUTE);
  • /MO为modifier,字面意思是调节器,用来指定SC标明的类型的具体取值,这里是1分钟,取值指定为1;
  • /TR表示taskrun后面接具体执行的命令,netstat的b参数是显示在创建每个连接或侦听端口时涉及的可执行程序名字,n参数是以数字的形式显示地址和端口号。

最后为了方便查看,将输出的内容重定向到txt文档中。

但是……,

可是我已经是用管理员身份运行的powershell,我还能咋提升啊???
那先手输一个命令测试一下

去找这个文件,查看内容如下:

这哪有问题啊。
之后还试了,不以管理员身份运行的powershell、以管理员身份运行的cmd、不以管理员身份身份运行的cmd,结果都是:手工输入命令执行是没有问题的,创建任务计划之后,输出重定向的文件里都是显示权限需要提升:
四种操作:

这是四种操作的结果,指向了一个答案:

然后我又创建了一个计划任务,企图在这个任务里通过图形化界面解决这个问题:

然后进入计划任务的图形化界面,修改权限(就是更改运行这个程序的用户的身份)


结果还是这样:

真是的,再在权限设置里勾上“以最高权限运行”试一下……

然后等候一分钟,就真的出来了,真的啊
哭了,试了这么久,终于做出来的第一步的第一部分……
我的电脑真棒,太强了!

1.1.2、使用命令行借助批处理文件创建计划任务

这部分就是练习一下,并没有重新用批处理弄,因为前面浪费了好多时间,再重新花一个晚上的话,我可能就做不完了
首先新建一个bat格式的文件,输入如下内容:

创建任务计划

在任务计划里给它提升权限

得到结果:

1.1.3、分析netstat计划任务的最终结果

把电脑丢在一个有电源而且有网的教室里,在1.1.1的任务计划跑了一个下午和一个夜晚之后(大概16个小时),早上开始分析结果。
首先把这个计划任务停掉。
然后把txt导入到excel里。
依次选择数据->获取外部数据->自文本

导入成功之后,插入数据透视图

在数据透视图选择字段的时候,应该把TCP去掉,因为这个txt的格式"TCP"和正常的应用名处在同一列,但是我们需要的是联网的进程而不是一堆TCP(最可疑的是TCP没有意义啊)

最后把字段拖到计数项,图表会生成出来

然后从左到右依次看一下数值比较高的都是什么东西

  • 360se.exe是360浏览器,昨晚在写博客的草稿,还查了一些操作,浏览器用的的确很多
  • Apoint.exe是触摸板相关的程序Alps Pointing Device,但是触摸板联网干啥呀!!!!这个不老实的触摸板一会要重点看一下!
  • QQ.exe 不用说了
  • SearchUI.exe 是那个win10“小娜”的搜索程序
  • SGTool.exe是搜狗输入法
  • Skype是自带的类似于微信的聊天软件
  • svchost.exe是一个系统程序,但是也有病毒会利用这个名字来伪装自己,一会也要看一下
  • Wechat是微信,带thunder的都是和迅雷相关的程序,果然迅雷在用我的数据帮其他用户加速,而且不知道有没有传不该传的东西。
  • WpnuserService是推动短信和消息的进程,但是WpnService究竟是不是一样的功能就不好说了
  • ddps起初觉得很可疑,后来查到说里面的签名是联想的签名,貌似这个东西是自带的杜比音频的服务

所以下面重点要看不老实的触摸板



天哪,你究竟要干嘛呀
再向后查找几处,这个东西建立的连接的目的IP就都是127.0.0.1了,而且端口号也都固定在了13336、13337、13338,但是上面连的那个外网的IP还是很可疑啊
但是又蹦出来一个:


这,冷不丁连一下外网,肯定不能放过你了。

1.1.4、安装配置sysmon监控可疑行为

sysmon是Sysinternal套件的一个工具,首先装上Sysinternal套件:
官网下载

当然官网也提供了单独的Sysmon的下载,也可以只选择Sysmon而不下载整个的一组套件。
下好了之后解压到c盘,然后在命令行里输命令安装

然后,如果想在win10里的某个文件夹打开powershell可以按ctrl+shift+右键:
这样打开的快一些,不用一步一步往目录里进


看来安装之前要先写好配置文件才能安装
那下面先写“小毛驴”配置文件
除了看那个触摸板之外,本来我还想排除一些常见的程序的,但是杀毒软件也关掉了,任务管理器里面的其他进程除了带windows的我都不认识几个,又怕会有把名字伪装成带windows之类的恶意程序,就没有往实验指导里xml的模板里再加限制了,然后利用命令开始安装:

哈,版本错了。而且官网的例子上也有问题:

可能他们是知道自己官网上的例子好久没更新了,才会把正确的4.20输出来吧
改过来,重新装,没有出其他问题:


然后让这个system monitor也跑上一个晚上。
PS: 刚开始的时候遇到了几个问题,打开日志之后出来一堆和迅雷有关的记录……,然后我把迅雷退了,占着我的网上传东西,还增加分析的工作量
还有就是正在那个每分钟运行一次的任务计划,忘记加进小毛驴里面去掉了
还有就是,进程终止的信息像这种:

实际上是不需要的,人家都终止了,也没办法干坏事了。
所以初步修改一下之后,增加了下面这几行,减少一下明早的工作量

间隔一分钟之后刷新一下,ID为1的那几个进程创建的事件(cmd.exe和NETSTAT.EXE)都不再记录了
但是比较经常出现的svhost.exe、winlogin.exe和powershell.exe是不应该被禁掉的,svhost.exe容易被蠕虫病毒伪装,winlogin.exe完全就是病毒生成的,另外利用powershell自带的脚本写的脚本病毒杀毒软件是杀不出来的,所以powershell.exe的自动运行也需要警惕。

1.1.5、sysmon结果分析

先找那个Apoint.exe

嗯?是我搜索方法有问题么
试一下搜别的,比如360浏览器的名字360se6

能搜出来,!
那,为啥搜不出来Apoint.exe
Apoint.exe理论上是个自带的驱动,而且连接过微软的IP,难道说微软的套件会自动忽略掉自带的东西?
那再搜一下微软的Skype?

联网的事件的ID为3,但是在txt对应的Apoint联网的时间里,sysmon完全没有出现ID为3并且是Apoint.exe联网的事件。
看来使用Sysmon重点分析我电脑上的可疑进程遇到了问题,我觉得后面我应该用类似沙盒或者apiHook之类的研究一下它的行为
另外,在查看其他的sysmon日志中的事件的时候,发现了一个没有见过名字的进程,oemdrvrepair

联想官网的解释是“联想电脑管家原厂服务”。
附近还有一个联网比较频繁的进程,名字叫“Oemsyscheck.exe”


所以说,不排除我电脑里面的Apoint是一个“Oem”的代工产品,因此和描述的不联网有差异,而且驱动修复的过程中也有需要联网的可能性

1.2、恶意软件分析

先分析我上次自己做的后门,再研究一下Apoint.exe。使用的工具有sysmon、ProcessMonitor、DependencyWalker

1.2.1、msf生成vs重编译的反弹后门行为分析

sysmon分析

先根据新的IP重新生成一个后门的shellcode,


扔进vs里重新编译

kali开启监听

windows双击运行之后查看sysmon的日志
首先出现了ID为1的进程创建事件:

下一个事件是向我的kali发起tcp连接

如果不在kali里执行命令,然后就没有后续发生的相关事件,在kali里获取击键记录看这边sysmon的日志会发生什么

日志里出现了一个进程创建的事件,是RunTimeBroker进程,这个程序是用来检测应用是否有某项权限的。

也就是说获取击键记录的操作是被系统发现了的,但是具体是哪个进程获取的我还没有分析出来
按理来说,能够获取击键记录的程序是被打包成dll文件然后被kali发送到内存当中的,sysmon能不能监控内存呢
好像是不可以的。再在kali里面再做一些操作,比如输出击键记录和抓取摄像头,但是主机的日志里面还是没有特别明显的不正常的东西诶
只有这个searchFilterHost说有13%的可能是恶意软件伪装

然后遇到的最明显的一个是下面这个开始录制音频的进程,因为主机里面是没有录音的操作

DependencyWalker静态分析

用sysmon得到的信息并不多,我想继续用DependencyWalker查看一下这个程序会调用什么动态链接库

KERNERL32.DLL是负责内存管理和中断处理的动态库
下面这些也基本都是正常的API调用

想想也是这样的,如果它在写死的行为里面就有恶意行为了,那我上次实验最后验收的时候也就不可能免杀了。
还是应该在进程运行起来之后,kali把写了恶意代码的dll发到受害者的内存里,那就应该用一个可以动态分析的工具了

ProcessMonitor动态分析进程的文件操作和注册表修改

打开Sysinternal自带的procmon.exe套件。

设置过滤器:

在右上角勾选上注册表选项(showRegisterActivity)和文件操作(showFileSystemActivity)以及第三个那个网络活动(ShowNetworkActivity)

就看到了后门程序的进程所有的对文件和注册表操作和网络活动

可以说是很多了
前两行是进程创建和线程创建,后面陆续开始加载内存映像
首先把met5207win10.exe本身加载到内存中
然后加载动态链接库ntdll

ntdll加载到内存中之后开始操作注册表
最先打开了几个注册表项,可以看到是关于session manager的注册表项

后面还有几十个和联网相关的注册表项的打开和文件创建,以及套接字相关的动态链接库的加载

上面这些操作主要为图片中最下面一行的tcp connect做准备
然后,和kali开启了第一次tcp链接之后,陆续加载了一些加密相关的动态库

我怀疑是上面图最上面的tcp receieve操作,kali给win10主机发来了一些含有恶意代码的库函数到内存中
然后win10调用一堆库函数,包括加密和用户的环境等等

到这里,应该就是正式把自己的shell的控制权给人家了

上面这些都是在14:30的一小段时间之内完成的
这里之后,我有一段时间没有操作,观察一下它会做啥

看来就是,受害者和kali之间,你发一下我收一下,维持kali的控制权
再然后,我在kali里面输了一下获取击键记录的命令keyscan_dump,ProcessMonitor开始发生了变化
显示进程加载了如下的动态链接库:

这几个应该是用来记录键盘的动态库
后面又抓取了一下屏幕,结果突然弹出来好多好多对视频设备的注册表操作,来使用摄像头设备

直到后面的一次tcp数据传输之后才停止

Wireshark捕包分析

进程开始运行时,tcp三次握手建立连接

建立连接之后的Tcp数据交互都是加过密的,数据包的内容像下面这样

加过密的内容也符合我们刚才使用processmonitor的时候看到的调用crypto相关的动态库的行为特征

1.2.2、会联网的触摸板驱动Apoint.exe行为分析

然后,我掏出来processmonitor来分析那个可疑的触摸板驱动
首先,通过过滤器,把要过滤的名字改成Apoint.exe

然后,目测这个Apoint.exe没有连接外网的IP

我大概翻了几千条,没有发现
或许和时间有关,netstat记下来的连接外网的记录都是发生在半夜,那么我应该半夜起来再研究一下,然后再更新这里
反正最后查得查不出来,我都应该是需要重装一下这个触摸板的驱动了,难以让我相信了

2、回答问题

2.1、如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。

如果只是觉得有恶意代码,而不能确定是那个进程,可以像实验最开始的的那样监控一下流量,监控个两天两夜。然后,可以对数据进行分析,重点要查看那些和正常行为不符的联网行为,比方说上面那个Apoint.exe官网描述是不会产生联网的行为的,再比如某个没有打开的程序在电脑空闲的时候自动运行并且联网了,就要更加重视了。netstat主要用来缩小范围,范围缩小到一定程度就可以用sysinternal里面的工具来监控详细的行为了,直接用filemon或者sysmon不加筛选地来监控系统的工作量太大了。如果可以缩小到了一个进程,那么可以直接用ProcessMonitor加过滤器,查看那一个进程的行为。

2.2、如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息

静态分析可以使用DependencyWalker查看调用的动态库,可以使用PEID来查壳其中还有插件可以用来脱壳。
动态分析的话,可以使用filemon、regmon,两者分别可以用来查看文件和注册表,但是我觉得这方面功能最强的还是processmon它不仅可以查看这个进程的文件更改和注册表操作,还能够查看这个进程的网络连接状态以及线程活动。
另外,systracer有很多同学用,功能是给系统捕捉快照,便于查看进程启动前后文件和注册表的不同,进而比对出可疑程序对文件和注册表的修改。然而,如果只是分析一个可疑进程的行为,我觉得它的针对性不如ProcessMonitor强。

3、实验总结与体会

这次实验是分析恶意代码,本来以为出的问题会比以前少一点,然而并没有顺利很多。还好问题都是力所能及的范围内可以解决的。
个人感觉netstat创建计划任务只是用来确定一个范围的,具体做分析的时候后面的几个工具里最有效的,我觉得还是ProcessMonitor。它能包含system monitor、filemonitor、regmonitor的全部功能还有wireshark的一部分功能,部署过滤器方面,它的过滤器要比sysmon的xml用起来更方便。
另一个收获就是,我知道了常见的几个进程的名字,以及它们相应的行为特征。以后,如果发现了反常行为能够及时发现。
以及,我发现了这个电脑的触摸板的驱动程序会偷偷连外网,提醒了我要重装这个驱动。

4、参考内容:

使用轻量级工具Sysmon监视你的系统

posted @ 2019-04-07 16:59  ltl0501  阅读(816)  评论(0编辑  收藏  举报