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. Android Studio学习之 日志工具

    Log.v()   低级日志 Log.d(' ',' ')  debug调试信息 第一个参数tag,当前类名 第二个参数msg,打印具体内容 Log.i()  info数据 Log.w() warn警 ...

  2. Java Native

    native 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由 ...

  3. VMware vSphere Client 语言切换

      vpxclient -locale en_US 英语 vpxclient -locale zh_CN 汉语 vpxclient -locale ja 日语 vpxclient -locale de ...

  4. 解决thinkPHP3.2.3使用Smarty模板后无法使用系统常量问题

    https://blog.csdn.net/u014520745/article/details/52029411 在ThinkPHP/Library/Think/View.class.php 输出模 ...

  5. Base64编码解码JS

    function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr ...

  6. day01代码

    1. 使用while循环打印1,2,3,4,5,7,8,9 # 使用while循环打印1,2,3,4,5,7,8,9 count = 0 while count < 10: count += 1 ...

  7. cmake add_custom_command 使用

    cmake add_custom_command 使用 今天整理编译工程,想在编译工程前面用tolua生成c文件, 使用命令add_custom_command后,附加的命令并不执行,如下: add_ ...

  8. 剑指offer 11. 位运算 二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.   //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数     private stat ...

  9. git 远程分支回滚

    git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id ...

  10. Android Studio搭建系统App开发环境

    一.前言 在Android的体系中开发普通app使用Android Studio这一利器会非常的方便.但是开发系统app可能就会有些吃力,不过经过一些配置仍然会 很简单.我们知道系统app因为涉及到一 ...