2018-2019 20165208 网络对抗 Exp4 恶意代码分析
2018-2019 20165208 网络对抗 Exp4 恶意代码分析
实验内容
系统运行监控(2分)
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
参考:schtask与sysmon应用指导
实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
恶意软件分析(1.5分)
- 分析该软件在(1)启动回连(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
- 该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)
该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。
报告评分(1分)
基础问题回答
1. 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
- 使用Windows自带的schtasks指令设置一个计划任务,指定每隔一定时间记录主机的联网记录或者是端口开放、注册表信息等;
- 通过sysmon工具,配置好想记录事件的文件,之后在事件查看器里找到相关日志文件查看;
- 使用任务管理器->进程,监视进程执行情况,查看是否有可疑程序运行。
2. 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
- Systracer分析注册表差异、文件、运行进程等的不同;
- virscan集合各种杀软,对指定文件进行分析定性。
- Threatbook也就是老师上课所说的沙箱的一种,感觉比virscan检测出的信息更多些,而且还是网页版的很方便。
实践过程记录
1. 系统运行监控——计划任务
正常导入
- 创建计划任务,使系统每1分钟自动检测到有哪些程序在连接我们的网络。
- TN:Task Name,本例中是netstat
- SC: SChedule type,本例中是MINUTE,以分钟来计时
- MO: MOdifier
- TR: Task Run,要运行的指令是 netstat
- -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
C:\schtasks /create /TN 20165208netstat /sc MINUTE /MO 1/TR "cmd /c netstat -bn > c:\netstatlog.txt"
带时间批量导入
- 相较老师的办法,我是在完成第一步的操作后删了两个文件,在桌面新建了netstatlog.txt 和 netstatlog.bat。再在netstatlog.bat中编辑如下内容:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
-
用
schtasks /create /TN 20165208netstat /sc MINUTE /MO 1 /TR "c:\netstatlog.bat"
实现批量带时间的输出。 -
在任务管理器中把对应任务属性->条件->电源,关闭选项。and千辛万苦得出的结论“使用最高权限运行”一定要选!!!另外我发现如果操作成功上次运行结果显示操作成功完成而不会像我之前失败的只显示返回值。
注意事项:这个操作要始终开机联网不锁屏,因为电池续航能力的原因我大概做了4个小时的。
数据分析
-
将netstatlog.txt的内容导入到Excel中。我使用的是WPS,依次点击:数据(选项卡)——导入数据——直接打开数据文件——选择数据源(找到netstatlog.txt所在文件夹,并选中)——打开
-
将文本进行分割成excel表。
-
文件转换页面默认选项直接“下一步”
-
文本导入向导,文件类型一定要选择分隔符号;分隔符号选择空格;
-
选择常规。
-
点击完成,就可以看到数据导入成功
-
-
对数据进行统计学分析:
-
首先查看所有联网程序的联网次数,选中我们要分析的列
-
点击上方“插入”->“数据透视图”
-
默认选择在一个新工作表中生成
-
在右侧“选择要添加到报表的字段”中点击对应字段右侧的小箭头->取消选择那些没有意义的字段,然后点击“确定”
-
将该字段拖动到下方的“轴字段”和“数值”两个区域中
-
然后就可以看到我们的统计图进行分析
-
-
分析
首先我们可以看到TCP是最多的,其次是“360se.exe”和“wpscloud.exe”。一个是360,当启动浏览器是它就会出现在任务管理器中,关闭任务管理器后会自动退出。但也有可能是病毒仿装的进程,他会有可能下载盗号或恶意修改你电脑。另一个是wps软件云端的一个服务的进程。这里我们还可以找到微信、虚拟机、后门程序20165208ex4_backdoor.exe这些连网的进程。
2. 系统运行监控——利用Sysmon
安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
确定监控对象
选择的是进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。
写配置文件
写与自己想要监控的事件相对应的配置文件。编写好的20165208Sysmoncfig.txt内容如下:(配置文件是xml文件,为了简单编辑就直接命令为.txt,每次用写字本打开。)
<Sysmon schemaversion="3.10">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<ProcessCreate onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.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>
注释
- exclude相当于白名单,不包括,即不用记录。
include相当于黑名单,即要记录的。 - Image condition,映像条件,根据自己使用的浏览器更改。例如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,我用的是360浏览器,进程名是“360chrome.exe”,也是以“chrome.exe”结尾的,所以这里只写“chrome.exe”即可。写在exclude中就是不记录由360浏览器创建的进程。
- 进程创建时间类似,也是不创建浏览器创建进程的时间。
- 网络连接为过滤掉浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
- 137端口的主要作用是在局域网中提供计算机的名字或 IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
- 127.0.0.1表示本机 IP。
- 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
- explorer.exe是Windows程序管理器或者文件资源管理器
- svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
- winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
- powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
启动sysmon
-
下载sysmon,解压。
-
安装sysmon:以管理员身份执行命令
sysmon.exe -i C:\20165208Sysmoncfig.txt
-
会提示出错,输入命令
sysmon -accepteula -i -n
;
-
就会在任务管理器中看到sysmon.exe已经在运行了
在事件查看器里查看日志
- 图标“计算机”右键,点击打开“管理”。点击左侧“系统工具”->“事件查看器”->应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
利用Sysmon具体分析日志
这里我选择了自己实验二中生成的后门20165208_backdoor.exe进行分析(命名为20165208ex4_backdoor.exe)
-
启动回连、安装到目标主机。
-
16:50:40可以找到“20165208ex4_backdoor.exe”对应的日志如下
-
因为最开始手快关了防火墙和360,最初没有出现像学姐一样的360toasts.exe。
后续操作中,开启了360,并添加了后门的信任,可以看到如:360RealPro.exe、360se.exe的进程日志。 -
其中经过查找资料emmmm怎么说的都有,360RealPro.exe有说是病毒有说是360的保护的,具体还要看数字签名,360的解释也是需要具体分析,而360se.exe是当启动浏览器是它就会出现在任务管理器中,会占较高的CPU看到了不少教关闭的教程hhhh
-
执行了record_mic截获音频、webcam_snap截获照片、keyscan_start记录击键记录、getuid获取当前用户等操作。这里就有看到一个启动了SearchFilterHost.exe的事件。
-
查找资料发现,SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
-
除此之外,还看到了一个mspclock.sys的日志
-
也去查了一下,看到有疑问说“这个是系统文件,杀毒软件为什么会提示有木马”,就又去找了下,还是模棱两可的解释。
-
之后我看到一个Audio\ADCTL.exe的日志,上网搜了下没有合适的解释,但Audio是听的意思,我想会不会和录音有关,姑且保留怀疑。
感觉这个软件更多的是用来预测,因为好多进程并不能一对一的确定为是谁造成的,更适合用来与猜测的一款软件。
3. 恶意软件分析—— virscan网站
在virscan网站上查看上次实验检查所做的后门程序。结果如下:
4. 恶意软件分析——Threatbook
也就是老师上课所说的沙箱的一种,感觉比virscan检测出的信息更多些。
5. 恶意软件分析——Systracer
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
该后门软件
(1)读取、添加、删除了哪些注册表项
(2)读取、添加、删除了哪些文件
(3)连接了哪些外部IP,传输了什么数据(抓包分析)
下载安装Systracer
- 下载完成->运行->agree->选第二个->设置监听端口号->安装完成
进行分析
这里我主要进行了四次快照,分别为还未传递后门程序前、存在后门程序后、进行回连后、进行了录音截屏记录键盘输入以及摄像头拍照等操作后。
-
点击“take snapshot”,如图,按照以下步骤进行
-
点击上方“Applications”->左侧“Running Processes”->找到后门进程“20165208ex4_backdoor.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号
-
在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化,这里可以选择only difference
Wireshark进行抓包分析
用wireshark抓包分析连接了哪些外部IP,传输了什么数据
-
首先要设置捕哪个网络的,这里我根据虚拟机的ip进行了判断。
-
在回连之前,开始捕获;回连完成后结束捕获,并把过滤规则设置为ip.addr == 192.168.134.128,这里我只想查看和虚拟机IP有关的数据包,所以把没用的包过滤掉:
可以看到,其先进行了TCP的三次握手,之后再进行数据的传输,如图所示,带有PSH,ACK的包传送的便是执行相关操作指令时所传输的数据包。
实验中遇到的问题及解决方法
1.问题:在schtasks /create /TN netstat /sc MINUTE /MO 2 /TR "c:\netstatlog.bat"
步骤时,查看netstatlog.txt,出现了各种错误包括只能更新一次、看连接情况,发现提示错误:请求的操作需要提升等。只有通过以管理员身份运行,才能正常运行,但显然这是不符合老师要求的。我知道是权限的问题,但是尝试了几种方式都以失败告终。
我分别做了以下几种尝试分别为
-
更改netstatlog.bat和netstatlog.txt的权限
-
在netstatlog.bat输入输入命令“net localgroup administrators 用户名 /add”希望能将运行变为管理员权限
-
让cmd命令行固定以管理员身份运行
在都以失败告终后,我以为我这个实验可能废了,颓(>_<)
看看我这悲催的尝试,这还是清空了三次回收站之后。。。
后来在茫茫网络之中终于看到了有人和我遇到了一样的问题,也终于找对了方法,即操作见教程
计划任务中请求的操作需要提升如何解决
2.问题:在SysTracer应用中,在用了一段时间后出现了提示No registered的情况,也不能进行比对的操作。
刚开始我以为是我同时运行了两个进程的原因
后来想起register是注册。。。我点了register,显示需要激活码,可是我没有。。。上网查了一圈也没有共享的激活码,就选择重新下载安装,好在安装过程不麻烦。
实验感想
这次实验一度让我感到绝望,第一个计划任务无论如何都不能按要求将数据导进txt中,尝试着去搜了解决方法,不是提供的方法不能解决,就是呈现效果有所折扣。因为上一次实验在验收时出现了很多我自己做的时候都没有发生的问题,所以对这次实验我也更加较真了,能在平常避免的问题一定要及时解决掉,因为我也不知道在之后的实践里又会出现什么样未知的情况。
除了这个我最大的感触在病毒查杀这方面好多软件都没有百分百的确定性,一个进程他可能是木马也可能是系统程序。大多数情况下都需要我们去猜去根据实际情况具体分析。但是又有个很方便的是就是我们这几次用到的软件普遍都不大,但功能却很全,利用好他们组合使用也能解决不少问题。
同时我这次最大的感受就是学姐学长的博客真的真的真的很有用,我这次遇到的最大的问题在自己找解决方法,尝试了四种都没成功几乎要不知道怎么办的时候,无意中看到了白皎学姐的博客,看到了她的解决办法后,顺利的解决了。有时候真的要去参考他们的经验,站在巨人的肩膀上分析问题解决问题。