20155333 《网络对抗》Exp4 恶意代码分析 20155333 《网络对抗》Exp4 恶意代码分析

基础问题回答

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

  • 使用Windows自带的schtasks指令设置一个计划任务,指定每隔一定时间记录主机的联网记录或者是端口开放、注册表信息等等;
  • 通过sysmon工具,配置好记录事件的文件,之后在事件查看器里查看相关日志文件;
  • 使用ProcessExplorer工具,监视进程执行情况。
    2、 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
  • 使用Wireshark进行抓包分析;
  • 使用systracer工具分析某个程序执行前后,注册表、文件、端口的变化情况。

实践过程

一、系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。

第一步:在windows命令行下输入命令:schtasks /create /TN netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt"

  • TN是TaskName的缩写,我们创建的计划任务名是netstat;
  • sc表示计时方式,我们以分钟计时填MINUTE;
  • TR=Task Run,要运行的指令是 netstat
    -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;
  • c: etstatlog.txt类似于Linux中的重定向,输出将存放在C盘下的netstatlog.txt文件中(自动生成)。

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

完成后,每1分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里,为了显示日期和时间,我们通过bat批处理文件来实现。

第二步:在C盘要目录下建一个文件c: etstatlog.bat

  • 在桌面上创建一个netstatlog.txt文件,编辑文件内容如下:
date /t >> c:
etstatlog.txt
time /t >> c:
etstatlog.txt
netstat -bn >> c:
etstatlog.txt
  • 保存后修改文件名为“netstatlog.bat”;
  • 粘贴到C盘中,需要管理员权限;
  • 可以右键点击“编辑”用记事本查看bat文件内容。

第三步:编辑任务操作:

1.进入任务计划程序:“win+c”选择“设置”->进入“控制面板”->选择“管理工具”->进入“任务计划程序”

2.找到任务netstat,双击点开

3.点击下方“操作”->右侧所选项栏中“属性”->属性页面上方的“操作”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

4.双击任务进入“编辑操作”界面

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

5.在程序脚本处点击“浏览”->选择刚才创建的“netstat.bat”,“参数可选项”为空

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

6.点击“确定”完成修改

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

7.查看netstat.txt文件,已经有了时间的记录

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

第四步:等待一到两天;
第五步:用excel分析数据。

1.导入文本数据:新建excel文件->选择上方“数据”->选择“获取外部数据”->选择“自文本”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

2.选择记录连接情况的文本netstatlog.txt,点击“导入”

3.进入文件导入向导第一步,选中“分隔符号”,点击“下一步”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

4.进入文件导入向导第二步,选中全部分隔符号,点击“下一步”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

5.进入文件导入向导第三步,列数据格式选择常规,点击“完成”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

6.鼠标选中左上角第一个单元格,然后点击“确定”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

待分析数据如下:

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

第六步:对数据进行统计学分析:

1.首先查看所有联网程序的联网次数,具体excel操作如下:

①首先选中我们要分析的列:

②其次点击上方“插入”->“数据透视表”->“数据透视图”

③默认选择在一个新工作表中生成
20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

④在右侧“选择要添加到报表的字段”中点击对应字段右侧的小箭头->取消选择那些没有意义的字段,然后点击“确定”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

②将该字段拖动到下方的“轴字段”和“数值”两个区域中

⑥然后就可以看到统计图了

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

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

第一步:确定监控木马。我感兴趣的是进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。

第二步:写配置文件。

1.了解一下配置文件应该怎么写:

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

其他时间过滤器、过滤事件的选项、onmatch选项可取值、condition可设置的值、配置文件样例,可以参考使用轻量级工具Sysmon监视你的系统

2.写与自己想要监控的事件相对应的配置文件。我创建的配置文件Sysmoncfg.txt内容如下:(配置文件是xml文件,为了简单编辑就直接命令为.txt,每次用写字本打开。)

<Sysmon schemaversion="3.10">
  <!-- 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>

    <ProcessCreate onmatch="exclude">     
      <Image condition="end with">QQBrowser.exe</Image> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">QQBrowser.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">QQBrowser.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”,我用的是QQ浏览器,(不用IE浏览器),进程名是“QQBrower.exe”。写在exclude中就是不记录由QQ浏览器创建的进程。
    • 想知道自己浏览器进程名,可以查看上一阶段的“netstatlog.txt”中的记录。
  • 进程创建时间类似,也是不创建浏览器创建进程的时间。
  • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
    • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
    • 127.0.0.1表示本机IP。
  • 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
    • explorer.exe是Windows程序管理器或者文件资源管理器
    • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
    • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
    • powershell.exe是专为系统管理员设计的新 Windows命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
      3.把配置文件放在C盘下。

第三步: 启动sysmon。

1.下载老师提供的SysinternalsSuite201608压缩包,解压。

2.在命令提示符(管理员)中进入到该目录下。win8中用管理员身份运行cmd方法:使用“win+x”调出win8开始菜单->选择“命令提示符(管理员)”

2.安装sysmon:执行命令sysmon.exe -i C:Sysmoncfg.txt

3.这里弹出的窗口点击agree:

4.成功安装

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

5.如果修改了配置文件,要运行指令:sysmon.exe -c C:Sysmoncfg.txt

第四步:在事件查看器里查看日志

1.桌面“这台电脑”图标,右键菜单中,点击打开“管理”。

2.点击左侧“系统工具”->“事件查看器”

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

3.点击“事件查看器”右侧小箭头,选择日志的位置:应用程序和服务日志/Microsoft/Windows/Sysmon/Operational。

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

4.利用Sysmon具体分析日志的例子我选择了自己实验二中生成的后门back.exe进行分析。

第一步:启动回连、安装到目标主机。

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

22:03:13时可找到运行后门文件back.exe相对应的日志如下:

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

二、恶意软件分析

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

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

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

(3)连接了哪些外部IP,传输了什么数据(抓包分析)
第一步:使用virscan分析恶意软件

virscan网站上查看后门软件的文件行为分析

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

第二步:下载安装Systracer。

1.下载完成后进行安装

->设置监听端口号(我设成了后门生成时利用的端口)

->安装完成

2.在打开后门前先快照一下,点击“take snapshot”,按照以下步骤进行:

完成后显示Snapshop #1

3.Kali打开msfconsole,完成相关设置后开始监听,Windows运行后门后,拍摄快照:

完成后显示Snapshop #2

4.接下来让攻击机获取目标主机音频、摄像头、击键记录,然后生成快照:

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

5.进行分析:

①点击上方“Applications”->左侧“Running Processes”->找到后门进程“back.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号:

20155333 《网络对抗》Exp4 恶意代码分析
20155333 《网络对抗》Exp4 恶意代码分析

②在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化:

所有蓝色标注的地方,就是前后发生变化的地方。
6.此外我们可以通过查看后门软件的“opened handles”(打开的句柄)来对比:

实验总结与体会

通过完成这几次实验,对恶意代码有了较为基础的了解,目前单纯靠杀软已经很难实现对恶意代码的查杀了(做了这么多次实验,我的杀软没有一次成功检测出后门),我们需要学会通过一些工具来对系统进行监控并分析。