zoukankan      html  css  js  c++  java
  • Exp4


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

     


    实验内容
    • 系统运行监控
      • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包
      • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
    • 恶意软件分析
      • 分析该软件在启动回连安装到目标机其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件——
        • 读取、添加、删除了哪些注册表项
        • 读取、添加、删除了哪些文件
        • 连接了哪些外部IP,传输了什么数据(抓包分析)

    基础问题
    • 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
    • 利用Windows计划任务netstat,定期查看并分析网络连接情况
    • 可利用sysmon工具,配置好想要监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看
    • 利用wireshark查看数据包,分析数据流
    • 使用Process Explorer工具,监视进程执行情况
    • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
    • 利用wireshark查看数据包,查找可以数据连接
    • 利用systracer进行快照的对比(注册表、文件等)

    相关知识

    恶意代码

    • 是通过存储介质和网络进行传播,从一台计算机系统到另一台计算机系统,未经授权破坏计算机系统完整性的程序或代码
    • 最常见的恶意代码有病毒、木马、蠕虫、后门、僵尸网络、Rootkit等
    • 恶意代码都有以下共同特征:
      • 恶意的目的
      • 本身是计算机程序
      • 通过执行发生作用
    • 具体可看恶意代码

    恶意代码分析

    • 静态分析(不运行程序)
      • 使用反病毒软件来确认程序样本的恶意性(VirusTotal或者virscan,可调用多个反病毒引擎来进行扫描)
      • 哈希值:恶意代码的指纹(md5deep程序:计算出程序的哈希值)
      • 通过检索恶意代码字符串获得相应的功能调用解释等,查看是否有被加壳处理(字符串检索:Strings 外壳检测:PEiD)
      • 可移植执行(PE)文件以一个文件头开始,包含代码信息、应用程序类型、所需的库函数与空间要求。(使用PEview来分析PE文件。使用Resource Hacker工具来浏览.rsrc节(资源)。PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具)
    • 动态分析(运行程序)
      • 沙箱:提供容易理解的输出结果,用来做初诊断非常有用(Norman沙箱、GFI沙箱等)
      • DLL类型文件执行(PEview、PE Exporer)
      • 用一些系统监视类软件捕获运行中恶意程序的系统调用(process monitor、process explorer)

    实验步骤
    系统运行监控
    (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
    • 使用schtasks指令监控系统
    • 使用schtasks /create /TN netstat1217 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat1217.txt"命令创建计划任务netstat1217,

      创建计划任务netstat1217,命令中TN是TaskName的缩写,sc表示计时方式,MINUTE表示以分钟计时,TR即Task Run,netstat是我们要运行的指令,b用来输出可执行文件名,n使其以数字来显示IP和端口,最后输出重定向,将输出存放在c: etstat1217.txt文件中。

    TN是TaskName的缩写,这里计划任务名是netstat1217;
    sc表示计时方式,以分钟计时填MINUTE;
    TR=Task Run,要运行的指令是netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。
    

      在C盘要目录下建一个文件c: etstat1217.bat(可以先在桌面新建txt文本文件,使用记事本写入后在修改后缀为.bat,复制到C盘中),写入内容如下:

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

     

     在左下角Windows处右键打开计算机管理-任务计划程序,可以看到我们新创建的任务:

    双击这个任务,点击操作-编辑,将其中的程序或脚本改为我们创建的netstat1217.bat批处理文件点击确定。(注意看这里:一定要勾选使用最高权限运行,否则可能导致文件不能自主更新或者记录里出现权限问题)

     

    在计算机管理界面对该任务右键点击运行,此时,可在netstat1217.bat所在目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据。

     

    • 现在我们等待一段时间,让记录项目足够多了我们用excel来进行分析

     将netstat1217.txt已经记录的数据导入wps表格中去.

    打开Excel表格,选择数据-获取外部数据-自文本,在数据类型中选择分隔符号

    点击下一步,标记所有分隔符号,点击完成

     

     就可以看到txt文档中一样的信息,然后选择我们要分析的那一列

    选择插入-数据透视图,并默认位置新表格,点击确定

     在字段中去除不需要的字段(注意去掉TCP)

    将该字段拖动到下方的两个区域中

     

    就可以清晰的看到联网信息的统计图了

     

     由统计数据可知,联网最多的程序是msedge.exe(微软浏览器),我们还能够找到微信、腾讯管家、网易云音乐、浏览器、excel、lenovo、还有虚拟机这些连网的进程。时不时的关注一下这些自启动程序,会很大程度避免入侵。

    发现了一个exp_backdoor.exe后门程序,是上次做实验留下的,通过查询他的连接数据,发现他所连IP都显示为[::1]:52311类,经过查询::1代表的是ipv6的本机地址,也就是ipv4的127.0.0.1,在查找相关进程在VM有关进程发现vmware-authd.exe(它是虚拟机的授权服务)所连外部IP就是我的kali的IP地址和后门设置的端口,这应该就是后门和我的主机进行通讯的一个通道吧。

     

     

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

    • 下载老师给的安装包并解压sysinternals

     右键Sysmon64.exe,在属性详细信息查看产品版本

    • 确定要监控的目标:在这里我选择进程创建进程创建时间网络连接远程线程创建

    • 写配置文件

    • 相关事件过滤器选项在使用轻量级工具Sysmon监视你的系统可看到,进程创建ProcessCreate进程创建时间FileCreateTime网络连接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

      根据这些过滤事件自主选择编写配置文件sysmon20181217.xml,内容如下:

    <Sysmon schemaversion="3.10">
    <!-- Capture all hashes -->
    <HashAlgorithms>*</HashAlgorithms>
    <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <ProcessCreate onmatch="exclude">
    <Image condition="end with">Explorer.exe</Image>
    <Image condition="end with">msedge.exe</Image>
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
    <Image condition="end with">Explorer.exe</Image>
    <Image condition="end with">msedge.exe</Image>
    </FileCreateTime>

    <NetworkConnect onmatch="exclude">
    <Image condition="end with">Explorer.exe</Image>
    <Image condition="end with">msedge.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相当于黑名单.其中将其中将Explorer与msedge浏览器设为白名单.同时去掉回环地址127.0.0.1,去掉137号端口,137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,查看http的80端口与https的443端口。
    • Image condition根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe,IE浏览器是iexplore.exe
    • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)
    • 远程线程创建记录了目标为explorer.exesvchost.exewinlogon.exepowershell.exe的远程线程。
    • explorer.exe是Windows程序管理器或者文件资源管理器
    • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
    • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
    • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
    • 以管理员身份运行CMD在Sysmon64.exe目录下执行.Sysmon64.exe -i sysmon20181217.xml

    (Windows+X :以管理员身份运行)(如果修改了配置文件,要运行指令:.Sysmon64.exe -c sysmon20181217.xml)

     注:弹出如下窗口时,记得选Agree。

    左下角右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等

     

     分析实验三生成的后门程序,按步骤执行到回连

     在点击Sysmon-Operational刷新记录,在14:03:24找到运行后门文件hellonew20181217_upxed.exe相对应的日志如下

    Linux执行shell获取cmd

    在14:20左右我获取了shell,在事件管理器中,发现C:WindowsSysWOW64cmd.exe这样一个进程,其显示目录在后门程序目录下,很显然与后门程序相关

     

     SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的。

    我们在输入dir获取目录下信息,发现了一个被运行的的进程svchost.exe。

    • Svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程,一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。每个svchost可以同时调用多个dll文件,启动多个服务。
    • 我们在输入webcam_snap获取摄像头,同样也发现了Svchost.exe这个进程。

     

    恶意软件分析

    动态分析

    使用systracer分析恶意软件
    • 下载systracer,安装并进行捕包分析systracer
    • 进入安装选择第二个,next设置端口为1217(后门生成时利用的端口),安装完成后进入界面

     

    • 捕获五个快照如下:

     打开后门前先点击take snapshot(创建快照),接着Start

    创建过程长短视当前系统体量而定,创建好后默认名称为Snapshot #1

     

    开启后门程序回连kali(停在获取命令的那一刻),此时创建第二个快照Snapshot #2

    然后kali中输入一个ls命令,此时创建第三个快照Snapshot #3

    输入screenshot命令抓屏,此时创建第四个快照Snapshot #4

    输入dir命令,此时创建第四个快照Snapshot #5

    对比Snapshot #1Snapshot #2 增加了一个运行着的后们程序hellonew20181217_upxed.exe

    端口变化 :

    而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议(可以看到回连后门文件回连的ip为192.168.43.48正好为kali的ip)

     增加了一些文件,也删除了一些文件

     同时还多了许多的文件,均是启动后门程序后增加的dll文件

     

     对比2和3

    注册表信息,我们发现,有的不能查看,只是显示not registered。

    • 关于HKEY_LOCAL_MACHINE:它保存了注册表里的所有与这台计算机有关的配置信息
    • 关于HKEY_CURRENT_USER:它管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码

     dll的变化:

    对比#4,#5:可以看到对key_local_machine根键中的内容进行了修改,KEY_LOCAL_MACHINE保存了注册表里的所有与这台计算机有关的配置信息,执行dir会改变该注册表的信息。

    只是我们无法看到具体内容。。

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

    • 打开Wireshark,选择WLAN接口开始抓包

     kali中打开监控

    win10执行后门程序hellonew20181217_upxed.exe进行回连,输入过滤条件ip.addr == 192.168.43.48,可以看到Wireshark上捕获到大量的TCP传输),输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)

     

    PE Explorer
    • PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
    • 在ProcessExplorer查找后门程序

     下载网址

     

     打开后门程序hellonew20181217_upxed.exe

     查看程序头部信息

     视图(view)-数据目录(Data Directories)查看程序静态数据目录

    图(view)-节头(Head Sections)查看节头信息

     工具(tools)-反汇编器(Disassambler)进行反汇编

     退出后点击导入查看所引用的dll库,分析得知

     

      • msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件
      • kernel32.dll属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的。

    通过分析生成的后门程序都会使用KERNEL32.dll,所以如果有陌生软件使用KERNEL32.dll则应当提高警惕。

    静态分析

    PEiD检查恶意代码

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

    使用PEiD检查恶意代码hellonew20181217_upxed.exe是否加壳。

     

     可以看出已经加壳。

    如果没有加壳:

     PEiD还可进行脱壳

    • 下面是通用脱壳器

    使用VirusTotal检查恶意代码
    • 使用VirusTotal检查恶意代码,可以查看MD5、SHA-1、文件类型、文件大小、加壳方式等相关信息

     

     算法库支持

    实验总结

    实验后回答问题

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

    • 可以用任务管理器查看自启动项,在自启动项进行过滤查看
    • 利用Windows计划任务netstat,定期查看并分析网络连接情况
    • 可利用sysmon工具,配置好想要监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看

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

    • 利用Wireshark抓包,进行分析有没有异常的或可疑的连接(分析起来难度较大,这个只能有针对的去分析,比如知道IP地址 等等 )。
    • 还可以利用Systracer来拍摄快照,进行对比分析改变的注册表及文件信息。

    实验中遇到的问题

     

    1.问题:Sysmon.exe和xml中的版本不相符

    解决:把sysmon1217.xml用记事本打开,把原来的版本号10.42改为3.10

    2.问题:提示“You need to launch Sysmon as an Administrator.”

    解决:按Windows+X→进入Windows PowerShell(管理员)

    实验体会

    我们要对恶意软件进行分析,之前接触了很多攻击方法,对这些在进行分析还是有一定帮助的,分析不够深入,很多没见过的就要百度,有一种似懂非懂得感觉,实验中用到的软件都很陌生,但并不是所有的恶意程序都可以被检测出来,所以还是要尽量从官方平台下载软件,这些不能说绝对的安全,但相比那些其他网站下载的要相对安全一些。

     
  • 相关阅读:
    Sql获取表中随机1到n条数据
    SQLite相关
    Eclipse自动生成api时报错“警告: 编码 GBK 的不可映射字符”
    Git基础命令
    Oracle查询结果行转列,列转行
    字符串编码方式转换
    Java字符串匹配正则表达式
    python爬虫--编码问题y
    GET与POST方法
    python爬虫(1)--Urllib库的基本使用
  • 原文地址:https://www.cnblogs.com/cindy123456/p/14604015.html
Copyright © 2011-2022 走看看