20174320 王灏汉《网络对抗技术》Exp4 恶意代码分析


1 实践目标

(1)监控自己系统的运行状态,看有没有可疑的程序在运行。

(2)分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

(3)假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。


2 实践内容

2.1系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么,它这么干是否合适。

(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

2.2恶意软件分析

分析该软件在启动回连、安装到目标机及其他任意操作时,

该后门软件

(1)读取、添加、删除了哪些注册表项

(2)读取、添加、删除了哪些文件

(3)连接了哪些外部IP,传输了什么数据(抓包分析)


3 实践过程

3.1 系统运行监控

3.1.1  Windows计划任务schtasks

(1)新建 4320netstat.bat 文件,可以先创建txt文本文件,再直接把后缀名修改为bat,文件中内容如下:

date /t >> c:\4320netstat.txt
time /t >> c:\4320netstat.txt
netstat -bn >> c:\4320netstat.txt

复制到C盘根目录下:

(2)在命令行中输入:schtasks /create /TN netstat4320 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat4320.txt"  创建windows计划任务。

(3)打开任务计划程序,编辑计划任务。

设置程序或脚本项为刚刚再C盘新建的文件,并且将该任务设置为使用最高权限运行,否则可能会运行失败。

接下来。就安静等待大约一个小时.......

......

打开C盘中的netstat4320.txt文件可以看到已经记录了这段时间以来的所有程序的运行情况:

把所有这些记录导入Excel表格中:

在excel中我使用数据透视图,对所有这段时间以内的所有进程运行的次数进行了统计:

 可以看到出现最多的是qq、qq浏览器、虚拟机、360、wireshark等,还有一些网络连接进程以及我的后门程序,这些出现最多的都是正常的一些进程,而且都是我主动打开并运行的一些程序。

但是,也有其他的一些程序虽然不是恶意的,但却在后台偷偷运行,在自启动,比如:FLASH、搜狗云、搜狗工具、TP安全游戏中心、游戏下载(电脑上有游戏但没打游戏,安全中心和下载竟然自动运行了)等。

虽然我的电脑上没有恶意的一些程序作为后门在运行,但是却有自启动程序在后台在没有我的授权下无谓地占用CPU,实属terrible!

3.1.2 sysmon工具的使用

进入官网下载SysinternalsSuite.zip并解压。

在SysinternalsSuite所在目录下创建sysmon20174320.xml,以文本文档方式打开输入代码保存并退出。

以管理员身份运行cmd,在SysinternalsSuite目录下执行Sysmon64.exe -i sysmon20174320.xml(电脑是64位的所以运行的程序是Sysmon64.exe),开始安装sysmon工具:

 

安装成功后,打开事件查看器—应用程序和服务日志—Microsoft—Windows—Sysmon—Operational查看根据配置信息sysmon2014320.xml记录的进程信息:

3.2 恶意软件分析

3.2.1 使用virustotal进行分析

 

可以查看MD5、SHA-1、文件类型、文件大小、加壳方式等相关信息。

同时也能看到后门程序的回连ip、端口、方式,利用的注册表等等信息。

可见virustotal这个网站还是相当可靠,虽然是不能动态地分析恶意软件,不能深入地对恶意软件进行监控,但是却能在报毒提醒用户的同时给出恶意软件的相关基本信息为用户作为参考,这样的基本信息基本上是完整客观地描述清楚了这样一个程序,从某种意义上来说是非常有用的。

3.2.2 使用wireshark进行捕包分析

使用wireshark监听Vmware的接口,保持wireshark在监听状态。

打开Kali,找到之前实验中我生成的后门程序backdoor_4320.exe文件,打开msf控制台进行一下反弹回连:

回连成功后,在Wireshark过滤器中输入筛选条件【ip.addr == 192.168.10.128】查看相关的协议包信息

主机IP:192.168.10.1,虚拟机IP:192.168.10.128

可以看到主机和Kali虚拟机交换了很多TCP包,在互相传送SYN、ACK信息,进行了多次握手。

在回连成功后进行dir操作,继续进行捕包:

可以看见在握手的同时,主机向虚拟机发送了很多信息包。

在此我挑了其中一个包来查看,可以看到有192字节的数据,但是内容是经过加密的,因此没办法知道具体的内容。

3.2.3 运用sysmon工具分析

在进行上述的反弹回连和回连成功后的dir操作后,打开事件查看器,观察一下sysmon工具的日志记录发生了怎样的变化:

日志名称: Microsoft-Windows-Sysmon/Operational
来源: Microsoft-Windows-Sysmon
日期: 2020/4/13 18:13:55
事件 ID: 3
任务类别: Network connection detected (rule: NetworkConnect)
级别: 信息
关键字:
用户: SYSTEM
计算机: DESKTOP-GTUACKS
描述:
Network connection detected:
RuleName:
UtcTime: 2020-04-13 10:13:54.201
ProcessGuid: {a4b640dd-3b61-5e94-0000-0010bd7e2f12}
ProcessId: 18704
Image: F:\网络对抗20174320\ncat\backdoor.exe
User: DESKTOP-GTUACKS\浅歌韶华
Protocol: tcp
Initiated: true
SourceIsIpv6: false
SourceIp: 192.168.10.1
SourceHostname: DESKTOP-GTUACKS
SourcePort: 53971
SourcePortName:
DestinationIsIpv6: false
DestinationIp: 192.168.10.128
DestinationHostname:
DestinationPort: 4320
DestinationPortName:
事件 Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Sysmon" Guid="{5770385f-c22a-43e0-bf4c-06f5698ffbd9}" />
<EventID>3</EventID>
<Version>5</Version>
<Level>4</Level>
<Task>3</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2020-04-13T10:13:55.651639600Z" />
<EventRecordID>16597</EventRecordID>
<Correlation />
<Execution ProcessID="13552" ThreadID="14472" />
<Channel>Microsoft-Windows-Sysmon/Operational</Channel>
<Computer>DESKTOP-GTUACKS</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData>
<Data Name="RuleName">
</Data>
<Data Name="UtcTime">2020-04-13 10:13:54.201</Data>
<Data Name="ProcessGuid">{a4b640dd-3b61-5e94-0000-0010bd7e2f12}</Data>
<Data Name="ProcessId">18704</Data>
<Data Name="Image">F:\网络对抗20174320\ncat\backdoor.exe</Data>
<Data Name="User">DESKTOP-GTUACKS\浅歌韶华</Data>
<Data Name="Protocol">tcp</Data>
<Data Name="Initiated">true</Data>
<Data Name="SourceIsIpv6">false</Data>
<Data Name="SourceIp">192.168.10.1</Data>
<Data Name="SourceHostname">DESKTOP-GTUACKS</Data>
<Data Name="SourcePort">53971</Data>
<Data Name="SourcePortName">
</Data>
<Data Name="DestinationIsIpv6">false</Data>
<Data Name="DestinationIp">192.168.10.128</Data>
<Data Name="DestinationHostname">
</Data>
<Data Name="DestinationPort">4320</Data>
<Data Name="DestinationPortName">
</Data>
</EventData>
</Event>

这是运行了回连的后门文件后sysmon更新的日志,可以清晰地看到攻击者的IP地址、端口号,被监听的主机IP地址、端口等关键信息。

在进行dir操作后,立马新增了两个日志:

显然主机受到了虚拟机的控制,在对虚拟机所发出了dir指令进行响应,即立刻启动了SearchFilterHost.exe、SearchProtocolHost.exe。

SearchFilterHost.exe,SearchIndexer.exe和SearchProtocolHost.exe是Windows  的桌面搜索引擎的索引程序,它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录,以及在Windows 中添加到 Libraries 中的目录。

为了有趣我又尝试了screenshot(截屏)和webcam_snap(拍照)命令来观察是否有日志的更新,然而出乎意料的是,并没有......

不知道为什么,这样攻击性相对来说更强的命令竟然没有被sysmon监测到,甚至摄像头都已经被调用了,它都没能反应过来。

这工具不行啊.......

3.2.4 使用SysTracer分析

下载并安装systracer。

配置好端口号4320和安装路径:

安装好systracer以后,就可以开始进行恶意软件的分析了。

为了实现多方位、多角度的分析,我对以下六个状态的快照进行了对比:

  • 系统未运行后门的正常状态(Snapshop #1)
  • kali启动回连后的状态(Snapshop #2)
  • 主机运行后门后成功回连kali状态(Snapshop #3)
  • 通过得到的shell命令主机新建文件(Snapshop #4)
  • 通过msf进行screenshot(截图)操作后的状态(Snapshop #5)
  • 通过msf进行webcam_stream(摄像)操作过程中的状态(Snapshop #6)

Snapshop #1:(正常状态)

Snapshop #2:

Snapshop #3:

Snapshop #4:

Snapshop #5:

Snapshop #6:

对比#1和#2,即正常状态和启动回连时的状态:

可以看到增加了大量的注册表,也有不少注册表在那个时段进行了删改,但是也仅仅停留于此,因为注册表的具体内容没办法获悉,只是说这些注册表由于刚好发生在那个时间段,因此判断可能是启动操作引起的变化。

但是在应用栏并没有看到后门程序的踪迹,综上,可以大致判断如果仅仅是启动后门程序,在没有安装到主机之前,几乎是不会对主机造成任何影响的。

对比#1和#3,即正常状态和运行后门程序并成功回连的状态:

 

可以看到后门程序对应的注册表是发生了变化的,虽然看不懂其中注册值的含义,但是可以清楚看到注册表的修改。

并且新增了大量的后门程序所对应的注册表,不同于之前#1和#2所对比的结果,这一次就很明显的能看到相关注册表的增改。

另外,甚至这个回连的过程都看得清清楚楚,包括端口号、目的IP、源IP等等,可以很明晰地证明了回连成功,主机已经受到了虚拟机的监听。

对比#3和#4,即进行截新建文件操作前后:

可以清楚的看到F盘指定位置文件是多了一个刚刚新建的4320.txt。

并且在文件新增的同时,关于后门程序的注册表也有进行响应的增加、改动。

对比#3和#5,即进行截屏操作前后:

这两次的快照虽然是有注册表的变动,但是与后门程序相关的注册表却是没有任何变化,没有增加也没有改动,因此可以得出结论,在进行截图操作前后,程序注册表不会发生改变。

但是,从理论上来说,在文件方面,应该是可以看到新增的那张截图保存下来,然而不知道是因为虚拟机内存在主机上的存储位置有问题还是说文件太多被我漏掉,我并未有看到新增的那张jpeg格式的截图文件。

对比#3和#6,即普通后门回连状态和开启摄像头录像状态:

通过网上查找资料我学习到与摄像头有关的注册表主要就是图中的HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> ksthunk里的,而恰恰当我执行摄像命令的同时,ksthunk里的注册表确实发生了变化。不仅有增加,也有相应的修改。

同时除了主机本身的硬件注册表以外,关于后门程序相关的注册表也有大量的新增。我个人猜测应该是执行摄像操作而新增的一些指令,当然,由于在Kali里的摄像视频需要通过网页来实时预览,所以部分的注册表应该是关于这个记录了这些注册信息。

通过深入学习,我又去查找了注册表相关的一些资料,学习了大多数这些常见的项分别有什么用:

①HKEY_CLASSES_ROOT:

  这个项包含所有的文件类型,文件关系,图标文件名,com对象等信息(也就是说哪一种文件要被哪一种应用程序打开都会记录在这个项里面)

②HKEY_USERS:

  所有WINDOWS用户的文件都会记录在这个项里面,每个用户会有自己的项以保存个人设置

③HKEY_CURRENT_USER:

  这个项保存了目前登陆的用户文件,以及个性化的设置,如 桌面外观,软件设置,开始菜单等.会随着登陆的用户不同而有所改变.这个项其实是HKEY_USERS的子项,当用户登陆系统后即由HKEY_USERS将用户的登陆设置值复制一份而成为HKEY_CURRENT_USER的项

④HKEY_LOCAL_MACHINE:

  这个项保存了绝大部分的系统信息,包括硬件配置,网络设置,以及你所安装的软件等,是注册表里最重要也最庞大的项,当你用设备管理器更改了硬件的设置时,这个项里的文件也会跟着变动,由于HKEY_LOCAL_MACHINE是常接触的项,因此再说说下面的5个子项 :

  • HARDWARE: 此项记录了与硬件有关的各项信息 如驱动的设置 
  • SAM: 包含关于用户和组帐户的信息 
  • SECURITY: 包含安全相关的信息 如 用户权限 
  • SOFTWARE: 包含已安装的各项软件信息 
  • SYSTEM: 包含有关系统启动,驱动程序加载等与操作系统本身相关的各项设置信息
  • (这5个项的内容保存在/%SYSTEMROOT%/SYSTEM32/CONFIG)

⑥HKEY_CURRENT_CONFIG :

  此项主要记录PNP设备及硬件的设置值(这与HKEY_LOCAL_MACHINE的部分内容重叠,这是由于XP支持"多硬件设置文件")

了解过这些后就会发现在利用后门进行操作时(程序的运行,文件的新建,执行一些msf的指令,I/O设备的调用等等)注册表会进行改动也就是自然的了。


4 实践后问题回答与总结

4.1 回答问题

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

  • 使用windows自带的schtasks,设置计划任务,对主机的进程运行以及上网等进行记录。
  • 使用sysmon工具,按照自己的猜测来设置配置文件,查看相关的日志事件。
  • 使用Wireshark进行捕包分析,监视异常通信行为。
  • 使用Systracer定期定时进行快照,对系统状态进行比较,系统是否有执行一些非用户主动下的操作。

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

  • 上传到virscan.org、virustotal.com等可以进行安全检查的网站上进行检测。
  • 使用sysmon工具,配置想要监控的文件信息,查看相关的日志事件。
  • 使用wireshark进行定向定目标地抓包分析,从而获取攻击方与主机的通信内容、ip等等信息。
  • 使用Systracer在改恶意程序执行时快照,比较系统状态。

4.2 遇到的问题

(1)自定义的计划任务不执行。

  起初,我是直接在C盘新建txt文件后,想修改里面的内容,但是因为我电脑权限的原因是不让我保存修改的txt文件内容的。没办法,只能是在D盘建好后再拷过来,但是拷过来以后我再把txt修改为bat后缀就怎么也没办法让计算机运行我这个任务。尝试了很久发现,必须是先在别的位置修改了后缀名之后再拷过来,存在C盘里的必须是一步到位的bat文件,这样的修改顺序是不能颠倒的。这应该是我电脑权限的问题,我一直发现我电脑对于权限要求很严格,很多操作都必须是管理员身份来进行。

(2)sysmon快照后的数据分析艰难。

  这应该是大家都会遇到的问题,进行完快照以后,由于在两次时间点中间并不是只有后门程序发生了改变,很多电脑上的其他程序、其他软件也在每分每秒地发生变化,导致最后比较不同的时候会有成千上万的注册表发生变化、会有成千上万的文件发生变化。因此,想要在这么多的信息中找到我们想要的,对我们分析有帮助的信息实在是非常困难。这时,就是考验我们对注册表,对文件的熟悉程度了,最好是要先去了解清楚注册表的相关知识再来进行分析,这样才能事半功倍。

4.3 心得与体会

  这次实践让我们学习了更多种方法来发现恶意软件存在的可能,不仅仅是像原来一样通过网站扫描这样一些静态方法去检测,同样也可以借助一些动态的工具,在恶意代码执行的情况下,利用调试工具对恶意代码实施跟踪和观察,通过分析系统状态,分析通信包的信息,对恶意程序进行识别监控等防范措施。在实践中不光学习到了老师教的方法,也自学了其他的很多分析方法,这么多的方法不管是分开还是综合使用都有意想不到的效果。这样一次较为综合性的实验,包括了很多内容,但其实也让人发现,恶意软件的存在,如果是真的有意识去发现与检测的话,不依靠杀软,我们自己也能通过这些踪迹发现其存在,我们在平时更是不能掉以轻心,时常监控自己的电脑养成好习惯,毕竟经过上一次实践就让我们认识到了并不是所有的恶意代码都会被杀毒软件拒之门外。

posted @ 2020-04-14 15:25  20174320  阅读(116)  评论(0编辑  收藏