2019-2020-4 20174322童硕《网络对抗技术》Exp4 恶意代码分析
实践内容
- 系统运行监控
- 使用计划任务,每隔一分钟记录自己的电脑有哪些程序在联网
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 恶意软件分析
- 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)
- 实验中遇到的问题
- 实验总结
一、系统运行监控
主要内容: 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。 1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
1.1监听自己系统的运行状况实验步骤如下
- Windows计划任务schtasks监控程序联网状态,并将日志信息导出到txt文本中
- 每1分钟记录一下有哪些程序在连接网络。
- 可使用指令
C:\schtasks /create /TN netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
(这个文件是信息保存的文件,名称是自己起的,为了获得更详细的连接网络记录,将这个替换成接下来创建的bat可执行文件)
- 我是之前运行命令,创建了txt文档发现没截图,就又整一次,才会说文件存在
解释一下: 》 TN:Task Name,本例中是netstat 》SC: SChedule type,本例中是MINUTE,以分钟来计时 》MO: Modifier,本例中定义记录的时间间隔,当数字为1时是1分钟,5就是5分钟 》TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
PS:如果不想用命令行窗口,windows计划任务图形界面可实现同样的功能。(我的电脑右键菜单点击管理,任务导航新建任务,在各项属性内对应加上,右边分栏里点运行。设置成功会每隔一分钟闪一个命令行窗口)
- 接下来做批处理的准备工作
- 我们再加工一下,在C盘要目录下建一个文件c:\schtasks4322.bat,内容如下:
- date /t >> c:\netstat20174322.txt
- time /t >> c:\netstat20174322.txt
- netstat -bn >> c:\netstat20174322.txt
- 可以在图形界面打开计划任务,将其中每1分钟执行的指令从"cmd /c netstat -bn > c:\netstat20174322.txt"替换为“c:\netstat20174322.bat”。
- 设置下最高权限运行,保证运行流畅
- 设置完这些运行这个事件
- 这样运行之后等一段时间,两个小时左右,期间可以做别的事,玩电脑也行。
++==++==++==++==++==++==两个小时之后++==++==++==++==++==++==++==
- 结束这个任务
- 之后,我们在创建的文件的地方——c盘的netstat20174322.txt中会看到如下的输出,多了日期与时间,这样看起来更方便。
- 打开如下
上面生成的文件是非常基础的文件,如果抓取一天的数据,真要人工分析是很费力的。 有两种可能的处理方式:
(1)把这样的日志copy到Linux,用grep,cut等文本处理工具来分析; (2)在windows里的话,最好复制到excel中,再看如何统计分析。主要是目的是为了找出哪些软件连网最多,都连接了哪些IP,把没用的重复项都去掉。
- 我是想用excel软件进行网络连接的分析,先需要对生成信息做规格化处理,因为有太多的冗余信息了。
- 把所有信息拷贝到word文件中
- 使用“替换”这一功能,输入查找^s(连续不间断空格),替换成^t(制表符)就为了数据分列做准备。
- 有些信息突然被换行了,这是我不想的,一个“TCP”到下一个“TCP”之间所有我都希望在一行,这里^p是指回车符,凡是“wpnservice”单词前面有回车换行的,我一律将换行变成^t——制表符。
- 如果还想快速去掉日期啥的^#代表任意数字符
- 全部复制到excel中,点数据菜单找到“分列”
- 选择分隔符
- 用制表符作为分隔符
看下预览没有大问题就确定就好
- 它就变成了这样
- 在表上第一行打上标题
- 把“应用”这一列巨多的程序名称复制到新的工作表中,我们要看看每一个出现了多少次。
- 全选上,按照单元格值排序
- 排完序后,点右上角的“分类汇总”
- 遇到这个不用管,点确定
- 然后选择计数的方式汇总,我们计算同一个程序连接了多少次互联网
- 等待一段时间,结果变成这样
- 选择不同标签可以显示不同等级,在这里就三级标签都显示就行,然后数据菜单选“删除重复值”,点扩展选定区域,就能把重复的删掉。(如果这样删掉发现结果变了,就试试下一步的方法)
- 如果删除重复值失败了就试试这个方法
- 复制在新的工作表可以清除格式
- 得到最后的结果
- 用这些数据做图表更直观,选择所有数据在“插入”菜单选择“推荐的图表”右边有预览视图。
- 我做了个这样的
- 在该图中,我仔细甄别,发现
- Steam游戏软件、QQ、SearchUI、wechat等频繁连接互联网,有些不认识的软件我就百度他的名称
- 之后我发现频繁连接互联网的这些应用都是正常的平时一直用的软件,我想,有没有可能木马程序不是频繁连接互联网的,我就将目标聚焦在连接次数比较少的这些软件上。(后面做实验发现其实木马程序要想发挥作用,窃取信息,连接网络次数巨多)
- 红色框框中的这些软件都是正常的软件,包括微软程序的自动更新等等。接着我发现了很多未能收取到信息的程序
- 看下连接状态有些是SYN连接,有些连接断掉,有些进行了数据传输,我从IP地址下手,看看这些IP指向何处。
批量查看IP地址可参考:查询IP地址
- 真的是到处漫游,指向世界不同地方,有些是正常的服务运行商,比如微软、阿里等,还有些任然不能获得详细信息,希望不是木马软件。 因为我只记录了两个小时中软件连接互联网的次数,现在可以讲我的电脑大概没有被植入木马程序
Sysmon是微软Sysinternals套件中的一个工具。可以监控几乎所有的重要操作。
说明可参考freebuf的一篇文档或官方文档。
基本操作可以描述为三步
3.4.1. 确定要监控的目标
我感兴趣的是驱动加载、网络连接、线程注入。过滤条件相当于白名单吧,多多益善,让信任的程序尽量不要记到日志里,日志多了不好分析。
3.4.2. 写好配置文件
想记录所有网络连接就可以简单写为<NetworkConnect>*</NetworkConnect>,不写的不记录。一般都是写成类似下面的规则,会过滤掉一些。exclude相当于白名单,不用记录。include相当于黑名单。个人觉得一般人使用白名单更安全,凡是不了解都记录。
去官网下载最新的sysmoncfg运行程序,或者可用老师给的。
软件下载可以参考:Sysmon v10.42下载
我就先放桌面上,等会在这里运行就ok
下面是配置文件C:\Sysmoncfg.txt。配置文件是xml文件,我为了简单编辑就直接命令为.txt,每次用写字本打开,弄完后直接重命名为xml文件。
<Sysmon schemaversion="10.0.4.2这里版本号要改成自己下载软件的"> <!-- 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>
----------输入好代码后要修改文件名为.xml------我 是 分 隔 符---------------
老师说:规则大小写敏感,开始时<SourceIp condition="is">127.0.0.1</SourceIp>误写成<SourceIP condition="is">127.0.0.1</SourceIP>,导致不认配置文件,其中P应该小写。3.4.3. 启动sysmon
- 得要有管理员权限。
- 安装sysmon:sysmon.exe -i <设置的文件名config_file_name.>
- 会弹出安装程序,好像直接双击却不能开始安装,是安装指向xml文件的原因
- 当然配置文件可以随时修改,修改完,然后再到管理员模式下命令行界面用如下指令更新一下
sysmon.exe -c 文件名config_file_name: Z:\SysinternalsSuite201608>Sysmon.exe -c C:\Sysmoncfg.txt System Monitor v4.12 - System activity monitor Copyright (C) 2014-2016 Mark Russinovich and Thomas Garnier Sysinternals - www.sysinternals.com Loading configuration file with schema version 3.10 Configuration file successfully applied. Configuration updated.
- 有显示configuration就是更新成功了
- 然后就可以在 事件查看器 里找到日志了
分析该软件在(1)启动回连(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)时该后门软件
• 读取、添加、删除了哪些注册表项
• 读取、添加、删除了哪些文件
• 连接了哪些外部IP,传输了什么数据(抓包分析)
查看IP地址和网络连接
- 把实验三中生成的木马程序放在物理机上,kali打开msf监听,物理机运行木马程序,尝试进行一次反弹连接
- Kali监听到IP地址为192.168.1.1在物理机“网络连接”中查看该IP地址
- 关闭此次反弹连接和侦听,启动wireshark, 使用wireshark对kali回连及截屏、提权、获取击键操作的过程分别进行抓包分析。
- 在【VMware Netwoer Adapter VWnet8】中捕包
- 打开监视器
- 打开木马程序
- 对捕获的包进行分析,他们全部使用TCP协议进行传输,尤其找到特定端口进行数据传输
不难发现这里是ack三次握手
分析下,这里很多都是要先进行双方校验,所以像下图很多应答数据包,然后发送[PSH,ACK]数据包传输数据,由物理机发送给虚拟机的数据包占绝大多数。
- 下图可以看到[PSH,ACK]数据包中发送数据。
- 因为有很多个[PSH,ACK]数据包进行信息传递。
3.日志分析
在kali通过后门程序控制目标机并进行截屏、提权的过程中有以下可疑进程日志
- 该进程应该是钉钉软件进行信息传输。
- 此图显示的就是系统进程
• backgroundTaskHost.exe,百度得知为照片应用进程,可能与截屏操作有关
4.Systracer分析
- 安装软件
• 用Systracer进行快照。
- 将木马程序复制到主机上再进行快照
- 将安装木马程序前后的两次快照进行对比
- 可以看到有文件的安装
同时有很多的注册表修改信息
- 在这个行为中,有很多是新加的,在后面会显示add,也有一些是删除了,显示del
- 主要是在下图中的注册表项有变化。
- 查阅资料得知,HKEY_CLASSES_ROOT\Local Settings是应用程序运行时必需的信息,HKEY_CURRENT_USER\Software包含了所安装的应用程序信息,HKEY_LOCAL_MACHINE\SYSTEM包括设备驱动和其他服务的描述和控制,HKEY_USERS仅包含了缺省用户设置和登录用户的信息,下面的两个文件信息没有查到,可能是与当前用户有关的注册表项。
- MSVCRT.dll用于提供的C语言运行库执行文件。kernel32.dll是动态链接库文件,控制着系统的内存管理、数据的输入输出操作和中断处理,值得注意的是它驻留在内存中特定的写保护区域,是一个非常重要的内核级文件。ADVAPI32.dll文件是一个高级API应用程序接口服务库的一部分,调用这个dll可以实现对注册表的操控。WSOCK32.dll和WS2_32.dll这两个DLL用于创建套接字,用于网络连接。
- 对3、4进行比较
- 与上面的差别是多了一项HKEY_LOCAL_MACHINE\SOFTWARE,这个键列出了所有已安装的32位软件和程序的.ini文和程序的控制功能。
- 导出快照文件后发现启动回连时添加了很多dll文件,也添加了很多dll
(1)物理机和虚拟机ping不通
我做实验时想监听kali获取物理机shell时有传输哪些数据包,但物理机和虚拟机ping不同,也就是连接不上,百度搜索后,改IP,改网络连接VAmare的V8网络连接地址,改虚拟网络配置,网上还说可以关防火墙,但我权衡了下,因为笔记本得连接互联网,关防火墙这种事还是最好不做。
可以ping通这个ip
就用他做实验了。做下来用这个地址也是没问题的,可以监控进程。
- sysmon监和事件查看器中查看日志
- Systracer监控注册表和文件修改
- 使用netstat监控连接网络的应用程序
- 杀软监测开机启动项
结合运行程序调用,注册表删除和添加,自启动程序记录,程序传输数据量和日志中的信息分析监控
- 命令行中使用
netstat
查看进程连接的外部IP和端口,并追踪 - 使用
Wireshark
捕获分析,查看info - 通过
systracer
快照对比,观察文件、注册表等的修改
实验心得和总结
本次实验较好的完成实验项目中的全部内容,在实验中对恶意软件、恶意代码的行为模式进行了分析,体会木马程序的感染、触发、控制、删除不同步骤下对系统注册表、文件列表的增加、修改、删除。通过对整个系统进行监控来找到可疑对象(经常连接互联网的程序和传输数据量巨大的进程),再对可疑对象进行进一步分析,来确认其具体的行为与性质,针对其行为模式,采用具体的查杀方法,面对不确定是否为恶意的程序或进程可以百度,就能分析出一些有用的信息。通过学习,我认识到有很多的杀毒查毒软件,比如火眼等都能对木马查杀这一环起到很大作用,但杀毒软件只是保护系统的一项措施,重要的是人要提高警惕,防范系统漏洞和缺陷等重大风险,面对陌生的软件程序和信息通信应当提高警惕。
posted on 2020-04-14 22:28 20174322童硕 阅读(394) 评论(0) 编辑 收藏 举报