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

2019 年 4 月 25 日 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原创奖励计划,未经许可禁止转载



登录查看更多
0

相关内容

java开发框架
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
必读的10篇 CVPR 2019【生成对抗网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
106+阅读 · 2020年1月2日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
95行代码破解极验滑动验证码(附源码)
FreeBuf
11+阅读 · 2018年5月9日
Arxiv
3+阅读 · 2018年10月25日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
3+阅读 · 2018年4月18日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
必读的10篇 CVPR 2019【生成对抗网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
106+阅读 · 2020年1月2日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
相关资讯
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
95行代码破解极验滑动验证码(附源码)
FreeBuf
11+阅读 · 2018年5月9日
Top
微信扫码咨询专知VIP会员