1.3 黑客基础
1.3.1 黑客必备基本技能
作为一名黑客,需要有高超的技术水准。计算机技术的发展日新月异,每天都有大量新的知识不断涌现,黑客们需要不断地学习、尝试新的技术,才能走到时代的前列。作为一名黑客,必须掌握一些基本的技能。
1. 熟练掌握英文
黑客学习的计算机知识虽然主要源自于国内,但是却经常需要参考国外的相关资料和教程,而国外的资料和教程又大多为英文版本,因此就需要掌握一定的英语技能,以确保能够看懂国外的一些参考资料。
2. 理解常用的黑客术语和网络安全术语
在常见的黑客论坛中,经常会看到肉鸡、挂马和后门等词语,这些词语可以统称为黑客术语,像TCP/IP协议、ARP协议等词语,这些是网络安全术语,如果不了解这些词语的意思,在与其他黑客交流时就会感到格外吃力。
3. 熟练使用常用DOS命令和黑客工具
常用DOS命令是指在DOS环境下使用的一些命令,主要包括ping、netstat及net等,利用这些命令可以实现不同的功能,如利用ping命令可以获取目标计算机的IP地址及主机名。黑客工具则是指黑客用来远程入侵或查看是否存在漏洞的工具,如使用X-Scan可以查看目标计算机是否存在漏洞,利用EXE捆绑器可以制作木马等其他应用程序。
4. 精通程序设计
编程是每一个黑客都应该具备的最基本的技能,一个好的黑客同时应该是一个精通多门语言的程序员。但是,黑客和程序员是不同的,黑客往往能掌握许多程序语言的精髓,并且黑客们都是以独立于任何程序语言之上的概念性观念来思考一个程序设计上的问题。黑客培养编程能力的方法更多的是通过读别人的源代码,这些源代码大多数是前辈黑客们的作品,同时他们也不断地编写自己的程序,在动手实验方面有着超乎寻常人的能力。
5. 熟练掌握各种操作系统
只有熟练地掌握各种操作系统,才能有研究各种操作系统漏洞的基本技术。要想成为黑客,必须要清楚各种系统的整个运作过程与机理,熟悉操作系统的内核。只有这样,才能让自己的技术如虎添翼。
6. 掌握主流的编程语言
从互联网中获取的黑客工具通常是其他黑客利用指定类别的编程语言制作出来的,如果想要成为一名黑客高手,仅仅使用别人的工具是不够的,要熟悉各种各样的网络编程、网络环境及常用的网络设备,要能够创建自己的黑客工具,所以掌握主流的编程语言还是很重要的。
程序语言可分为以下5类。
(1)汇编语言(Assembly Language)。
汇编语言的实质和机器语言是相同的,都是直接对硬件进行操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由3部分组成,即指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,所以现在很少有人使用。但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件比较小,执行速度很快。
(2)解释型语言(Interpreted Language)。
包括Perl、Python、Ruby等,也常被称为脚本(Script)语言,通常被用于和底层的操作系统进行沟通。这类语言的缺点是效率低,不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,源代码外露,所以不适合用来开发软件产品,一般用于网页服务器。但解释型语言比较灵活,可以动态调整、修改应用程序。
(3)编译型语言(Compiling Language)。
编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。C语言、C++和Java都是编译型语言。
(4)混合型语言(Hybrid Language)。
混合型语言介于解释型和编译型之间,其代表语言是C#和Java。
(5)网页脚本语言(Web Page Script Language)。
就是网页代码,如HTML、JavaScript、CSS、ASP、PHP、XML等。
1.3.2 黑客常用术语
1. 肉鸡
“肉鸡”也称为傀儡机,是一种很形象的比喻,是指那些被黑客远程控制的机器。对方可以是Windows系统,也可以是UNIX/Linux系统;可以是普通的个人计算机,也可以是大型的服务器。比如用“灰鸽子”等诱导用户单击或计算机被黑客攻破或用户计算机有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情,而且不会被用户察觉。
2. 木马
木马就是那些表面上伪装成正常的程序,但是当这些程序运行时,就会获取系统的整个控制权限。有很多黑客热衷于使用木马程序来控制别人的计算机,如灰鸽子、黑洞、PcShare等。
3. 网页木马
网页木马就是表面上伪装成普通的网页文件或将恶意的代码直接插入正常的网页文件中,当有人访问时,网页文件就会利用对方系统或浏览器的漏洞,自动将配置好的木马程序端下载到访问者的计算机上自动执行。
4. 挂马
挂马就是黑客通过各种手段,包括SQL注入、网站敏感文件扫描、服务器漏洞、网站程序等各种方法获得网站管理员账号,然后登录网站后台,通过数据库“备份/恢复”或上传漏洞获得一个WebShell。利用获得的WebShell修改网站页面的内容,向页面中加入恶意转向代码,也可以直接通过弱口令获得服务器或网站FTP,然后对网站页面直接进行修改。当访问被加入恶意代码的页面时,就会自动访问被转向的地址或下载木马病毒,以使浏览器中马。
5. 后门
这是一种形象的比喻,黑客在利用某种方法成功控制目标主机后,可以在对方的系统中植入特定的程序,或修改某些设置。这些改动表面上很难被察觉,但是黑客却可以使用相应的程序或方法来轻易地与这台计算机建立连接,重新控制这台计算机,就好像是客人偷偷配了一把主人的钥匙,可以随时进入主人的房间而不被主人发现一样。通常大多数的特洛伊木马程序都可以被黑客用于制作后门。后门最主要的目的就是方便以后再次秘密进入或控制计算机。
6. Rootkit
Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息。比较常见的是Rootkit和木马、后门等其他恶意程序结合使用。Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在)还是活动时(作为进程存在),都不会被察觉。攻击者使用Rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。为了隐藏入侵者的行踪,Linux Rootkit IV的作者可谓煞费心机,编写了许多系统命令的替代程序,使用这些程序代替原有的系统命令来隐藏入侵者的行踪。
Rootkit与前边提到的木马和后门类似,但远比它们要隐蔽,黑客防守者就是很典型的Rootkit。
7. IPC$
IPC$是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
8. Shell
Shell指的是一种命令执行环境,比如按“Windows+R”组合键时会出现“运行”对话框,在里面输入“cmd”命令,单击“确定”按钮,就会出现一个用于执行命令的黑窗口,这就是Windows的Shell执行环境。通常使用远程溢出程序成功溢出远程计算机后得到的用于执行系统命令的环境就是对方的Shell。
9. WebShell
WebShell就是以ASP、PHP、JSP、CGI等网页文件形式存在的一种命令执行环境,也可以将其称为一种网页后门。黑客在入侵了一个网站后,通常会将ASP或PHP后门文件与网站服务器Web目录下正常的网页文件混在一起,然后就可以使用浏览器来访问ASP或PHP后门,得到一个命令执行环境,以达到控制网站服务器的目的。顾名思义,“Web”的含义是需要服务器开放Web服务,“Shell”的含义是取得对服务器某种程度上的操作权限。WebShell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于WebShell大多是以动态脚本的形式出现,也有人称之为网站的后门工具。利用WebShell可以上传下载文件、查看数据库、执行任意程序命令等。国内常用的WebShell有海阳ASP木马、Phpspy、c99shell等。
10. 溢出
溢出,确切地讲,应该是“缓冲区溢出”,简单的解释就是程序对接收的输入数据没有执行有效检测而导致错误,后果可能造成程序崩溃或执行攻击者的命令。大致可以分为堆溢出、栈溢出两类。
11. 注入
随着B/S(Browser/Server)模式应用开发的发展,使用这种模式编写程序的程序员越来越多,但是由于程序员的水平参差不齐,相当一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果获得某些他想要的数据,这就是所谓的SQL injection即SQL注入。简单来说,就是利用SQL语句在外部对SQL数据库进行查询、更新等动作。
12. 注入点
注入点是指可以实行注入的地方,通常是一个访问数据库的连接。根据注入点数据库运行账号的权限不同,所得到的权限也不同。
13. 内网
通俗地讲,内网就是局域网,如网吧、校园网、公司内部网等都属于此类。查看IP地址时,如果是在以下3个范围内,就说明你是处于内网之中,即10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255。
14. 外网
外网就是直接连入Internet的网络,互联网上的任意一台计算机可以直接互相访问,IP地址不能是内网地址。
15. 端口
端口(Port)相当于一种数据的传输通道,用于接收某些数据,然后传输给相应的服务,而计算机将这些数据处理后,再将相应的回复通过开启的端口传给对方。一般每个端口对应相应的服务,要关闭这些端口只需将对应的服务关闭即可。
16. 免杀
免杀可以看作是一种能使病毒木马避免被杀毒软件查杀的技术,通过加壳、加密、修改特征码、加花指令等技术来修改程序,使其逃过杀毒软件的查杀。
17. 加壳
加壳其实是利用特殊的算法,对.exe可执行文件或DLL动态链接库文件里的资源进行压缩,而且这个压缩之后的文件可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原始程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。目前较常用的壳有UPX、ASPack、PePack、PECompact、UPack、免疫007、木马彩衣等。
18. 花指令
它是指几句汇编指令,可让汇编语句进行一些跳转,使杀毒软件不能正常地判断病毒文件的构造。通俗地讲,就是杀毒软件是从头到脚按顺序来查找病毒,如果把病毒的头和脚颠倒位置,杀毒软件就找不到病毒了。
19. 软件加壳
“壳”是一段专门负责保护软件不被非法修改或反编译的程序。它们一般先于程序运行,拿到控制权后完成它们保护软件的任务。经过加壳的软件在跟踪时只能看到其真实的十六进制代码,因此可以起到保护软件的目的。
20. 软件脱壳
顾名思义,是对软件加壳的逆操作,就是利用相应的工具把软件上存在的“壳”去掉,还原文件的本来面目,这样再修改文件内容就比较容易了。
21. 蠕虫病毒
蠕虫病毒是一种常见的计算机病毒,利用网络和电子邮件进行复制和传播。蠕虫病毒类似于脚本程序,它利用了Windows的开放性特点,即一个脚本程序能调用功能更大的组件来完成自己的功能。以VB脚本病毒为例,是把VBS脚本文件加在附件中,使用*.htm、VBS等欺骗性文件名来破坏系统。蠕虫病毒的主要特征有自我复制能力、很强的传播性、潜伏性、特定的触发性及很大的破坏性。
22. CMD
CMD命令提示符是在操作系统中提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在Windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。同时按“Windows+R”组合键打开“运行”对话框,在文本框中输入“cmd”命令,单击“确定”按钮即可打开。
23. 嗅探器
嗅探器(Snifffer)是一种监视网络数据运行、捕获网络报文的软件设备。嗅探器的正当用途在于分析网络流量以便找出所关心的网络中潜在的问题。而非法嗅探器严重威胁着网络的安全,这是因为它实质上不能进行探测行为且容易随处插入,所以网络黑客常将它作为攻击武器。
24. 蜜罐
蜜罐(Honeypot)是一个包含漏洞的系统,它模拟一个或多个易受攻击的主机,给黑客提供一个容易攻击的目标。蜜罐就好比是一个情报收集系统,是故意让人攻击的目标,引诱黑客前来攻击。由于蜜罐没有其他任务需要完成,因此所有连接的尝试都被视为是可疑的。蜜罐的另一个用途是拖延攻击者对真正目标的攻击,让攻击者在蜜罐上浪费时间。与此同时,最初的攻击目标受到了保护,真正有价值的内容将不受侵犯。
25. 弱口令
弱口令(Weak Password)没有严格和准确的定义,通常认为容易被别人猜到或被破解工具破解的口令均为弱口令。如“123”“abc”等仅包含简单数字和字母的口令,容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。