Exp4 恶意代码分析

目录


二、基础问题回答

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

我想监控的操作有:
(1)注册表的修改
(2)进程的访问
(3)数据包的传送及其中的内容
(4)端口的连接和占用情况(5)防火墙和杀软的防御和拦截情况。(6)连接了哪些ip。
使用方法监控:
(1)使用windows计划任务schtasks,定时记录一下有哪些程序在连接网络,干了些什么,进行分析。
(2)可以使用工具sysmon监控几乎所有的重要操作,并在事件查看器中查看日志,寻找恶意代码的痕迹。
(3)使用Process Explorer监视系统和应用程序(4)使用Process Monitor监视系统进程。

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

(1)使用virscan等网站检测,查看其行为分析等
(2)使用wireshark在该程序或进程运行时抓包,查看其与本机的通信。
(3)使用PEiD分析该程序,看看其是否加壳。

返回目录


三、实验过程记录

3.1使用Windows计划任务schtasks记录并分析。

  • 使用命令schtasks /create /TN 20165114netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\20165114netstatlog.txt"创建一个每隔一分钟重复一次的名称为20165114netstat的计划任务。

TN:Task Name,本例中是netstat
SC: SChedule type,本例中是MINUTE,以分钟来计时
MO: MOdifier
TR: Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口

  • 先在桌面创建一个txt文件,写入下列内容后,重命名更改为批处理netstatlog.bat文件。
date /t >> c:\20165114netstatlog.txt
time /t >> c:\20165114netstatlog.txt
netstat -bn >> c:\20165114netstatlog.txt
  • 将文件netstatlog.bat拖入C盘目录下,这需要管理员权限,如下图点击继续即可。

  • 打开控制面板->管理工具->任务计划程序,可以看到刚刚创建的这个任务。

  • 双击点开这个任务,为其设置属性,在常规一栏,勾选使用最高权限运行,否则可能无法运行哦,这时需要在弹窗中输入管理员密码。

  • 操作一栏,点击编辑,将程序或脚本改为批处理文件 netstatlog.bat,将参数一栏清空。

  • 除此之外,条件一栏中,默认情况下只有在计算机使用交流电源时才启动此任务,当拔出电源时就会停止任务,如果使用电池电源可不勾选此项。

  • 运行该任务,会发现20165114netstatlog.txt中已经有联网数据和记录了,如下图所示。

  • 等待几个小时候,可以用excel统计和整理分析一下收集到的数据。

  • 使用excel导入文本数据和建立数据透视图的过程可以参考学姐的博客,写的十分详细,下图是我导入后的excel表格与创建数据透视图过程。

  • 最后发现,几个联网频繁的程序是TCP,2345浏览器,虚拟机的程序等,图中也可以看到后门程序、电脑管家、wireshark等的记录。

  • 下图为一部分外部连接的ip地址:

  • 可以对可疑的ip地址进行查询,看看他们的归属地等信息。


返回目录


3.2使用sysmon工具监控自己主机的重点可疑行为。

sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性.sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

<Sysmon schemaversion="4.20">
  <!-- 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">5114</DestinationPort> 
      <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>
      <TargetImage condition="end with">firefox.exe</TargetImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

注意:

  • 版本号需要根据sysmon的版本修改,我的为:Sysmon schemaversion="4.20"
  • exclude相当于白名单,不用记录。include相当于黑名单,需要包括进去。
  • 过滤条件相当于白名单吧,多多益善,让信任的程序尽量不要记到日志里,日志多了不好分析。
  • 如果你想记录所有网络连接就可以简单写为*,不写的不记录。
  • 网略连接过滤掉了浏览器的网络连接、源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命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

  • 下载sysmon的安装包并解压。

  • 打开命令提示符(管理员),并进入该解压后的目录下,使用指令Sysmon.exe -i C:\20165114Sysmoncfig.xml安装sysmon。

  • 将会弹出如下窗口,点击agree即可。

  • 如果修改了配置文件,要运行指令:sysmon.exe -c C:\20165114ysmoncfig.txt

  • 右键我的电脑,点击管理,点击事件查看器->应用程序和服务日志->/Microsoft/Windows/Sysmon/Operational,可以查看到日期时间,事件id,任务类别等信息。

  • 点开事件,可以看到详细信息。

  • 将实验二中生成的后门传送到主机后,kali进行监听,回连成功后,查找5114,仔细查看事件及其信息。

  • 过程中我多次看到了conhost.exe,它是微软为其Vista以及Win7、Windows 2008(服务器版)系统定义的系统文件,在系统中被称为“控制台窗口主机”。其功能主要是为命令行程序(cmd.exe)提供类似于Csrss.exe进程的图形子系统等功能支持,而之前在Windows XP系统中Conhost.exe的这一功能是由Csrss.exe进程“兼职”提供的,但这被认为存在不安全因素,于是微软为了提高系统安全性在06年之后发布的Vista和Win7等系统中新加入Conhost.exe进程。毫无疑问,这个进程应该是安全的,它由微软签署。

  • 谷歌的程序:

  • 同样出现多次的dllhost.exe,是微软Windows操作系统的一部分。dllhost.exe用于管理DLL应用,在任务管理器中可以找到,这个程序对是微软Windows系统的正常运行是非常重要的。

  • 腾讯电脑管家的相关运行程序。

  • 看到我的后门程序出现了,对可疑的进程可以仔细看看详细信息,再查一查它干了些啥,就可能可以发现恶意软件的踪影。

返回目录


3.3使用VirusTotal分析恶意代码。

