1.静态分析确定的线索

使用 PEView 对脱壳后的01-02.exe进行分析,可以在IAT表中看到如下导入函数:

ADVAPI32.dll:一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。

  • CreateServiceA:创建一个服务对象,并将其添加到指定的服务控制管理器数据库。
  • OpenSCManager:建立了一个到服务控制管理器的连接,并打开指定的数据库。
  • StartServiceCtrlDispatcher:将服务进程的主线程连接到服务控制管理器,使得线程成为调用进程的服务控制调度程序线程。

KERNEL32.dll:是一个32位的动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理。

  • CreateThread:创建新的线程。
  • CreateMutex:创建一个互斥对象并返回句柄
  • OpenMutexA:打开一个互斥体(MUTEX)
  • SystemTimeToFileTime:是一个进程,即系统时间本地时间。
  • GetModuleFileName:获取当前进程已加载模块的文件的完整路径。
  • CreateWaitableTimer:创建一个可等待的计时器对象。
  • SetWaitableTimer:对上面创建的定时器对象进行时间的设置。
  • WaitForSingleObject:用来检测hHandle事件的信号状态。
  • ExitProcess:结束一个进程及其所有线程。

WINNET.dll:是Windows应用程序网络相关模块

  • InternetOpenA:初始化应用程序,以实现对 WinINet 功能的使用。
  • InternetOpenUrlA:打开由完整的FTP或HTTP URL指定的资源。这里要注意,该恶意程序可能会通过访问某url去下载另外的恶意资源。

使用string工具我们可以得到一个url和Internet Explorer 8.0的线索。

综上所述,从静态分析,我认为这个程序会使用Internet Explorer 8.0去访问http://www.malwareanalysisbook.com获得资源。

2.动态分析对上述线索的验证分析过程

使用Process Monitor,添加监视运行脱壳后的恶意程序 unpack01-02.exe 的过滤条件。

  • 首先,要添加进程名字,即 unpack01-02.exe

  • 从上面的静态分析中,我们大致可以猜测出此程序会创建进程和线程,所以在操作中添加 Process CreateThread Create

  • 再根据上面的 url 和IE 8.0,我猜测它会进行连网操作,所以添加 TCP Connect

    image

  • 运行unpack01-02.exe,发现它会弹出一个黑色的命令行窗口,并且会创建一个线程。几秒钟后,cmd窗口自己关闭,监视屏幕上会显示出20线程创建函数 Thread Create和 退出函数Process Exit

    image

    image

使用 Process Explorer 来查看程序运行时进程和线程列表中的变化,以及此程序都调用了哪些DLL。

  • 双击运行 unpack01-02.exe ,屏幕上会特别快的显示一行绿色的记录,是该程序的运行记录。暂时没有找到其他的线索。

    image

使用 wireshark 进行抓包

  • 首先在命令行中ping上面发现的那个url,获取其ip地址=184.168.131.241

  • 然后打开wireshark,运行此程序进行抓包

    image

  • 从抓到的包中可以看到目前只有 ARPNBNS 两种类型的包。

    • ARP包是本机广播查找网关192.168.174.2的MAC地址
    • NBNS是网络基本输入/输出系统 (NetBIOS) 名称服务器的缩写。它也是TCP/IP协议的一部分。它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。

    NBNS包的源IP地址=192.168.174.133(本机),目的IP=192.168.174.2(网关)

    从当前的抓包并没有获得什么有用的东西。

  • 使用ip.addr == 184.168.131.241进行过滤,发现什么内容也没有。

    image

使用 微步云沙箱 对该程序进一步分析

  • 首先从样本标签可以得知,这是一个特洛伊木马。对脱壳后的文件进行检查,出现的标签是更为具体的 Trojan-Clicker。查资料得知,这类病毒运行后为伪装自己,在运行后连接某网址,此网站含有病毒,病毒会延时运行,运行后,添加注册表启动项,以达到随系统启动的目的。

    image

  • 在行为签名部分,我们可以看到更为详细的行为特征信息

    image

    • 该程序通过创建服务实现自启动,这个服务的名字是Malservice。在静态分析中,我们获取到了创建服务的导入函数CreateServiceA,在string工具中,我们也找到了Malservice这条线索。

      image

    • 该程序是使用UPX加壳的

    • 在文件内存中发现了URL,发起了HTTP请求。

