20184328yh《网络对抗技术》实验四:恶意代码分析
《网络对抗技术》实验四:恶意代码分析
20184328yh
目录
1.1监控系统运行状态,看有没有可疑程序在运行
1.2分析一个恶意软件(Exp2或Exp3中生成后门软件),分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3先用系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
- Windows计划任务schtasks监控程序联网状态,并将日志信息导出到txt文本中
- 每1分钟记录一下有哪些程序在连接网络。
- 可使用指令:
C:\Users\11768>schtasks /create /TN 20184328netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
- 为了显示日期和时间,可以通过bat批处理文件来实现。首先创建bat文件,在C盘下建一个txt文件,内容输入如下,再修改文件后缀名为bat即可
date /t >> c:\netstatlog.txt time /t >> c:\netstatlog.txt netstat -bn >> c:\netstatlog.txt
- 打开任务计划的图形界面,找到刚刚建立的任务
- 点击操作-属性
- 点击操作选项卡,点击启动程序选项
- 把cmd改为 C:\Users\11768\Desktop\schtasks4328.bat
- 设置最高权限运行,保证运行流畅
- 运行这个事件
- 这样运行之后等一段时间,可以做一些其他的事情,积累一些数据,之后结束此任务,再右键netstatlog.bat,以管理员的身份运行
- 打开生成的txt文件,可以看到相应的信息了
- 接下来要对数据进行分析,先用word整理一下
- 使用“替换”这一功能,输入查找^s(连续不间断空格),替换成^t(制表符)为数据分列做准备
- 让所有TCP打头的数据都处在一行里面,用类似下面的方法
- 处理后数据如下
- 接下来需要把数据导入excel表里进行分析处理,打开excel,右键粘贴,选择匹配目标格式即可
- 为第一行加上标题
- 把“应用”这一列复制到新的工作表中,统计每一个出现了多少次
- 全选上,按照单元格值排序,排完序后,点右上角的“分类汇总”
- 得到各个应用的联网次数
- 删除重复值,简单整理一下,做个图表
- 可以直观的看到百度云、网易云音乐、火狐浏览器、QQ、微信、YYnote、Wpnservice等应用连接互联网的次数,都是比较正常的活动,没有发现可疑的问题。
Sysmon是微软Sysinternals套件中的一个工具
可以监控几乎所有的重要操作
- 配置文件sysmon20184328.txt,配置文件是xml文件,我为了简单编辑就直接命令为.txt,用写字本打开,输入以下内容后直接重命名为xml文件
<Sysmon schemaversion="13.02">(这里的版本号按照实际情况修改,我本次使用的版本是13.02)
<!-- 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">firefox.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<NetworkConnect onmatch="include">
<DestinationPort condition="is">4328</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>
- 启动sysmon
- 建议在官网下载最新的版本 链接:sysmon13.02 下载 (此软件不断在更新,如果打不开可自行百度进入官网修改)
- 以管理员身份运行Windows Powershell,使用指令 .\Sysmon64.exe -i 安装sysmon,出现弹窗点击I Agree
- 安装成功
- 再使用 .\Sysmon64.exe -c sysmon20184328.xml 配置文件
- 修改配置文件,增加对端口4328
- 面开始查看日志,在任务管理器中搜索并打开事件, Microsoft->Windows->Sysmon->Operational
- 运行一个后门文件,进行回连,时间为2021-4-8 22:06:15
- 根据回连时间可以查找到这个事件
- 可以看到回连成功后显示程序为20184328_attackdoor48.exe,协议为tcp协议,ip源地址为192.168.184.1,目标地址为192.168,184.149,目的端口为4328
- 把实验三中生成的20184328shellcode_upxed.exe用VirusTotal进行分析
PEiD(PE Identifier) 是一款著名的查壳工具,几乎可以侦测出所有的壳,下载地址:PEiD
- 先用实验三生成的,没有加壳的木马YU_MSF.exe进行检测,没有找到壳
- 然后对加完壳之后20184328_upx.exe进行检测,成功检测出加壳的相关信息
- 再对加密壳的20184328_Hyperion.exe进行检测,检测不到壳
- 用PE Explorer打开后门程序
- 点击视图-引入,出现5个dll
- DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。
-
1. msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件(Microsoft C Runtime Library),其中提供了printf,malloc,strcpy等C语言库函数的具体运行实现,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能。 2. kernel32.dll是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。 3. advapi32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。 4. wsock32.dll是Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。 5. ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
- 通过反汇编得到文件的反汇编信息
动态分析
查看IP地址和网络连接
- 把实验三中生成的木马程序放在物理机上,kali打开msf监听,物理机运行木马程序,尝试进行一次反弹连接
- Kali监听到IP地址为172.30.3.17,在物理机“网络连接”中查看该IP地址
- 关闭此次反弹连接和侦听,启动wireshark, 使用wireshark对kali回连及截屏、提权、获取击键操作的过程分别进行抓包分析。
- 在【VMware Netwoer Adapter VWnet8】中捕包
- 启动木马并回连成功,输入dir指令
- 可在wieshark中看到数据包
- 后门程序使用TCP传输,传输端口为4328,还可看到源地址、目标地址等等信息
- 安装软件,选择中间的选项,设置端口为4328
- 用Systracer进行快照,take snapshot,选项目默认,得到Snapshort#1
- Kali开始监听,Windows运行后门后,回连成功后拍摄快照,完成后显示Snapshop #2
- 对比#1和#2,在Applications里的Running Processes里可以发现后门程序的添加。
- 可看到后门程序的入侵从过程
- 可查看回连地址以及端口号
- 查看注册表的变化,因为正版软件要查看更具体的注册表需要购买注册码,这里就简单的看一下前后变化
-
- HKEY_CLASSES_ROOT:包含所有的文件类型,文件关系,图标文件名,com对象等信息。
- HKEY_USERS:所有WINDOWS用户的文件的记录,每个用户有自己的项以保存个人设置。
- HKEY_CURRENT_USER:保存了目前登陆的用户文件,以及个性化的设置,如桌面外观,软件设置,开始菜单等。会随着登陆的用户不同而有所改变。
- HKEY_LOCAL_MACHINE:这个项保存了绝大部分的系统信息,包括硬件配置,网络设置,以及你所安装的软件等,是注册表里最重要也最庞大的项,当你用设备管理器更改了硬件的设置时,这个项里的文件也会跟着变动。
- HKEY_CURRENT_CONFIG :此项主要记录PNP设备及硬件的设置
3.思考题
(一)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,想监控系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
1.使用一些工具帮助自己监测系统,可以实时监控电脑上的端口信息,如果某个进程启动的时候连接了一些看起来很可疑的端口,就可以进一步进行分析
2.使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录,如果自己的电脑没有联网的情况下出现了ip访问记录就可以进一步分析了
3.通过sysmon监控计算机中的重要操作,可以在事件查看器中找到相关日志进行查看
4.使用wireshark查看自己计算机的端口开放情况,查看是否有多余端口进行可疑的数据传输
5.使用Systracer拍摄不同时间点的快照进行比对,查看是否有可疑的安装、增删注册表、启动项的行为
6.使用杀毒软件进行检测
(二)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
1.利用wireshark动态分析程序动向,监视其与主机进行的通信过程
2.利用systracer工具对比快照分析恶意软件做了做了什么事情
3.利用PE explorer工具对程序调用库等信息进行分析查看,还可以对其反汇编
4.命令行中使用netstat查看外部的iP地址和端口
本次我学习了如何监测自己系统的运行状态,并试图寻找可疑程序,并在程序出现时如何分析恶意代码为未来的防护做准备,而且结果的分析阶段还考验到了信息处理能力,相比之前的实验要简单一些,唯一遇到的问题是sysmon的安装,因为我直接用安装+配置的指令无弹窗,只要分布先-i安装再-c配置文件即可。
本次实验所需要使用的工具相比前几次更丰富,恶意代码的分析方法主要分为静态分析方法和动态分析方法。这两种方法在本次实验中都有所涉及。静态分析方法是指在不执行程序的条件下进行分析,如反汇编分析等;而动态分析方法是指在恶意代码执行的情况下,利用调试工具对恶意代码实施跟踪和观察,比如抓包等等,确定恶意代码的工作过程,以便作进一步分析。但是在分析的过程中由于自己知识水平的限制,对比结果虽然明显看到有很多不同,但是分析是又不知道该从何下手,不太清楚每一项具体代表什么含义,只能通过查阅资料,特别是在抓包和快照的时候,导致最后分析的结果也不是很全面详细,希望在之后的学习中能够对其有更加深入的了解。