VirSCAN.org 是一个非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对您上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来,从而提供给您可疑程度的建议。

将后门文件放入该网站检测,进行分析。

  • 查看该后门的基本属性,包括它的MD5值、SHA-1值、文件类型等信息。

  • 便携式可执行信息,包括比较重要的部分或段落的信息、从外部动态链接库导入的功能等。

  • ExifTool文件元数据

  • 文件系统操作,包括文件打开和阅读的文件。

  • 进行了创建流程、同步机制、加载模块等等操作。

使用PEiD检测可疑对象是否加壳。

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

  • 将PEiD安装好之后是如图界面,比较小巧。

  • 先用一个没有加过壳的后门试试,什么都没找到。

  • 测试一个upx加壳后的程序,果然查出来了,还可以查看扩展信息。

  • 扩展信息的信息感觉也不是很丰富啊...

  • 点击多文件扫描,扫描一下含有多个后门程序的目录,我们可以发现,加过加密壳hyperion的后门并不能被查出来,看来这个软件并没有hyperion的记录信息。

  • 这个软件还能查看进程。

  • 点击选项,可以更改扫描模式等。

扫描模式
●正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
●深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
●核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。
PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。

返回目录


3.5 使用SysTracer分析恶意软件.

SysTracer 这是一款可以分析你的计算机文件,文件夹和注册表项目改变的系统实用工具.你可以在任何想要的时间获取无数个屏幕快照.你可以比较任何一对想要的屏幕快照,并且观察其间的不同之处.获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数.

  • 我在自己的主机上拍摄快照,由于文件太多,耗时特别长,所以只拍摄了两个快照,最好还是选择在虚拟机中进行,耗时较短。
    (1)在连接后门前拍摄快照1.
    (2)监听、反弹回连后拍摄快照2.

  • 安装软件systracer,点击iagree

  • 我选择了中间这一项,其实选择别的项也行。

  • 端口我设为5114.

  • 会弹出一个安全警报,点击允许访问即可。

  • 安装完成就是这个界面啦,点击右边就是拍摄快照。

  • 拍摄快照,我选了全部的项目文件等,这样会导致拍摄时间较长。

  • 点击Applications->running processes,我选择了only difference只看差异,可以看到后门程序的进程。

  • 打开的端口:

  • 打开的句柄:

  • 但是还有好多东西都没看到,一直提示说未注册,这个问题我也暂时没能解决掉。


3.5使用Process Monitor 监视进程

Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。 有了Process Monitor,使用者就可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。

打开软件,可以看到该软件对各个进程的详细记录与时间等等。


3.6使用Process Explorer 监视进程

由Sysinternals开发的Windows系统和应用程序监视工具,目前已并入微软旗下。不仅结合了Filemon(文件监视器)和Regmon(注册表监视器)两个工具的功能,还增加了多项重要的增强功能。包括稳定性和性能改进、强大的过滤选项、修正的进程树对话框(增加了进程存活时间图表)、可根据点击位置变换的右击菜单过滤条目、集成带源代码存储的堆栈跟踪对话框、更快的堆栈跟踪、可在 64位 Windows上加载32位日志文件的能力、监视映像(DLL和内核模式驱动程序)加载、系统引导时记录所有操作等。

  • 独特之处
    1.显示被执行的映像文件的完整路径
    2.显示进程安全令牌
    3.加亮显示进程和线程列表中的变化
    4.显示作业中的进程,以及作业的细节
    5.显示运行。NET/WinFX应用的进程,以及与.NET相关的细节
    6.显示进程和线程的启动时间
    7.显示内存映射文件的完整列表
    8.能够挂起一个进程
    9.能够杀死一个线程
  • 后门程序运行时,可以看到这个进程的执行的记录:

  • 还可以手动杀死这个进程,杀死这个进程后,kali攻击机也会失去对主机的控制。


返回目录


四、实验总结与体会

  • 根据恶意代码的原理而产生的分析工具多种多样,杀软只是其中的易于被大家接受的一种而已,杀软的用户体验比较好,只需一键就可以检测,但是通过实验我们也知道了,杀软不是万能的,它检测不出来很多恶意代码。而仔细监控系统,总会发现恶意代码的影踪,但是感觉就是需要比较专业的知识和仔细耐心的学习分析。在大量而冗杂的数据中,找到恶意代码的痕迹,确实比较麻烦。但是这种综合分析能力也正是我们需要学习和成长的方向吧。
  • 这次实验我接触到了很多不同的软件,大多软件通过日志、进程、注册表等来监控。每个软件都有自身的特点吧,我在实验过程中突然接触这些陌生软件,又需要进行大量数据分析,通过查找大量资料进行综合分析才能顺利完成。我的虚拟机和主机由于桥接模式无法Ping通,也更改了很多网络设置、查找大量资料最终才解决,所以在实验中不要一叶障目,更不要机械地去使用各种软件,去思考和分析才是解决问题的比较好的途径。

五、实验错误与问题及其解决

(1)在使用sysmon工具是遇到版本不匹配的问题。只需要将版本修改即可。

(2)实验过程中遇到了拍摄快照耗时太长,最后显示未注册的问题。最好用虚拟机作为靶机,拍摄快照比较合适,这样比较快。未注册的问题最后我也没能解决,只能重新卸载后安装。


(3)主机不可达,导致了主机与虚拟机无法互相Ping通,最后导致了无法与后门连接。更改网络设置或者关掉防火墙也都不太行。

posted on 2019-04-07 00:57  Principlewill  阅读(280)  评论(0编辑  收藏  举报