zoukankan      html  css  js  c++  java
  • 20154312 曾林 Exp4恶意软件分析

    写在前面

    如果把恶意软件比作罪犯的话,怎么看这次实验?

    • 实验目的:以后能够在茫茫人海中找到罪犯。

    • 实验过程:现在以及抓到了一个罪犯,把他放到茫茫人海里去,看看他和普通人有啥区别。这些区别就是罪犯的特征,以后可以根据这些特征找到更多的罪犯。

    • 实验手段:利用各种技术去找到罪犯和普通人的区别。

    回答问题

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

    • 监控TCP连接
    • 监控注册表修改情况
    • 监控创建新的文件
    • 监控是否频繁连接未知IP
    • 利用日志进行监控

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

    • PEiD:是否加壳
    • PE Explorer:反汇编是否有问题,是否有不正常的Data
    • Wireshark:抓包分析,是否有可疑连接
    • TCPView:查看是否使用cifs端口
    • Systracer:程序运行前后是否有注册表、端口、文件的变化

    实践过程记录

    目录

    1.系统运行监控
    1.1Sysinternals工具集
    1.1.1TCPView工具
    1.1.2Sysmon工具
    1.1.3Promon工具
    1.2计划任务并记录联网行为
    1.3Wireshrak分析
    2.恶意软件分析
    2.1VirScan分析恶意代码
    2.2分析软件动态分析
    2.2.1PE Explorer
    2.2.2PEiD
    2.2.3SysTracer

    1.系统运行监控

    系统运行监控大致可以分为两种:

    • 通过Sysinternals工具集来进行实时的分析,分析出有哪些进程、程序是比较可疑的。
    • 通过建立任务计划,将一段时间内的程序动态记录在日志里,然后通过分析日志来检查是否有可疑的程序。

    1.1Sysinternals工具集

    Sysinternals Suite包含一系列免费的系统工具,其中有大名鼎鼎的Process Explorer、FileMonRegMon等,如果把系统管理员比喻成战士的话,那么Sysinternals Suite就是我们手中的良兵利器。熟悉和掌握这些工具,并且对Windows的体系有一定的了解,将大幅度的提高日常的诊断和排错能力。

    这次我们主要使用的是:

    • TCPView
    • Sysmon
    • Promon
    1.1.1TCPView工具

    顾名思义,TCPView自然是用来监测TCP连接的工具,在开启后门的情况下,打开工具就可以看到后门程序正在通过RemotePort:4312连接到RemoteAdress:192.168.15.132,值得注意的是LocalPort这一栏只有4312-3是cifs,其他的进程都是具体的端口号。

    查阅资料可以知道cifs是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。很明显如果有程序的LocalPort显示为cifs的时候就要注意了。

    1.1.2Sysmon工具

    SysmonSysinternals工具集里面一个重要工具,最主要的功能就是可以通过自定记录规则进行系统运行的监控,语法结构与HTML一致,在老师配置文件的基础上我修改了一份自己的配置文件。

    <Sysmon schemaversion="4.00">
      <!-- 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>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">Chrome.exe</Image>
    </NetworkConnect>
    
    <NetworkConnect onmatch="include">     
      <DestinationPort condition="is">80</DestinationPort>      
      <DestinationPort condition="is">443</DestinationPort> 
      <DestinationPort condition="is">4312</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="endwith">powershell.exe</SourceImage>
    </CreateRemoteThread>
      </EventFiltering>
    </Sysmon>
    

    配置的时候可能会由于版本号不对导致无法进行配置,只要修改头部的版本号就可以了。就是这个<Sysmon schemaversion="x.xx">

    显示Sysmon started之后就开始记录了,到事件管理器里面就可以看到。

    使用Sysmon的查找功能可以迅速找到你想要查找的有关内容

    或者使用筛选器,筛选出一段时间内的信息

    结合这两点分析,就找到了电脑上的后门4312-3.exe

    1.1.3Promon工具

    同属于Sysinternals工具集主要是对于进程进行的分析,并且能够以进程树的形式分析每一个进程的行为。

    刚开始分析就看到了一个很奇怪的东西

    这个JUMP文件是我当时实践跳一跳脚本的文件夹,莫名其妙出现了一个LDSGameCenter的文件,正打算百度一下看看这是个啥,结果一念发现LDS=鲁大师这可能是个鲁大师的游戏中心文件,百度了一下果然是。我说我怎么一直找不到鲁大师游戏中心到底存哪了。顺藤摸瓜把它删了。

    如果选择用ProcessTree视图查看可以看到很多cmd.exe的进程树,我觉得都很可疑,因为一般正常的程序是不会有一个cmd.exe进程在下面常驻的,一个一个点开看,果然看到了4312-3.exe

    4312-3.exe进行分析,可以看到程序的链接路径

    进行回连之后,先执行dir命令,可以看到4312-3.exe读取了整个Desktop的文件,并且进行了CreateFileCloseFile操作。

    再看看执行webcam_snap会有什么不同,可以看到新出现了LoadImage等一系列操作。并且还修改了和COM3有关的注册表,COM3明显是一个端口,这一点已经很可疑了,一般不会有什么程序用到COM1 COM2之外的端口。

    我们再用record_mic命令试试看

    又一次修改了COM3端口有关的注册表,可以推测修改COM3端口是后门程序传输数据的一个重要特征。我们再看一看4312-3.exe的具体信息

    可以看到还调用了advapi32.dll库,这个库包含了函数与对象的安全性、注册表操控以及事件日志。这也可以作为后门程序的一个特征了。

    1.2计划任务并记录联网行为

    在创建计划任务之前,先创建一个netstatlog.bat文件(命令:echo netstatlog.bat),用来把netstat记录的东西格式化输出到netstatlog.txt,其内容如下:

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

    之后就可以在Windows>>计划任务里面创建新的计划,注意勾选以最高权限运行

    设置里面启动的程序只要选netstatlog.bat就ok,积累了一天的日志可以开始分析了。

    首先是把netstatlog.txt导入到excel中去,导入之后选择分隔符进行拆分就好了。

    之后我们再建立数据透视表/图,这样可以更加直观的看到情况,注意筛选一下行标签就行。

    筛选之后我们可以分别建立:

    • 程序联网频率图

    • 外部IP地址连接频率图

    • 连接状态频率图

    • 协议使用频率图

    我们主要是分析前两个,通过分析比较,我发现了程序联网频率图里有一个连接频率高,而且我不认识的程序perfwaston2,上网一查,结果发现Virscan上75%概率是病毒。

    利用搜索功能,我找到了这个perfwaston2,结果发现它竟然在VisualStudio的目录下面,通过百度,发现也有人说这个是VS用来防止扩展的。

    以防万一,我上传到Virscan上试试看

    和我自己做的后门的报错率竟然一样,引擎都一样是这个F-PORT。我接着去日志里面找到了它的连接情况

    去找一下这个IP在哪

    香港 Microsoft数据中心,可我还是不明白一个防扩展程序为什么要联网?接着把它反汇编一下

    反汇编看不出来啥,我打算发封邮件去给微软了。

    接着分析外部IP的数据透视图,不出意外找到了一个奇怪的IP地址,连接了1036次。

    到日志里找一下看看到底是谁连的

    XLServicePlatform,百度一下看看它是干啥的

    %!@#*&……!@#……!流氓服务!还连了1036次!我的流量啊!

    另外:这个地址是个山东联通的地址。

    最后还是在茫茫人海里找到了我的后门。

    1.3Wireshark分析

    回连的时候Wireshrak可以捕获到整个过程

    输入Webcam_snap命令之后可以看到,有N个满载(1514)的TCP数据包,大胆猜测,这几个就是传输Webcam拍到的图片的数据包。

    2.恶意软件分析

    恶意软件分析部分主要是运用各种分析工具,从不同的角度对恶意软件进行“解刨”。

    2.1VirScan分析恶意代码

    好像分析不出来啥???

    2.2分析软件动态分析

    利用分析软件进行动态分析可以知道每一个软件每时每刻在干啥,有比较直观的反馈。

    2.2.1PE Explorer

    利用PE Explorer可以看到程序的头部信息

    以及程序的一些数据

    还有就是程序的结头信息

    PE也可以进行反汇编,反汇编之后得到如下信息

    个人感觉PE的分析还是偏向于静态除非对于程序内部结构比较了解,不然在发现可疑程序方面不如动态的分析。

    2.2.2PEiD

    这个查壳软件解释了之前为什么加壳什么用都没有,太容易被查了...

    2.2.3SysTracer

    在使用SysTracer之后发现,它最重要的功能不是在于可以做系统快照,而是在于可以比较系统快照之间的不同。

    我根据

    • 为植入后门
    • 植入后门后进行回连
    • 回连之后使用dir命令

    分别进行了三次系统快照,结果如下

    通过三者之间两两比较可以发现注册表上的变化

    很明显可以发现4312-3.exe这个可疑进程,并且第二张图里面可以看到,有一条奇怪的data执行了inetcpl.cpl.-4312#immutable1,查资料之后就会知道inetcpl.cpl是控制面板上的Internet选项,大胆猜测这个很有可能是后门程序添加了4312这个端口有关的参数到Internet选项中去,来方便通信。

    实验总结与体会

    一个可疑程序应该有哪些特点?

    • TCPView:LocalPort为cifs
    • Sysmon:频繁连接未知IP
    • Promon: 藏在cmd.exe 进程树下面,执行诸如LoadImage createfile之类的操作,并且修改端口注册表
    • Wireshark: 传输1514大小的TCP数据包给一个未知IP
    • PE Explorer:有异常的Data,反汇编后程序中有异常的跳转
    • PEiD:程序加过壳
    • SysTracer:修改inetcpl.cpl

    最后,日志分析真的真的是个好东西!

  • 相关阅读:
    java关键字-static
    java内部类
    绘制椭圆
    画出一个三角形
    创建和使用画刷
    画刷使用
    绘制矩形
    在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()
    SecondContract 接口类
    SecondModel 实现类
  • 原文地址:https://www.cnblogs.com/zl20154312/p/8798227.html
Copyright © 2011-2022 走看看