20165207 Exp4 恶意代码分析

时间:2023-03-08 22:36:21

目录

1、实验内容

1.1、系统运行监控

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

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

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

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

但是……,
20165207 Exp4 恶意代码分析
可是我已经是用管理员身份运行的powershell,我还能咋提升啊???
那先手输一个命令测试一下
20165207 Exp4 恶意代码分析
去找这个文件,查看内容如下:
20165207 Exp4 恶意代码分析
这哪有问题啊。
之后还试了,不以管理员身份运行的powershell、以管理员身份运行的cmd、不以管理员身份身份运行的cmd,结果都是:手工输入命令执行是没有问题的,创建任务计划之后,输出重定向的文件里都是显示权限需要提升:
四种操作:
20165207 Exp4 恶意代码分析
这是四种操作的结果,指向了一个答案:
20165207 Exp4 恶意代码分析
然后我又创建了一个计划任务,企图在这个任务里通过图形化界面解决这个问题:
20165207 Exp4 恶意代码分析
然后进入计划任务的图形化界面,修改权限(就是更改运行这个程序的用户的身份)
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
结果还是这样:
20165207 Exp4 恶意代码分析
真是的,再在权限设置里勾上“以最高权限运行”试一下……
20165207 Exp4 恶意代码分析
然后等候一分钟,就真的出来了,真的啊
哭了,试了这么久,终于做出来的第一步的第一部分……
我的电脑真棒,太强了!
20165207 Exp4 恶意代码分析

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

这部分就是练习一下,并没有重新用批处理弄,因为前面浪费了好多时间,再重新花一个晚上的话,我可能就做不完了
首先新建一个bat格式的文件,输入如下内容:
20165207 Exp4 恶意代码分析
创建任务计划
20165207 Exp4 恶意代码分析
在任务计划里给它提升权限
20165207 Exp4 恶意代码分析
得到结果:
20165207 Exp4 恶意代码分析

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

把电脑丢在一个有电源而且有网的教室里,在1.1.1的任务计划跑了一个下午和一个夜晚之后(大概16个小时),早上开始分析结果。
首先把这个计划任务停掉。
然后把txt导入到excel里。
依次选择数据->获取外部数据->自文本
20165207 Exp4 恶意代码分析
导入成功之后,插入数据透视图
20165207 Exp4 恶意代码分析
在数据透视图选择字段的时候,应该把TCP去掉,因为这个txt的格式"TCP"和正常的应用名处在同一列,但是我们需要的是联网的进程而不是一堆TCP(最可疑的是TCP没有意义啊)
20165207 Exp4 恶意代码分析
最后把字段拖到计数项,图表会生成出来
20165207 Exp4 恶意代码分析
然后从左到右依次看一下数值比较高的都是什么东西

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

所以下面重点要看不老实的触摸板
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
天哪,你究竟要干嘛呀
再向后查找几处,这个东西建立的连接的目的IP就都是127.0.0.1了,而且端口号也都固定在了13336、13337、13338,但是上面连的那个外网的IP还是很可疑啊
但是又蹦出来一个:
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
这,冷不丁连一下外网,肯定不能放过你了。

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

sysmon是Sysinternal套件的一个工具,首先装上Sysinternal套件:
官网下载
20165207 Exp4 恶意代码分析
当然官网也提供了单独的Sysmon的下载,也可以只选择Sysmon而不下载整个的一组套件。
下好了之后解压到c盘,然后在命令行里输命令安装
20165207 Exp4 恶意代码分析
然后,如果想在win10里的某个文件夹打开powershell可以按ctrl+shift+右键:
这样打开的快一些,不用一步一步往目录里进
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
看来安装之前要先写好配置文件才能安装
那下面先写“小毛驴”配置文件
除了看那个触摸板之外,本来我还想排除一些常见的程序的,但是杀毒软件也关掉了,任务管理器里面的其他进程除了带windows的我都不认识几个,又怕会有把名字伪装成带windows之类的恶意程序,就没有往实验指导里xml的模板里再加限制了,然后利用命令开始安装:
20165207 Exp4 恶意代码分析
哈,版本错了。而且官网的例子上也有问题:
20165207 Exp4 恶意代码分析
可能他们是知道自己官网上的例子好久没更新了,才会把正确的4.20输出来吧
改过来,重新装,没有出其他问题:
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
然后让这个system monitor也跑上一个晚上。
PS: 刚开始的时候遇到了几个问题,打开日志之后出来一堆和迅雷有关的记录……,然后我把迅雷退了,占着我的网上传东西,还增加分析的工作量
还有就是正在那个每分钟运行一次的任务计划,忘记加进小毛驴里面去掉了
还有就是,进程终止的信息像这种:
20165207 Exp4 恶意代码分析
实际上是不需要的,人家都终止了,也没办法干坏事了。
所以初步修改一下之后,增加了下面这几行,减少一下明早的工作量
20165207 Exp4 恶意代码分析
间隔一分钟之后刷新一下,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
20165207 Exp4 恶意代码分析
嗯?是我搜索方法有问题么
试一下搜别的,比如360浏览器的名字360se6
20165207 Exp4 恶意代码分析
能搜出来,!
那,为啥搜不出来Apoint.exe
Apoint.exe理论上是个自带的驱动,而且连接过微软的IP,难道说微软的套件会自动忽略掉自带的东西?
那再搜一下微软的Skype?
20165207 Exp4 恶意代码分析
联网的事件的ID为3,但是在txt对应的Apoint联网的时间里,sysmon完全没有出现ID为3并且是Apoint.exe联网的事件。
看来使用Sysmon重点分析我电脑上的可疑进程遇到了问题,我觉得后面我应该用类似沙盒或者apiHook之类的研究一下它的行为
另外,在查看其他的sysmon日志中的事件的时候,发现了一个没有见过名字的进程,oemdrvrepair
20165207 Exp4 恶意代码分析
联想官网的解释是“联想电脑管家原厂服务”。
附近还有一个联网比较频繁的进程,名字叫“Oemsyscheck.exe”
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
所以说,不排除我电脑里面的Apoint是一个“Oem”的代工产品,因此和描述的不联网有差异,而且驱动修复的过程中也有需要联网的可能性

