木马多重程序分析

本贴最后更新于 1917 天前,其中的信息可能已经时移世易

 为何说该木马程序具有多重防御呢,通过逆向分析可以发现,该木马程序运行方式复杂,具体特点如下:
    (1)运用快捷方式打开批处理执行命令而不是直接执行;
    (2)两次调用dll并执行不同功能,只有第二次运行真正执行主要功能,达到混淆的效果;  
    (3)添加反虚拟机调试代码,避免虚拟环境运行该程序;
    (4)多线程运行。
    首先该程序用快捷方式打开加密过的批处理文件png.bat,用winhex可以看到具体的命令内容,如下图所示。
     
    mkdir命令是建立子目录,而rundll32.exe nvwsrds.dll,avmode -fn hgfyryertsdsd命令是运行rundll32.exe来执行nvwsrds.dll中的avmode函数,函数的参数为-fn hgfyryertsdsd。可以看出,该程序的主要功能是由nvwsrds.dll来实现的,因为rundll32.exe不好进行动态调试,因此我写了个调用 nvwsrds.dll执行avmode函数的程序用于进行动态调试,代码如下。

[C] 纯文本查看 复制代码

?

 
    进入程序调试可以发现程序被加了许多花指令,不过并不妨碍调试。首先程序创建了一个文件夹。 
       
    然后将原本的dll重命名后复制到该文件夹中。同理,将Temp文件也复制到相同的文件夹中。 
       
    除此之外程序还打开一张图片,在执行完上述功能时,程序再次调用rundll32.exe来运行拷贝到新文件夹中的nvwimg.dll的avmode函数,并把程序的主要功能交由它来实现,至此程序第一部分终止。如图所示。 
       
   这时有人会问,两个dll不是相同的吗,如果按照这样进行下去将无限循环运行该dll。我在调试过程中也考虑到这个问题,但木马作者运用了一个判断语句解决了这个问题。通过判断自身名称是否为nvwimg.dll来确定所要执行的功能,这样就能让拷贝过去的dll执行其他的功能。同样用一个小程序作为载体运行nvwimg.dll,单步跟即可来到判断语句。如图所示。 
       
    strstr用于比较两个字符串是否相同,下面的jnz指令在文件名为nvwimg.dll时进行跳转。继续跟可以发现一句in eax dx的指令,该指令在虚拟机中不会触发异常,因此程序直接不过最后终止并没有相关操作。因此可以发现该句是木马程序判断自身是否在虚拟环境运行的指令,如果发现自身在虚拟环境下运行则终止进程。这时候只需对虚拟机进行相关设置,即可让程序触发异常,设置方法见此http://bbs.kafan.cn/thread-1326120-1-1.html,当程序触发异常跳到系统领空时,在代码段下断点跑几次就能跑回代码段中。来到代码段中可以发现程序对Temp文件进行读取,并截取其中有效部分进行解密,而解密的内容加上PE文件头后构成了PE文件,在执行完这部分后就执行该PE文件内容。 
         
    进入这部分程序后,先进行一些命名操作,为后面的操作做好预备工作,然后创建一个inf安装信息文件。并在文件中写入配置信息,具体如下图所示。 
         
   通过该配置信息可以看出,程序将自身及所用到的宿主程序加入开机启动项,以达到开机自启动的效果。在这之后,程序创建一个互斥体,以判断自身是否被运行,防止同时出现两个进程而终止。 
       
   之后,程序创建地址为A8CED0的新线程以执行主要功能,可以看出,程序为了隐藏自身真实功能可是费尽九牛二虎之力,通过多次的调用才到达主要功能的执行部分,在地址A8CED0下断,f9跟进,即可断下。跟进可以发现,程序有疑似查找杀毒软件操作(不过我没到达这部分功能)。继续跟进,发现程序对某个地址有socket操作。 
         
   由于该地址服务器已经失效,程序继续寻找另一地址进行操作,而操作的方法也比较特别。程序先调用HttpOpenUrlA打开一个网页,网址为http://t.qq.com/as730498358,是个腾讯微博,然后程序遍历网页源代码,从网页源代码中找到所需要的ip地址,如图所示。 
      
  而打开该网页我们也可以发现,作者使用腾讯微博的签名来保存ip地址,这种方法在之前就有人提到过,不过当时是用qq昵称来保存,这样能够很好地保存动态的ip地址而且不容易被发现。 
      

 

 

 
  除此之外,程序还通过拼接ip查询网站的URL来构造请求,然后同样以打开网页并遍历网页源码的方式获取ip地址。 
      
  在进行完ip地址的获取之后,程序同样运用socket套接字来和这几个地址进行数据传输,由于这些地址已无法使用,并不知道程序发出什么数据,获取什么数据,不过可以肯定的是,程序必定具有远控功能。要防范这类程序,还是需要大家提高警惕,不要滥用外挂等不安全软件,因为外挂自身必定被杀软报毒,有些木马就利用这一情况附加在外挂上面,从而感染计算机,所以大家下载外挂时一定谨慎。 
 

 

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 497 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖 • 1 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    333 引用 • 323 回帖 • 65 关注
  • danl
    64 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 218 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 689 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 345 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖 • 1 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 23 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 686 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 619 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1383 回帖 • 368 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 18 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 592 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 566 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 39 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 109 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    370 引用 • 1215 回帖 • 582 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 8 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    57 引用 • 22 回帖 • 3 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 602 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    21 引用 • 58 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 683 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 28 关注