木马的前世今生:上线方式的发展及新型上线方式的实现

0x00 前言

在讲文章主题之前,我们还是习惯性地聊(che)一(che)聊(dan)。

远程控制木马大家都不陌生,尤其是早期接触黑客技术的人,应该可以发现早在2007-2009年,这段时间内,国内的“黑客技术”正是蓬勃发展的时期,那个时候,可谓是“战乱纷争,万马奔腾”的年代,当时流行各种黑客技术,其中就包括远程控制技术。

各种远程控制木马满天飞,无论是最早葛军编写的“灰鸽子”,还是各种后起之秀的RAT,简直不胜枚举,各种被阉割的xxx专用版,各种新出的xxxRAT。如各类国产远控木马、上兴、PCShare、黑防的ByShell、黑洞、冰河、SRAT、暗组的DRAT、XRAT、维度等等,包括国外的一些C/S,B/S型的远控木马也传入了国内,各家似乎都在比拼谁的功能多,谁的免杀好,谁的反杀软技术强。

于是,各种HOOK SSDT,Rootkit级别的木马比比皆是。可是,后来因为国家的管控,各种黑客论坛,黑客网站,黑客杂志相继关闭或消失。远控木马编写技术和木马免杀技术也不再那么流行,当初写木马做免杀的“高手”,如今早已从网络中销声匿迹。

引用王家卫导演的《一代宗师》里边的一句话——

“有的成了里子,有的成了面子,都是时势使然。”

当然,客观的讲,造成这种形势的原因也是国内安全行业的进一步发展所致。不过,我相信依旧有一帮人还在这个领域埋头探索,在努力,木马依旧可以绕过各种杀软。毕竟,“攻永远超前于防”。

0x01 传统木马上线方式概述

好了,聊(che)完了。该进入文章主题了。今天,不谈别的,只“浅谈”木马上线技术的发展。

最早的远控木马都是“主动连接”,通俗的讲是这样的:假如你要控制某人的主机A,你得在主机A上执行木马, 木马执行后会开启一个你提前配置好的端口,之后,你要与该主机A建立连接,在主控端上输入该主机A的IP和端口,才能进行控制。

不过,后来因为互联网的进一步发展,公网控制内网就出现了一定的问题。于是,“被动连接”型的木马上线技术就出现了,和“主动连接”的形式刚好相反,是木马即被控端主动来连接主控端。主控端开启一个端口,被控端去连接你配置好的IP地址。

“被动连接”也叫“反弹连接”。谈到这个不得不提两种经典的木马上线方式。一种就是FTP上线方式,另外一种就是DNS域名解析上线方式。

灰鸽子FTP上线方式如下图:

在你的FTP服务器上写入一个ip.txt,内容就是你的主控端监听的IP地址和端口。当你的IP地址改变之后,你只需要再次更新这个ip.txt的内容即可。

在配置木马的时候,只需要按照FTP上线方式的格式配置上线地址。

如下图:

对于DNS域名解析上线,一直是木马上线的最主要的方式,曾经最流行的就是3322和花生壳。木马执行后会解析你配置好的域名,然后去连接对应的IP地址的端口,进行通信。

0x02 新型木马上线方式

从大量的APT攻击案例中可以发现,当今的木马在运行的隐蔽性,通信的穿透性,功能的多样性,跨平台性等方面有了很大的突破。

在研究分析过程中,有部分木马的上线方式,开始采用第三方域名进行通信。这无疑增强了木马的隐蔽性和反追踪能力。

上线方式的说明,请看下图:

这种木马使用的第三方域名实际上是利用第三方网站能够写入并及时修改自己的通信数据。木马编写者往往会寻找知名的网站,至少不会出现宕机的情况,以保持肉鸡的持久性控制。

这样的网站很多,比如说博客类网站等等。可以提前发表一篇博文,并在博文里插入控制命令,之后特制的木马,就会去获取控制命令,同时木马也可以模拟编辑博文,写入执行结果的数据。

由于TCP通信涉及到socket对象的问题,部分木马会专门使用支持php的第三方网站。并拿到webshell后,上传一个进行数据转发的php文件。这种情况下,控制被控端的流畅度可以得到保证。

而一般情况下,采用这种方式的木马都是使用了HTTP协议进行通信,由于HTTP协议是无连接的。所以不会涉及到socket对象的问题。只要被控端为自己生成一个独一无二的ID,即可与其他被控端区别开来。只要在编写代码的时候,对接受数据,发送数据,执行控制命令这三个功能模块做好处理,控制的流畅度还是可以得到一定的提升。

采用第三方域名上线的木马,在隐蔽性方面有了很大突破,而且这种做法,也可以提高木马的穿透性,对于一些防火墙来说,至少知名的网站总归是允许进行数据通信的。

0x03 第三方域名上线方式的实现思路

先把思路搞清楚。木马上线采用的第三方网站为"博客园",注册两个帐号,一个为主控端用于发出控制命令所使用的账号A,另一个是被控端发送本机信息以及控制命令执行结果所使用的账号B。用账号A创建两篇文章,一篇为木马上线测试(下文简称文章A),一篇为木马功能测试(下文简称文章B)。

被控端处理上线事务的线程设计思路如下:

上线信息的格式:

[主机名称]&[当前时间]&[主机唯一ID]

对于[主机唯一ID],如果是第一次上线会生成此ID,如果不是则会读取已经生成好的ID。

主控端处理主机上线事务的线程设计思路如下:

由于这种上线方式采用的实际上是HTTP协议通信的,所以无法像TCP通信一样,存在相关的SOCKET事件。所以,主控端还需要有一个处理主机是否在线的线程,设计思路如下:

