2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析

1.实践目标

1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。

1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

2.实践内容

1. 系统运行监控——计划任务(注:在虚拟机win7下完成)

  • 使用schtasks /create /TN netstat5336 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令创建计划任务netstat5336

    • TN是TaskName的缩写,我们创建的计划任务名是netstat5318;
    • sc表示计时方式,我们以分钟计时填MINUTE;
    • TR=Task Run,要运行的指令是 netstat

      bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;
    • >表示输出重定向,将输出存放在c:\netstatlog.txt文件中

  • 因为虚拟机里没什么东西,所有没有什么太多的任务

  • 在C盘中创建一个netstat5336.bat脚本文件,写入以下内容
date /t >> c:\netstat5318.txt
time /t >> c:\netstat5318.txt
netstat -bn >> c:\netstat5318.txt
  • 打开任务计划程序创建任务

  • 点击操作并编辑,将“程序或脚本”改为我们创建的netstat5336.bat批处理文件,确定即可。

  • 在任务管理器中把对应任务属性->条件->电源,关闭选项。注意:“使用最高权限运行”一定要选!!!

  • 执行此脚本一定时间,查看到本机在该时间段内的联网记录:

  • 数据分析:将存储的数据通过excel表进行整理,因为在虚拟机上做的软件比较少,从图可以看出来基本上都是阅览器使用的较频繁,其他很少。(数据分析部分借鉴博客

2. 系统运行监控——利用Sysmon

  • 使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)

  • 过滤器事件的选项:

    • 进程创建ProcessCreate的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    • 进程创建时间FileCreatTime的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    • 网络连接NetworkConnect的过滤事件选项有:UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    • 远程线程创建CreateRemoteThread的过滤事件选项有:UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 写配置文件sysmon5336.xml

<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">chrome.exe</Image>
</ProcessCreate> <FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
</FileCreateTime> <NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.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">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>

  • 参数解释:

    • exclude相当于白名单,不用记录。include相当于黑名单。
    • Image condition这里要根据自己使用的浏览器更改,例如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,火狐浏览器是“firefox.exe”我用的是360浏览器和火狐浏览器写在exclude中就是不记录由360浏览器和火狐浏览器创建的进程。想知道自己浏览器进程名,可以查看“netstat5318.txt”中的记录。
    • 进程创建时间类似,也是不创建浏览器创建进程的时间。
    • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,并查看目的端口为80(http)和443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)
    • 远程线程创建记录了目标为explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的远程线程。(explorer.exe是Windows程序管理器或者文件资源管理器,svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。)
  • 安装sysmon:执行命令sysmon.exe -i C:\sysmon20165336.xml,成功安装结果如下:

  • 查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational,在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等。

  • 利用Sysmon具体分析日志,这里我选择了自己实验二中生成的后门20165336.exe进行分析,启动回连、安装到目标主机。

  • 分析后门文件:

    • 因为该后门里的buf是经过加密得,所以虚拟机里对该文件扫描结果有些分析出来的是?这个符号。

  • 还了解到Windows7下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的。

  • SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。

3.使用VirusTotal分析恶意软件

  • 把生成的恶意代码放在VirusTotal进行分析

  • 查看恶意代码基本属性:

  • 查看该恶意代码的算法库支持情况:

4.使用PEiD分析恶意软件

  • 没有加壳的后门程序

  • 加过压缩壳的后门程序:

  • 加过加密壳的后门程序:

5.使用PE Explorer分析恶意软件

PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。

  • 查看文件引用的dll库,可以通过视图->引入进行查看,如下图所示:

  • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
  • msvcrt.dll:是微软编译软件的函数库。
  • USER32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
  • WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
  • 使用该工具查看了实验三生成的多个后门程序,发现使用veil生成的后门程序所引用的dll文件是最多的,而且所有的后门程序都会引用KERNEL32.dll这个文件。

6.使用Process Monitor分析恶意软件

  • 打开软件,可以看到各个进程的详细记录

  • 进程的详细信息和使用的库:

7.使用Process Explorer分析恶意软件

  • 后门程序进行回连时可以在 Process Explorer工具中查看到其记录。

  • 查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等。

