§1 走过不留下任何痕迹
狡猾的老手通常都不会留下行动痕迹;象神一样的不可见闻。因此他们通常主宰着敌人的命运。 —SUN TZU
许多书籍讨论怎样去渗透计算机系统和软件。同时许多作者也已经阐述了怎么去运行黑客脚本,编写缓冲溢出利用程序,以及手工打造shellcode等。其中包括下面基本比较出名的书:Exploiting Software, The Shellcoder's Handbook, 和Hacking Exposed.
这本书不一样。它将告诉你们攻击者在闯入后怎么都干了些什么而不是前面所说的如何去攻击。与那些辩论性的计算机书籍不同,我们将会花一些篇幅来讨论一次渗透成功后应该做些什么。如果从辩论的角度来讲,这个应该是防御一方的讨论--怎么来检测到入侵以及怎样逆向恶意代码。但是这本书中我们采取了一个从进攻方描述的途径。这本书是关于如何在不被检测到的情况下渗透一个计算机系统。毕竟随着时间的推移,要使渗透获得成功,就不能被检测到。
在这一章里我们将介绍rootkit技术以及rootkit大概的工作原理。rootkit只是计算机安全的一部分,但是对于那些获得成功的入侵者来说rootkit往往是不可或缺的。
rootkit自身并不是恶意的。尽管如此,rootkit可能会被恶意程序所使用。了解rootkit技术对于正在抵御现代攻击的你来说是必须的。
§1.1 了解入侵者的动机
我们称计算机上一个用来进行秘密访问的途径为计算机后门。好来坞的影片中经常会有一些计算机后门。比如通过一个密码或者某个方法来访问高安全级别的计算机系统。但是计算机后门可不是仅仅呆在屏幕上的,他们在现实中可能会被用来窃取数据,管理用户,或者发动更深入的网络攻击等。
一个入侵者可能会有很多理由在一台被入侵的计算机上留下后门。闯入一个计算机系统是件艰难的差事,所以一旦其成功闯入了,她就想保持这块她刚刚获得的“领土”。她也许还会想利用这台被控制的计算机去发动其他的更深入的网络攻击。
入侵者渗透计算机的一个主要原因便是收集有用信息。为了达到这一目的,入侵者将要掌握系统的击键事件,观察其某段时间的行为,嗅探网络数据包以及把这些数据通过网络传输给自己。所有这些任务需要在被控制计算机上安装一个后门。入侵者将会在宿主系统上运行一些软件以便来收集和发送这些信息。
入侵者们也会为了破坏某个计算机系统而对其进行渗透。在这种情况下他们可能会在宿主计算机上留下一个其指定时间爆发的逻辑炸弹。当这个炸弹还没有符合启动条件时,它不能被检测到。即使入侵者不需要再次访问这个系统了,这些遗留下来的软件也不能被检测到。
秘密行动的角色
为了保证不被检测到,后门程序必须使用隐秘地运行。不幸的是,大部分公开的黑客后门程序都不是十分的隐秘。甚至许多会造成错误。这是因为开发者想把任何功能甚至包括一个厨房也放到后门程序中去。比如说Back Orifice或者NetBus这两款程序,他们罗列有一大串的功能,有些愚蠢到弹出你的光驱。这可能很适合办公室幽默式的玩笑,但是决不应该出现在一个专业的入侵中。如果入侵者不小心,她就可能在网上暴露其行动,整个入侵行动也就泡汤了。正是如此,专业的入侵往往需要特别的自动的后门程序--只实现一个功能。这会给结果带来一个坚实的保证。
如果计算机用户认为他们的计算机或者网络被渗透了,他们也许会进行调查取证工作,寻找不同寻常的活动的后门程序。最好的逃避取证的方法是隐秘地运行。如果他们没有怀疑到有入侵发生,那么取证调查也就不会应用到宿主系统上。入侵者可能使用一些不同的隐秘的方法。一些可能只是简单地保持网络数据流通量保持最低以及避免在硬盘上存储文件。其他的可能采用一些迷惑手段来存储文件,这使得取证更加困难。如果使用恰当,取证行为也许永远不会被应用到被控制的系统,因为没有检测到任何闯入行为。即使怀疑宿主系统被入侵了,好的迷惑性的存储数据的技巧也会躲开取证的检测。
什么时候不必在意隐秘性
有些时候入侵者并不需要隐秘地行动。比如如果入侵者想渗透到一个计算机并且只是需要足够多的时间来窃取一些东西,比如一个邮件列表,也许她并不会在意是否会被检测到。
其他的当入侵者可能只是为了使宿主计算机崩溃的时候,往往也不需要隐秘行动。比如宿主计算机是一个防空控制系统。这种情况下隐秘行动不是必须的。只要使系统崩溃就足以完成目标了。大部分情况下,一次计算机崩溃对于受害人来说是明显(和烦恼)的。如果你想学到更多的关于这种类型的攻击,这本书将不会帮助到你。
现在你已经对入侵者的意图有了一个基本的了解,我们将在本章余下的小节中大体讨论下rootkit以及此主体的一些背景比如rootkit怎么工作的。