• 如何查看加壳的恶意软件 Lab12 Lab13 恶意代码分析


    Lab1-2

    分析Lab1.2.exe文件

    目录

    Lab1-2

    2. 是否有这个文件被加壳或混淆的任何迹象?

    3. 有没有任何导入函数能够暗示出这个程序的功能?

    4. 哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?


    2. 是否有这个文件被加壳或混淆的任何迹象?

    利用PEID进行查看

    普通扫描如下:

    普通扫描没有发现加壳

    然后看section,name是upx。

    ==》对比下脱壳后的效果:

    但注意到了EP Section中的标识为UPX1,说明这个exe文件很可能用了一个UPX技术的变种

    然后我们用Dependency Walker,我们就会发现这个代码的导入表KERNEL32.DLL 中有两个函数LoadLibraryA,GetProcAddress.这两个函数都是加壳的迹,因为加壳的程序运行时候脱壳是必须要这两个函数的.

    下面再使用PE viewer进一步检测:
    恶意代码分析_Lab01-02_静态分析_第4张图片
    恶意代码分析_Lab01-02_静态分析_第5张图片
    恶意代码分析_Lab01-02_静态分析_第6张图片

    首先该程序的节部分就非常的可疑,这里显示的是UPX0,UPX1,UPX2.不是常见的.text .data .rdata .rsrc,很明显这是UPX加壳后的表现.下面通过虚拟大小与原始数据大小的对比就可以实锤UPX加壳了.

    分节虚拟大小原始数据大小
    UPX0 00004000 00000000
    UPX1 00001000 00000600
    UPX2 00001000 00000200

    IMAGE_SECTION_HEADER UPX0中可得出Virtual Size00004000 Size of Raw Data00000000, 所以Virtual Size 比Size of Raw Data大
    IMAGE_SECTION_HEADER UPX1IMAGE_SECTION_HEADER UPX2中的也是Virtual SizeSize of Raw Data大,所以可以确定该程序被加壳了.

    核心扫描如下:

    核心扫描发现upx加壳

    发现加壳后,要进行脱壳操作,可以利用ollydbg进行手动脱壳,具体操作在另篇博文,博文稍后会发。

    或者进行upx自动脱壳

    dos命令

     图形窗口

    用free upx也可以脱壳!

    3. 有没有任何导入函数能够暗示出这个程序的功能?

    利用studyPe进行查看脱壳后的upLad01-02.exe

    或者使用微软的strings工具,我的输出:

    Practical Malware Analysis Labs\BinaryCollection\Chapter_1L>strings Lab01-02_2022-10-01@13_32_14.745.exe
    
    Strings v2.54 - Search for ANSI and Unicode strings in binary images.
    Copyright (C) 1999-2021 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    !This program cannot be run in DOS mode.
    e
    Rich
    .text
    `.rdata
    @.data
    @jj
    
    h(0@
      @
    Vh(0@
    , @
    @jjjj
    L$,j
    @jjj
    @jjj
    T$
    $ @
    ( @
    u+W
    =0 @
    jjj
    @jj
    
    VWj
    jjj
    hT0@
    t @
    =p @
    jh
    h00@
    
     SVW
    ` @
    \ @
    |0@
    X @
    x0@
    T @
    =l0@
    P @
    t0@
    5p0@
    EPEPE
    H @
    D @
    @ @
    8 @
    %< @
    %L @
    
    %d @
    %h @
    KERNEL32.DLL
    ADVAPI32.dll
    MSVCRT.dll
    WININET.dll
    SystemTimeToFileTime
    GetModuleFileNameA
    CreateWaitableTimerA
    ExitProcess
    OpenMutexA
    SetWaitableTimer
    WaitForSingleObject
    CreateMutexA
    CreateThread
    CreateServiceA
    StartServiceCtrlDispatcherA
    OpenSCManagerA
    _exit
    _XcptFilter
    exit
    __p___initenv
    __getmainargs
    _initterm
    __setusermatherr
    _adjust_fdiv
    __p__commode
    __p__fmode
    __set_app_type
    _except_handler3
    _controlfp
    InternetOpenUrlA
    InternetOpenA
    MalService
    Malservice
    HGL345
    http://www.malwareanalysisbook.com
    Internet Explorer 8.0
    

     或者使用PEID,当然dependency walker也是ok的:

    有对互斥体进行操作的函数OpenMutexA、CreateMutexA函数;

    有创建服务相关函数:CreateServiceA、StartServiceCtrlDispatcherA、OpenSCManagerA。

    打开链接函数InternetOpenA和InternetOpenUrlA

     4. 哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?

    使用IDA进行分析upLad01-02.exe,Strings窗口中可以发现这个恶意代码的网络迹象。

     一个Malservice服务名称(邮寄服务),一个链接,一个浏览器类型。

    可以通过监视网络流量检查被恶意代码感染的主机。

    Lab1-3

    分析Lab1.3.exe文件

    目录

    Lab1-3

    2. 是否有这个文件被加壳或混淆的任何迹象?

    3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

    4.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?


    2. 是否有这个文件被加壳或混淆的任何迹象?

    利用PEiD进行分析

    程序利用FSG1.0进行加壳操作

    section异常也表明加壳!

    strings看下:

    strings Lab01-03.exe
    
    Strings v2.54 - Search for ANSI and Unicode strings in binary images.
    Copyright (C) 1999-2021 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    !Windows Program
    $PE
    b!@
    `.rdata
    @.data
    
    $s!
    u?
    C
    ;Ot
    (Q@
    KERNEL32.dll
    LoadLibraryA
    GetProcAddress
    H @
    Ph8
    0[X
    ":Ll
    3Bt>O
    VQ(8
    2]<,M
    :R,
    P@M^
     3
     S>VW
    ey
    p1
    AQ=h
    "Z,
    5pg
    MNu
    02
    k '
    ^J%
    I*G9>
    {*T
    p@l
    mal
    e%nN
    kQc
    H @
    ole32.vd
    Init
    FoCr
    sc
    U!!C
    }OLEAUTLA
    IMSVCRTT"b
    _getmas
    yrcs
    |P2r3Us
    p|vuy
    fmod
    xF*l
    9mV
    dj
    

     这两个,LoadLibraryA GetProcAddress 也表明了加壳!

    利用ollybdg进行手动脱壳

    在尝试了一番之后,我发现这个脱完壳后还得进行修复,就搁置在这里。

    我又换了另一种脱壳方式,基于ollybdg的自动化脱壳,软件里面有自带的功能,很好,不用进行修复。

    使用LinxerUnpacker 进行脱壳:

     脱壳后看到的:

    注意这个section也是怪怪的!

    3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

    查看导入表

    好家伙,没见过的玩意。网上搜了话,也不是很懂。

    VariantInit函数

    Initializes a variant to VT_EMPTY

    他的作用很简单,就是初期化为VT_EMPTY。其实这个VariantClear ()已经做了,如果如果调用了它,就可以不用VariantInit()了。

    SysAllocString

     是分配内存的. 一般用在  接口的 返回 BSTR 参数,不需要释放的. 释放 是 调用者要处理的。

    CoCreateInstance

    用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 CoGetClassObject 函数。

    OleInitialize

    它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库

    OleUninitialize

    OleInitialize是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库。

     


    4.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

     将文件导入IDA,字符串里面没有发现关于网络的 ==》直接strings看:

    strings unpacked.exe
    
    Strings v2.54 - Search for ANSI and Unicode strings in binary images.
    Copyright (C) 1999-2021 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    !Windows Program
    $PE
    .linxer
    `.rdata
    @.data
    
    $s!
    u?
    C
    ;Ot
    (Q@
    KERNEL32.dll
    LoadLibraryA
    GetProcAddress
    H @
    Phh @
    hX @
    L @
    8 @
    D$$
    < @
    L$$QVP
    R,V
    @ @
    P @
    U
    hx @
     SVW
    |0@
    x0@
    0 @
    =h0@
    , @
    t0@
    5p0@
    EPEPE
    $ @
      @
    %( @
    
    H @
    ole32.dll
    OleInitialize
    CoCreateInstance
    OleUninitialize
    8 @
    OLEAUT32.dll
    MSVCRT.dll
    __getmainargs
    _controlfp
    _except_handler3
    __set_app_type
    __p__fmode
    __p__commode
    _exit
    _XcptFilter
    exit
    __p___initenv
    _initterm
    __setusermatherr
    _adjust_fdiv
    http://www.malwareanalysisbook.com/ad.html
    H @
    Ph8
    0[X
    ":Ll
    3Bt>O
    VQ(8
    2]<,M
    :R,
    P@M^
     3
     S>VW
    ey
    p1
    AQ=h
    "Z,
    5pg
    MNu
    02
    k '
    ^J%
    I*G9>
    {*T
    p@l
    mal
    e%nN
    kQc
    H @
    ole32.vd
    Init
    FoCr
    sc
    U!!C
    }OLEAUTLA
    IMSVCRTT"b
    _getmas
    yrcs
    |P2r3Us
    p|vuy
    fmod
    xF*l
    9mV
    dj
    
    $s!
    u?
    C
    ;Ot
    (Q@
    KERNEL32.dll
    LoadLibraryA
    GetProcAddress
    MSVCRT.dll
    _adjust_fdiv
    __setusermatherr
    _initterm
    __p___initenv
    exit
    _XcptFilter
    _exit
    __p__commode
    __p__fmode
    __set_app_type
    _except_handler3
    _controlfp
    __getmainargs
    OLEAUT32.dll
    ole32.dll
    OleUninitialize
    CoCreateInstance
    OleInitialize
    

    然后对其names窗口进行分析,发现一个跟网址差不多的字符串。

     双击跳转过去,发现了网址

    Lab1-4

    目录

    Lab1-4

    2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。

    3.这个文件是什么时候被编译的?

    ​4.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

    5.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

    6. 这个文件在资源段中包含一个资源。使用Resource Hacker工具来检查资源,然后抽取资源。从资源中你能发现什么吗?依次分析

     


    2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。

    利用PEiD发现无壳。

    3.这个文件是什么时候被编译的?


    4.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

    对资源节进行操作:LoadResource、FileResource、SizeofResource

    从资源节中加载数据,写一个文件到磁盘上:CreateFile,WriteFile

    执行磁盘上的文件:WinExec  ==》这个是从资源文件中释放出恶意PE文件!!!

    将文件写到系统目录:GetWindowsDirectory

    获得进程的文件描述符,也是为了操作远程的进程:OpenProcess、GetCurrentProcess

    可以运行另一个程序:WinExec

     可以通过令牌的方式确保只运行一个进程在系统中:AdjustTokenPrivileges  ==>提权相关!

    可以去查找用户的登录信息等系统敏感信息:LookupPrigilegeValueA

     

    resourcehacker看到的,然后我们导出为exe:

    再用PEID打开导出的exe:

    看看加载的api都有哪些:

     

    strings BIN101.exe
    
    Strings v2.54 - Search for ANSI and Unicode strings in binary images.
    Copyright (C) 1999-2021 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    !This program cannot be run in DOS mode.
    lftlb~lh}l
    l|l
    mll
    |lz}l
    Rich
    .text
    `.rdata
    @.data
    
    
    
    
    @
    h$0@
    Rh<0@
    jj
    QhD0@
    j
    %L @
    hX @
     SVW
    @ @
    < @
    8 @
    4 @
    =x0@
    0 @
    EPEPE
    ( @
    $ @
      @
    %, @
    
    %D @
    GetWindowsDirectoryA
    WinExec
    GetTempPathA
    KERNEL32.dll
    URLDownloadToFileA
    urlmon.dll
    _snprintf
    MSVCRT.dll
    _exit
    _XcptFilter
    exit
    __p___initenv
    __getmainargs
    _initterm
    __setusermatherr
    _adjust_fdiv
    __p__commode
    __p__fmode
    __set_app_type
    _except_handler3
    _controlfp
    \winup.exe
    %s%s
    \system32\wupdmgrd.exe
    %s%s
    http://www.practicalmalwareanalysis.com/updater.exe
    


    5.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

    利用ida来查看

    \\system32\\wupdmgr.exe\\winup.exe的程序

    psapi.dllsfc_os.dll的动态链接库

     好的,我无法判断了。


    6. 这个文件在资源段中包含一个资源。使用Resource Hacker工具来检查资源,然后抽取资源。从资源中你能发现什么吗?
    依次分析

     

    将文件导入进Resource Hacker中

     

     然后将资源保存成二进制文件进行保存,保存成exe文件

     导入进ida再进行分析

     出现了一个网站www.practicalmalwareanalysis.com

  • 相关阅读:
    网络传输协议 UDP & TCP 详解
    OSI 七层协议
    (01day)python接口测试
    Python2和Python3的区别,以及为什么选Python3的原因
    JAVA反编译工具
    JAR反编译工具
    webdriver19-witchto方法
    webdriver实例14-Xpath定位的几种方法
    webdirver实例1--查找元素
    Qt插件开发
  • 原文地址:https://www.cnblogs.com/bonelee/p/16747301.html
Copyright © 2020-2023  润新知