使用OllyDbg 对脱壳后的unpack01-02.exe进一步分析

  • 可以看到它调用 CreateMutex 创建了一个名为HGL345的互斥体,然后又通过OpenMutexA 打开它

    image

  • 创建服务 Malservice

    Password = NULL          //指定此服务的口令,NULL表示无口令或是本地服务
    ServiceStartName = NULL  //指定服务帐号,NULL表示使用LocalSystem帐号
    pDependencies = NULL     //指定启动该服务前必须先启动的服务或服务组
    pTagId = NULL            //忽略
    LoadOrderGroup = NULL    //指定顺序装入的服务组名,NULL表示此服务不属于组
    BinaryPathName           //指定服务程序二进制文件的路径
    ErrorControl = SERVICE_ERROR_IGNORE  //指定服务启动失败后的差错控制
    StartType = SERVICE_AUTO_START       //指定服务启动选项
    ServiceType = SERVICE_WIN32_OWN_PROCESS  //指定服务类型
    DesiredAccess = SERVICE_CHANGE_CONFIG    //指定服务返回类型
    DisplayName = "Malservice"  //显示在用户界面用来标识服务的名称
    ServiceName = "Malservice"  //要创建的服务的名称。
    hManager  //服务控制管理器数据库的句柄。
    

    ErrorControl的值如下

    含义
    SERVICE_ERROR_CRITICAL 服务启动程序将把该错误记录到事件日志中。 若最后一次正确配置可用,服务启动程序将以最后一次正确配置重新启动;否则将退出执行。
    SERVICE_ERROR_IGNORE 服务启动程序将忽略该错误并返回继续执行。
    SERVICE_ERROR_NORMAL 服务启动程序将把该错误记录到事件日志中并返回继续执行。
    SERVICE_ERROR_SEVERE 服务启动程序将把该错误记录到事件日志中。若最后一次正确配置可用,服务启动程序将以最后一次正确配置重新启动;否则将返回继续执行。

    StartType 的值如下

    含义
    SERVICE_AUTO_START 系统启动时由服务控制管理器自动启动该服务程序。
    SERVICE_BOOT_START 用于由系统加载器创建的设备驱动程序。只能用于驱动服务程序。
    SERVICE_DEMAND_START 由服务控制管理器(SCM)启动的服务。
    SERVICE_DISABLED 无法启动的服务。
    SERVICE_SYSTEM_START 用于由IoInitSystem函数创建的设备驱动程序。

    ServiceType 的值如下

    含义
    SERVICE_ADAPTER 保留。
    SERVICE_FILE_SYSTEM_DRIVER 文件系统驱动程序服务。
    SERVICE_KERNEL_DRIVER 驱动程序服务。
    SERVICE_RECOGNIZER_DRIVER 保留。
    SERVICE_WIN32_OWN_PROCESS 运行于独立进程的服务程序。
    SERVICE_WIN32_SHARE_PROCESS 被多个进程共享的服务程序。
  • 设置等待时间

    image

    可以看到等待的时间被设置为永远,那么也就是说这个函数会一直处于等待状态,直到hHandle标记的对象被触发。

3. 动态分析的结论

(1)程序运行后,调用CreateMutex找出当前系统是否已经存在此进程的实例,如果没有则创建一个互斥体HGL345。调用OpenMutexA打开互斥体HGL345

(2)调用GetModuleFileName获取当前进程已加载模块的文件的完整路径。

(3)调用 CreateServiceA 创建一个服务对象Malservice,并将其添加到指定的服务控制管理器数据库。

(4)建立服务对象Malservice与服务控制管理器的连接,并打开指定的数据库。

(5)设置特殊时间:首先将系统的本地时间设置为2100,然后创建一个定时器,将其定时为系统本地时间。

(6)等待到达指定时间或事件被激活,创建20个线程去访问http://www.malwareanalysisbook.com ,达到分布式攻击的效果,使得网站服务器瘫痪。

4. 动态分析中尚不能确定,有待进一步分析的内容

  • http://www.malwareanalysisbook.com 这个网站貌似不存在,在主机和虚拟机中访问他均显示无法访问此页面,并且无法ping通。
  • 不知道此程序的自启动到底是怎样实现的,或者说是不知道如何判断它有没有自启动。
  • 指定的服务控制管理器数据库到底是什么?
posted on 2021-06-03 10:09  danceJJ  阅读(90)  评论(0编辑  收藏  举报