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

原理与实践说明

1.实践目标

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

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

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

2.实践内容概述

系统运行监控

使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。

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

分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

读取、添加、删除了哪些注册表项

读取、添加、删除了哪些文件

连接了哪些外部IP,传输了什么数据

3.基础问题回答

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

使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常

使用Sysmon,编写配置文件,记录有关的系统日志

使用Process Explorer工具,监视进程执行情况。

使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

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

使用systracer工具分析恶意软件,查看其对注册表和文件的修改。

使用Wireshark进行抓包分析,监视其与主机进行的通信过程。

使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

实践过程记录

1.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)

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

TN是TaskName的缩写,我们创建的计划任务名是netstat5304;

sc表示计时方式,我们以分钟计时填MINUTE;

TR=Task Run,要运行的指令是 netstat

bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;

表示输出重定向,将输出存放在c:\netstatlog.txt文件中

在C盘中创建一个netstat5304.bat脚本文件,写入以下内容

date /t >> c:\netstat5304.txt time /t >> c:\netstat5304.txt netstat -bn >> c:\netstat5304.txt

打开任务计划程序,可以看到新创建的这个任务:

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

执行此脚本一定时间,就可以在netstat5304.txt文件中查看到本机在该时间段内的联网记录:

2.使用sysmon工具监控系统

sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。参考使用轻量级工具Sysmon监视你的系统该文章,创建配置文件sysmon20165318.xml。

可选择的事件过滤器有 ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect 网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess 进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。

我比较感兴趣的是进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。

过滤器事件的选项:

进程创建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

我创建的配置文件sysmon20165318.xml内容如下:

<Sysmon schemaversion="4.12">
<!-- 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>
<Image condition="end with">firefox.exe</Image>
</ProcessCreate> <ProcessCreate onmatch="include">
<ParentImage condition="end with">cmd.exe</ParentImage>
</ProcessCreate> <FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">firefox.exe</Image>
</FileCreateTime> <NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<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">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">firefox.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>

参数解释:

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:\sysmon20165304.xml,成功安装结果如下

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

分析日志,我分析的是自己生成的后门文件进行分析。

找到运行后门文件相对应的日志,打开这个事件,可以看到其属于“NetworkContect”。查看详细信息,可以看到这个后门映像文件的具体位置、源IP和端口、目的IP和端口等

运行shell,getuid等命令之后,我们都会找到一个之前没有出现过的C:\Windows\SysWOW64\cmd.exe程序如下图所示,SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位

恶意软件分析

静态分析

文件扫描(VirusTotal、VirusScan工具等)

文件格式识别(peid、file、FileAnalyzer工具等)

字符串提取(Strings工具等)

反汇编(GDB、IDAPro、VC工具等)

反编译(REC、DCC、JAD工具等)

逻辑结构分析(Ollydbg、IDAPro工具等)

加壳脱壳(UPX、VMUnPacker工具等)

3.使用VirusTotal分析恶意软件

把生成的恶意代码放在VirusTotal进行分析(也可以使用VirusScan工具),基本情况如下:



有20个报毒,还算可以。

查看这个恶意代码的基本属性:

4.使用PEiD分析恶意软件

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。

先看一下没有加壳的后门程序

再看一下加过压缩壳的后门程序

再看一下加过加密壳的后门程序:

这个软件可以查到压缩壳,但是查不到加密壳

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

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

KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。

msvcrt.dll:是微软编译软件的函数库。

USER32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。

WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。

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

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

我们可以看到这个后门程序引用的各种其他的库

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

靶机运行后门程序进行回连时,我们可以在 Process Explorer工具中查看到其记录,我们可以看到这个程序运行时子程序中有conhost.exe这个程序,同样的程序我们可以在cmd.exe的子程序中看到,由此我们可以知道该程序是在命令行中运行的。

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

8.使用systracer分析恶意软件

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

下载SysTracer工具

点击创建快照,若如下图没有全选,可以选择——仅扫描指定项,然后将下面的全选,之后就可以点击开始啦,接着等一会,扫描结束之后会弹出一个框,点击OK,快照就会自己保存下来

快照一:未移植后门程序,保存为Snapshot #1

快照二:移植后门程序,保存为Snapshot #2

快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3

快照四:在kali中使用dir指令,保存为Snapshot #4

快照五:在kali中使用record_mic指令,保存为Snapshot #5

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

然后进行截屏或者录像等操作,看一下具体内容,发现也是一些tcp传输数据

实验总结与体会

本次实验在操作上没有什么难度,主要是下载安装软件并应用,重点在于如何利用这些软件分析恶意代码。在不断实践的过程中,我掌握了很多种工具的用法,学会了如何让计算机周期性执行一个任务,如果把命令行下的结果记录到文件中、如何利用.bat文件显示时间、如何利用excel分析数据、如何利用Sysmon监控自己感兴趣的事件、如何写配置文件、如何分析日志中的大量信息、如何利用多种工具对恶意代码进行进一步分析。

2018-2019-2 网络对抗技术 20165304 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 网络对抗技术 20165336 Exp4 恶意代码分析

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

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

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

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

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

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

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

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

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

随机推荐

  1. 4. Traffic monitoring tools (流量监控工具 10个)

    4. Traffic monitoring tools (流量监控工具 10个)EttercapNtop SolarWinds已经创建并销售了针对系统管理员的数十种专用工具. 安全相关工具包括许多网络 ...

  2. Docker系列(四)Centos6.5 搭建私人镜像仓库 v2

    .下载.运行registry 下载registry镜像: $ docker pull hub.c.163.com/library/registry 这个下载的过程有点长,耐心等待一下.O(∩_∩)O哈 ...

  3. Go 知识点

    必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main. package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包. main 函 ...

  4. SparkStream:4)foreachRDD详解

    转载自:http://blog.csdn.net/jiangpeng59/article/details/53318761 foreachRDD通常用来把SparkStream运行得到的结果保存到外部 ...

  5. 管理mysql数据的两条sql tips

    当从B表数据更新到A表时: update A inner join B on A.aid=B.aid set A.user_name=B.username,A.phone=B.telwhere A.a ...

  6. 【转】META标签指南:哪些meta标签该用哪些不该用?

    以下内容来源:http://lusongsong.com/reed/8766.html META标签是网页代码中HEAD区的一个关键标签,其提供的信息虽然用户不可见,但却是文档的最基本的元信息.说起m ...

  7. C#中将鼠标光标变为忙碌状态

    this.Cursor = System.Windows.Forms.Cursors.WaitCursor; do_longtime_work(); this.Cursor = System.Wind ...

  8. 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)

    一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...

  9. MySQL data type

    MySQL数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQ ...

  10. Docker使用Link与newwork在容器之间建立连接

    一,使用 --link容器互联 docker 默认使允许container 互通的(通过-icc=false 关闭互通)同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地 ...