木马前世今生:上线方式发展及新型上线方式实现
cac55 2025-06-10 13:19 4 浏览 0 评论
0×00 前言
在讲文章主题之前,我们还是习惯性地聊(che)一(che)聊(dan)。
远程控制木马大家都不陌生,尤其是早期接触黑客技术的人,应该可以发现早在2007-2009年,这段时间内,国内的“黑客技术”正是蓬勃发展的时期,那个时候,可谓是“战乱纷争,万马奔腾”的年代,当时流行各种黑客技术,其中就包括远程控制技术。
各种远程控制木马满天飞,无论是最早葛军编写的“灰鸽子”,还是各种后起之秀的RAT,简直不胜枚举,各种被阉割的xxx专用版,各种新出的xxxRAT。如各类国产远控木马、上兴、PCShare、黑防的ByShell、黑洞、冰河、SRAT、暗组的DRAT、XRAT、维度等等,包括国外的一些C/S,B/S型的远控木马也传入了国内,各家似乎都在比拼谁的功能多,谁的免杀好,谁的反杀软技术强。于是,各种HOOK SSDT,Rootkit级别的木马比比皆是。可是,后来因为国家的管控,各种黑客论坛,黑客网站,黑客杂志相继关闭或消失。远控木马编写技术和木马免杀技术也不再那么流行,当初写木马做免杀的“高手”,如今早已从网络中销声匿迹。
引用王家卫导演的《一代宗师》里边的一句话——
“有的成了里子,有的成了面子,都是时势使然。”
当然,客观的讲,造成这种形势的原因也是国内安全行业的进一步发展所致。不过,我相信依旧有一帮人还在这个领域埋头探索,在努力,木马依旧可以绕过各种杀软。毕竟,“攻永远超前于防”。
0×01 传统木马上线方式概述
好了,聊(che)完了。该进入文章主题了。今天,不谈别的,只“浅谈”木马上线技术的发展。
最早的远控木马都是“主动连接”,通俗的讲是这样的:假如你要控制某人的主机A,你得在主机A上执行木马, 木马执行后会开启一个你提前配置好的端口,之后,你要与该主机A建立连接,在主控端上输入该主机A的IP和端口,才能进行控制。
不过,后来因为互联网的进一步发展,公网控制内网就出现了一定的问题。于是,“被动连接”型的木马上线技术就出现了,和“主动连接”的形式刚好相反,是木马即被控端主动来连接主控端。主控端开启一个端口,被控端去连接你配置好的IP地址。
“被动连接”也叫“反弹连接”。谈到这个不得不提两种经典的木马上线方式。一种就是FTP上线方式,另外一种就是DNS域名解析上线方式。
灰鸽子FTP上线方式如下图:
在你的FTP服务器上写入一个ip.txt,内容就是你的主控端监听的IP地址和端口。当你的IP地址改变之后,你只需要再次更新这个ip.txt的内容即可。
在配置木马的时候,只需要按照FTP上线方式的格式配置上线地址。
如下图:
对于DNS域名解析上线,一直是木马上线的最主要的方式,曾经最流行的就是3322和花生壳。木马执行后会解析你配置好的域名,然后去连接对应的IP地址的端口,进行通信。
0×02 新型木马上线方式
从大量的APT攻击案例中可以发现,当今的木马在运行的隐蔽性,通信的穿透性,功能的多样性,跨平台性等方面有了很大的突破。
在研究分析过程中,有部分木马的上线方式,开始采用第三方域名进行通信。这无疑增强了木马的隐蔽性和反追踪能力。
上线方式的说明,请看下图:
这种木马使用的第三方域名实际上是利用第三方网站能够写入并及时修改自己的通信数据。木马编写者往往会寻找知名的网站,至少不会出现宕机的情况,以保持肉鸡的持久性控制。这样的网站很多,比如说博客类网站等等。可以提前发表一篇博文,并在博文里插入控制命令,之后特制的木马,就会去获取控制命令,同时木马也可以模拟编辑博文,写入执行结果的数据。
由于TCP通信涉及到socket对象的问题,部分木马会专门使用支持php的第三方网站。并拿到webshell后,上传一个进行数据转发的php文件。这种情况下,控制被控端的流畅度可以得到保证。
而一般情况下,采用这种方式的木马都是使用了HTTP协议进行通信,由于HTTP协议是无连接的。所以不会涉及到socket对象的问题。只要被控端为自己生成一个独一无二的ID,即可与其他被控端区别开来。只要在编写代码的时候,对接受数据,发送数据,执行控制命令这三个功能模块做好处理,控制的流畅度还是可以得到一定的提升。
采用第三方域名上线的木马,在隐蔽性方面有了很大突破,而且这种做法,也可以提高木马的穿透性,对于一些防火墙来说,至少知名的网站总归是允许进行数据通信的。
0×03 第三方域名上线方式的实现思路
先把思路搞清楚。木马上线采用的第三方网站为"博客园",注册两个帐号,一个为主控端用于发出控制命令所使用的账号A,另一个是被控端发送本机信息以及控制命令执行结果所使用的账号B。用账号A创建两篇文章,一篇为木马上线测试(下文简称文章A),一篇为木马功能测试(下文简称文章B)。
被控端处理上线事务的线程设计思路如下:
上线信息的格式:
[主机名称]&[当前时间]&[主机唯一ID]
对于[主机唯一ID],如果是第一次上线会生成此ID,如果不是则会读取已经生成好的ID。
主控端处理主机上线事务的线程设计思路如下:
由于这种上线方式采用的实际上是HTTP协议通信的,所以无法像TCP通信一样,存在相关的SOCKET事件。所以,主控端还需要有一个处理主机是否在线的线程,设计思路如下:
另外,为了防止文章A的评论区有很多评论,主控端在获取完评论信息(主机上线信息),之后,添加一个删除文章A的评论的线程即可。
0×04 第三方域名上线方式的简单代码实现
接下来,我们用简单的代码实现这个demo。为了快速实现这种木马上线方式,主控端采用C# WinForm实现,客户端采用Python实现。搞清楚了设计思路,用什么编程语言去实现就是次要的事情了。
下面是被控端启动后,向文章A提交评论(上线信息)的截图:
发送上线信息后,文章A的评论截图如下:
主控端的截图如下:
功能测试的通信流程和上线测试的流程思路是相似的。在这里就不在赘述,这种上线方式虽然采用了HTTP协议通信但是和直接使用封装的HTTP协议或者是浏览器访问,是有一定的区别的。它无法进行大批量的数据传输,像文件传输这样的功能虽然也可以实现,但是"用户体验"很差,所以这种上线方式的木马,大多被用来当作一个隐蔽的后门木马,只需要有一个文件下载和CMD Shell的功能。
0×05 总结
采用第三方域名上线方式的木马设计思路,已经很明确了,但是在实际实现的过程中还存在一些不足。包括上文中用code去实现,也有很多处理事务线程和上线性能等方面需要进一步改进。所以代码在此就不提供了。大家了解了这种思路就好。另外,对于将账号B的登录信息写入客户端,是否存在一定风险?对于这个问题,大可不必细究。
“博客园”的登录信息会被登录页面的js使用key进行加密然后提交,即使你分析出了登录信息也是加密过的,并非原始明文密码。另外,登录成功后,会有一个session或者cookie,可以直接拿来当作发表评论(主机上线信息)的令牌使用。也可以将cookie的生命周期加长,延长控制时间。
文章中还有很多"易喷点",欢迎来"喷"。
0×06一点题外话
对于木马上线域名的分析和追踪,在这篇文章《浅谈从反木马角度分析怎样提高木马反跟踪能力》中作者提出了在木马上线方式的时候使用UDP+TCP协议的方法来迷惑安全研究人员。实际上,这种办法起不到任何作用。因为,要分析木马的上线域名,最直接最有效的办法就是用wireshark抓包,过滤出dns协议的数据包,很快就能分析出来。
即使你在编写木马的时候,并未对上线地址采用“硬编码”,或者使用动态数组动态生成,又或者你进行了各种加密,又或者直接写入内存等“软编码”手段,这些只能对木马上线地址的静态分析起到一定的保护作用,如果去动态调试跟踪,也是可以得到上线地址的。
对于使用域名生成算法(DGA)生成的域名,目前已经有相应的机器学习的手段去检测是否为木马的C&C域名。不过目前看起来,目前对于木马上线地址的隐藏,最好的办法就是使用第三方域名,这样可以极好的保护木马操纵者。
相关推荐
- 基于FPGA的伪随机序列发生器设计(fpga伪随机数发生器)
-
基于FPGA的伪随机序列发生器设计1基本概念与应用1)LFSR:线性反馈移位寄存器(linearfeedbackshiftregister,LFSR)是指给定前一状态的输出,将该输出的线性...
- 基于MATLAB的BP神经网络预测计算App
-
BP(BackPropagation)神经网络可用于数据的预测,是经常使用的预测方法之一。之前介绍了基于MATLAB的guide制作的BP神经网络预测计算GUI界面,但是随着MATLAB版本的更新,之...
- 《matlab/simulink仿真ROS学习笔记》第1期
-
PC平台:window10软件平台:MATLABR2016a备注:不知道具体的matlab版本号,可以打开matlab在终端界面输入:version查看一,调用matlab软件中自带的ROS步骤:...
- matlab读取表格数据以固定周期通过串口发送
-
如题,这里对数据的处理对于熟悉matlab各函数操作的同学来讲,是常规操作,但对于matlab新手或只是想借用matlab工具将存于PC端文件中的数据通过串口发送出去的工程人员来说,由于对matlab...
- 选择电磁阀必须要知道的8个因素(电磁阀的选择应从哪些方面考虑)
-
如何正确选择电磁阀,电磁阀的种类、规格、标准以及根据不同的介质选择的型号各不相相同,电磁阀的参数选择不全面的话,会影响使用寿命、诱发各种潜在危险甚至事故,下面诺伊曼的工程师将与您一起探讨关于正确选择电...
- 一种图像局部特征快速匹配算法(图像局部特征描述和提取方法研究)
-
摘要:在图像处理和机器视觉领域,SIFT是目前被广泛应用的一种基于局部特征的图像匹配算法。针对SIFT算法匹配速度较慢和常常存在错误匹配对的问题,本文提出在匹配过程中采用角度相似性分析替代传统的欧...
- 增益映射耦合局部正则化的图像重构算法
-
朱莉(西安科技大学计算机学院,陕西西安710054)摘要:针对当前的图像重构方法在对多帧超分辨率图像复原时,存在明显的模糊效应与振铃效应的不足,提出增益映射控制耦合局部正则化的图像重构算法。首...
- 每天一个MATLAB小技巧(9)(matlab简单教程)
-
欢迎关注公众号:【阿波兹得】上文接:每天一个MATLAB小技巧(8)如果你觉得我的文章对你有亿点点帮助的话,兄弟姐妹们看的时候顺便戳一下关注、点赞、收藏~谢谢朋友们,大家的支持就是我不断更新的最大动力...
- 零基础入门Matlab:两小时快速上手指南
-
前言Matlab作为一款强大的数学计算和可视化工具,广泛应用于工程、科研和数据分析领域。本文为零基础学习者量身定制,通过简洁明了的讲解和案例,助你快速掌握Matlab核心功能,两小时轻松入门!1.界...
- 用改进的深度差分特征识别人体部位
-
摘要:为了进一步提高人体部位识别正确率,考虑人体部位尺寸不一特性,提出了改进型深度差分特征。改进型深度差分特征根据人体部位尺寸大小确定特征偏移量取值,然后利用随机森林算法训练分类模型,实现了人体部...
- MATLAB《自动控制原理》相关编程(二)
-
摘要:本文主要讲解自动控制原理中涉及的相关MATLAB函数,包括拉式变换和反拉式变换、传递函数的化简(并联和串联)、带延时的传递函数、单位速度、单位加速度和其他任意输入的响应。1.拉式变换时域函数转...
- MATLAB-图片自动编号、命名及保存
-
在进行运算的可以,可能经常需要对图形进行保存,手动操作比较繁琐,可以自动的生成图片并按照一定的规律自动命名,这样可以提高效率。实现功能会涉及到一些函数的使用和往期介绍的图像的保存方法。下面简单回顾一下...
- MATLAB的Simulink常用模块(一)(simulink的matlab function模块)
-
在MATLAB的Simulink中有些常用的模块,今天主要介绍常数模块、示波器模块、以及模块属性的操作函数。1.模块的构成元素输入/输出端口:作为模块之间传递数据的纽带,连接输入信号和输出信号。模块...
- 闪耀金色光芒的冥王侍卫,掌管宇宙睡意的使者,温柔杀手修普诺斯
-
在极乐净土中有两位守护冥王哈迪斯的神,一个是死神塔纳多斯,另一个就是他的哥哥修谱诺斯。这两个神明一个是能掌握人类生死的大权,另一个则是负责人类和神仙的睡眠。可以说这两个人都十分的厉害。那么作者就给大...
- 无线安全的高级利用:隔离网络里你不知道的Wi-Fi隐蔽传输通道
-
2018年4月,在荷兰阿姆斯特丹HackInTheBox安全会议上,我们分享了一个关于隔离网攻击技术的议题——GhostTunnel:CovertDataExfiltratio...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)