selph
selph
发布于 2021-10-09 / 1148 阅读
0
0

恶意代码分析实战Lab03-动态分析基础

笔记

动态分析基础,这部分还没涉及到看反汇编进行分析,主要是运行程序,然后通过监控软件检测程序运行的内容

使用沙箱查看运行报告,可以获取一部分信息

首先要在虚拟机上运行恶意代码:

  • 如果是DLL,可以通过rundll32.exe DLLName, ExportFun来进行执行
  • 如果是服务DLL,则需要运行其中导出的安装服务函数,如果没有则需要手动使用sc或修改注册表安装服务

然后监控程序运行的各种信息:

  • 进程监控工具:Process Monitor,可以监控注册表,文件系统,网络,进程,线程行为,通过设置过滤可以更快找到我们想找的行为信息
  • 进程浏览工具:Process Explorer,更厉害的任务管理器,会列出活动的进程,被进程载入的DLL,各种进程属性和整体系统信息
    • 该工具提供了验证功能,检测映像文件是不是具有微软签名
    • 可以查看文件和进程的字符串,来对比判断进程是否被替换
    • 可以启动depends.exe,可以对比进程中的dll和文件中的导入dll的区别来判断是否有被注入dll
    • 还可以分析恶意文档,如果文档启动了其他进程,可以通过这个工具监控到
  • 注册表快照对比:Regshot,可以通过建立快照,执行程序,再次建立快照进行两次快照的对比,检测注册表修改项
  • 流量分析,检测网络行为
    • DNS请求查看工具:ApateDNS,查看DNS请求,对指定的ID给出虚假的响应(工具比较老,不知道有没有新的)
    • Netcat:不解释
    • Wireshark:神器
  • 网络服务模拟:INetSim,Linux工具,可在Linux虚拟机里模拟一些网络服务,是专用于恶意代码分析的软件,会伪装的很像正常服务,给出正常返回,现在比较新的工具是fakenet

作业

工具准备:

  • 配好INETSIM的Linux虚拟机
  • 监控:火绒剑+procexp
  • PE:exeinfope + CFF + ResourceHacker + Strings
  • 网络:Network Monitor + ncat

Lab 3-1

目标文件:Lab3-1.exe

  1. 找出带入函数和字符串列表

    导入表就一个函数:ExitProcess,很奇怪,可能加壳了,字符串里除了乱码之外,发现了注册表键值,网址,dll名称等内容:

    image-20211002203101667

  2. 这个恶意代码在主机上的感染迹象特征是什么?

    打开火绒剑行为监控,打开运行INETSIM程序的Linux虚拟机,配置好DNS,准备好之后,运行这个程序:

    image-20211003192947560

    从火绒剑里观察程序行为,可以看到,这里恶意代码读取了自身的二进制文件,创建并修改写入了c:\windows\system32\vmx32to64.exe这个文件,就是把自己复制过来了

    然后修改注册表Run键值来设置开机自启:

    image-20211003193155568

    在procexp里看到,这个程序有互斥量winvmx32,用来防止多次启动

    image-20211003193606797

    感染迹象就是注册表这个位置会出现VideoDriver,并且c盘那个位置会出现vmx32to64.exe程序

  3. 这个恶意代码是否存在有用的网络特征吗?如果存在,是什么?

    查看inetsim日志,发现该主机向字符串里写的域名发起了DNS查询

    image-20211003194002141

  4. 补充:(看了答案之后发现自己没做到的点)

    这里不仅仅是对这个域名发起了DNS请求,在查询DNS之后,会给该地址发送数据,这里我们把inetsim收到的请求都转发给分析虚拟机,然后监听443端口,会发现网络连接行为,网络特征除了DNS解析还有就是这个网络连接。

    image-20211003195208588

Lab 3-2