另外,为了防止文章A的评论区有很多评论,主控端在获取完评论信息(主机上线信息),之后,添加一个删除文章A的评论的线程即可。

0x04 第三方域名上线方式的简单代码实现

接下来,我们用简单的代码实现这个demo。为了快速实现这种木马上线方式,主控端采用C# WinForm实现,客户端采用Python实现。搞清楚了设计思路,用什么编程语言去实现就是次要的事情了。

下面是被控端启动后,向文章A提交评论(上线信息)的截图:

发送上线信息后,文章A的评论截图如下:

主控端的截图如下:

功能测试的通信流程和上线测试的流程思路是相似的。在这里就不在赘述,这种上线方式虽然采用了HTTP协议通信但是和直接使用封装的HTTP协议或者是浏览器访问,是有一定的区别的。

它无法进行大批量的数据传输,像文件传输这样的功能虽然也可以实现,但是"用户体验"很差,所以这种上线方式的木马,大多被用来当作一个隐蔽的后门木马,只需要有一个文件下载和CMD Shell的功能。

0x05 总结

采用第三方域名上线方式的木马设计思路,已经很明确了,但是在实际实现的过程中还存在一些不足。包括上文中用code去实现,也有很多处理事务线程和上线性能等方面需要进一步改进。

所以代码在此就不提供了。大家了解了这种思路就好。另外,对于将账号B的登录信息写入客户端,是否存在一定风险?对于这个问题,大可不必细究。

“博客园”的登录信息会被登录页面的js使用key进行加密然后提交,即使你分析出了登录信息也是加密过的,并非原始明文密码。另外,登录成功后,会有一个session或者cookie,可以直接拿来当作发表评论(主机上线信息)的令牌使用。也可以将cookie的生命周期加长,延长控制时间。

文章中还有很多"易喷点",欢迎来"喷"。

0x06一点题外话

对于木马上线域名的分析和追踪,在这篇文章《浅谈从反木马角度分析怎样提高木马反跟踪能力》中作者提出了在木马上线方式的时候使用UDP+TCP协议的方法来迷惑安全研究人员。

实际上,这种办法起不到任何作用。因为,要分析木马的上线域名,最直接最有效的办法就是用wireshark抓包,过滤出dns协议的数据包,很快就能分析出来。

即使你在编写木马的时候,并未对上线地址采用“硬编码”,或者使用动态数组动态生成,又或者你进行了各种加密,又或者直接写入内存等“软编码”手段,这些只能对木马上线地址的静态分析起到一定的保护作用,如果去动态调试跟踪,也是可以得到上线地址的。

对于使用域名生成算法(DGA)生成的域名,目前已经有相应的机器学习的手段去检测是否为木马的C&C域名。不过目前看起来,目前对于木马上线地址的隐藏,最好的办法就是使用第三方域名,这样可以极好的保护木马操纵者。

*本文作者:丝绸之路,本文属FreeBuf原创奖励计划,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2015-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BIT泽清

棋牌游戏在App Store上架需要哪些流程没有版权号和运营资质怎么办

注:由于最近作者我的搜狐号被一些人恶意举报后,被冻结了。所以把之前的文章从新分享在这里给大家,避免大家没办法看到我的干货!!!

6.3K60
来自专栏FreeBuf

PHP成为首个在内核中嵌入加密库的编程语言

PHP团队最近投票一致通过了“将Libsodium库集成到PHP内核中”的决议,使得PHP成为首个使用公认现代加密库的编程语言。 Libsodium是个便捷,可...

23670
来自专栏吴逸翔的专栏

海量服务实践:手 Q 游戏春节红包项目设计与总结(下篇)

本篇文章接上篇,主要讲解了手 Q 游戏春节红包项目系统保障、演戏验证和总结三个部分。团队从系统容灾/过载保护/柔性可用/立体监控方面做的一些工作,为了保障项目顺...

71300
来自专栏安恒信息

存在漏洞的Java及Flash版本使用者众多

众所周知的是Java和Flash历来被攻击者所青睐,这多亏了它们巨大的装机量和众多的安全问题。但与此同时被攻击者所定为目标的用户们却没有这么乐观,...

20430
来自专栏网站漏洞修补

解决网站漏洞修复之短信验证码被盗刷

公司的商城网站刚上线运营不到一个星期,网站就被攻击了,导致公司网站的短信通道被人恶意刷了几万条短信,损失较大,同时服务器也遭受到了前所未有的攻击。CPU监控看到...

38210
来自专栏腾讯架构师的专栏

让互联网更快的协议,QUIC 在腾讯的实践及性能优化

本文将主要介绍 QUIC 协议在腾讯内部及腾讯云上的实践和性能优化。

1.2K80
来自专栏七夜安全博客

(原创)逆向某停车app

16560
来自专栏FreeBuf

记一次完整的办公网渗透到idc过程

前言: 看到各位大神分享他们内网渗透的经验与技巧,小菜打算也来分享分享。 http://www.freebuf.com/articles/sys...

32870
来自专栏Python绿色通道

使用Python自动化发布文章:(一)

写在前面:坚持解决一个问题,花了两三个小时的时间终于解决了问题,最后我的自动化发布文章的功能终于实现了。

56330
来自专栏QQ会员技术团队的专栏

海量服务实践──手Q游戏春节红包项目设计与总结

1. 需求背景 1.1.红包类别 2017年的手Q春节游戏红包共有刷一刷/AR地图/扫福三种,如下图所示: ? 1.2.体验流程 虽然红包分三种,但在游戏业务...

28880

扫码关注云+社区

领取腾讯云代金券