8.使用systracer分析恶意软件

  • 在两台虚拟机中进行,windows虚拟机文件少,进行快照时间短,且易于分析。

  • 下载SysTracer工具

  • 点击右侧的take snapshot,存储快照

    • 快照一:未移植后门程序,保存为Snapshot #1
    • 快照二:移植后门程序,保存为Snapshot #2
    • 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    • 快照四:在kali中使用dir指令,保存为Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存为Snapshot #5

  • 右下角的compare键或者View Differences Lists比对各快照
  • 分析:快照一和快照二:增加后门程序20165336E.exe
    • 后门程序生成了很多文件、目录和键值
    • 注册表项中有变化
    • 进程中增加了一项与多媒体有关的应该是与record_mic指令相关

9.使用wireshark抓包分析恶意软件

  • 过滤规则设置为ip.addr == 192.168.1.168,查看和虚拟机IP有关的数据包

  • 有大量的TCP包跟回连相关,dir指令会有数据产生(PSH表示有DATA数据传输):

3.实验问题

(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。

  • 用windows自带的schtasks指令设置一个计划任务,隔一定时间记录主机的联网记录或者是端口开放、注册表信息。
  • Sysmon,修改配置文件内容,记录有关的系统日志。
  • 使用Process Explorer,对进程进行监控。
  • 使用Process Monitor,监视系统有关活动。

(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

  • 可以用Systracer(分析有关系统异常);virscan(对指定文件进行分析定性)。Wireshark(进行抓包分析)。

4.遇到的问题

  • Sysmon安装出错,原因在于用.txt编辑时版本号不对。

5.实验总结与体会

这次实验主要让我了解了一些恶意代码分析的工具程序,这些程序功能的强大引起了我极大的兴趣,让我在不断探索中,发掘恶意代码程序之间细节之处,这次实验只能说让我对这些软件有了了解,我相信只有进一步熟悉掌握这些软件,才能充分利用起来去解决实际问题,本次实验也提高了我动手能力和独立解决问题的思维,总体上没遇到很大的问题,在与同学的交流和查询学长学姐的博客中都能很好的解决,在不断地学习过程中有时要用到前面所学到的内容,这让我必须要融会贯通这些知识,让我自己不断得到锻炼,不断提高。

2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析的更多相关文章

  1. 2018-2019-2 网络对抗技术 20165232 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165232 Exp4 恶意代码分析 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门 ...

  2. 2018-2019-2 网络对抗技术 20165206 Exp4 恶意代码分析

    - 2018-2019-2 网络对抗技术 20165206 Exp4 恶意代码分析 - 实验任务 1系统运行监控(2分) (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP ...

  3. 2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析 实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...

  4. 2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析 实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp ...

  5. 2018-2019-2 20165236 《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165236 <网络对抗技术>Exp4 恶意代码分析 一.1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行; 1.2是分析一个恶意软件, ...

  6. 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...

  7. 2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  8. 2018-2019-2 网络对抗技术 20165308 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165308 Exp4 恶意代码分析 实验过程 一.系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一 ...

  9. 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165205<网络对抗技术>Exp4 恶意代码分析 实验要求 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中 ...

随机推荐

  1. LINQ to SQL语句(14)之Null语义和DateTime

    Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例子相同.在第三 ...

  2. 161110、彻底征服 Spring AOP 之 实战篇

    Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体 ...

  3. 使用kerl安装erlang遇到的问题及解决办法

    1 需要安装相关包 -dev autoconf 2 出现下面错误 * documentation : * xsltproc is missing. * fop is missing. * xmllin ...

  4. java读写csv

    http://blog.csdn.net/snn1410/article/details/9278887

  5. [C#]DataTable常用操作总结

    ].RowState == DataRowState.Unchanged)        {            //Your logic        }        //⑩Convert to ...

  6. 一个神奇的bug

    在使用touch命令创建了一个swift文件后,如果用xcode打开该文件,然后输入 #!/usr/bin/env xcrun swift 接着你就会发现,xcode崩溃了.

  7. jquery为多个元素添加事件

    html <c:forEach items="${modellist}" var="model" varStatus="status" ...

  8. java内部类继承--构造函数传参

    /: innerclasses/InheritInner.java // Inheriting an inner class. class WithInner { class Inner {} } / ...

  9. 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

    引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序(http://www.cnblogs.com/chenxizhang/p/7148657.ht ...

  10. PHP pathinfo() 函数

    PHP pathinfo() 函数 完整的 PHP Filesystem 参考手册 定义和用法 pathinfo() 函数以数组或字符串的形式返回关于文件路径的信息. 返回的数组元素如下: [dirn ...