目标文件:Lab3-2.dll

  1. 你怎样才能让这个恶意代码自行安装?

    查壳:无壳

    image-20211003201759598

    这是个dll文件,没法直接运行,查看导入表:

    image-20211003201944598

    kernel32里导入了获取目录,动态获取函数地址,创建管道,创建进程,创建线程相关的函数,ADVAPI32.dll里导入了注册表操作和服务操作相关的函数,还加载了windows的网络库,可以推测这个文件有网络行为,并且是个服务程序

    查看导出表:

    image-20211003202357511

    这个dll自带了安装卸载函数,可以通过rundll32.exe来进行安装了

    接下来查看下字符串(摘出有用部分):

    Y29ubmVjdA== 			// connect的base64编码
    practicalmalwareanalysis.com	// 网址信息 
    serve.html	//uri
    dW5zdXBwb3J0	//unsupport
    c2xlZXA=		//sleep
    Y21k			//cmd
    cXVpdA==		//quit
     Windows XP 6.11
    .exe
    HTTP/1.1
    %s %s
    1234567890123456
    quit
    exit
    getfile
    cmd.exe /c
    %SystemRoot%\System32\svchost.exe -k
    SYSTEM\CurrentControlSet\Services\					//注册表相关内容
    CreateService(%s) error %d
    Intranet Network Awareness (INA+)
    %SystemRoot%\System32\svchost.exe -k netsvcs
    OpenSCManager()
    You specify service name not in Svchost//netsvcs, must be one of following:
    RegQueryValueEx(Svchost\netsvcs)
    netsvcs
    RegOpenKeyEx(%s) KEY_QUERY_VALUE success.
    RegOpenKeyEx(%s) KEY_QUERY_VALUE error .
    SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
    IPRIP		// 服务名称
    uninstall success
    OpenService(%s) error 2
    OpenService(%s) error 1
    uninstall is starting
    .?AVtype_info@@
    

    字符串信息表明,这里会有注册表操作,会调用cmd.exe来创建进程

    接下来安装dll:

    >rundll32.exe Lab03-02.dll,installA
    

    火绒剑监控到的信息:

    image-20211003210157279

    这里写入注册表:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IPRIP了一套键值对,并将这个dll注册成为了服务,在火绒剑里可以看到:

    image-20211003203409963

  2. 在安装之后,你如何让这个恶意代码运行起来?

    在火绒剑里启动服务即可

  3. 你怎么能找到这个恶意代码是在哪个进程下运行的?

    dll以服务的形式运行,进程里一定会加载这个dll,在procexp里搜索dll即可找到是哪个进程:

    image-20211003203827219

  4. 你可以在procmon工具章设置什么样的过滤器,才能收集这个恶意代码的信息?

    设置进程ID来过滤即可:(火绒剑)

    image-20211003203917137

  5. 这个恶意代码在主机上的感染迹象特征是什么?

    服务里出现了IPRIP服务,注册表里出现了这一堆东西:

    image-20211003210332470

  6. 这个恶意代码是否存在有用的网络特征码?

    image-20211003220634450

    恶意代码启动之后会对这个网址发起DNS请求,以及HTTP请求:

    image-20211003220831610

Lab 3-3

目标文件:lab03-03.exe

查看导入表发现了资源释放的API,Read/WriteProcessMemory、GetCommandLineA、WriteFile等

  1. 当你使用Process Explorer监控时,你注意到了什么?

    太快了,来不及截图,lab03-03启动后,创建了子进程svchost,然后就退出了,子进程留了下来(svchost.exe作为孤儿进程,必有蹊跷!)

  2. 你可以找出任何内存修改行为吗?

    通过火绒剑监控进程行为,对于lab03-03发现如下内容:它执行了c:\windows\system32\svchost.exe,创建了子进程,然后监测到读取子进程的内存,修改内存读写属性,然后跨进程写内存的行为,相当于给把自己换了个壳来运行,svchost变成了傀儡进程(进程伪装):

    image-20211003224401453

  3. 这个恶意代码在主机上的感染迹象是什么?

    当按下按键的时候,在火绒剑那里会发现新的动作:在同目录下记录日志文件,用于记录按键情况

    image-20211003230722246

    打开之后可以看到:

    image-20211003231125896

    在哪个窗口里按了哪些键

  4. 这个恶意代码的目的时什么?

    进程伪装+按键记录器

Lab 3-4

目标文件:lab03-04.exe

  1. 当你运行这个文件时,会发生什么?

    这个程序闪了一下就消失了,连PE文件也消失了!!!

  2. 是什么原因造成动态分析无法实施?

    搜索字符串:

    image-20211003232955988

    看到了删除命令,和HTTP的字符和网址,这里可能是会有http连接发起,但这里不满足运行条件就会触发自毁,火绒剑检测发现:

    image-20211003233212009

  3. 是否有其他方式来运行这个程序?

    通过动态调试可能可以,但目前还没学到,后面学到了再来进一步尝试


评论