从源码层面看一款精致的病毒软件应具备哪些特质

栏目: Struts · 发布时间: 6年前

内容简介:说起来也比较久了,故事起源于去年11月份,我在公司办公环境搭建了一个dvwa的靶场环境,用于web漏洞的测试,不经意的发现access log日志增长迅速,查看之后吓出一身冷汗。日志部分截图如下:

*本文原创作者:F_F,本文属于FreeBuf原创奖励计划,未经许可禁止转载

一、前言

说起来也比较久了,故事起源于去年11月份,我在公司办公环境搭建了一个dvwa的靶场环境,用于web漏洞的测试,不经意的发现access log日志增长迅速,查看之后吓出一身冷汗。

日志部分截图如下:

从源码层面看一款精致的病毒软件应具备哪些特质 一看就知道这是struts的攻击payload,但是我搭建的是 php 站点啊,拿 java 的payload来打我,有意义么!气愤之余,顺着payload里面的下载地址,找到了一个压缩包,分析后才发现是黑客进行攻击的主程序源代码。

该病毒与腾讯之前在FreeBuf上分析的Satan特征一致,腾讯捕获并分析的是可执行程序,我溯源获取到的是源代码。参考链接: https://www.freebuf.com/column/197205.html 。看了腾讯的分析后,也对这次黑客攻击有了快速、清晰的认识。

二、正文

本文主要从源代码来看看一款精致的病毒软件,它应该具备什么样的功能,模块化设计该如何规划。

源代码解压:

从源码层面看一款精致的病毒软件应具备哪些特质

程序用c++编写,总共14个文件,简要介绍如下:

main.cpp: 程序的主要执行入口,创建多线程执行扫描,同时调用struts2攻击模块、tomcat攻击模块、weblogic攻击模块,jboss攻击模块,ssh攻击模块。攻击成功后,调用public.cpp的上传模块,将攻击成功的目标站点地址通过自定义base64编码上传到黑客站点。

struts2.cpp: 包括045、046、057的攻击payload,满足条件时,调用public的上传模块,将攻击成功的目标站点通过自定义base64编码上传到黑客站点。

tomcat.cpp: 设置16进制编码的java webshell,在破解tomcat管理后台用户名/密码后,尝试上传并执行webshell,webshell主要用户识别操作系统类型,智能下载fast.exe/ft32/ft64挖款程序。

weblogic.cpp: 包括CVE-2017-10271(WLS 组件的反序列化漏洞),CVE-2018-2894(任意文件上传)的攻击payload。

jboss.cpp: 包括CVE-2013-4810(反序列化漏洞),CVE-2017-12149(反序列化命令执行漏洞),后台文件上传漏洞

ssh2.cpp: 通过配置的ssh用户名/密码组合,尝试登陆目标主机,登陆成功则执行下载挖矿程序。

核心代码截图:主程序main.cpp

从源码层面看一款精致的病毒软件应具备哪些特质 2.1 程序不传入参数,执行GetLocalIP:

获取本地所有网卡,在非回环地址调用TaskAll。

从源码层面看一款精致的病毒软件应具备哪些特质 TaskAll调用多线程进行端口扫描:

从源码层面看一款精致的病毒软件应具备哪些特质

pScan逻辑判断:

从源码层面看一款精致的病毒软件应具备哪些特质

如果端口为22,则进行ssh爆破,爆破成功后,基于主机信息进行远程挖矿程序下载:

从源码层面看一款精致的病毒软件应具备哪些特质

如果端口不是22,则调用HttpCheck函数,根据端口设置http协议类型,然后再调用AllScan进行攻击。

从源码层面看一款精致的病毒软件应具备哪些特质 以上诸如struts2.cpp、tomcat.cpp、weblogic.cpp、jboss.cpp中的攻击代码,均在AllScan中调用:

从源码层面看一款精致的病毒软件应具备哪些特质 从源码层面看一款精致的病毒软件应具备哪些特质 从源码层面看一款精致的病毒软件应具备哪些特质 从源码层面看一款精致的病毒软件应具备哪些特质 Tomcat攻击模块,程序中内置用户名/密码清单,进行破解。

从源码层面看一款精致的病毒软件应具备哪些特质 综合: 在程序未传参时,程序自动获取本地所有网卡的ip地址,开启多线程在B段上进行端口扫描,如发现主机22开放,则尝试破解,其他协议则尝试web访问,设置HTTP/HTTPS协议,然后将所有payload依次打过去,控制主机下载挖矿程序,如成功利用,则将站点信息base64编码回传到黑客站点。

2.2 传入ips,从本地ips文件中依次读取ip清单,在ip地址的C段上调用pScan进行扫描。

部分逻辑代码如下:

从源码层面看一款精致的病毒软件应具备哪些特质 从源码层面看一款精致的病毒软件应具备哪些特质 2.3 其他模式说明

若命令为att,则命令行后是具体的站点地址,此时调用AllScan,用所有web payload进行攻击;

若命令为file,则命令行后是文件汇总的站点清单,判断http/https协议后,调用AllScan进行攻击;

若命令为ssh,则命令后是文件汇总的ip清单,则根据内置的ssh用户名/密码进行破解,成功后控制主机下载挖矿程序。

三、其余核心代码截图

struts2.cpp:Struts2-045,区分windows/linux32/linux64位,设置不同的挖矿程序地址:

从源码层面看一款精致的病毒软件应具备哪些特质 Struts2-046 payload:

从源码层面看一款精致的病毒软件应具备哪些特质 Struts2-057 payload:

从源码层面看一款精致的病毒软件应具备哪些特质

jboss.cpp:

从源码层面看一款精致的病毒软件应具备哪些特质

四、分析回顾与反思

111.90.158.225是黑客回传数据的站点,当前已无法打开,之前看到很多txt文件,还不知道是什么意思,应该有很多终端已经沦陷。程序的模块化设计对于企业安全人员红蓝对抗、批量验证站点组件漏洞都具有一定的参考意义。

反思:做好安全感知和攻击溯源对于企业而言确实很重要,比如部署一些蜜罐,可以在攻击早起就能察觉,另外终端的批量文件和进程检索,很基础也很重要!

*本文原创作者:F_F,本文属于FreeBuf原创奖励计划,未经许可禁止转载


以上所述就是小编给大家介绍的《从源码层面看一款精致的病毒软件应具备哪些特质》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

Developing Large Web Applications

Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99

As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具