“黑客”(hacker)这个词,一开始只是单纯地用来指代在电脑系统和信息科技方面的能手,最近几年才因为一些臭名昭著的网络罪犯而蒙上了一层灰色阴影。实际上,现在有很多公司专门雇佣黑客来测试系统安全强度,这样的“黑客”懂得适可而止,遵守法律,获得公司信任的同时还能拿到不菲的薪酬。
在成为黑客之前,你需要做两点准备:
1、学一门编程语言。学哪一门不重要,但你要参考一下下面的条例:
C语言是Unix系统的基础。它(连同汇编语言)能让你学习对黑客非常重要的知识:内存的工作原理。
Python或Ruby是高级而强大的脚本语言,能够实现多项任务的自动化。
Perl也是这方面的一个合理选择,同时PHP也值得一学,因为大部分网络应用都使用了PHP。
Bash脚本编程是必须掌握的。它能帮助你轻松地控制Unix/Linux系统 -- 通过编写脚本程序,让它们为你完成大部分工作。
汇编语言也是必须了解的。它是处理器能理解的基本语言,且现实中存在着多种版本的汇编语言。所有的程序最终都会被解释成汇编语言。如果你不懂得汇编语言,你将无法深入钻研每一程序。
2、确定你的目标。收集和目标相关信息的过程又被称为枚举。你事先掌握的信息越多,你的准备就越充分。
好了,接下来,黑客十部曲:
1、使用*nix命令终端。Cygwin将为Windows用户提供模拟的*nix环境。Nmap专门使用了WinPCap,它可以运行在Windows系统上,且不需要Cygwin的支持。然而,由于缺乏原始套接字功能,Nmap并不能很好地在Windows系统上工作。你也应该考虑使用Linux或BSD,它们更灵活、更可靠、更安全。大部分Linux发行版都附带了很多预装的有用工具。
2、首先加强你的机器的安全性。确保你已经充分理解所有能保护自己系统的常用技术。从基础开始 -- 你是否曾发现有服务器托管着含有非法或不良信息的网站?尝试通过各种方法入侵它。不要更改网站,只要取得其控制权即可。
3、测试目标系统。你是否能连通远程系统?虽然你能使用ping实用程序(大部分操作系统包含有该程序)了解目标系统是否活跃,但其结果并不总是可靠的 -- 该程序需要以ICMP协议为基础,这能轻易地被谨慎的系统管理员所屏蔽。
4、确定操作系统(OS)。进行端口扫描,你可以使用pOf或者nmap进行扫描。该方法能让你了解目标机器上开放了哪些端口,运行着哪种操作系统,甚至还能获取关于所使用的防火墙或路由器等信息,以便你能准备好一系列的攻击计划。你可以使用nmap的-O选项进行操作系统的探测。
5、找出系统中的路径或开放端口。FTP(21)及HTTP(80)等常用端口通常都得到了较好的保护,找出尚未被发现的漏洞可能比较容易发起攻击。
尝试其他不太常用的TCP和UDP端口,例如Telnet及一些用于局域网游戏的UDP端口。
如果系统开放了22号端口,通常能证明该目标系统上运行着SSH(secure shell)服务,对此有时可以进行暴力破解。
6、破解密码或认证过程。有几种方法能破解密码,其中包括暴力破解。对密码的暴力破解就是使用暴力破解软件,尝试每一个包含在预定义词典中的可能密码。
用户通常被建议不要使用过于简单的密码,因此暴力破解可能需要较长时间。然而,暴力破解技术已经得到了长足的改进。
大部分散列算法都存有漏洞,因此你可以通过发掘这些漏洞来显著加快破解速度(例如你可以缩减MD5算法至1/4的比例,这将大幅提高其运行速度)。
较新的技术使用显示卡作为另一个处理器 - 这能提高速度达数千倍。
你可以尝试使用彩虹表来达到最快的破解速度。请注意,只有当你掌握了密码的散列值时,密码破解才是一项可行的好技术。
在登录远程系统时,尝试每一个可能的密码并不是一种好的方法,因为这种行为将会轻易地被系统的入侵检测程序所检测到,同时会污染系统日志,并且可能需要数年时间才能破解密码。
比起采用密码破解,采用别的方法也许能更容易入侵一个系统。
7、获得超级用户权限。尝试获得*nix机器的根用户权限,或者是Windows系统上的管理员权限。
很多重要信息都会得到特别保护,因此你需要通过一定程度的认证才能获得这些信息。要查看系统上的所有文件,你需要取得超级用户权限 -- 即Linux和BSD系统上"root"用户所具备的权限。
对于路由器,默认的超级用户是"admin"帐户(除非已被更改);对于Windows,即为管理员帐户。
和系统取得连接并不意味着你就能获得一切。只有超级用户,管理员帐户,或root帐户能具备一切权限。
8、多管齐下。通常,要获得超级用户身份,你必须采用多种方法,例如制造缓冲区溢出,从而导致内存转储,并允许你在比一般情况下更高级的层次中进行代码注入或执行任务。
在类unix系统中,如果一个软件设置了setuid权限,该程序将可以以另一个用户的身份(例如超级用户)被执行。
这只能通过编写或找出你能在他们的机器上运行的不安全程序才能这样做。
9、建立后门。当你对机器取得完全控制后,最好能确保下一次你也能顺利地再次登录。这可以通过建立后门来实现,这是一种重要的服务,例如SSH服务器。然而,你的后门有可能会在下一次系统升级时被删除。 经验老道的黑客会在编译器当中设置后门,因此每次软件编译后都能留有一条路径让他们再次回来。
10、掩饰你的痕迹。不要让管理员知道系统已经被入侵。不要更改网站(如果有的话),也不要创建不必要的文件。不要创建额外的用户。动作要迅速。如果你修补了一个服务器,如SSHD,确保你的密码已被硬编码。如果有人尝试使用该密码登录,系统将允许他们的进入,但不应该包含任何重要信息。
好了,你已经成为一名黑客了,下面是给你的一些提示:
请谨记,如果你的目标不是要让他们竭尽全力地拒绝你的入侵,你也不会变得更厉害。当然,也不要自大,不要以为自己是最强的。你的目标应该是:你必须变得越来越强。你没有学习到新东西的每一天,都是被浪费掉的宝贵光阴。你应对此负责。成为最好的,不管付出多少代价。不要半途而废,你必须全力以赴。正如尤达所说,"做或不做。没有尝试这回事。"
在黑客和骇客之间有重大的区别。骇客是被恶毒的(例如钱)理由所驱动,而黑客则尝试通过探索取得信息、收获知识("绕过安全防护"),在任何情况和形式下,可能不都是合法的。
谨记,黑客行为并不是要破坏计算机系统、获得高薪厚职、在非法市场上出售非法所得,也不是要帮助任何人入侵安全的机器。你不是来这里帮助管理员完成其工作的。你这样做的目的是为了变为最强大的一个。
黑客建立了互联网、开发了Linux、并共同对开源软件作出贡献。你应该更深入地了解黑客行为,因为这是广受尊敬的,而且在实际环境中,只有具备很多专业的知识才能获得成果。
除非你是专家或专业黑客,否则对一个公司或政府计算机采用本文所介绍的方法会为你带来麻烦。请谨记,有一群比你更厉害的人是通过保护这些系统来谋生的。一旦被发现,他们有时会监控着入侵者,并在采取法律行动前让入侵者自投罗网。这意味着,你可能发现自己入侵到一个系统中并能自由进行各种操作,而事实是,你已经被别人监控着,并随时会被别人所制止。
虽然有很多合法且安全的训练目标,但不幸的是,你很难不冒着违法的风险才能有所收获。不在实际系统中通过实际问题来提高自己,你很难成长为黑客,但这也让你面临着实际的风险。也请切记这一点。
阅读关于TCP/IP组网的书籍。
还有,请记住这些警告:
不要删除全部日志文件,相反,只删除文件中的和入侵相关的记录。另一个问题是,是否存在着一个日志文件备份呢?如果他们查看文件间的异同并发现了你的行为,怎么办?对自己的行为要做好计划。最好的方法是随机地删除日志文件中的内容,包括和你相关的内容。
如果你认为你找到了一种非常简单的破解方法,或者是安全管理中的一个明显错误,请保持谨慎。负责保护该系统的安全专家可能会通过这样的方法来迷惑你,或设立诱捕系统抓到你。
也许你听说过相反的意见,但请不要帮助别人修补他们的程序或系统。这被认为是非常差劲的做法,同时会被大部分黑客团体所排斥。如果你发布一项别人所发现的问题,那么他可能会变成你的敌人,而他可能是一名比你更优秀的黑客。
不要只以玩乐为目的。记住,入侵一个网络并非一场游戏,这有可能会改变世界。不要在幼稚的行为上浪费时间。
错误地使用这些信息可能是本地的和/或联邦政府的犯罪行为。本文只以内容介绍为目的,只提倡有道德的黑客途径,反对非法黑客行为。
入侵别人的系统可能是违法行为,因此除非得到系统所有者同意或者你认为这样值得并且自己不会被抓,否则你不应该有这样的行为。
如果你对自己的技术没有信心,应避免入侵公司、政府或军事网络。即使他们不够安全,他们也有足够的金钱追踪并追究你。如果你发现了这些网络中的一个漏洞,最好把它告诉有经验且值得信赖的黑客,他能更好地利用这一发现。