目录
一.实验信息
- 课程名称:网络对抗技术
- 实验序号:4
- 实验名称:恶意代码分析
- 实验人:20201207徐艺铭
二.实验内容
2.1 实践内容(5分)
2.1.1 系统运行监控(2分)
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。(1分)
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。(1分)
- 参考:schtask与sysmon应用指导
- 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
2.1.2 恶意软件分析(3分)
- 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
- 该后门软件
(1)读取、添加、删除了哪些注册表项(1分)
(2)读取、添加、删除了哪些文件(1分)
(3)连接了哪些外部IP,传输了什么数据(抓包分析)(1分) - 该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。
2.2 报告内容(1分)
2.2.1实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
2.2.2实验总结与体会
2.2.3实践过程记录
2.3报告评分( 2分)
- 报告整体观感:有带链接的目录,各级标题层次分明,易于阅读(1分)
- 文字表述:报告文字内容非常全面,表述清晰准确 加1分。
- 报告逻辑混乱表述不清或文字有明显抄袭可能不加分
三.实验知识
- TCP三次握手四次挥手
- bat文件生成:新建一个txt文本文件,将需要的命令行输入进去,保存退出后,将文件扩展改为.xml即可。
四.实验过程
4.1 系统运行监控(任务计划)
- 将如下命令写成bat脚本(bat文件制作方法已放入实验知识介绍)
date /t >> d:\netstatlog1207.txt
time /t >> d:\netstatlog1207.txt
netstat -bn >> d:\netstatlog1207.txt
- 新建一个netstatlog1207.txt文件(按照如上命令,我将txt文件放入d盘目录下)
win+R
打开cmd
- 输入如下命令
schtasks /create /TN netstat1207 /sc MINUTE /MO 2 /TR "d:\netstatlog1207.bat
- 意为创建一个新任务,新任务的名字叫做netstat1207,该任务创建完成后每隔2分钟运行一次d盘目录下的netstatlog1207.bat
- 任务创建成功后还需要在windows搜索栏找到任务计划程序,打开后找到我们刚创建好的计划任务,按下图修改属性。
- 修改后打开刚刚创建好的netstatlog1207.txt文件,看到里面已经多了很多记录
- 这些记录都是各种应用联网的时间和ip,如图有wps firefox wechat steam ToDesk等等
- 将我收集了几个小时的txt文件导入excel分析(别忘记做完这部分实验后停止任务,不然一直弹终端很烦)
- 新建excel,数据→导入数据→选择数据源→netstatlog1207.txt,按下图流程设置
- 选中要分析的数据列,点插入——>数据透视图——>默认项确定
- 将'周三'拖入下方窗口
- 得到数据分析图
- 可以看到tcp协议出现的次数最多,firefox、wps和SearchHost等等都是联网大户
4.2 Sysmon工具监控
4.2.1安装Sysmon
- 确定监控目标
- 编写配置文件:创建一个txt文件,写好配置文件后将文件后缀改为.xml(需要按照个人需求修改第一行的版本号,比如我的版本为4.83,后面的浏览器根据自己电脑的实际情况修改,比如我使用的是firefox.exe,有些同学可能用chrome.exe等等)
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<ProcessCreate onmatch="exclude">
<Image condition="end with">firefox.exe</Image>
<Image condition="end with"MicrosoftEdge.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">firefox.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
</NetworkConnect>
<CreateRemoteThread onmatch="include">
<TargetImage condition="end with">explorer.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
关于配置文件的解释
- onmatch选项只能设置为include或者exclude,exclude相当于白名单,不用记录;include相当于黑名单
- 第一行的sysmon版本号要跟使用的sysmon一致(当前版本是4.81)
- Image condition根据自己使用的浏览器更改,如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,火狐浏览器是“firefox.exe”,QQ浏览器是“QQBrowser.exe”,写在exclude中就是不记录由谷歌浏
- 进程创建时间类似,也是不创建浏览器创建进程的时间
- 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1(localhost)的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
- 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态
- 127.0.0.1表示回环地址
- 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程
- explorer.exe是Windows程序管理器或者文件资源管理器
- svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
- winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
- powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用
4.2.2 启动Sysmon
- cd 进入包含Sysmon.exe的文件夹
- 使用如下命令
- 这里我报错了,提示我使用超级用户权限
- 按下图方式以管理员身份打开powershell(右键选择管理员身份)
- 打开后重新输入指令运行成功
win+R
输入下图内容
- 打开 计算机管理->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational 查看日志
- 这时使用exp2中制作的后门程序,在kali机中连接,看看sysmon会记录些什么
- 当kali机成功连接并下达shell指令获得windows主机终端权限时,刷新一下日志,根据时间查找到记录,这就是Sysmon记录下来的关于kali机的行为
4.3 恶意软件分析
4.3.1 使用wireshark分析TCP包
主机IP:192.168.73.1
Kali IP:192.168.73.128
- 主机和Kali机均选好要抓包的网络后开始抓包
- 使用ip.addr=[目标ip]进行过滤
Kali利用后门与主机建立TCP连接(三次握手)[标志包为SYN和ACK]
Kali与主机断开连接[标志包为RST和FIN]
Kali单向企图连接主机[RST包 果然被拒绝了]
建立连接后Kali向主机传输后门程序
- Kali主动传后门的过程中,是由Kali向主机发送SYN包,三次握手后开始频繁使用[PSH,ACK]和[ACK]包传输数据,一般出现PSH包意味着有数据的传输。
- 这里分析一下抓到的包:第一行Frame8主要是要发送的数据块;使用以太网,标明了源Mac地址和目的Mac地址,由于我这里是一台机器上利用VMware来进行通信,所以图片中标明了VMware;第三行指本次传输中使用了IPV4协议,标明目的ip和源ip;第四行使用了TCP协议进行通信,源端口号和目的端口都有标明;最后一行为data包,不是所有抓到的包都有,有这一行意味着这个包携带了多大字节的数据量。
4.3.2 使用TCPView工具分析进程
- 当前进程
- 过滤了一下端口
- 直接被逮到
4.3.3 使用Process Explorer分析恶意进程
- 发现进程中命令来源是未知,而正常主机打开powershell的来源是C盘目录下
- 后门进程的举动太可疑,直接打开了cmd.exe,所以也是在进程中被瞬间逮到
- 查看线程
- 把两个线程杀掉
- Kali机中瞬间断开连接,显示died
五.基础问题回答
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
首先要监控的是网络,可以就用schtasks设置任务,然后筛选出可疑的网络行为。但凡攻击者想进行远程操作,建立了连接,就一定会被记录到。
然后检测进程和线程,一些像实验中出现的未知来源开启终端这样的高度危险行为,几乎可以肯定是遭受了攻击,同时如果攻击者想要利用我们电脑中某些后门程序进行操作,势必会在实验所使用的这几种软件中有所记录,更严重的会占用大量CPU。
还有要检测文件的创建和删除。一些后门程序很可能以一个系统文件的名字来企图蒙混过关,要关注一些所谓的“系统程序”文件是否在C盘应该出现的文件夹下,注意甄别。
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
TCPView,ProcessMonitor等等
六.实验总结体会
- 本次实验依旧是一个相对开放的实验,我们更多的是对自己的电脑进行分析,利用Sysmon监控和wireshark抓包来分析包括网络连接端口占用有无异常,利用一些工具查看自己正在运行的进程的相关情况,找到可疑行为分析恶意软件。
- 在此次实验中,由于conhost.exe和svchost.exe一直在我查看进程的过程中出现,我就去网上搜索了一下这两个进程,发现这两个进程作为系统进程,也常常是后门程序企图渗入的目标,如果发现不是在C盘SYstom文件夹下运行是,十之八九就是伪装的恶意程序,需要尽快将文件删除
- 而由于我在Kali机中使用shell命令直接获取windows主机权限的行为太过明显,也是直接在procexp中脱颖而出很快被发现查杀
- 但是我想,如果将后门程序包装一下,同时攻击意图不那么明显,悄无声息地运行很可能骗过我这样的小白,所以在之后的时间里,需要学习更多恶意软件恶意代码的特征,不断擦亮双眼,提高防范意识的同时,也提高辨别能力!