1.2、恶意软件分析

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

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

sysmon分析

先根据新的IP重新生成一个后门的shellcode,
20165207 Exp4 恶意代码分析
20165207 Exp4 恶意代码分析
扔进vs里重新编译
20165207 Exp4 恶意代码分析
kali开启监听
20165207 Exp4 恶意代码分析
windows双击运行之后查看sysmon的日志
首先出现了ID为1的进程创建事件:
20165207 Exp4 恶意代码分析
下一个事件是向我的kali发起tcp连接
20165207 Exp4 恶意代码分析
如果不在kali里执行命令,然后就没有后续发生的相关事件,在kali里获取击键记录看这边sysmon的日志会发生什么
20165207 Exp4 恶意代码分析
日志里出现了一个进程创建的事件,是RunTimeBroker进程,这个程序是用来检测应用是否有某项权限的。
20165207 Exp4 恶意代码分析
也就是说获取击键记录的操作是被系统发现了的,但是具体是哪个进程获取的我还没有分析出来
按理来说,能够获取击键记录的程序是被打包成dll文件然后被kali发送到内存当中的,sysmon能不能监控内存呢
好像是不可以的。再在kali里面再做一些操作,比如输出击键记录和抓取摄像头,但是主机的日志里面还是没有特别明显的不正常的东西诶
只有这个searchFilterHost说有13%的可能是恶意软件伪装
20165207 Exp4 恶意代码分析
然后遇到的最明显的一个是下面这个开始录制音频的进程,因为主机里面是没有录音的操作
20165207 Exp4 恶意代码分析

DependencyWalker静态分析

用sysmon得到的信息并不多,我想继续用DependencyWalker查看一下这个程序会调用什么动态链接库
20165207 Exp4 恶意代码分析
KERNERL32.DLL是负责内存管理和中断处理的动态库
下面这些也基本都是正常的API调用
20165207 Exp4 恶意代码分析
想想也是这样的,如果它在写死的行为里面就有恶意行为了,那我上次实验最后验收的时候也就不可能免杀了。
还是应该在进程运行起来之后,kali把写了恶意代码的dll发到受害者的内存里,那就应该用一个可以动态分析的工具了

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

打开Sysinternal自带的procmon.exe套件。
20165207 Exp4 恶意代码分析
设置过滤器:
20165207 Exp4 恶意代码分析
在右上角勾选上注册表选项(showRegisterActivity)和文件操作(showFileSystemActivity)以及第三个那个网络活动(ShowNetworkActivity)
20165207 Exp4 恶意代码分析
就看到了后门程序的进程所有的对文件和注册表操作和网络活动
20165207 Exp4 恶意代码分析
可以说是很多了
前两行是进程创建和线程创建,后面陆续开始加载内存映像
首先把met5207win10.exe本身加载到内存中
然后加载动态链接库ntdll
20165207 Exp4 恶意代码分析
ntdll加载到内存中之后开始操作注册表
最先打开了几个注册表项,可以看到是关于session manager的注册表项
20165207 Exp4 恶意代码分析
后面还有几十个和联网相关的注册表项的打开和文件创建,以及套接字相关的动态链接库的加载
20165207 Exp4 恶意代码分析
上面这些操作主要为图片中最下面一行的tcp connect做准备
然后,和kali开启了第一次tcp链接之后,陆续加载了一些加密相关的动态库
20165207 Exp4 恶意代码分析
我怀疑是上面图最上面的tcp receieve操作,kali给win10主机发来了一些含有恶意代码的库函数到内存中
然后win10调用一堆库函数,包括加密和用户的环境等等
20165207 Exp4 恶意代码分析
到这里,应该就是正式把自己的shell的控制权给人家了
20165207 Exp4 恶意代码分析
上面这些都是在14:30的一小段时间之内完成的
这里之后,我有一段时间没有操作,观察一下它会做啥
20165207 Exp4 恶意代码分析
看来就是,受害者和kali之间,你发一下我收一下,维持kali的控制权
再然后,我在kali里面输了一下获取击键记录的命令keyscan_dump,ProcessMonitor开始发生了变化
显示进程加载了如下的动态链接库:
20165207 Exp4 恶意代码分析
这几个应该是用来记录键盘的动态库
后面又抓取了一下屏幕,结果突然弹出来好多好多对视频设备的注册表操作,来使用摄像头设备
20165207 Exp4 恶意代码分析
直到后面的一次tcp数据传输之后才停止

Wireshark捕包分析

进程开始运行时,tcp三次握手建立连接
20165207 Exp4 恶意代码分析
建立连接之后的Tcp数据交互都是加过密的,数据包的内容像下面这样
20165207 Exp4 恶意代码分析
加过密的内容也符合我们刚才使用processmonitor的时候看到的调用crypto相关的动态库的行为特征

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

然后,我掏出来processmonitor来分析那个可疑的触摸板驱动
首先,通过过滤器,把要过滤的名字改成Apoint.exe
20165207 Exp4 恶意代码分析
然后,目测这个Apoint.exe没有连接外网的IP
20165207 Exp4 恶意代码分析
我大概翻了几千条,没有发现
或许和时间有关,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监视你的系统