木马多重程序分析

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

 为何说该木马程序具有多重防御呢,通过逆向分析可以发现,该木马程序运行方式复杂,具体特点如下:
    (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套接字来和这几个地址进行数据传输,由于这些地址已无法使用,并不知道程序发出什么数据,获取什么数据,不过可以肯定的是,程序必定具有远控功能。要防范这类程序,还是需要大家提高警惕,不要滥用外挂等不安全软件,因为外挂自身必定被杀软报毒,有些木马就利用这一情况附加在外挂上面,从而感染计算机,所以大家下载外挂时一定谨慎。 
 

 

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 733 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • Sandbox

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

    407 引用 • 1246 回帖 • 581 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 355 关注
  • sts
    2 引用 • 2 回帖 • 196 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖 • 2 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 412 关注
  • 安全

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

    199 引用 • 816 回帖
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    6 引用 • 14 回帖 • 2 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    166 引用 • 595 回帖 • 1 关注
  • Kotlin

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

    19 引用 • 33 回帖 • 66 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    6 引用 • 38 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 261 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 390 回帖 • 1 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • 996
    13 引用 • 200 回帖 • 6 关注
  • Hibernate

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

    39 引用 • 103 回帖 • 709 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 5 关注
  • 自由行
    11 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • RYMCU

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

    4 引用 • 6 回帖 • 52 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    222 引用 • 473 回帖
  • abitmean

    有点意思就行了

    30 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 62 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 155 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 699 关注