1.5 黑客的基础知识
1.5.1 进程与服务
进程是程序在计算机上的一次执行活动。当运行一个程序时,就启动了一个进程。显然,程序是静态的,进程是动态的。进程可以分为系统进程和用户进程两种:凡是用于完成操作系统的各种功能的进程就是系统进程,即处于运行状态下的操作系统本身;所有由用户启动的进程就是用户进程。进程是操作系统进行资源分配的单位。
在Windows系统中按“Ctrl+Shift+Delete”组合键,即可打开“任务管理器”窗口。切换到“进程”选项卡,即可看到本机中开启的所有进程,如图所示。
查看本机中开启的所有进程
1.5.2 端口的漏洞
端口(Port)可以认为是计算机与外界通信交流的出口。其中硬件领域的端口又称接口,如USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
端口是传输层的内容,是面向连接的,对应着网络上常见的一些服务。这些常见的服务可划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
在网络中,可以被命名和寻址的通信端口是一种可分配资源。由网络OSI/RM(Open System Interconnection Reference Model,开放系统互联参考模型)协议可知,传输层与网络层的区别是传输层提供进程通信能力。网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。因此,当应用程序(调入内存运行后一般称为进程)通过系统调用与某端口建立连接(Binding,绑定)之后,传输层传给该端口的数据都被相应进程所接收,而相应进程发给传输层的数据都从该端口输出。
1.端口的分类
在网络技术中,端口大致有两种意思:一是物理意义上的商品,如集线器、交换机、路由器等用于连接其他网络设备的接口;二是逻辑意义上的端口,一般指TCP/IP协议中的端口,范围为0~65535,如浏览网页服务的80号端口、用于FTP服务的21号端口等。
逻辑意义上的端口有多种分类标准,常见的有以下两种。
(1)按端口号分布划分。
按端口号分布,可以分为“公认端口”“注册端口”“动态和私有端口”等。
① 公认端口(Well Known Ports)。
公认端口也称为常用端口,端口号为0~1023,它们紧密地绑定于一些特殊的服务。通常这些端口的通信明确地表明了某种服务协议,不可重新定义它的作用对象。例如21号端口分配给FTP服务,23号端口分配给Telnet服务,25号端口分配给SMTP(简单邮件传输协议)服务,80号端口是HTTP通信使用的,135号端口分配给RPC(远程过程调用)服务等,通常不会被像木马这样的黑客程序所利用。
② 注册端口(Registered Ports)。
注册端口的端口号为1024~49151,它们松散地绑定一些服务,即有许多服务绑定于这些端口。这些端口同样用于许多其他目的,且多数没有明确定义对象,不同的程序可以根据需要自己定义。记住这些常见程序端口,在木马程序的防护和查杀上非常重要。
③ 动态和/或私有端口(Dynamic and/or Private Ports)。
动态和/或私有端口的端口号为49152~65535,理论上不应该把常用服务分配在这些端口上,但实际上有些较为特殊的程序特别是一些木马就非常喜欢使用这些端口。因为这些端口容易隐蔽,常常不会引起人们的注意。
(2)按协议类型划分。
根据所提供的服务方式,端口又可分为“TCP端口”和“UDP端口”两种。一般直接与接收方进行的连接方式,大多采用TCP协议。只是把信息放在网上发布出去而不关心信息是否到达(即“无连接方式”),则大多采用UDP协议。
使用TCP协议的常见端口主要有如下几种。
① FTP协议端口。
定义了文件传输协议,使用21号端口。某计算机开启FTP服务便启动了文件传输服务,下载文件和上传主页都要用到FTP服务。
② Telnet协议端口。
一种用于远程登录的端口,用户可以自己的身份远程连接到计算机上。通过这种端口可提供一种基于DOS模式的通信服务,如支持纯字符界面BBS的服务器会将23端口打开以对外提供服务。
③ SMTP协议端口。
现在很多邮件服务器都是使用这个简单邮件传送协议发送邮件,如常见免费邮件服务中使用的就是此邮件服务端口。所以在电子邮件设置中经常会看到有SMTP端口设置栏,服务器开放的是25号端口。
④ POP3协议端口。
POP3协议用于接收邮件,通常使用110号端口。只要有相应使用POP3协议的程序(如Outlook等),就可以直接使用邮件程序收到邮件(如使用126邮箱的用户就没有必要先进入126网站,再进入自己的邮箱来收信了)。
使用UDP协议的常见端口主要有如下几种。
⑤ HTTP协议端口。
这是用户使用最多的协议,即“超文本传输协议”。当浏览网页时,就要在提供网页资源的计算机上打开80号端口以提供服务。通常的“WWW服务”“Web服务器”等使用的就是这个端口。
⑥ DNS协议端口。
DNS用于域名解析服务,在Windows NT系统中用得最多。Internet上的每一台计算机都有一个网络地址与之对应,这个地址就是IP地址,以纯数字形式表示。但由于这种表示方法不便于记忆,于是就出现了域名。访问计算机时只需要知道域名即可,域名和IP地址之间的变换由DNS服务器来完成(DNS用的是53号端口)。
⑦ SNMP协议端口。
简单的网络管理协议,用来管理网络设备,使用161号端口。
⑧ QQ协议端口。
QQ程序既提供服务又接收服务,使用无连接协议,即UDP协议。QQ服务器使用8000号端口侦听是否有信息到来,客户端使用4000号端口向外发送信息。
提示
在计算机的6万多个端口中,通常把端口号为1024以内称为常用端口,这些常用端口所对应的服务通常是固定的。
2.查看端口
为了查看目标主机上都开放了哪些端口,可以使用某些扫描工具对目标主机一定范围内的端口进行扫描。只有掌握了目标主机上的端口开放情况,才能进一步对目标主机进行攻击。
在Windows系统中,可以使用Netstat命令查看端口。在“命令提示符”窗口中输入“netstat-a -n”命令,即可看到以数字形式显示的TCP和UDP连接的端口号及其状态,如图所示。
查看端口号状态
如果攻击者使用扫描工具对目标主机进行扫描,即可获取目标主机打开的端口情况,并了解目标主机提供了哪些服务。根据这些信息,攻击者即可对目标主机有一个初步了解。
如果在管理员不知情的情况下打开了太多端口,则可能出现两种情况:一种是提供了服务管理员却没有注意到,例如安装IIS服务时,软件就会自动地增加很多服务;另一种是服务器被攻击者植入了木马程序,通过特殊的端口进行通信。这两种情况都比较危险,管理员不了解服务器提供的服务,就会降低系统的安全系数。
默认情况下,Windows有很多端口是开放的,在用户上网时,网络病毒和黑客可以通过这些端口连上用户的计算机。为了让计算机的系统变得更加安全,应该封闭这些端口,主要有TCP 135、139、445、593、1025号端口和UDP 135、137、138、445号端口,一些流行病毒的后门端口(如TCP 2745、3127、6129号端口)以及远程服务访问端口(3389号端口)。
3.开启端口
在Windows系统中开启端口的具体操作步骤如下。
1打开“控制面板”并双击“管理工具”图标,即可打开“管理工具”窗口。在其中单击“服务”图标,即可打开“服务”窗口,如图所示。
打开“服务”窗口
2在右边的服务列表中选择并右击要开启的“服务”窗口,在弹出的快捷菜单中选择“属性”选项,即可打开该服务的“属性”对话框,如下图所示。
“属性”对话框
3在“启动类型”下拉列表中选择“手动”选项,然后单击“启动”按钮,接着单击“确定”按钮,即可开启该服务对应的端口,如下图所示。
开启对应的端口
4.关闭端口
在Windows系统中关闭端口的具体操作步骤如下。
1在“服务”窗口中右边的服务列表中选择并右击要关闭的“服务”窗口在弹出的快捷菜单中选择“属性”选项,即可打开该服务的“属性”对话框。在“启动类型”下拉列表中选择“禁用”选项,如下图所示。
设置服务的启动类型
2此时激活“停止”按钮,单击“停止”按钮之后,再单击“确定”按钮,即可关闭该服务对应的端口,如下图所示。
关闭对应的端口
1.5.3 文件和文件系统概述
文件是存储于外存储器中具有名字的一组相关信息集合,在Windows系统中所有的程序和数据均以文件形式存入磁盘。文件是由文件名和图标组成的,一种类型的文件具有相同的图标。文件名不能超过255个字符(包括空格),由4个部分组成:[<盘符>][<路径>]<文件名>[<..扩展名>],其作用是唯一标识一个文件。文件名由1~8个字符组成,构成文件名的字符分为以下3类。
26个英文字母:a~z或A~Z。
10个阿拉伯数字:0~9。
一些专用字符:$、#、&、@、!、%、()、{}、-、-。
注意
在文件名中不能使用“<”“>”“\”“//”“[ 、]”“:”“! ”“+”“=”,以及小于20H的ASCII字符。另外,可根据需要自行命名文件,但不可与DOS命令文件同名。
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由3部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。磁盘或分区和它所包括的文件系统的不同是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作,这可能会破坏一个存在的文件系统。一个分区或磁盘能作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就是建立文件系统。
1.5.4 Windows注册表
通过注册表,用户可以添加、删除、修改系统内的软件配置信息或硬件驱动程序,这样就大大方便了用户对软、硬件的工作状态进行相应调整。对于功能如此强大的注册表,黑客经常会用来种植木马、删除系统文件以及改变硬件的工作状态。
在“注册表编辑器”窗口中,可以对注册表文件进行删除、修改等操作。注册表包含HKEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_USERS以及HKEY_CURRENT_CONFIG等5个注册表根项,其名称和作用如表1-1所示。
表1-1 注册表根项名称和作用
虽然在注册表中5个根项看上去处于一种并列地位,彼此毫无关系。但事实上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG中存放的信息,都是HKEY_LOCAL_MACH INE中存放的信息的一部分;而HKEY_CURRENT_USER中存放的信息,只是HKEY_USERS中存放的信息的一部分。HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。Windows当前定义和使用的数据类型如表1-2所示。
表1-2 当前定义和使用的数据类型