2018-2019-2 20165312《网络攻防技术》Exp4 恶意代码分析
知识点总结
1.有关schtasks
-
schtacks
的作用:安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。 - 常用参数合集(更多详细的参数讲解可参考博客1、博客2)
-
/create
创建一个新的任务计划 -
/tn taskname
指定任务的名称 -
/tr TaskRun
指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略该路径,将假定文件在SystemrootSystem32
目录下。 -
/sc schedule
指定计划类型,其有效值有以下几类-
MINUTE
、HOURLY
、DAILY
、WEEKLY
、MONTHLY
指定计划的时间单位 -
ONCE
任务在指定的日期和时间运行一次 -
ONSTART
任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务 -
ONLOGON
每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务 -
ONIDLE
只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务
-
-
/mo modifier
指定任务在其计划类型内的运行频率,默认值1 -
/s Computer
指定远程计算机的名称或 IP 地址,默认值是本地计算机 -
/sd StartDate
以MM/DD/YYYY
格式指定任务启动的日期。默认值是当前日期,只对于ONCE
计划是必需的
-
- 实例说明:下面的命*MyApp程序从2001年 3月起每五小时运行一次
schtasks /create /sc hourly /mo 5 /sd 03/01/2001 /tn "My App" /tr c:appsmyapp.exe > 1.txt
2.有关Sysmon(参考链接)
-
sysmon
的作用:用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。 -
sysmon
用完整的命令行记录下子进程和父进程的创建行为。其中包括:- 记录驱动程序或者加载的DLL镜像的签名及其hash。
- 记录磁盘和卷的原始数据的读取请求。
- 记录网络连接,包括每个连接的源进程,IP地址,端口号,主机名和端口名(可选)
- 如果更改注册表则自动重新加载配置。
- 具有规则过滤,以便动态包括或排除某些事件。
- 在加载进程的初期生成事件,能记录在复杂的内核模式运行的恶意软件。
- 常用参数
-
-c
更新或显示配置 -
-h
指定hash记录的算法 -
-i
安装,可用xml文件来更新配置文件 -
-l
记录加载模块,可指定进程 -
-m
安装事件清单 -
-n
记录网络链接 -
-r
检测证书是否撤销 -
-u
卸载服务和驱动
-
- 有关配置文件
-
onmatch
只能设置为include/exclude
-
condition
根据需求可设置为is/is not/contains/excludes/begin with/end with/less than/more than/Image
- 事件过滤器
-
ProcessCreate
进程创建 -
FileCreateTime
进程创建时间 -
NetworkConnect
网络链接 -
ProcessTermina
进程结束 -
DriverLoad
驱动加载 -
ImageLoad
镜像加载 -
CreateRemoteTh
远程线程创建 -
RawAccessRead
驱动器读取 -
ProcessAccess
进程访问 -
FileCreate
文件创建 -
RegistryEvent
注册表事件 -
FileCreateStre
文件流创建
-
-
- 实例说明:下述规则将记录除了chrome之外的所有访问80或443的网络记录
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
</NetworkConnect>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
</NetworkConnect>
3.恶意代码分析
- 静态分析(不运行程序)
- 扫描:即提取字符串
string *
- 使用反病毒软件来确认程序样本的恶意性,如virustotal
- 进行二进制结构分析
- 进行代码结构和逻辑分析
- 扫描:即提取字符串
- 动态分析(运行程序)
- 行为分析
- 快照对比
- 实时监控行为轨迹:APIHooking
- 动态追踪分析:gdb单步调试程序
- 行为分析
Exp4.1系统运行监控
Exp4.1.1使用计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 使用schtasks指令创建计划任务
schtasks /create /TN task5312-1 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\5312-1.txt" //b表示显示可执行文件名,n表示以数字来显示IP和端口
![](https://img2018.cnblogs.com/blog/1047583/201904/1047583-20190407171411331-2005281725.png)
- 在C盘下建立
c:\5312-1.bat
date /t >> c:\5312-1.txt
time /t >> c:\5312-1.txt
netstat -bn >> c:\5312-1.txt
Windows->计算机管理->任务计划程序,可以看到新创建的任务
双击这个任务
常规->勾选使用最高权限运行
操作->编辑,将其中的程序或脚本改为
5312-1.bat
,参数可选项为空条件->电源,默认选项为前两个(你也可以修改成其他的),则表明此任务需要在接通电源且联网状态下运行
运行此任务,则可以查找到
C:/5312-1.txt
,并且每隔一分钟就会更新数据我大约让此任务运行了11h,接着使用
excel
进行分析创建一个新的excel表格,数据->获取外部数据->自文本->
C:/5312-1.txt
数据类型->分隔符号->下一步->标记所有分隔符号
全选协议那一列->插入->数据透视图->新表格
选择“周六”
在字段中去除不需要的字段,注意删去TCP
将“周六”拖到下方的“轴”、“值”
-
联网信息的统计图如图所示,我们可以从中得知排名前几的分别为:
cloudmusic.exe
、video.ui.exe
、svchost.exe
、WpnService
、sogouexplorer.exe
。-
cloudmusic.exe
是网易云,毕竟我一直在放音乐,不足为奇 -
video.ui.exe
是 win10自带的视频播放工具 -
svchost.exe
从动态链接库 (DLL) 中运行的服务的通用主机进程名称,听说当svchost.exe
长时间占用大量CPU时,一定说明系统出现了问题(有点慌ing) -
sogouexplorer.exe
是搜狗浏览器,可是在这11h内我没有使用过搜狗浏览器,当我打开搜狗浏览器的时候,它竟然占了50%的CPU(wtf???)开始怀疑我的这个浏览器并且准备和它说再见
-
按照上述同样的方法,制作了外部地址的统计图
Exp4.1.2安装配置sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 根据上述分析的结论,编写以下配置文件
5312sysmon.txt
,并将其存储在C盘下。
<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">cloudmusic.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">cloudmusic.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">cloudmusic.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">WpnService</TargetImage>
<TargetImage condition="end with">Video.UI.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">SogouExplorer.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
-
安装并启动sysmon
- 下载资源
- 解压缩之后即可使用
- 用管理员权限打开
cmd
,进入sysmon所在路径 - 安装
.\Sysmon.exe -i C:\5312sysmon.txt
- 弹出对话框->点击agree->安装完毕,启动成功
-
使用sysmon
- windows->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational。即可查看到根据配置文件的要求记录的新事件,可以通过查看下方栏中的详细信息了解具体的内容。
- windows->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational。即可查看到根据配置文件的要求记录的新事件,可以通过查看下方栏中的详细信息了解具体的内容。
-
分析Exp2生成的
5312_backdoor.exe
成功进行回连
Operational->刷新,更新事件数
Operational->查找->
5312backdoor.exe
,找到相应的日志kail控制台下执行shell获取windows的cmd,再次刷新后发现这样一个进程
C:\Windows\SysWOW64\cmd.exe
。通过查看详细信息,发现它的parentimage
竟然为5312backdoor.exe
。所以猜测他俩之间有种联系。通过查阅资料:SysWOW64
可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe
是64bit的,kali回连获取的windows的cmd.exe
是32位的。进一步相信了我自己的猜测。shell获取windows下命令行后,输入
dir
获取目录信息,发现一个多次出现很可以的进程C:\Windows\System32\svchost.exe
我又实验了获取摄像头权限and录制音频等操作,都发现了发现一个多次出现很可以的进程
C:\Windows\System32\svchost.exe
的身影。在Exp4.1.1中,我也发现了这个可疑进程。看来我的电脑……
Exp4.2恶意软件分析
Exp4.2.1静态分析
- 使用
virustotal
对20165312-Exp3-2-upxed.exe
进行扫描
-
使用
PEid
进行外壳检测检测出来此文件加壳且加壳的版本
查看扩展信息
-
使用
PE explorer
查看PE头部的头部信息-
导入文件后即可查看到PE头部信息,在《计算机病毒》这门课中老师详细介绍过PE文件头部信息,这里简要写几个
-
machine
的值为014ch
说明系统为32位 -
number of sections
的值为0005h
,说明整个文件所包含的节的数量为5 -
time data stamp
为时间戳,datavalue
记录距离1970年1月1日0时秒数,description
表明生成此文件的具体时间 -
size of optional header
为可选文件头所包含的字节数,值为00E0h
表明为32位 -
characteristics
判定文件是.dll/.exe
-
magic
判定文件类型,``010Bh```表明为32bit文件
-
View->Data Directories
查看PE的数据View->Section Headers
查看节头信息tools->disassemble
进行反汇编-
import
可以查看导入的.dll
库-
kernel32.dll
是动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll
就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
-
-
Exp4.2.2动态分析
- 使用
SysTracer
分析后门软件的运行过程使用两台虚拟机:kail和windows 7
-
选择第2个
端口号为
5312
kail和windows 7 连通之后,在进行回连之前,
take snapshot
记录快照1回连成功之后,记录快照2
在kail下获取windows所在目录
dir
,记录快照3在kail下获取windows的截屏
screenshot
,记录快照4在kail下获取windows的录音
record_mic
,记录快照5-
使用
ctrl
选择快照1和快照2,点击右下角compare
,进行快照之间的比对注册表的变换(蓝色部分为变换的部分)
进程的变换,最大的变化是新增了
5312backdoor.exe
开放端口的变换
查看
.dll
文件的变换
使用同样的方法可以查看不同快照的区别
- 使用
Process Monitor
分析恶意软件-
Process Monitor
可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化,对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。 - 下载路径
- 打开软件之后,即可查看到系统当前所有运行的进程,使用工具栏中望远镜那个图标,查找
5312systracer
,找到之后双击即可查看详细内容
-
实验中遇到的问题及解决方法
1.安装sysmon
时,遇到如下问题
然后发现自己指令打错了,纠正了错误之后,又尝试了一遍
依旧不行,然后根据提示,发现是权限不够。关闭之后,重新使用管理员权限打开cmd,就ok了!
实验总结
- 实验感想
这次实验让我知道自己电脑哪个软存在问题,也让我学习了多个扫描工具的使用方法,通过这些扫描工具,让我知道了使用恶意软件时注册表、文件等变化。使用下来,我觉得
SysTracer
最实用,通过对比不同快照之间的不同,可以清楚发现自己电脑的变化之处。
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
- 使用
schtasks
,设置一个计划任务,进行记录,并使用excel进行分析- 使用
sysmon
,修改配置文件,记录相关的日志文件。- 使用
SysTracer
,在不同时间点建立快照,并进行对比。- 使用
Process Monitor
,寻找可疑的进程
- 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
- 使用
PEid
判定是否加壳- 使用
PE explorer
查看程序头部信息- 使用
Wireshark
进行抓包分析,监视其与主机进行的通信过程