1,实验目标
1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。
1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2,实践内容
2.1系统运行监控(2分)
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
3,具体操作
3.1系统运行监控——计划任务
系统运行监控:
1.schtasks计划任务
Step1:输入命令:
schtasks /create /TN netstat4305 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat4305.txt",创建一个名为netstat4305的计划任务。
Step2:在c盘根目录下新建netstat4305.bat ,以文本文件形式打开,输入以下内容:
date /t >>c: etstat4305.txt
time /t >>c: etstat4305.txt
netstat -bn >>c: etstat4305.txt
Step3:按win+R键,输入taskschd.msc打开任务计划程序,找到新创建的计划任务netstat4305.
Step4:右键单击该任务,打开任务属性。在“常规”界面,勾选“使用最高权限运行”,配置选择windows10。
Step5:找到操作,对启动程序进行编辑。
将bat文件写入到“程序或脚本”中,确认、保存和退出。
至此,netstat4305.txt文件可以每隔一分钟记录一次本机的网络连接以及记录时间。
Step6:写入excel表格,制表分析
数据透视表
簇状柱形图
3.2sysmon工具监控
1,下载sysmon工具并解压至桌面。
在桌面新建一个XML文件sysmon.xml,以txt文件形式打开并写入下面这段内容并保存:
<Sysmon schemaversion="4.23">
<!-- 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>
<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>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">4305</DestinationPort>
<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>,
2,右键单击开始菜单,选择Windows PowerShell(管理员)(A),进入管理员界面下的命令行。通过cd进入到sysmon安装程序所在的目录也就是桌面,执行命令:.Sysmon.exe -i sysmon.xml,安装sysmon工具。
随着安装步骤进行直至安装成功。Sysmon.xml文件内容可随时更改,修改完需要用指令进行更新:Sysmon.exe -c sysmon.xml。
右键单击开始菜单,选择并打开事件查看,双击“应用程序和服务日志”,依次进入/Microsoft/Windows/Sysmon/Operational,在这里可以查看sysmon工具记录下的系统日志。
此时在Windows端上运行之前实验生成的后门使其成功回连至kali端上。
根据kali显示的信息可知,连接建立于9:49:12,那么照着这个时间去搜索日志,可以很精确地找到记录后门建立的日志信息。
如上图所示,找到9:49:12这个时间的日志,就是后门建立的日志信息,可以看出任务类别是“ProcessCreate”,也就是创建进程的日志,在下面的常规信息和详细信息说的都是这个日志的内容,包括进程对应的镜像地址是C:Users10983Desktop4305encoded.exe,日志来源是sysmon,记录时间是2020/4/17 9:49:12,本机连接的服务器类型是Apache HTTP Server,日志描述是ApacheBench command line utility。类似地,后门的其他日志也可以通过这种方式辨别和分析。
3.3恶意软件分析:
静态分析
(1)Virustotal分析
将可以目标放到virustotal网站上进行扫描,可以得到该网站上每一款杀软对该目标的扫描结果,从图中可以看出71款杀软中有56款都示警了。在DETECTION栏目里,可以看到每一款杀软的示警信息,告知用户它是什么类型的恶意代码。
有的杀软只是说suspicious,可疑的,比如Acronis;有的杀软就会明确给出它是什么类型的恶意代码,比如BitDefender就说是Trojan.CryptZ.Gen这种木马,很详细!
在DETAILS栏目里,可以查看关于该文件的详细信息,
2)文件格式识别(peid工具)
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
该软件可以使用不同的扫描模式:正常扫描:可在PE文档的入口点扫描所有记录的签名;深度扫描:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
核心扫描:可完整地扫描整个PE文档,建议将此模式作为最后的选择。
(3) 反编译、反汇编(PE Explorer工具)
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,非常好用。
导入实验三生成的编码一次的后门4305encoded.exe,然后在“视图”栏可以查看文件头信息、数据目录、区段头等信息。
上图是该后门的文件头信息,可以看出这些信息都是相当具体、细节和底层的信息,很多都是和地址、大小、特征有关。
上图是该后门的数据目录,内容很复杂,但是可以看出它们都非常具体详细,从微观层面解释了这个后门。
上图是该后门的区段头。结合着数据目录和文件头信息,这么多底层细节很有助于分析一个后门在计算机中的活动轨迹,精确度极高,但同时也需要足够的知识储备和专业素养。
打开附属扫描器,可以看到该后门(4305once.exe)所调用到的dll模块,非常详细,几个大类里面有许多小的dll模块,数量非常之大,在这里查看的dll比上面的PEiD查看的更为详细。
上图是针对后门4305once.exe的反汇编结果。
调用出附属扫描器,可以得到该后门所依赖的的dll列表,这部分内容非常详细。
·动态分析:
主要有以下几种方法:
快照比对(SysTracer、Filesnap、Regsnap工具等)
抓包分析(WireShark工具等)
行为监控(Filemon、Regmon、ProcessExplorer工具等)
沙盒(NormanSandbox、CWSandbox工具等)
动态跟踪调试(Ollydbg、IDAPro工具等)
(1)Wireshark抓包分析
在后门作用期间用wireshark进行抓包,完整记录kali与Windows间的网络信息交互过程。以tcp4305端口为过滤条件精准得到和后门有关的数据包。因为后门在kali端只启用了4305端口,而Windows往往很少会调用这个端口,所以以此条件过滤得到的数据包绝大多数都是和后门有关、因后门而生成的。上图的前三个数据包是tcp三次握手的过程,192.168.1.104是Windows的IP地址,192.168.1.103是kali的IP地址。第一次握手由Windows向kali发出,即由被攻击方向攻击方主动申请建立连接,这正是反弹连接的一大特点。从第四个数据包开始,就由kali端先发送数据包,窃取Windows端的信息。
在kali端命令行输入exit,断开后门连接。此时winreshark会抓到一个标红的数据包rst包,这是最后一个数据包,它标志着连接的断开。
(2)systracer工具安装。
选中间那个。
设置端口4305。
制作当前状态下的快照。每次快照均记录以上信息,包括注册表状态、磁盘文件状态和应用程序状态。在三个状态下制作系统快照,分别是后门运行前、后门会连成功并执行一些操作以及后门断开连接。
在软件右下角,有下图所示的对比操作,可以选中两个快照进行对比,看它们彼此间有什么差异变化。从中就可以看出后门在此期间干了什么。
比如,可以选择compare快照一和二,对比它们之间的变化。
左侧导航栏查看的是注册表的对比情况,绿色表示新增,红色表示删除,几大类注册表信息下面有所有的子类注册表信息。
如上图所示对比文件信息的差异,可以看到后门运行前后有哪些文件是新添加的,还有哪些是被后门删去了的。文件路径都很明确很完整。
对比快照一和二的开放端口信息,可以看出新增了上图红框所示的那部分内容,这就是后门建立的连接,本地29747端口连向了kali的apache http服务器,直指kali的tcp4305端口。
4,基础问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
使用schtasks,设置计划任务,对主机的进程及上网情况进行记录。
使用Systracer定期定时进行快照,对系统状态进行比较,系统是否有执行一些非用户主动下的操作。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
用SysTracer记录不同时刻系统的快照, 发现该进程或程序都对自己的电脑做了哪些修改,
用wireshark进行定向定目标地抓包分析,从而获取攻击方与主机的通信内容、ip等等信息。
5,实验心得
此次实验不是特别困难,但也很考验操作。需要掌握多种软件及其操作方法,需要特别细心与沉着。实验中出现了许多问题,非常感谢老师和同学的帮助。通过本次实验,我对恶意代码的分析有了更深的认识。对于网络防护,需要谨小慎微。希望下一次实验我能表现得更好。