频道栏目
首页 > 安全 > 系统安全 > 正文

“后门”的攻击与防御(2)

2004-11-12 22:39:44           
收藏   我要投稿

 后门程序如何隐藏的?

  判断题:后门程序是不是程序?是不是具有可执行程序的通性??

  答案自然是肯定的。打开后门的端口其实就是木马程序在机器上所开的,为的是方便该程序在不为目标机用户所知的情况下被攻击者访问/控制所用。好了,到了这里,问题被转换成了——后门程序的放置、执行、驻留、开放端口、隐藏自身信息、远远程连接的实现。

  首先是放置,与病毒程序类似,后门程序也是通过操作系统漏洞、程序bug、协议安全漏洞传播、社会工程学传播为主,不过相比之下多了一个程序编写者预留。关于这一部分的知识,读者可以参考yesky上关于木马如何传播的介绍,也可参考天缘的另一则文章《安全宝典——病毒及攻击防御手册》。事实上后门程序可以看作是木马程序的一种,其他的木马程序还包括键盘/鼠标记录、隐私文件偷取等等方面的,后门则主要是专注于远程控制/访问这一部分。因此我们通常把后门程序看作是木马程序中的一个分支。从某种程度上来说,后门程序是技术含量相对较高的一类木马程序。

  接下来是后门程序的执行,除了普通的木马程序常见的执行方式,后门程序可以通过挂hook的方式加载,也可以通过在某公共程序中预留接口被用户很乐意地主动加载。前者在技术上比较先进,后者则是软件作者的“原罪”。相比其他第三方程序实现的木马而言,这两类木马与系统结合地更加密切,在查找与杀除上更加困难。Hook方式可以通过挂接api,或加载dll,作为其他程序下属的线程的方式来加载;这样要杀这个子进程(线程)的后门程序则需要把主进程停止掉,而如果主进程是默认规定不允许kill掉的话就相当不方便查杀了,当然还有的做法就是运行2个子进程互相监视彼此,如果一个死了则另一个做相应处理,并把死掉的那个重新执行——如果有朋友是做服务器的,可以用类似服务界的ha方式来理解,“高可用”理论和实施真是无处不在啊。而后一类藏在程序中的后门,一般来说如果该程序不是特别重要的话,直接把该程序给删除掉,换一个同类功能的其他程序来用就行了。

  不过……曾经有出现过内核级代码中出现后门的情形。遇到这样的情形一般就需要重新编译内核了,而如果内核是不开放源代码的则只能依靠商业公司的良心了。由于后门程序属于木马程序类,所以不具有病毒程序的感染二进制可执行文件的特征(但可能将其替换掉),所以一般来说去除方法都以删除该程序为主。关于后门程序的删除,可以参考各类木马程序删除的书籍文献来举一反三。

  然后来看看后门程序的驻留。前面我们说过了,后门程序也是一个二进制程序,想要开启/监听/访问外部端口的时候,它必定是运行状态的。而程序的运行都是加载到系统进程之下,放置到内存中执行的。在这一部分中,随着后门程序的不断发展,目前的后门程序主要分为二大类:被动监听端口类、主动连接类。一般来说,常用的后门程序与我们运行的常规服务程序类似,都是后台运行,监听外部对某个端口的连接进而作出响应,这类后门程序从事实上讲就是一个服务程序,区别只在于不是由目标机合法用户所合法运行的而已。比如我私自在目标机上开一个ssh服务,而且想办法隐藏掉不被该机器的用户发现——那么这个原本用于远程登陆的利器,此刻就成为了我的一匹木马,而这个程序的称谓也变成了“后门软件”。另一类主动连接类的后门程序则是黑客思维的产物(打破常规思考的成果),普通情形下,由于目标机用户处于nat内,或使用了防火墙等软件,导致外部对其某些端口的访问不被允许,那么就达到了禁止该后门的目的。(如下图表示,虚线表示访问未遂)

  但犹如天缘以前在简单介绍防火墙一文中所说的,大多数的防火墙因为效率及方便性考虑,一般都被管理员配置为“外紧内松”的模式——从外面发起的访问受防火墙限制,而从内部主动发起的连接请求则不受任何限制。常见的如windows xp sp2中自带的防火墙以及部分对带宽要求比较高,安全性要求不是特别高的娱乐、生活小区网络。因此,如果反向来连接,由受防火墙保护的目标机朝我们的攻击机器发起连接则就可以达到绕过防火墙通信的目的。(如下图,此次的连接目的就达到了)

  接下来说说关于端口的事情,大家都知道前1024是系统默认的保护端口,在某些系统上运行这些端口是需要root权限的,而且为了和常见服务不发生冲突,则一般都把后门程序的端口设置得比较靠后一些。至于取什么端口,完全是个人爱好了,在《透视木马开发技术 》中有详细介绍到windows下木马程序的端口自更改的实现,各位可以参考。关于后门程序的自身隐藏及远程连接的实现,我们在下面的一个小例子里面介绍。

实战演练

  Ok,下面我们就开始一次模拟的攻击之旅吧。

  首先记得一个宗旨——破坏者的目的是把对方的系统摧毁掉,而我们的目的是秘密潜入并放置我们的程序,最后把战场收拾干净——如果用游戏来比喻,前者是属于“合金弹头”后者则是“合金装备”了。

  首先是进入对方的系统并获取权限。由于是模拟攻击,且漏洞利用并不是此文的重点,所以在此我们就当作是获取了一台linux机器的root权限了吧。值得一提的是这一步并没有大家想象中困难,一般来说比较简单的方法是利用的漏洞是没有升级的bind服务(dns服务器)的漏洞来达到目的,因为使用这个服务的机器配置一般不错,而且网络速度也会很不错,并且bind虽然可以chroot但是很多懒惰的管理员没有这样做(这就是天缘前段时间写制作一个chroot bind服务器的原因)——值得一提的是目前中国大陆教育网中有相当一部分的dns机器中的bind都是用的没有升级的旧版本,所以也存在漏洞。关于对旧版本bind的漏洞利用在各大安全站点都可以查到。其实一般一个新做的系统很少有漏洞,但使用过一段时间以后漏洞就渐渐多了,因为管理员不升级、不维护,所以很容易被攻击。

  首先去下载一个ssh的源程序包,用ftp or wget 都随你高兴。

  下载之后解包,安装这些都是很普通的。值得一提的是,如果觉得有必要可以加参数—prefix指定安装到某目录,找个比较深的子目录藏吧。

  好了,接着改sshd.conf,设置一下需要的参数,把端口号随便改一个,之后就运行看看?相信已经启动起来了,如果你还不会设置sshd,那么先自己找台机器练习一下吧,攻击时候的时间可是分秒必争的哦。

  好的,接下来我们就转到ssh里去做了。

  恩,先把我们需要的tfn2k编译运行起来——在编译的时候可能会遇到一点麻烦就是gcc版本问题,不过可以通过特殊的参数设置来搞定,如果对方的操作系统和你的相同那么可以先本地编译后直接丢可执行文件上去。

  结束了??没有!!这才是刚刚开始,后门程序的难点不是如何放到服务器上,和如何运行起来,而是如何让自己尽量不被管理员发现,以作它用。


 

相关TAG标签 后门
上一篇:“后门”的攻击与防御(1)
下一篇:“后门”的攻击与防御(3)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站