恶意代码分析
实践目标
- 监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
目录
- 知识点
- 实验过程
- 遇到的问题
知识点详解
1.schtask
安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。
2.sysmon
sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
3.恶意代码分析
- 监控系统
- 网络连接、文件修改、系统配置、进程变化、核心API
- 静态分析
- 文件代码结构分析、反汇编等
- 动态分析
快照对比、APIHooking、动态跟踪调试
实验流程
任务一:系统运行监控
1.1使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里
- 创建脚本文件
netstatlog.bat
,内容如下
date /t >> c:\netstatlog.txt //写入日期
time /t >> c:\netstatlog.txt //写入时间
netstat -bn >> c:\netstatlog.txt //写入netstat执行结果
- 创建文件
netstaslog.txt
用于记录 - 使用
schtasks
命令创建一个新任务:schtasks /create /TN netstat5326 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
/tn TaskName 指定任务的名称。
/tr TaskRun 指定任务运行的程序或命令。977
如果忽略该路径,SchTasks.exe 将假定文件在Systemroot\System32 目录下。
/sc schedule 指定计划类型
/mo modifier 指定任务在其计划类型内的运行频率,默认值为 1
- 打开任务计划程序,看到刚刚生成成功的任务准备就绪,打开->
属性
,最高权限运行->操作
,脚本或程序:C:\netstatlog.bat
,然后开始运行 - 打开netstatlog.txt一波分析
使用excel表格查看并分析,相关指导
- 发现以下几个进程运行的很多
- downloadSDKServer:迅雷的下载程序
- kxescore:金山毒霸的密保用户的进程,开着这个防护程序就有
- microsoftEdgeCp.exe:微软浏览器相关组件,上网就会用到
- SearchUI.exe:cortana的搜索进程,发现了一个win10z的小mimi,这个居然会一直开着昂,可以任务管理器关掉节约点电(没有什么用)
- vmware-hostd:虚拟机和物理主机联通信道
- pcdrwi:pc-doctor for windows
……还有一些就是很常见的一些软件的进程就不赘述啦
其实最有用的应该是svchost.exe
这一个,搜索总结了一下,大概是这样的我们知道 Windows 和 Windows 的应用软件都 要使用大量的 DLL(Dynamic Link Libraries,动态链接库)文件,这些 DLL文 件一般都要向Windows申请各种各样的Service(服务),而Svchost. exe 就是其中一些服务的通用管理进程名(Generic Host Process Name),简单的说,Svchost.exe是这些服务的总称。每一个Svchost. exe 进程以一个 Group(组)的方式分组管理各种服务,每一个 Svchost.exe服务。
Svchost.exe在Windows XP的系统目录\Windows\System32 下,在启动的时候,Svchost.exe根据注册表中的相关信息建立一个 服务列表并根据这个列表加载相关的服务。一般来说,Svchost.exe 总是根据 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost下面的键值分组管理DLL 申请的服务,这里的每一键值对应一个独立的Svchost.exe进程
常被病毒冒充的进程名有:svch0st.exe、schvost.exe、scvhost.exe。随着Windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。而系统服务是以动态链接库(DLL)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。
在任务管理器中只能看到Svchost.exe进程而看不到该进程所包含的服务,要想了解每个 Svchost.exe 进程下到底有什么服务,打开cmd输入:Tasklist / SVC
并回车就可以看到每个 Svchost.exe进程及 其所包含的各种服务,其中Image Name
:映像名,PID
:进程标识,Services
:进程所包含的各种服务(一般是缩写)。下面截取了当前部分x进程使用svchost.exe的图,冷静分析,没分析出来啥……这几个看起来都还挺正常的我们下一个
1.2安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。配置参考
- 按照配置参考写所需的
Sysmoncfg.txt
配置文件
\\先用老师的试一下
<Sysmon schemaversion="4.20"> \\版本不一样,根据错误提示进行了修改
<!-- 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>
<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>
- 使用之前生成的后门程序进行回连(此处使用的是实验二的,payload是……/reverse_https),观察日志中的结果(日志查看:
计算机管理
->事件查看器
->应用程序和服务日志
->Microsoft
->Windows
->Sysmon
),详细信息里能看到,下面是官网上的Sysmon的事件ID对应的意思,
事件ID 1:流程创建
进程创建事件提供有关新创建进程的扩展信息。完整命令行提供流程执行的上下文。 ProcessGUID字段是跨域的此过程的唯一值,以使事件关联更容易。散列是文件的完整散列,其中的算法位于HashType字段中。
事件ID 2:进程更改了文件创建时间
当进程显式修改文件创建时间时,将注册更改文件创建时间事件。此事件有助于跟踪文件的实际创建时间。攻击者可能会更改后门的文件创建时间,使其看起来像是随操作系统一起安装的。请注意,许多进程合法地更改了文件的创建时间;它不一定表示恶意活动。
事件ID 3:网络连接
网络连接事件记录计算机上的TCP / UDP连接。默认情况下禁用它。每个连接都通过ProcessId和ProcessGUID字段链接到进程。该事件还包含源和目标主机名IP地址,端口号和IPv6状态。
事件ID 4:Sysmon服务状态已更改
服务状态更改事件报告Sysmon服务的状态(已启动或已停止)。
事件ID 5:进程终止
进程终止时,进程终止事件报告。它提供了该过程的UtcTime,ProcessGuid和ProcessId。
事件ID 6:驱动程序已加载
驱动程序加载的事件提供有关正在系统上加载的驱动程序的信息。提供配置的哈希值以及签名信息。出于性能原因,签名是异步创建的,并指示加载后文件是否已删除。
- 运行后门程序、msfconsole、监听、获取权限
- 运行26bc.exe
- dir
- getuid
可以看到如下截图:
SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
任务二:恶意软件分析
- 所以我为什么要用加密传输,微笑,截图,可以看见有一个连接的过程,猜测以下的传输过程就是来自kali后门的神秘力量
- 将payload改成tcp看下明文传些什么奇怪的东西(此处无截图)可以从psh/ack下直接看到传输明文
- 使用sys tracer(注册表分析器x进行分析)我感觉我这里做的有一点问题,还是用两台虚拟机会好一点,一定要快照!以下是运行前后compare的结果
- 拍摄运行后门前后的两次快照进行compare,我只选择了c盘进行扫描
- 可以通过
Applications
->Runnning Processes
找到当前运行的程序
遇到的问题
- Q:无法直接在c盘下建立文件夹
- 改权限,使用管理员权限或者直接修改该文件目录的造作属性
- 使用powershell(管理员),使用
Set-Location [目录]
进入要创建文件的目录,New-Item [文件名]
创建文件,一定要加后缀名!编辑文件,可以使用记事本打开:notepad.exe ./[file]
,点此查看其它方法
- Q:win10网页上下载东西下不了?
- 请Windows defender smartscreen解释一下为什么Microsoft官网下东西都不允许好吧。。在网页的高级设置关掉这个就可以了。
总结
回答问题
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用计划任务schtasks指令动态监控系统运行,输出到日志进行分析
- 使用sysmon工具动态监控系统运行,查看日志详细信息
- systracer跟踪端口
- 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 使用systracer工具进行快照分析注册表信息、文件行为等信息的变化
- 把程序放在virscan上检测查看行为报告
- 使用Task list查看任务详细信息
心得
分析的时间比较长,这次的实验名称应该叫“当我没看电脑的时候它都在干些什么”,总有种《her》的现实版的感觉,跟别的人连IP交换信息都是大猪蹄子hen。这次试验还是学到了很多有用的东西,如何使用一些小工具来分析电脑是否被恶意代码攻击等,深入学习加油