协议欺骗攻击技术常见种类简析及防范
[ 2007-03-25 03:32:42 | 作者: sun ]
IP欺骗攻击
IP欺骗技术就是通过伪造某台主机的IP地址骗取特权从而进行攻击的技术。许多应用程序认为如果数据包能够使其自身沿着路由到达目的地,而且应答包也可以回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的前提。
假设同一网段内有两台主机A、B,另一网段内有主机X。B 授予A某些特权。X 为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机 B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序 列号加1。然而,此时主机A已被主机X利用拒绝服务攻击 “淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据 包的序列号加1。此时主机X 并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。
要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击:
·抛弃基于地址的信任策略: 阻止这类攻击的一种非常容易的办法就是放弃以地址为基础的验证。不允许r类远程调用命令的使用;删除.rhosts 文件;清空/etc/hosts.equiv 文件。这将迫使所有用户使用其它远程通信手段,如telnet、ssh、skey等等。
·使用加密方法: 在包发送到 网络上之前,我们可以对它进行加密。虽然加密过程要求适当改变目前的网络环境,但它将保证数据的完整性和真实性。
·进行包过滤:可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求。而且,当包的IP地址不在本网内时,路由器不应该把本网主机的包发送出去。
有一点要注意,路由器虽然可以封锁试图到达内部网络的特定类型的包。但它们也是通过分析测试源地址来实现操作的。因此,它们仅能对声称是来自于内部网络的外来包进行过滤,若你的网络存在外部可信任主机,那么路由器将无法防止别人冒充这些主机进行IP欺骗。
ARP欺骗攻击
在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)。ARP协议对网络安全具有重要的意义,但是当初ARP方式的设计没有考虑到过多的安全问题,给ARP留下很多的隐患,ARP欺骗就是其中一个例子。而ARP欺骗攻击就是利用该协议漏洞,通过伪造IP地址和MAC地址实现ARP欺骗的攻击技术。
我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。
以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:
B----->A----->C
B<----A<------C
于是A就成功于截获到了它B发给C的数据。上面这就是一个简单的ARP欺骗的例子。
ARP欺骗攻击有两种可能,一种是对路由器ARP表的欺骗;另一种是对内网电脑ARP表的欺骗,当然也可能两种攻击同时进行。但不管怎么样,欺骗发送后,电脑和路由器之间发送的数据可能就被送到错误的MAC地址上。
防范ARP欺骗攻击可以采取如下措施:
·在客户端使用arp命令绑定网关的真实MAC地址命令
·在交换机上做端口与MAC地址的静态绑定。
·在路由器上做IP地址与MAC地址的静态绑定
·使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表。
DNS欺骗攻击
DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过以下几种方法进行DNS欺骗。
(1)缓存感染
黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。
(2)DNS信息劫持
入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。
(3)DNS重定向
攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。
防范DNS欺骗攻击可采取如下措施
·直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击。但这需要你记住要访问的IP地址。
·加密所有对外的数据流,对服务器来说就是尽量使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。这也并不是怎么容易的事情。
源路由欺骗攻击
通过指定路由,以假冒身份与其他主机进行合法通信或发送假报文,使受攻击主机出现错误动作,这就是源路由攻击。在通常情况下,信息包从起点到终点走过的路径是由位于此两点间的路由器决定的,数据包本身只知道去往何处,但不知道该如何去。源路由可使信息包的发送者将此数据包要经过的路径写在数据包里,使数据包循着一个对方不可预料的路径到达目的主机。下面仍以上述源IP欺骗中的例子给出这种攻击的形式:
主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。
为了防范源路由欺骗攻击,一般采用下面两种措施:
·对付这种攻击最好的办法是配置好路由器,使它抛弃那些由外部网进来的却声称是内部主机的报文。
·在路由器上关闭源路由。用命令no ip source-route。
IP欺骗技术就是通过伪造某台主机的IP地址骗取特权从而进行攻击的技术。许多应用程序认为如果数据包能够使其自身沿着路由到达目的地,而且应答包也可以回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的前提。
假设同一网段内有两台主机A、B,另一网段内有主机X。B 授予A某些特权。X 为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机 B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序 列号加1。然而,此时主机A已被主机X利用拒绝服务攻击 “淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据 包的序列号加1。此时主机X 并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。
要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击:
·抛弃基于地址的信任策略: 阻止这类攻击的一种非常容易的办法就是放弃以地址为基础的验证。不允许r类远程调用命令的使用;删除.rhosts 文件;清空/etc/hosts.equiv 文件。这将迫使所有用户使用其它远程通信手段,如telnet、ssh、skey等等。
·使用加密方法: 在包发送到 网络上之前,我们可以对它进行加密。虽然加密过程要求适当改变目前的网络环境,但它将保证数据的完整性和真实性。
·进行包过滤:可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求。而且,当包的IP地址不在本网内时,路由器不应该把本网主机的包发送出去。
有一点要注意,路由器虽然可以封锁试图到达内部网络的特定类型的包。但它们也是通过分析测试源地址来实现操作的。因此,它们仅能对声称是来自于内部网络的外来包进行过滤,若你的网络存在外部可信任主机,那么路由器将无法防止别人冒充这些主机进行IP欺骗。
ARP欺骗攻击
在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)。ARP协议对网络安全具有重要的意义,但是当初ARP方式的设计没有考虑到过多的安全问题,给ARP留下很多的隐患,ARP欺骗就是其中一个例子。而ARP欺骗攻击就是利用该协议漏洞,通过伪造IP地址和MAC地址实现ARP欺骗的攻击技术。
我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。
以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:
B----->A----->C
B<----A<------C
于是A就成功于截获到了它B发给C的数据。上面这就是一个简单的ARP欺骗的例子。
ARP欺骗攻击有两种可能,一种是对路由器ARP表的欺骗;另一种是对内网电脑ARP表的欺骗,当然也可能两种攻击同时进行。但不管怎么样,欺骗发送后,电脑和路由器之间发送的数据可能就被送到错误的MAC地址上。
防范ARP欺骗攻击可以采取如下措施:
·在客户端使用arp命令绑定网关的真实MAC地址命令
·在交换机上做端口与MAC地址的静态绑定。
·在路由器上做IP地址与MAC地址的静态绑定
·使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表。
DNS欺骗攻击
DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过以下几种方法进行DNS欺骗。
(1)缓存感染
黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。
(2)DNS信息劫持
入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。
(3)DNS重定向
攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。
防范DNS欺骗攻击可采取如下措施
·直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击。但这需要你记住要访问的IP地址。
·加密所有对外的数据流,对服务器来说就是尽量使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。这也并不是怎么容易的事情。
源路由欺骗攻击
通过指定路由,以假冒身份与其他主机进行合法通信或发送假报文,使受攻击主机出现错误动作,这就是源路由攻击。在通常情况下,信息包从起点到终点走过的路径是由位于此两点间的路由器决定的,数据包本身只知道去往何处,但不知道该如何去。源路由可使信息包的发送者将此数据包要经过的路径写在数据包里,使数据包循着一个对方不可预料的路径到达目的主机。下面仍以上述源IP欺骗中的例子给出这种攻击的形式:
主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。
为了防范源路由欺骗攻击,一般采用下面两种措施:
·对付这种攻击最好的办法是配置好路由器,使它抛弃那些由外部网进来的却声称是内部主机的报文。
·在路由器上关闭源路由。用命令no ip source-route。
一、基础知识
在介绍木马的原理之前有一些木马构成的基础知识我们要事先加以说明,因为下面有很多地方会提到这些内容。
一个完整的木马系统由硬件部分、软件部分和具体连接部分组成。
1.硬件部分
建立木马连接所必须的硬件实体。
控制端:对服务端进行远程控制的一方。
服务端:被控制端远程控制的一方。
INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。
2.软件部分
实现远程控制所必须的软件程序。
控制端程序:控制端用以远程控制服务端的程序。
木马程序:潜入服务端内部,获取其操作权限的程序。
木马配置程序:设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏得更隐蔽的程序。
3.具体连接部分
通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。
控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。
控制端端口,木马端口:即控制端,服务端的数据入口,通过这个入口,数据可直达控制端程序或木马程序。
二、特洛伊木马的攻击步骤
用木马这种黑客工具进行网络入侵,从过程上看大致可分为六步,下面我们就按这六步来详细阐述木马的攻击原理。
1. 配置木马
一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现以下两方面功能:
(1)木马伪装:木马配置程序为了在服务端尽可能好的隐藏木马,会采用多种伪装手段,如修改图标、捆绑文件、定制端口、自我销毁等等。
(2)信息反馈:木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址、IRC号、ICQ号等。
2. 传播木马
(1)传播方式
木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出去,收信人只要打开附件系统就会感染木马;另一种是软件下载,一些非正规的网站以提供软件下载为名义,将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装。
(2)伪装方式
鉴于木马的危害性,很多人对木马知识还是有一定了解的,这对木马的传播起了一定的抑制作用,这是木马设计者所不愿见到的。因此他们开发了多种功能来伪装木马,以达到降低用户警觉,欺骗用户的目的。一般来说有以下几种:
◆修改图标
也许你会在E-MAIL的附件中看到一个很平常的文本图标,但是我不得不告诉你,这也有可能是个木马程序,现在已经有木马可以将木马服务端程序的图标改成HTML、TXT、ZIP等各种文件的图标,这有相当大的迷惑性,但是目前提供这种功能的木马还不多见,并且这种伪装也不是无懈可击的,所以不必整天提心吊胆、疑神疑鬼的。
◆捆绑文件
这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的情况下,偷偷的进入了系统。至于被捆绑的文件一般是可执行文件,即EXE、COM一类的文件。
◆出错显示
有一定木马知识的人都知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序,木马的设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。当服务端用户打开木马程序时,会弹出一个错误提示框——这当然是假的,错误内容可自由定义,大多会定制成一些诸如“文件已破坏,无法打开的!”之类的信息,当服务端用户信以为真时,木马却悄悄侵入了系统。
◆定制端口
很多老式的木马端口都是固定的,这给判断是否感染了木马带来了方便,只要查一下特定的端口就知道感染了什么木马,所以现在很多新式的木马都加入了定制端口的功能,控制端用户可以在1024——65535之间任选一个端口作为木马端口。一般不选1024以下的端口,这样就给判断所感染木马类型带来了麻烦。
◆自我销毁
这项功能是为了弥补木马的一个缺陷。我们知道当服务端用户打开含有木马的文件后,木马会将自己拷贝到WINDOWS的系统文件的C:\WINDOWS或C:\WINDOWS\SYSTEM目录下,一般来说原木马文件和系统文件夹中的木马文件的大小是一样的,捆绑文件的木马除外。那么中了木马的朋友只要在近来收到的信件和下载的软件中找到原木马文件,然后根据原木马的大小去系统文件夹找相同大小的文件, 判断一下哪个是木马就行了。而木马的自我销毁功能是指安装完木马后,原木马文件将自动销毁,这样服务端用户就很难找到木马的来源,在没有查杀木马的工具帮助下,就很难删除木马了。
◆木马更名
安装到系统文件夹中的木马的文件名一般是固定的,那么只要根据一些查杀木马的文章,按图索骥在系统文件夹查找特定的文件,就可以断定中了什么木马。所以现在有很多木马都允许控 制端用户自由定制安装后的木马文件名,这样很难判断所感染的木马类型了。
3.运行木马
服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。首先将自身拷贝到WINDOWS的系统文件夹中C:\WINDOWS或C:\WINDOWS\SYSTEM目录下。然后在注册表、启动组、非启动组中设置好木马的触发条件,这样木马的安装就完成了。安装后就可以启动木马了。
由触发条件激活木马
触发条件是指启动木马的条件,大致出现在下面八个地方:
◆注册表
打开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\下的五个以Run和RunServices主键,在其中寻找可能是启动木马的键值。
◆WIN.INI
C:\WINDOWS目录下有一个配置文件win.ini,用文本方式打开,在windows字段中有启动命令load=和run=,在一般情况下是空白的,如果有启动程序,可能是木马。
◆SYSTEM.INI
C:\WINDOWS目录下有个配置文件system.ini,用文本方式打开,在386Enh、mic、drivers32中有命令行,在其中寻找木马的启动命令。
◆Autoexec.bat和Config.sys
在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行。
◆*.INI
即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。
◆注册表
打开HKEY_CLASSES_ROOT\文件类型\shell\open\command主键,查看其键值。举个例子,国产木马“冰河”就是修改HKEY_CLASSES_ROOT\txtfile\shell\open\command下的键值,将“C:\WINDOWS \NOTEPAD.EXE %1”改为“C:\WINDOWS\SYSTEM\SYSEXPLR.EXE %1”,这时你双击一个TXT文件后,原本应用NOTEPAD打开文件的,现在却变成启动木马程序了。还要说明的是不光是TXT文件,通过修改HTML、EXE、ZIP等文件的启动命令的键值都可以启动木马,不同之处只在于“文件类型”这个主键的差别,TXT是txtfile,ZIP是WINZIP,大家可以试着去找一下。
◆捆绑文件
实现这种触发条件首先要控制端和服务端通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。
◆启动菜单
在“开始—程序—启动”选项下也可能有木马的触发条件。
在介绍木马的原理之前有一些木马构成的基础知识我们要事先加以说明,因为下面有很多地方会提到这些内容。
一个完整的木马系统由硬件部分、软件部分和具体连接部分组成。
1.硬件部分
建立木马连接所必须的硬件实体。
控制端:对服务端进行远程控制的一方。
服务端:被控制端远程控制的一方。
INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。
2.软件部分
实现远程控制所必须的软件程序。
控制端程序:控制端用以远程控制服务端的程序。
木马程序:潜入服务端内部,获取其操作权限的程序。
木马配置程序:设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏得更隐蔽的程序。
3.具体连接部分
通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。
控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。
控制端端口,木马端口:即控制端,服务端的数据入口,通过这个入口,数据可直达控制端程序或木马程序。
二、特洛伊木马的攻击步骤
用木马这种黑客工具进行网络入侵,从过程上看大致可分为六步,下面我们就按这六步来详细阐述木马的攻击原理。
1. 配置木马
一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现以下两方面功能:
(1)木马伪装:木马配置程序为了在服务端尽可能好的隐藏木马,会采用多种伪装手段,如修改图标、捆绑文件、定制端口、自我销毁等等。
(2)信息反馈:木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址、IRC号、ICQ号等。
2. 传播木马
(1)传播方式
木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出去,收信人只要打开附件系统就会感染木马;另一种是软件下载,一些非正规的网站以提供软件下载为名义,将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装。
(2)伪装方式
鉴于木马的危害性,很多人对木马知识还是有一定了解的,这对木马的传播起了一定的抑制作用,这是木马设计者所不愿见到的。因此他们开发了多种功能来伪装木马,以达到降低用户警觉,欺骗用户的目的。一般来说有以下几种:
◆修改图标
也许你会在E-MAIL的附件中看到一个很平常的文本图标,但是我不得不告诉你,这也有可能是个木马程序,现在已经有木马可以将木马服务端程序的图标改成HTML、TXT、ZIP等各种文件的图标,这有相当大的迷惑性,但是目前提供这种功能的木马还不多见,并且这种伪装也不是无懈可击的,所以不必整天提心吊胆、疑神疑鬼的。
◆捆绑文件
这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的情况下,偷偷的进入了系统。至于被捆绑的文件一般是可执行文件,即EXE、COM一类的文件。
◆出错显示
有一定木马知识的人都知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序,木马的设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。当服务端用户打开木马程序时,会弹出一个错误提示框——这当然是假的,错误内容可自由定义,大多会定制成一些诸如“文件已破坏,无法打开的!”之类的信息,当服务端用户信以为真时,木马却悄悄侵入了系统。
◆定制端口
很多老式的木马端口都是固定的,这给判断是否感染了木马带来了方便,只要查一下特定的端口就知道感染了什么木马,所以现在很多新式的木马都加入了定制端口的功能,控制端用户可以在1024——65535之间任选一个端口作为木马端口。一般不选1024以下的端口,这样就给判断所感染木马类型带来了麻烦。
◆自我销毁
这项功能是为了弥补木马的一个缺陷。我们知道当服务端用户打开含有木马的文件后,木马会将自己拷贝到WINDOWS的系统文件的C:\WINDOWS或C:\WINDOWS\SYSTEM目录下,一般来说原木马文件和系统文件夹中的木马文件的大小是一样的,捆绑文件的木马除外。那么中了木马的朋友只要在近来收到的信件和下载的软件中找到原木马文件,然后根据原木马的大小去系统文件夹找相同大小的文件, 判断一下哪个是木马就行了。而木马的自我销毁功能是指安装完木马后,原木马文件将自动销毁,这样服务端用户就很难找到木马的来源,在没有查杀木马的工具帮助下,就很难删除木马了。
◆木马更名
安装到系统文件夹中的木马的文件名一般是固定的,那么只要根据一些查杀木马的文章,按图索骥在系统文件夹查找特定的文件,就可以断定中了什么木马。所以现在有很多木马都允许控 制端用户自由定制安装后的木马文件名,这样很难判断所感染的木马类型了。
3.运行木马
服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。首先将自身拷贝到WINDOWS的系统文件夹中C:\WINDOWS或C:\WINDOWS\SYSTEM目录下。然后在注册表、启动组、非启动组中设置好木马的触发条件,这样木马的安装就完成了。安装后就可以启动木马了。
由触发条件激活木马
触发条件是指启动木马的条件,大致出现在下面八个地方:
◆注册表
打开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\下的五个以Run和RunServices主键,在其中寻找可能是启动木马的键值。
◆WIN.INI
C:\WINDOWS目录下有一个配置文件win.ini,用文本方式打开,在windows字段中有启动命令load=和run=,在一般情况下是空白的,如果有启动程序,可能是木马。
◆SYSTEM.INI
C:\WINDOWS目录下有个配置文件system.ini,用文本方式打开,在386Enh、mic、drivers32中有命令行,在其中寻找木马的启动命令。
◆Autoexec.bat和Config.sys
在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行。
◆*.INI
即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。
◆注册表
打开HKEY_CLASSES_ROOT\文件类型\shell\open\command主键,查看其键值。举个例子,国产木马“冰河”就是修改HKEY_CLASSES_ROOT\txtfile\shell\open\command下的键值,将“C:\WINDOWS \NOTEPAD.EXE %1”改为“C:\WINDOWS\SYSTEM\SYSEXPLR.EXE %1”,这时你双击一个TXT文件后,原本应用NOTEPAD打开文件的,现在却变成启动木马程序了。还要说明的是不光是TXT文件,通过修改HTML、EXE、ZIP等文件的启动命令的键值都可以启动木马,不同之处只在于“文件类型”这个主键的差别,TXT是txtfile,ZIP是WINZIP,大家可以试着去找一下。
◆捆绑文件
实现这种触发条件首先要控制端和服务端通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。
◆启动菜单
在“开始—程序—启动”选项下也可能有木马的触发条件。
口令攻击的主要方式及相关防护手段
[ 2007-03-25 03:32:16 | 作者: sun ]
口令是网络系统的第一道防线。当前的网络系统都是通过口令来验证用户身份、实施访问控制的。口令攻击是指黑客以口令为攻击目标,破解合法用户的口令,或避开口令验证过程,然后冒充合法用户潜入目标网络系统,夺取目标系统控制权的过程。
如果口令攻击成功黑客进入了目标网络系统,他就能够随心所欲地窃取、破坏和篡改被侵入方的信息,直至完全控制被侵入方。所以,口令攻击是黑客实施网络攻击的最基本、最重要、最有效的方法之一。
口令攻击的主要方法
1、社会工程学(social Engineering),通过人际交往这一非技术手段以欺骗、套取的方式来获得口令。避免此类攻击的对策是加强用户意识。
2、猜测攻击。首先使用口令猜测程序进行攻击。口令猜测程序往往根据用户定义口令的习惯猜测用户口令,像名字缩写、生日、宠物名、部门名等。在详细了解用户的社会背景之后,黑客可以列举出几百种可能的口令,并在很短的时间内就可以完成猜测攻击。
3、字典攻击。如果猜测攻击不成功,入侵者会继续扩大攻击范围,对所有英文单词进行尝试,程序将按序取出一个又一个的单词,进行一次又一次尝试,直到成功。据有的传媒报导,对于一个有8万个英文单词的集合来说,入侵者不到一分半钟就可试完。所以,如果用户的口令不太长或是单词、短语,那么很快就会被破译出来。
4、穷举攻击。如果字典攻击仍然不能够成功,入侵者会采取穷举攻击。一般从长度为1的口令开始,按长度递增进行尝试攻击。由于人们往往偏爱简单易记的口令,穷举攻击的成功率很高。如果每千分之一秒检查一个口令,那么86%的口令可以在一周内破译出来。
5、混合攻击,结合了字典攻击和穷举攻击,先字典攻击,再暴力攻击。
避免以上四类攻击的对策是加强口令策略。
6、直接破解系统口令文件。所有的攻击都不能够奏效,入侵者会寻找目标主机的安全漏洞和薄弱环节,饲机偷走存放系统口令的文件,然后破译加密的口令,以便冒充合法用户访问这台主机。
7:网络嗅探(sniffer),通过嗅探器在局域网内嗅探明文传输的口令字符串。避免此类攻击的对策是网络传输采用加密传输的方式进行。
8:键盘记录,在目标系统中安装键盘记录后门,记录操作员输入的口令字符串,如很多间谍软件,木马等都可能会盗取你的口述。
9:其他攻击方式,中间人攻击、重放攻击、生日攻击、时间攻击。
避免以上几类攻击的对策是加强用户安全意识,采用安全的密码系统,注意系统安全,避免感染间谍软件、木马等恶意程序。
口令攻击的防护手段
要有效防范口令攻击,我们要选择一个好口令,并且要注意保护口令的安全。
1、好口令是防范口令攻击的最基本、最有效的方法。最好采用字母、数字、还有标点符号、特殊字符的组合,同时有大小写字母,长度最好达到8个以上,最好容易记忆,不必把口令写下来,绝对不要用自己或亲友的生日、手机号码等易于被他人获知的信息作密码。
2、注意保护口令安全。不要将口令记在纸上或存储于计算机文件中;最好不要告诉别人你的口令;不要在不同的系统中使用相同的口令;在输入口令时应确保无人在身边窥视;在公共上网场所如网吧等处最好先确认系统是否安全;定期更改口令,至少六个月更改一次,这会使自己遭受口令攻击的风险降到最低,要永远不要对自己的口令过于自信.
如果口令攻击成功黑客进入了目标网络系统,他就能够随心所欲地窃取、破坏和篡改被侵入方的信息,直至完全控制被侵入方。所以,口令攻击是黑客实施网络攻击的最基本、最重要、最有效的方法之一。
口令攻击的主要方法
1、社会工程学(social Engineering),通过人际交往这一非技术手段以欺骗、套取的方式来获得口令。避免此类攻击的对策是加强用户意识。
2、猜测攻击。首先使用口令猜测程序进行攻击。口令猜测程序往往根据用户定义口令的习惯猜测用户口令,像名字缩写、生日、宠物名、部门名等。在详细了解用户的社会背景之后,黑客可以列举出几百种可能的口令,并在很短的时间内就可以完成猜测攻击。
3、字典攻击。如果猜测攻击不成功,入侵者会继续扩大攻击范围,对所有英文单词进行尝试,程序将按序取出一个又一个的单词,进行一次又一次尝试,直到成功。据有的传媒报导,对于一个有8万个英文单词的集合来说,入侵者不到一分半钟就可试完。所以,如果用户的口令不太长或是单词、短语,那么很快就会被破译出来。
4、穷举攻击。如果字典攻击仍然不能够成功,入侵者会采取穷举攻击。一般从长度为1的口令开始,按长度递增进行尝试攻击。由于人们往往偏爱简单易记的口令,穷举攻击的成功率很高。如果每千分之一秒检查一个口令,那么86%的口令可以在一周内破译出来。
5、混合攻击,结合了字典攻击和穷举攻击,先字典攻击,再暴力攻击。
避免以上四类攻击的对策是加强口令策略。
6、直接破解系统口令文件。所有的攻击都不能够奏效,入侵者会寻找目标主机的安全漏洞和薄弱环节,饲机偷走存放系统口令的文件,然后破译加密的口令,以便冒充合法用户访问这台主机。
7:网络嗅探(sniffer),通过嗅探器在局域网内嗅探明文传输的口令字符串。避免此类攻击的对策是网络传输采用加密传输的方式进行。
8:键盘记录,在目标系统中安装键盘记录后门,记录操作员输入的口令字符串,如很多间谍软件,木马等都可能会盗取你的口述。
9:其他攻击方式,中间人攻击、重放攻击、生日攻击、时间攻击。
避免以上几类攻击的对策是加强用户安全意识,采用安全的密码系统,注意系统安全,避免感染间谍软件、木马等恶意程序。
口令攻击的防护手段
要有效防范口令攻击,我们要选择一个好口令,并且要注意保护口令的安全。
1、好口令是防范口令攻击的最基本、最有效的方法。最好采用字母、数字、还有标点符号、特殊字符的组合,同时有大小写字母,长度最好达到8个以上,最好容易记忆,不必把口令写下来,绝对不要用自己或亲友的生日、手机号码等易于被他人获知的信息作密码。
2、注意保护口令安全。不要将口令记在纸上或存储于计算机文件中;最好不要告诉别人你的口令;不要在不同的系统中使用相同的口令;在输入口令时应确保无人在身边窥视;在公共上网场所如网吧等处最好先确认系统是否安全;定期更改口令,至少六个月更改一次,这会使自己遭受口令攻击的风险降到最低,要永远不要对自己的口令过于自信.
对网络安全技术及其方案对策的分析
[ 2007-03-25 03:32:03 | 作者: sun ]
内部网
目前的局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听,就可以捕获发生在这个以太网上的所有数据包,对其进行解包分析,从而窃取关键信息,这就是以太网所固有的安全隐患。
A.局域网安全
事实上,Internet上许多免费的黑客工具,如SATAN、ISS、NETCAT等等,都把以太网侦听作为其最基本的手段。
当前,局域网安全的解决办法有以下几种:
1.网络分段
网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项重要措施。其目的就是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法侦听,网络分段可分为物理分段和逻辑分段两种方式。
目前,海关的局域网大多采用以交换机为中心、路由器为边界的网络格局,应重点挖掘中心交换机的访问控制功能和三层交换功能,综合应用物理分段与逻辑分段两种方法,来实现对局域网的安全控制。例如:在海关系统中普遍使用的DEC MultiSwitch 900的入侵检测功能,其实就是一种基于MAC地址的访问控制,也就是上述的基于数据链路层的物理分段。
2.以交换式集线器代替共享式集线器
对局域网的中心交换机进行网络分段后,以太网侦听的危险仍然存在。这是因为网络最终用户的接入往往是通过分支集线器而不是中心交换机,而使用最广泛的分支集线器通常是共享式集线器。这样,当用户与主机进行数据通信时,两台机器之间的数据包(称为单播包Unicast Packet)还是会被同一台集线器上的其他用户所侦听。一种很危险的情况是:用户TELNET到一台主机上,由于TELNET程序本身缺乏加密功能,用户所键入的每一个字符(包括用户名、密码等重要信息),都将被明文发送,这就给黑客提供了机会。
因此,应该以交换式集线器代替共享式集线器,使单播包仅在两个节点之间传送,从而防止非法侦听。当然,交换式集线器只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet)。所幸的是,广播包和多播包内的关键信息,要远远少于单播包。
3.VLAN的划分
为了克服以太网的广播问题,除了上述方法外,还可以运用VLAN(虚拟局域网)技术,将以太网通信变为点到点通信,防止大部分基于网络侦听的入侵。
目前的VLAN技术主要有三种:基于交换机端口的VLAN、基于节点MAC地址的VLAN和基于应用协议的VLAN。基于端口的VLAN虽然稍欠灵活,但却比较成熟,在实际应用中效果显著,广受欢迎。基于MAC地址的VLAN为移动计算提供了可能性,但同时也潜藏着遭受MAC欺诈攻击的隐患。而基于协议的VLAN,理论上非常理想,但实际应用却尚不成熟。
在集中式网络环境下,我们通常将中心的所有主机系统集中到一个VLAN里,在这个VLAN里不允许有任何用户节点,从而较好地保护敏感的主机资源。在分布式网络环境下,我们可以按机构或部门的设置来划分VLAN。各部门内部的所有服务器和用户节点都在各自的VLAN内,互不侵扰。
VLAN内部的连接采用交换实现,而VLAN与VLAN之间的连接则采用路由实现。目前,大多数的交换机(包括海关内部普遍采用的DEC MultiSwitch 900)都支持RIP和OSPF这两种国际标准的路由协议。如果有特殊需要,必须使用其他路由协议(如CISCO公司的EIGRP或支持DECnet的IS-IS),也可以用外接的多以太网口路由器来代替交换机,实现VLAN之间的路由功能。当然,这种情况下,路由转发的效率会有所下降。
无论是交换式集线器还是VLAN交换机,都是以交换技术为核心,它们在控制广播、防止黑客上相当有效,但同时也给一些基于广播原理的入侵监控技术和协议分析技术带来了麻烦。因此,如果局域网内存在这样的入侵监控设备或协议分析设备,就必须选用特殊的带有SPAN(Switch Port Analyzer)功能的交换机。这种交换机允许系统管理员将全部或某些交换端口的数据包映射到指定的端口上,提供给接在这一端口上的入侵监控设备或协议分析设备。笔者在厦门海关外部网设计中,就选用了Cisco公司的具备SPAN功能的Catalyst系列交换机,既得到了交换技术的好处,又使原有的Sniffer协议分析仪“英雄有用武之地”。
广域网
B.广域网安全
由于广域网大多采用公网来进行数据传输,信息在广域网上传输时被截取和利用的可能性就比局域网要大得多。如果没有专用的软件对数据进行控制,只要使用Internet上免费下载的“包检测”工具软件,就可以很容易地对通信数据进行截取和破译。
因此,必须采取手段,使得在广域网上发送和接收信息时能够保证:
①除了发送方和接收方外,其他人是无法知悉的(隐私性);
②传输过程中不被篡改(真实性);
③发送方能确知接收方不是假冒的(非伪装性);
④发送方不能否认自己的发送行为(不可抵赖性)。
为了达到以上安全目的,广域网通常采用以下安全解决办法:
1.加密技术
加密型网络安全技术的基本思想是不依赖于网络中数据通道的安全性来实现网络系统的安全,而是通过对网络数据的加密来保障网络的安全可靠性。数据加密技术可以分为三类,即对称型加密、不对称型加密和不可逆加密。
其中不可逆加密算法不存在密钥保管和分发问题,适用于分布式网络系统,但是其加密计算量相当可观,所以通常用于数据量有限的情形下使用。计算机系统中的口令就是利用不可逆加密算法加密的。近年来,随着计算机系统性能的不断提高,不可逆加密算法的应用逐渐增加,常用的如RSA公司的MD5和美国国家标准局的SHS。在海关系统中广泛使用的Cisco路由器,有两种口令加密方式:Enable Secret和Enable Password。其中,Enable Secret就采用了MD5不可逆加密算法,因而目前尚未发现破解方法(除非使用字典攻击法)。而Enable Password则采用了非常脆弱的加密算法(即简单地将口令与一个常数进行XOR与或运算),目前至少已有两种破解软件。因此,最好不用Enable Password。
2.VPN技术
VPN(虚拟专网)技术的核心是采用隧道技术,将企业专网的数据加密封装后,透过虚拟的公网隧道进行传输,从而防止敏感数据的被窃。VPN可以在Internet、服务提供商的IP、帧中继或ATM网上建立。企业通过公网建立VPN,就如同通过自己的专用网建立内部网一样,享有较高的安全性、优先性、可靠性和可管理性,而其建立周期、投入资金和维护费用却大大降低,同时还为移动计算提供了可能。因此,VPN技术一经推出,便红遍全球。
但应该指出的是,目前VPN技术的许多核心协议,如L2TP、IPSec等,都还未形成通用标准。这就使得不同的VPN服务提供商之间、VPN设备之间的互操作性成为问题。因此,企业在VPN建网选型时,一定要慎重选择VPN服务提供商和VPN设备。
3.身份认证技术
对于从外部拨号访问总部内部网的用户,由于使用公共电话网进行数据传输所带来的风险,必须更加严格控制其安全性。一种常见的做法是采用身份认证技术,对拨号用户的身份进行验证并记录完备的登录日志。较常用的身份认证技术,有Cisco公司提出的TACACS+以及业界标准的RADIUS。笔者在厦门海关外部网设计中,就选用了Cisco公司的CiscoSecure ACS V2.3软件进行RADIUS身份认证。
外部网
C.外部网安全
海关的外部网建设,通常指与Internet的互联及与外部企业用户的互联两种。无论哪一种外部网,都普遍采用基于TCP/IP的Internet协议族。Internet协议族自身的开放性极大地方便了各种计算机的组网和互联,并直接推动了网络技术的迅猛发展。但是,由于在早期网络协议设计上对安全问题的忽视,以及Internet在使用和管理上的无政府状态,逐渐使Internet自身的安全受到威胁,黑客事件频频发生。
对外部网安全的威胁主要表现在:非授权访问、冒充合法用户、破坏数据完整性、干扰系统正常运行、利用网络传播病毒、线路窃听等。
外部网安全解决办法主要依靠防火墙技术、入侵检测技术和网络防病毒技术。在实际的外部网安全设计中,往往采取上述三种技术(即防火墙、入侵检测、网络防病毒)相结合的方法。笔者在厦门海关外部网设计中,就选用了NAI公司最新版本的三宿主自适应动态防火墙Gauntlet Active Firewall。该防火墙产品集成了Gauntlet Firewall、CyberCop Scanner、CyberCop Monitor、WebShield for Firewall等套件,将防火墙技术、入侵检测技术与网络防病毒技术融为一体,紧密结合,相得益彰,性价比比较高。
目前的局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听,就可以捕获发生在这个以太网上的所有数据包,对其进行解包分析,从而窃取关键信息,这就是以太网所固有的安全隐患。
A.局域网安全
事实上,Internet上许多免费的黑客工具,如SATAN、ISS、NETCAT等等,都把以太网侦听作为其最基本的手段。
当前,局域网安全的解决办法有以下几种:
1.网络分段
网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项重要措施。其目的就是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法侦听,网络分段可分为物理分段和逻辑分段两种方式。
目前,海关的局域网大多采用以交换机为中心、路由器为边界的网络格局,应重点挖掘中心交换机的访问控制功能和三层交换功能,综合应用物理分段与逻辑分段两种方法,来实现对局域网的安全控制。例如:在海关系统中普遍使用的DEC MultiSwitch 900的入侵检测功能,其实就是一种基于MAC地址的访问控制,也就是上述的基于数据链路层的物理分段。
2.以交换式集线器代替共享式集线器
对局域网的中心交换机进行网络分段后,以太网侦听的危险仍然存在。这是因为网络最终用户的接入往往是通过分支集线器而不是中心交换机,而使用最广泛的分支集线器通常是共享式集线器。这样,当用户与主机进行数据通信时,两台机器之间的数据包(称为单播包Unicast Packet)还是会被同一台集线器上的其他用户所侦听。一种很危险的情况是:用户TELNET到一台主机上,由于TELNET程序本身缺乏加密功能,用户所键入的每一个字符(包括用户名、密码等重要信息),都将被明文发送,这就给黑客提供了机会。
因此,应该以交换式集线器代替共享式集线器,使单播包仅在两个节点之间传送,从而防止非法侦听。当然,交换式集线器只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet)。所幸的是,广播包和多播包内的关键信息,要远远少于单播包。
3.VLAN的划分
为了克服以太网的广播问题,除了上述方法外,还可以运用VLAN(虚拟局域网)技术,将以太网通信变为点到点通信,防止大部分基于网络侦听的入侵。
目前的VLAN技术主要有三种:基于交换机端口的VLAN、基于节点MAC地址的VLAN和基于应用协议的VLAN。基于端口的VLAN虽然稍欠灵活,但却比较成熟,在实际应用中效果显著,广受欢迎。基于MAC地址的VLAN为移动计算提供了可能性,但同时也潜藏着遭受MAC欺诈攻击的隐患。而基于协议的VLAN,理论上非常理想,但实际应用却尚不成熟。
在集中式网络环境下,我们通常将中心的所有主机系统集中到一个VLAN里,在这个VLAN里不允许有任何用户节点,从而较好地保护敏感的主机资源。在分布式网络环境下,我们可以按机构或部门的设置来划分VLAN。各部门内部的所有服务器和用户节点都在各自的VLAN内,互不侵扰。
VLAN内部的连接采用交换实现,而VLAN与VLAN之间的连接则采用路由实现。目前,大多数的交换机(包括海关内部普遍采用的DEC MultiSwitch 900)都支持RIP和OSPF这两种国际标准的路由协议。如果有特殊需要,必须使用其他路由协议(如CISCO公司的EIGRP或支持DECnet的IS-IS),也可以用外接的多以太网口路由器来代替交换机,实现VLAN之间的路由功能。当然,这种情况下,路由转发的效率会有所下降。
无论是交换式集线器还是VLAN交换机,都是以交换技术为核心,它们在控制广播、防止黑客上相当有效,但同时也给一些基于广播原理的入侵监控技术和协议分析技术带来了麻烦。因此,如果局域网内存在这样的入侵监控设备或协议分析设备,就必须选用特殊的带有SPAN(Switch Port Analyzer)功能的交换机。这种交换机允许系统管理员将全部或某些交换端口的数据包映射到指定的端口上,提供给接在这一端口上的入侵监控设备或协议分析设备。笔者在厦门海关外部网设计中,就选用了Cisco公司的具备SPAN功能的Catalyst系列交换机,既得到了交换技术的好处,又使原有的Sniffer协议分析仪“英雄有用武之地”。
广域网
B.广域网安全
由于广域网大多采用公网来进行数据传输,信息在广域网上传输时被截取和利用的可能性就比局域网要大得多。如果没有专用的软件对数据进行控制,只要使用Internet上免费下载的“包检测”工具软件,就可以很容易地对通信数据进行截取和破译。
因此,必须采取手段,使得在广域网上发送和接收信息时能够保证:
①除了发送方和接收方外,其他人是无法知悉的(隐私性);
②传输过程中不被篡改(真实性);
③发送方能确知接收方不是假冒的(非伪装性);
④发送方不能否认自己的发送行为(不可抵赖性)。
为了达到以上安全目的,广域网通常采用以下安全解决办法:
1.加密技术
加密型网络安全技术的基本思想是不依赖于网络中数据通道的安全性来实现网络系统的安全,而是通过对网络数据的加密来保障网络的安全可靠性。数据加密技术可以分为三类,即对称型加密、不对称型加密和不可逆加密。
其中不可逆加密算法不存在密钥保管和分发问题,适用于分布式网络系统,但是其加密计算量相当可观,所以通常用于数据量有限的情形下使用。计算机系统中的口令就是利用不可逆加密算法加密的。近年来,随着计算机系统性能的不断提高,不可逆加密算法的应用逐渐增加,常用的如RSA公司的MD5和美国国家标准局的SHS。在海关系统中广泛使用的Cisco路由器,有两种口令加密方式:Enable Secret和Enable Password。其中,Enable Secret就采用了MD5不可逆加密算法,因而目前尚未发现破解方法(除非使用字典攻击法)。而Enable Password则采用了非常脆弱的加密算法(即简单地将口令与一个常数进行XOR与或运算),目前至少已有两种破解软件。因此,最好不用Enable Password。
2.VPN技术
VPN(虚拟专网)技术的核心是采用隧道技术,将企业专网的数据加密封装后,透过虚拟的公网隧道进行传输,从而防止敏感数据的被窃。VPN可以在Internet、服务提供商的IP、帧中继或ATM网上建立。企业通过公网建立VPN,就如同通过自己的专用网建立内部网一样,享有较高的安全性、优先性、可靠性和可管理性,而其建立周期、投入资金和维护费用却大大降低,同时还为移动计算提供了可能。因此,VPN技术一经推出,便红遍全球。
但应该指出的是,目前VPN技术的许多核心协议,如L2TP、IPSec等,都还未形成通用标准。这就使得不同的VPN服务提供商之间、VPN设备之间的互操作性成为问题。因此,企业在VPN建网选型时,一定要慎重选择VPN服务提供商和VPN设备。
3.身份认证技术
对于从外部拨号访问总部内部网的用户,由于使用公共电话网进行数据传输所带来的风险,必须更加严格控制其安全性。一种常见的做法是采用身份认证技术,对拨号用户的身份进行验证并记录完备的登录日志。较常用的身份认证技术,有Cisco公司提出的TACACS+以及业界标准的RADIUS。笔者在厦门海关外部网设计中,就选用了Cisco公司的CiscoSecure ACS V2.3软件进行RADIUS身份认证。
外部网
C.外部网安全
海关的外部网建设,通常指与Internet的互联及与外部企业用户的互联两种。无论哪一种外部网,都普遍采用基于TCP/IP的Internet协议族。Internet协议族自身的开放性极大地方便了各种计算机的组网和互联,并直接推动了网络技术的迅猛发展。但是,由于在早期网络协议设计上对安全问题的忽视,以及Internet在使用和管理上的无政府状态,逐渐使Internet自身的安全受到威胁,黑客事件频频发生。
对外部网安全的威胁主要表现在:非授权访问、冒充合法用户、破坏数据完整性、干扰系统正常运行、利用网络传播病毒、线路窃听等。
外部网安全解决办法主要依靠防火墙技术、入侵检测技术和网络防病毒技术。在实际的外部网安全设计中,往往采取上述三种技术(即防火墙、入侵检测、网络防病毒)相结合的方法。笔者在厦门海关外部网设计中,就选用了NAI公司最新版本的三宿主自适应动态防火墙Gauntlet Active Firewall。该防火墙产品集成了Gauntlet Firewall、CyberCop Scanner、CyberCop Monitor、WebShield for Firewall等套件,将防火墙技术、入侵检测技术与网络防病毒技术融为一体,紧密结合,相得益彰,性价比比较高。
普通用户选用防火墙面面通
[ 2007-03-25 03:31:50 | 作者: sun ]
什么是防火墙?通常应用防火墙的目的有以下几方面:限制他人进入内部网络;过滤掉不安全的服务和非法用户;防止入侵者接近你的防御设施;限定人们访问特殊站点;为监视局域网安全提供方便。
个人防火墙一般具有以下功能:
1、数据包过滤
过滤技术(Ip Filtering or packet filtering) 的原理在于监视并过滤网络上流入流出的Ip包,拒绝发送可疑的包。
在互联网这样的信息包交换网络上,所有往来的信息都被分割成许许多多一定长度的信息包,包头信息中包括IP源地址、IP目标地址、内装协议(ICP、UDP、ICMP、或IP Tunnel)、TCP/UDP目标端口、ICMP消息类型、包的进入接口和出接口。当这些包被送上互联网时,防火墙会读取接收者的IP并选择一条物理上的线路发送出去,信息包可能以不同的路线抵达目的地,当所有的包抵达后会在目的地重新组装还原。包过滤式的防火墙会检查所有通过信息包里的IP地址,并按照系统管理员所给定的过滤规则过滤信息包。如果防火墙设定某一IP为危险的话,从这个地址而来的所有信息都会被防火墙屏蔽掉。
2、防火墙的安全规则
安全规则就是对你计算机所使用局域网、互联网的内制协议设置,从而达到系统的最佳安全状态。
个人防火墙软件中的安全规则方式可分为两种:
一种是定义好的安全规则
就是把安全规则定义成几种方案,一般分为低、中、高三种。这样不懂网络协议的用户,就可以根据自己的需要灵活的设置不同的安全方案。例如:ZoneAlarm防火墙.
还有一种用户可以自定义安全规则
也就是说,在你非常了解网络协议的情况下,你就可以根据自已所需的安全状态,单独设置某个协议。
3、事件日记
这是每个防火墙软件所不能少的主要的功能。记录着防火墙软件监听到发生的一切事件,比如入侵者的来源、协议、端口、时间等等。记录的事件是由防火墙的功能来决定的。
那么那一种防火墙最好呢?这是网友经常询问的问题。
我个人认为选用防火墙,不一定非要用最好的,因为个人防火墙主要是针对个人用户的实用性来制作的,除了以上几种功能外,还集成一些工具,比如说追踪主机名或IP地址、检测特洛伊木马、伪装等等。根据自己不同的需要来选用,在不断地学习中淘汰一些简单的防火墙。本人把用户大概分成五种:
1、不了解网络协议的用户,只是为了游览网页。你可以使用傻瓜式防火墙。例如:Intrusion Detector、Intruder Alert' 99
2、如果你上网是为了聊天或者经常受到攻击的用户,那么你就可以选用:ProtectX、LockDown2000两个防火墙,它们都有追踪IP的功能。如果你受到攻击,立即可以追踪。
3、经常遭遇到扫描的用户,使用Internet Firewall 2000、AnalogX、NetAlert。这两个防火墙可以封锁或监视你的对外开放端口。
4、在局域网环境中上网的用户,那么防火墙必须支持NETBIOS设置功能。例如:AtGuard、Zone Alarm、conseal pc firewall、天网防火墙、BlackICE。
5、自己对网络协议运用自如的用户。Norton Internet Security 2000 V2.0 Personal Firewall与AtGuard防火墙都有非常详细的自定义网络协议。
这里说明一下,上面所说的五种用户分类,不是必须按照这样的分类使用的,只不过它们有那种分类的功能特点。比如说,Zone Alarm、天网防火墙,这两个防火墙也对普通用户提供了安全规则方案,不了解网络协议的用户也可以运用自如。
个人防火墙一般具有以下功能:
1、数据包过滤
过滤技术(Ip Filtering or packet filtering) 的原理在于监视并过滤网络上流入流出的Ip包,拒绝发送可疑的包。
在互联网这样的信息包交换网络上,所有往来的信息都被分割成许许多多一定长度的信息包,包头信息中包括IP源地址、IP目标地址、内装协议(ICP、UDP、ICMP、或IP Tunnel)、TCP/UDP目标端口、ICMP消息类型、包的进入接口和出接口。当这些包被送上互联网时,防火墙会读取接收者的IP并选择一条物理上的线路发送出去,信息包可能以不同的路线抵达目的地,当所有的包抵达后会在目的地重新组装还原。包过滤式的防火墙会检查所有通过信息包里的IP地址,并按照系统管理员所给定的过滤规则过滤信息包。如果防火墙设定某一IP为危险的话,从这个地址而来的所有信息都会被防火墙屏蔽掉。
2、防火墙的安全规则
安全规则就是对你计算机所使用局域网、互联网的内制协议设置,从而达到系统的最佳安全状态。
个人防火墙软件中的安全规则方式可分为两种:
一种是定义好的安全规则
就是把安全规则定义成几种方案,一般分为低、中、高三种。这样不懂网络协议的用户,就可以根据自己的需要灵活的设置不同的安全方案。例如:ZoneAlarm防火墙.
还有一种用户可以自定义安全规则
也就是说,在你非常了解网络协议的情况下,你就可以根据自已所需的安全状态,单独设置某个协议。
3、事件日记
这是每个防火墙软件所不能少的主要的功能。记录着防火墙软件监听到发生的一切事件,比如入侵者的来源、协议、端口、时间等等。记录的事件是由防火墙的功能来决定的。
那么那一种防火墙最好呢?这是网友经常询问的问题。
我个人认为选用防火墙,不一定非要用最好的,因为个人防火墙主要是针对个人用户的实用性来制作的,除了以上几种功能外,还集成一些工具,比如说追踪主机名或IP地址、检测特洛伊木马、伪装等等。根据自己不同的需要来选用,在不断地学习中淘汰一些简单的防火墙。本人把用户大概分成五种:
1、不了解网络协议的用户,只是为了游览网页。你可以使用傻瓜式防火墙。例如:Intrusion Detector、Intruder Alert' 99
2、如果你上网是为了聊天或者经常受到攻击的用户,那么你就可以选用:ProtectX、LockDown2000两个防火墙,它们都有追踪IP的功能。如果你受到攻击,立即可以追踪。
3、经常遭遇到扫描的用户,使用Internet Firewall 2000、AnalogX、NetAlert。这两个防火墙可以封锁或监视你的对外开放端口。
4、在局域网环境中上网的用户,那么防火墙必须支持NETBIOS设置功能。例如:AtGuard、Zone Alarm、conseal pc firewall、天网防火墙、BlackICE。
5、自己对网络协议运用自如的用户。Norton Internet Security 2000 V2.0 Personal Firewall与AtGuard防火墙都有非常详细的自定义网络协议。
这里说明一下,上面所说的五种用户分类,不是必须按照这样的分类使用的,只不过它们有那种分类的功能特点。比如说,Zone Alarm、天网防火墙,这两个防火墙也对普通用户提供了安全规则方案,不了解网络协议的用户也可以运用自如。
隐藏入侵踪迹技术讲座
[ 2007-03-25 03:31:33 | 作者: sun ]
第一章 理论篇
I. 概述
II. 思想认识(MENTAL)
III. 基础知识
IV. 高级技巧
V. 当你受到怀疑时...
VI. 被捕
VII. 有用的程序
VIII. 最后的话
I. 概述
----------------------------------------------------------------------
>> 译者注:本文是德国著名hacker组织"The Hacker's Choice"的96年写的一篇文章但今天读来仍颇有收获,就象他自己说的:"即使是一个很有经验的hacker也能从这里学到一些东西".在翻译的过程中对原文做了一些改动,也加入了一些自己的理解,
>> 不当之处,还请赐教.
warning3@hotmail.com
注意 : 本文分为两部分.
第一部分讲述了一些背景和理论知识.第二部分通过具体的实例教你一步一步了解该做什么和不该做什么.
如果你懒得看完全部文章,那就只读第二部分吧.它主要是写给那些Unix hack新手看的.
如果你把尽快得到最新的exploits当成最重要的事的话,那我要说-你错了.
>> 译者注:exploits可以理解为"漏洞",不过我并不想这么翻,翻过来总感觉怪怪的,所以我还是保留了原文.文中还有一些地方也是如此处理,不再一一注明
一旦警察没收了你的计算机、你的所有帐户都被取消、你的一切活动都被监视的时候,即便是最好的exploit对你又有什么用呢?我不想听那些辩解的话.不,最重要的事应该是不要被捕!这是每个hacker都应该明白的第一件事.因为在很多情况下,特别是当你首次hack一个由于饱受入侵之苦而开始对系统安全敏感的站点时,你的第一次hack也许就将成为你最后一次hack.
所以请仔细阅读所有章节!
即使是一个很有经验的hacker也能从中学到一些东西.
下面是各节的简介:
节 I - 你现在正在读的
节 II - 思想认识
1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
节 III - 在你开始hack前应当知道的基本知识
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
节 IV - 你该了解的高级技巧
1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
节 V - 一旦你受到怀疑你该怎么做
节 VI - 当你被捕时该做的与不该做的
节 VII - 一些用于隐藏痕迹的程序的列表
节 VIII- 最后的话,作者想说的一些废话
请仔细阅读,开动脑筋.
II. 思想认识(MENTAL)
>> 译者注:这一节的目的主要是提醒你树立正确的"hack"观 ;)
----------------------------------------------------------------------
内容: 1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
>> 译者注:paranoid的意思是"患偏执狂的",在这里可能是当
>> "小心谨慎"来讲吧.
* 1. 动机 *
不管做什么事,信念总是取得成功的一个关键.它是你的动力源泉,它激发你去奋斗,自我约束,小心谨慎而又面对现实,准确的估计风险,它也能让你去做你不喜欢做但又非常重要的事情(即使你现在就想去游泳).如果你不激励自己去编制重要工具,等候恰当的时机去攻击目标,那你永
远不能成为真正的hacker.
一个成功而又优秀的hacker必须满足这些要求.它就象健身和节食---如果你真正努力去做,你就能成功.
* 2. 为什么你必须要谨慎 *
当然,小心谨慎并不会让你的生活变得更幸福.然而如果你从不做最坏的打算,任何事情都能击倒你,让你失去平衡.你正在做的事会让你冒很大风险.而在你正常的生活中你并不需要担心警察,小偷什么的.但如果你从另一方面考虑,你要知道你正在给别人的生活带来麻烦和恶梦--他们很
想阻止你.尽管你不认为这是犯罪.但当警察迅速逮捕每个可能被牵扯的人时,你会发现一件很悲惨的事:你是有罪的除非你能证明你无罪!一旦你得到了一个hacker的"污名",你就永远不能将其去除.一旦你有了犯罪纪录,你将很难找到一份工作.特别是没有软件公司甚至没有与计算机有关的公司会聘用你,他们会害怕你的技术.你也许不得不移民...一旦跌倒了,能再爬起来的只是少数人.
要小心谨慎!要保护好你自己!记住你得到的一切都可能失去!绝不为做额外的反跟踪工作而感到愚蠢!绝不为如果别人嘲笑你太谨慎而烦心!决不要因为太懒或者厌倦而放弃修改log文件!一名hacker必须%100的完成他的"工作"!
* 3. 怎样才能小心谨慎 *
如果你读了上面的话并且你认为那是对的,那就容易了---你已经变得小心谨慎了但这必须要变成你生活中的一部分才行,当你总是考虑究竟是谁告诉你了那些事,考虑你的电话和email可能已被监视的时候,那它已经变成你生活的一部分了.
如果上面这些还不能帮你,那么考虑一下如果你被捕会发生什么.你的女友还会站在你这边吗?你想看到你父母为你流泪吗?你想丢掉饭碗或学业吗?
不要给这一切以发生的机会!
如果这还不能警醒你:离HACKING远点儿!!!对整个hacker社会和你的朋友来说,你都是个危险人物!
* 4. 保持谨慎 *
我希望现在你明白为什么小心谨慎的重要性了.
所以保持谨慎.一个错误或者一次偷懒都可能彻底毁掉你的生活和事业.在做一件事时应时刻记着你的动机是什么.
>> 译者注:这部分是让你知道你正在干什么及你的处境.如果你不想让你成为无聊记者津津乐道的话题---"某地破获重大黑客案...",那就多看看,多想想.要知道,自己是这种新闻的主角和看别人的新闻可完全不是一个感觉.所以要:谦虚谨慎,戒骄戒躁 :-)
III. 基础知识
----------------------------------------------------------------------
内容 :
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
* 1. 前言 *
在你开始你的初次hack之前,你应当知道这些并且进行些练习.这些都是非常基本的,不知道这些你很快就会有麻烦了.即便是一名很有经验的hacker也能从中得到一些新的提示.
* 2. 自身安全 *
系统管理员读了你的email吗?你的电话被警察监听了吗?警察没收了你存有所有hacking数据的计算机吗?
如果你不接收可疑的email,不在电话里谈论hacking/phreaking的话题,在你的硬盘上也没有敏感和私人数据的话,那你不必担心上面那些情景.但那样你就并不是一个hacker.每个hacker和phreaker都与其他人保持联系并把他的数据保存在某个地方.
加密所有敏感数据!!!
在线硬盘加密程序是非常重要和有用的:
在internet上游很多好的免费硬盘加密程序,它们对你的操作系统来说是完全透明的.下面所列的几个软件都是经过测试的,是hacker's的首选工具:
- 如果你用MsDos,你可以使用SFS v1.17或者SecureDrive 1.4b
- 如果你用Amiga,你可以使用EnigmaII v1.5
- 如果你用Unix,你可以使用CFS v1.33
>> 译者注:在win9x下可以考虑emf,iprotect...
文件加密软件: 你可以使用任何一种加密软件,但它应该是使用一种众所周知的安全加密机制.绝对不要用那些被出口的加密程序,它们的有效密钥长度被缩短了!
- Triple DES
- IDEA
- Blowfish (32 rounds)
加密你的Email!
- PGP v2.6.x 是个不错的工具.
如果你想讨论重要的事情的话,加密你的电话.
- Nautilus v1.5a 是迄今最好的
当你连到一个unix系统时加密你的终端.
一些人可能正在sniffing或者监视你的电话线:
- SSH 是最安全的
- DES-Login 也不错
>> 译者注:- SSL 基于SSL的一些软件也可以一试
用强壮的不可猜测的,不在任何字典中的密码.它应当看起来象随机的但又容易记忆.如果密码长度可以比10个字符更长,那就用更长的.可以从书中抽取一句话,并略作修改.请将你的hacker朋友的电话号码加密两遍.如果你不加密,你应当从公用电话给他打电话.
>> 译者注:其实有个好记又难猜的密码并不难,例如考虑句子"I'm a haxor!"可以从中抽>> 取几个单词组成I'mhaxor,好象没有数字,呵呵,用"eleet"的hacker语言,haxor=h4x0r所以我们的口令可以是:I'mh4x0r(我是hacker).这样的密码恐怕只能用暴力破解了.
如果你对hacking有了深入了解,你应当加密所有的东西!
为你的数据做个备份,当然要先加密,把它放在一个隐秘的地方,最好不要在家里.所以即使你因为失误,火灾或警察搜捕等原因丢失了数据,你还可以得到备份数据.
只有当你真的需要它们时才写出来,否则将它们放在一个机密文件或加密分区里更安全.一旦你不需要它们了,烧掉那些纸.你也可以用只有你自己知道的加密机制将它们写下来,但不要告诉任何人,也别太经常的使用它.也许它很容易被分析和破解。真正沉稳和谨慎的hackers应该考虑实施干扰方案.警察,间谍,其他hacker能监视你的举动.一个拥有先进设备的人可以获得他想要的任何东西:
计算机发射的电子脉冲可以从100米以外的距离被截获,可以显示你的监视器屏幕,监听你的私人谈话,确认键盘敲击时的高频信号等等...所以各种可能性总是存在的.成本低廉的应付方法就是采用电子脉冲干扰发射机,商店里就有卖的.如果你不想让任何人监视你,我认为这些还不够...
>> 译者注:不知道我们的商店里有没有卖的.;-)
* 3. 你自己的帐户 *
下面让我们谈谈你自己的帐户.它就是你在学校/公司/ISP那里得到的帐户,它总是与你的真实姓名联系在一起,所以在使用它时绝对不要违背下面的原则:
永远不要用你的真实帐户做任何非法或者惹人怀疑的事!永远不要试图从你的真实帐户telnet到任何被hacked主机去!当然可以用这个帐号订阅安全mailing lists.但任何与hacking有关的东西都必须加密或者立刻销毁.决不要在你帐号下保存hacking或security工具.尽量用POP3连到你的mailserver下载或者删除你的邮件(如果你对unix比较熟悉,还可以直接telnet到POP3端口执行下载或者删除命令).决不要泄漏你的真实email给你不信任的人,只把它给你信任的人,他们也
应当是比较注意安全问题的人,否则如果他们被捕,下一个就是你了(或许他们根本就是警察,而不是hacker.).与其他的hacker用email交流时必须要用PGP加密,因为系统管理员经常偷看用户目录,甚至读区别人的email!!其他的hacker也可能hack你们的站点并试图得到你的数据.
绝不要用你的帐号表明你对hacking感兴趣!对安全感兴趣可以,但不要再进一步了.
>> 译者注:与别人交流时可以申请免费信箱,最好是国外的,比如hotmail之类,登陆时注意最好
通过proxy.自己的真实信箱应当只用来进行一般的正常通信,与朋友/老师/同事...
* 4. LOG文件 *
有三个重要的log文件:
WTMP - 记录每次登录的信息,包括登陆/退出的时间,终端,登录主机ip
UTMP - 在线用户记录
LASTLOG - 记录用户上次是从哪里登录的
当然还有其他的log,它们将在"高级技巧"一节种讨论.每次通过telnet,ftp,rlogin,rsh
的登录都会被记录到这些文件中.如果你正在hacking,把自己从这些记录中删除就是很重要的了.否则他们会:
a) 准确的发现你什么时候在搞hacking活动
b) 发现你从那个站点过来
c) 知道你在线的时间有多长,以便计算你给他们造成的损失
绝对不要删除这些log文件!!!那等于通知管理员:"嗨,你的机器上有个hacker!".找一个好程序来修改这些log.ZAP(或ZAP2)经常被认为是最好的但事实上它并不是.它只是简单的用0来填充用户上次登陆的数据段.CERT已经发布了一个简单的程序用来检查这些全零数据项.所以这样也会很容易就让人知道现在有个hacker在活动,这样你所有的工作就没有意义了.ZAP的另外一个缺陷是当它找不到那些log文件时,它并不报告.所以在编译之前必须先检查一下路径!你应该使用能改变记录内容的程序(象cloark2.c)或者能真正删掉记录的程序(象clear)
>> 译者注: THC提供的cleara.c ,clearb.c是非常好用的清除工具.可以清除utmp/utmpx,wtmp/wtmpx,修复lastlog让其仍然显示该用户的上次登录信息(而不是你登录的信息).如果你发现你登录后没有显示上次登录信息,那很可能你的机器,可能已经被人hack了,当然,即使显示正确的信息也未必就没有被hack.;-)
一般来说要修改log你必须是root(有些老版本系统例外,它们将utmp/wtmp设成允许所有人可写)但如果你不能得到root权限---你该怎么做呢?你应该rlogin到你现在所处的主机,以便在lastlog种增加一个不是那么惹人怀疑的数据项,它将在该用户下次登录时被显示,如果他看到"上次从localhost登录"的信息时也许不会怀疑.
>> 译者注:这也是没有办法的办法,换了我,我就会怀疑.;)
很多unix系统的login命令有一个bug.当你登录以后再执行一遍login命令时,它将用你当前的终端重写UTMP中的login from段(它显示你是从哪里来的!)那么这些log文件缺省在什么地方呢?
这依赖于不同的Unix版本.
UTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
WTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
LASTLOG : /usr/var/adm 或 /usr/adm 或 /var/adm 或 /var/log
在一些旧unix版本中lastlog数据被写到$HOME/.lastlog
* 5. 不要留下痕迹 *
我曾经碰到很多hacker,他们把自己从log里删除了.但他们忘记删掉他们在机器中留下的其他一些东西:在/tmp和$HOME中的文件Shell 记录一些shell会保留一个history文件(依赖于环境设置)记录你执行的命令.这对hacker来说确实是件很糟糕的事.最好的选择就是当你登录以后先启动一个新shell,然后在你的$HOME中查找历史纪录.
历史记录文件:
sh : .sh_history
csh : .history
ksh : .sh_history
bash: .bash_history
zsh : .history
>> 译者注:.*history是我最喜欢看的文件之一,通过它你可以了解root或用户常干些什么, 从而得知他们的水平如何,如果他们只会执行"ls","pwd","cp"...那说明水平不过尔尔,无须太担心.不过如果你发现root喜欢"find / -type f -perm -04000 -exec ls -a
l {} \;"," "vim /var/adm/messages","ps -aux( -elf) ","netstat -an"....那你就要小心一点了。
备份文件 :
dead.letter, *.bak, *
在你离开前执行一下"ls -altr"看看你有没有留下什么不该留下的东西.你可以敲4个csh命令,它能让你离开时删掉这些历史文件,不留下任何痕迹.
mv .logout save.1
echo rm .history>.logout
echo rm .logout>>.logout
echo mv save.1 .logout>>.logout
>> 译者注:对于bash,有一个简单的办法就是执行一下"HISTFILE=",就是不设置bash的历史文件,这样就不会有讨厌的.bash_history了.(准确地说,是不会往$HOME/.bash_history里写了)
>> 或者退出的时候简单的敲kill -9 0 ,它会杀掉这次登录后产生的所有进程,bash也不会往.bash_history里写
* 6. 你应当避免的事 *
不要在不属于你的机器上crack口令.如果你在别人(比如说一所大学)的机器上破解口令,一旦root发现了你的进程,并且检查它.那么不仅你hacking的帐号保不住了,可能连你得到的那passwd文件也没了.那学校将会密切注视你的一举一动...所以得到口令文件后应该在自己的机器上破解.你并不需要破解太多的帐号,能破出几个就够了.如果你运行攻击/检测程序象ypx,iss,satan或其他的exploiting程序,应当先改名再执行它们.或者你可以修改源码改变它们在进程列表中显示的名字...
>> 译者注:这并不难,你只要在main()中将argv[]用你喜欢显示的名字替代就可以了比如argv[0] ="in.telnetd",argv=""...(当然必须在程序已经从argv中读取了所需的参数之后).
如果某个细心的用户/root发现5个ypx程序在后台运行,他马上就会明白发生了什么.当然如果可能的话不要在命令行中输入参数.如果程序支持交互方式,象telnet.应当先敲"telnet",然后"o target.host.com"...这就不会在进程表中显示目标主机名.
>> 译者注:如果你用ftp,最好这样做:
>> $ ftp -n
>> $ ftp>o target.host
>> blahblah...(一些连接信息)
>> blahblah...(ftp server版本)
>> ftp>user xxx
>> ....
如果你hack了一个系统---不要在任何地方放suid shell!最好装一些后门象(ping,quota或者login),用fix来更正文件的atime和mtime.
>> 译者注: 放suid shell是很蠢的,非常容易被root发现.
IV. 高级技巧
----------------------------------------------------------------------
内容 : 1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
* 1. 前言 *
一旦你装了第一个sniffer开始你的hack生涯,你就应该知道并使用这些技巧!请运用这些技巧---否则你的hack之旅就行将结束.
* 2. 阻止任何跟踪 *
有时候你的hacking活动会被人发现.那并不是什么大问题 - 你hacked一些站点可能会被关掉,但谁管它呢,赶紧离开就是了.但如果他们试图跟踪你的来路(通常是为了抓住你)的话那就很危险了!
这一节将告诉你他们跟踪你的各种可能的方法以及你该如何应对.
* 通常对系统管理员来说发现一个hacker是从哪里来的并不是什么问题:检查log记录(如果那个hacker真的那么蠢的话);看看hacker安装的sniffer的输出记录(也许里面也记下了他的连接)或者其他系统记帐软件(象loginlog等等);甚至可以用netstat,显示所有已经建立的网络连接--如果那个hacker正在线的话,那他就被发现了.这就是为什么你需要一个gateway server(网关).
* 什么是gateway server?
它是你所"拥有"的很多服务器中的一个,你已经得到了它的root权限.你需要root权限去清除wtmp/lastlog/utmp等系统记录或者其他一些记帐软件的log文件.除此之外你不在这台机器上做任何其他的事(它只是个中转站).你应当定期更换gateway server,可以每隔1,2个星期更换一次,然后至少一个月内不再使用原来的gateway server.这样他们就很难跟踪到你的hacking server.
* hackin server - 所有活动的出发点你从这些机器开始hacking.Telnet(或者更好的:remsh/rsh)到一个gateway server,
然后再到一个目标机器.你需要有root权限以修改log.你必须每隔2-4个星期就更换hacking server..
* 你的堡垒/拨号主机.
这是个临界点.一但他们能跟踪回你拨号进入的机器,你就有麻烦了.只要打个电话给警察,再进行一次通信线路跟踪,你的hack活动就会成为历史了,也许是你的未来.在堡垒主机上你不需要得到root权限.既然你只是通过modem拨入,那里没有什么必须修改的记录.你应该每天用一个不同的帐号拨号进入,尽量用那些很少使用的.你应该找到至少2个你能拨号进去堡垒主机,每隔1-2个
月更换一次.
>> 译者注:我对phreak不熟.我猜大部分的国内hacker还没什么本事能躲过电信局的跟踪.所以最好不要用别人的帐号上网,特别是那些很少上网的帐号,一旦他发现上网费用剧增,肯定会让电信局追查的,到时候你就大难临头了.如果你用那些上网频繁的人的帐号,他反倒不会注意,只会以为这个月上的太厉害了.:-)(这绝对没有鼓励你盗用别人帐号的意思,这等于盗窃,凭什么你
上网要别人交钱?就凭你会用john破几个口令吗?hacker的名声就是让这些打着hacker旗号的无耻之徒败坏的.对这种人就得抓!所以我对这样的phreaker没有什么好感,你要真有本事,就别嫁祸别人,而且还要让电信局查不出来.) 说多了,咱们言归正传.
注意: 如果你能每天拨入不同的系统(比如通过"蓝盒子"),那你就不需要那些hacking server了.
* 使用蓝盒子,这样即使他们跟踪到你的堡垒主机,也不能(至少是不能很容易地)追踪到你的电话...使用蓝盒子必须小心,德国和美国的电话公司有专门的监视系统来追踪使用蓝盒子的人...
使用一个中间系统来传送你的电话将会使跟踪更加困难, 但是同样由于你使用一个pbx或其他的什么东西, 仍使你处于被抓的危险中. 这取决于你.
注意在丹麦所有的电话数据均被记录!即使在你打完电话10年后,他们仍然能证明你曾登录过他们的拨号系统从事hack活动...
- 其他的
如果你想运行satan,iss,ypx,nfs文件句柄猜测程序..你应当使用一个专门的服务器来完成.不要用这个服务器telnet/rlogin到目标服务器,只是用它来进行检测.
有些程序可以bind到一个特殊端口,当一个指定到该端口的连接建立的时候,它自动打开一个连接连到另外一个服务器的某个端口(有些就模拟一个shell,你可以从这个socket daemon中"telnet"到其他机器).使用这种程序你不会被记录(防火墙log除外).有很多程序可以帮你完
成上述功能.
>> 译者注:这种程序我常用的有datapipe.c,telbounc.c,还是很好用的.它就象是个代理服务器,但是不会有记录.:)
如果可能的话,hacking server或者gateway server应该在国外!因为如果你的入侵被发现,当发现你来自国外的主机时,大多数网管都会放弃追查.即使是警察要通过不同的国家追踪你,这也至少可以拖延2-10个星期的时间...
#下面是hack过程的简图,也许对你有些帮助;-)
+-------+ ~---------------> +-------------+ +-----------+
|+-----+| > > | | | |
||本机 || --> > 安全拨号线路 > --> | 堡垒主机 | --> | hacki
ng |
|+-----+| > > | (至少有3个) | | server |
+-------+ ~---------------> +-------------+ +-----------+
|
|
v
+-----------------+ +--------+ +-----------+
| | | | | |
| 内部网络中的主机| ... <-- ... |目标主机| <-- | gateway | | | | | | server | +-----------------+ +--------+ +-----------+ * 3. 找到并处理所有的LOG文件 * 找到所有的logfiles是很重要的---即使他们被隐藏.要找到它们有两种可 能的方法: 1)找到所有打开的文件. 既然所有的log必须写到某个地方去,所以用可以用LSOF(LiSt Open Files)程序 去检查所有打开的文件,必要的话就得修改它们.>> 译者注:lsof由Vic Abell 编写,用来提供被进程打开的文件的信息,
>> 它的最新版本可以在ftp://vic.cc.purdue.edu/pub/tools/unix/lsof下找到.有趣的是,不久前有人发现lsof4.40以前的版本中存在buffer overflow问题,可以取得root权限.:-)
2) 搜索所有在你登录后有变化的文件在你登录后,执行"touch /tmp/check",然后可以干你的活.最后只要执行"find / -newer /tmp/check -print",并检查找到的文件,如果其中有记帐文件,就应该修改它.注意不是所有版本的find都支持 -newer 参数.你也可以用"find / -ctime 0
-print" 或者 "find / -cmin 0 -print"来查找它们.
>> 译者注:我更喜欢用-exec ls -l {} \;来代替-print,因为这可以列出比较详细的信息. 注意上述方法主要是针对系统记帐软件的,它可能会记录你执行的命令.对于只记录login信息的软件,它在你看到shell提示符以前就已经完成记录了.所以用这种检查是查不出来的.
检查你找到的所有的logfiles.它们一般在/usr/adm,/var/adm或者/var/log,/var/run
.
如果它们被记录到@loghost,那你可能就有点麻烦了.你需要hack那台loghost主机去修改log...
>> 译者注:一般单纯用作loghost的机器比较难hack,因为它往往关掉了几乎所有端口,并且只
允许从控制台登录.对于这样的机器,可以用DoS攻击使之瘫痪,从而失去log功能.(要hack往往比较难,要crash it则相对容易一些.;-)当然,本次登陆的记录仍然会被保存下来.
为了处理logs,你可以用"grep -v"或者用wc统计行数后,再用"tail -10 log"察看最后10行
,或者用编辑器vi,emcas.
>> 译者注:如果你从a.b.c来,你可以用grep -v "a.b.c" logfile>logtemp;mv logtemp logfile;来清除所有含有a.b.c的行.如果log文件比较大,你也可以用vim来编辑.注意这只能用来修改文本文件!!!对二进制文件的修改可能导致文件格式被破坏!!!
如果数据文件是二进制格式的,你应当首先查明它是由什么软件产生的,然后设法找到该软件的源码,分析记录项的结构,自己编程修改记录.(可以利用现成的程序加以修改,比如Zap,clear
cloak...).
如果系统安装了accounting软件.你可以用zhart写的acct-clener---它非常有效!
如果你必须修改wtmp,但系统又不能编译源程序也没有perl....你可以这样做,先uuencode
wtmp,然后运行vi,移动到最后一行,删除最后以"M"开头的4行...然后保存退出.uudecode
.然后最后5个wtmp记录项就被删除了.;-) 注意这只在SCO unix下有效,linux下是不行的.
>> 译者注:我没有验证这个,因为没有SCO服务器.如果你要这么做,记得要先做个wtmp的备份.
如果系统用wtmpx和utmpx,那你又有麻烦了..迄今我还不知道有哪个cleaner程序可以处理它们.你不得不自己编一个程序来完成工作.
>> 译者注:wtmpx和utmpx结构与wtmp和utmp类似,只要将清除utmp和wtmp的软件略加修改就可
>> 以了.而且现在已经不少现成的程序可以修改utmpx/wtmpx了.
* 4. 检查SYSLOG配置和记录 *
大部分程序都用syslog函数来记录它们需要的所有东西.因而检查syslogd的配置文件是很重要的.这个配置文件是/etc/syslog.conf - 我不会告诉你它的格式是什么/每一项是什么意思
,
自己去读它的man页.
对你来说重要的syslog类型是kern.*,auth.*和authpriv.*.看看它们被写到哪里了,如果写到文件里还可以修改.如果被转发到其他主机,你必须也要hack它们.如果消息被发给某个用户,tty或者控制台.你能耍点小花招发很多个假消息象"echo 17:04 12-05-85 kernelsendmail[243]: can't resolve bla.bla.com > /dev/console"(或其他你想flood的的设备),让它卷屏,以隐藏你引发的信息.这些log文件是非常非常重要的!检查它们!
* 5. 检查已经安装的安全程序 *
很多注重安全的站点都通过cron运行安全检查程序.crontabs通常在/var/spool/cron/crontabs.检查里面所有的文件,特别是"root"文件,检查它里面都运行了什么程序.用"crontab -l root"可以快速的检查root crontab的内容.
这些安全工具往往装在管理员的目录下比如~/bin.
这些检查软件可能是 tiger, cops, spi, tripwire, l5,binaudit, hobgoblin, s3 等等...
你必须检查它们都报告了些什么东西,看它们是否报告了一些显示出你入侵迹象的东西.如果是的话,你可以 - 更新软件的数据文件,是它们不再报告这种类型的消息.
- 可以重新编程或修改该软件使它们不再产生报告.
- 如果可能的话,删除你安装的后门或其他程序,并试着用其他的方法来完成。
* 6. 检查系统管理员 *
对你来说了解系统管理员采取了那些安全措施是非常重要的.因此你需要知道他们经常使用哪些
普通用户帐号.你可以检查root的.forward文件和alias内容.看看sulog文件,注意那些成功su成root的用户.检查group文件中的wheel和admin组(或者其他任何与管理员相关的组).你也可以
在passwd文件中查找admin,也许你又能找到一个管理员帐号.现在你应该已经知道这台机器上谁是管理员了.进入他们的目录(如果系统不允许root读所有的文件,用chid.c或者changeid.c将自己的uid变成该用户的),检查他们的.history/.sh_history/.bash_history文件看看他们经常执行什么命令.也应当检查他们的.profile/.login/.bash_profile文件看看里面都设置了什么alias,是否执行了什么自动安全检查或logging程序.也检查他们的~/bin目录!大多数情况下被编译的安全程序被放到那里面!当然也要看一下他们的每一个目录(ls -alR ~/).如果你找到任何与安全有关的东西,请读5小节以设法绕过它们的安全保护.
* 7. 怎样修正checksum检查软件 *
一些管理员真得很怕hacker所以装了一些软件来检查二进制文件.如果一个二进制文件被改动了,下次管理员做二进制检查的时候,它将被检测到.那么你怎么找到是否系统安装了这样的程序,又怎样修改它们以便你能植入你的木马程序呢?
注意有很多的二进制检查程序,而且要写一个也真是非常容易(15分钟就够了),你可以用一个
小的script完成这个工作.所以如果这样的软件被安装的话要找到它们是比较困难的.注意
有些常用安全检查程序也提供这样的检查.下面是一些应用得很广泛的软件:
软件名 标准路径 二进制文件名
tripwire : /usr/adm/tcheck, /usr/local/adm/tcheck : databases, tri
pwir
e
binaudit : /usr/local/adm/audit : auditscan
hobgoblin : ~user/bin : hobgoblin
raudit : ~user/bin : raudit.pl
l5 : 编译所在目录 : l5
你要明白有很多种可能!这软件或数据库甚至可能放在一个正常情况下不被mount的盘上或者在其他主机export的NFS分区上.也可能checksum数据库是储存在一个写保护的介质上的.各种可能性都有!但一般情况下你只要检查上述软件是否被安装就可以了,如果没有的话,你就可以改变某些二进制文件.如果你没有找到那些软件,但你又知道这是一个进行了完善安全保护的站点的话,你就不应该改变二进制文件!它们(二进制检查软件)肯定被藏在什么地方了.
如果你发现了这种软件被安装并且你可以修改它们(比如不是放在只读介质上,或者可以通过一些办法绕过限制 - 比如umount该盘然后重新mount成可写的)的话,你该怎么做呢?你有两种选择:首先你可以只检查软件的参数,然后对已经修改过的二进制文件执行一次"update"检查.比如用tripwire的话你可以执行" tripwire -update /bin/target ".第二种办法是你可以编辑要被检查的二进制文件名单 - 从中删除你改动过的二进制文件名.注意你也应当看看是不是连数据库文件自身也会被检查!如果是的话 - 先update再删除数据库文件名.
* 8. 注意某些用户的安全陷阱(诡计?) *
这种情况较少发生,这里提出来主要是为了讨论的更完全.一些用户(可能是管理员或者hacker)通常不象他自己的帐户被别人使用.所以他们有时候会在他们的启动文件里采取一点安全措施.
所以要检查所有的以"."开头的文件(.profile,.cshrc,.login,.logout 等等),看看他们执行了什么命令,记录了些什么东西,以及他们的搜索路径是怎么摄制的.如果某个目录(比如HOME/bin)出现在/bin的前面,你就应该检查一下那个目录的内容了...也许里面装了个程序"ls"或者"w",它会先记录被执行的时间然后再执行真正的程序也许还有些程序用来自动检查wtmp和lastlog文件是否被zap处理过,检查.rhosts,.Xauthority文件,或是否有sniffer正在运行...千万不要使用一个unix高手的帐号!
* 9. 其他 *
最后,在讨论受怀疑或被捕的话题之前,还有一些其他的事情值得引起注意.老的telnet client会export USER变量.一个了解这一点的系统管理员可以编辑telnetd,从而得到所有(通过telnet登录进来的)用户名.一旦他注意到你,他就可以很容易的得知你是从(远方主机的)哪个帐号hack进来的.新的client(客户端程序)已经解决了了这一问题 -但是一个聪明的管理员仍然可以得到其他的信息以鉴别用户:UID,MAIL,HOME变量,这些变量仍然被export,这就可以很容易得鉴别 hacker使用的是哪个帐户.因此在你进行telnet前,记得要改变USER,UID,MAIL和HOME变量,如果你正处在home目录下的话也许甚至要改变PWD变量.
在HP Unix(版本低于v10)中你可以建立隐藏目录.我不是说那些以"."开头的目录而是一些有特殊标志的目录.HP在v9版推出了它,但从v10版本以后就去除了(因为只有hacker才是用它 ;-).
如果你执行"chmod +H directory",则directory目录就不能用"ls -al"列出.为了看这个隐藏目录,你需要为ls增加 -H 参数,例如:"ls -alH".
无论什么时候,当你需要改变文件的日期时,记住你能用"touch"命令设置atime和mtime.你只能通过直接的硬盘读写来设置ctime.
如果你在一个重要系统中安装了sniffer,一定要加密sniffer的输出或者让sniffer通过icmp或者udp将所有被截获的数据发送到一个由你控制的外部主机.为什么要这样做?因为这样即使管理员发现了sniffer(通过cpm或其他检查sniffer存在的程序),他们也不能从sniffer log中得知哪些东西被sniff了,所以他也不能即使提醒正被你sniff的主机.
V. 当你被怀疑时...
----------------------------------------------------------------------
一旦你受到怀疑(被警察或是系统管理员)你应该采取些特别的行动是他们不能得到不利你的
证据.
注意 : 如果系统管理员认为你是个hacker,你就是有罪的直到你被证明是无辜的!这些管理员根本不理会什么法律(有时候我认为hacker与管理员的不同仅仅在于那台计算机属于管理员而已).当他们认为你是个hacker的时候,你就是有罪的,没有律师为你辩护.他们会监视你,你的邮件,文件,甚至记录你的键盘(如果他们够利害的话).当警察被牵扯进来的时候,你的电话线也可能被监听,搜捕行动也许跟着就来了.
如果你注意到你正受到怀疑,一定要保持低调!不要采取任何攻击性行动!最好是等上至少1到2个月,什么都不做.警告你的朋友不要给你发任何邮件,或者只发一些正常的/无害的邮件.如果你突然采用PGP加密邮件,这会提醒正在监视的警察和管理员---你发现他们的监视了.切断与
hacking有关的联系,写点儿文章或者编编程序,一直等到一切都过去.及主要加密你的敏感数
据,销毁所有记有帐号数据,电话号码等等的纸张.当警察搜捕你的时候,那些东西是他们要找的
最重要的东西.
VI. 被捕
----------------------------------------------------------------------
Note that this small chapter covers only the ethics and basics and
hasn't got any references to current laws - because they are different
for every country.
Now we talking about the stuff you should/shouldn't do once the feds
visited you. There are two *very* important things you have to do :
1) GET A LAWYER IMMEDEANTELY !
The lawyer should phone the judge and appeal against the search
warrant. This doesn't help much but may hinder them in their work.
The lawyer should tell you everything you need to know what the
feds are allowed to do and what not.
The lawyer should write a letter to the district attorney and/or
police to request the computers back as fast as possible because
they are urgently needed to do business etc.
As you can see it is very useful to have got a lawyer already
by hand instead of searching for one after the raid.
2) NEVER TALK TO THE COPS !
The feds can't promise you anything. If they tell you, you'll get
away if you talk, don't trust them! Only the district attorney
has got the power to do this. The cops just want to get all
information possible. So if you tell them anything they'll have
got more information from and against you.
You should *always* refuse to give evidence - tell them that you
will only talk with them via your lawyer.
Then you should make a plan with your lawyer how to get you out of this
shit and reduce the damage.
But please keep in mind : don't betray your friends. Don't tell them
any secrets. Don't blow up the scene.
If you do, that's a boomerang : the guys & scene will be very angry
and do revenge, and those guys who'll be caught because of your
evidence will also talk ... and give the cops more information about
*your* crimes!
Note also that once you are caught you get blamed for everything which
happened on that site. If you (or your lawyer) can show them that they
don't have got evidences against you for all those cases they might
have trouble to keep the picture of that "evil hacker" they'll try to
paint about you at the court. If you can even prove that you couldn't
do some of the crimes they accuse you for then your chances are even
better. When the judge sees that false accuses are made he'll suspect
that there could be more false ones and will become distrusted against
the bad prepared charges against you.
I get often asked if the feds/judge can force you to give up your
passwords for PGP, encrypted files and/or harddisks.
That's different for every country. Check out if they could force you
to open your locked safe.
If that's the case you should hide the fact that you are crypting your
data! Talk with your lawyer if it's better for you to stand against
the direction to give out the password - maybe they'd get evidences
which could you get into jail for many years.
(For german guys : THC-MAG #4 will have got an article about the german
law, as far as it concerns hacking and phreaking - that article will
be of course checked by a lawyer to be correct. Note that #4 will only
discuss germany and hence will be in the german language.
But non-germans, keep ya head up, this will be the first and last german
only magazine release ;-)
>>译者注:这一节是讲述了如果被捕,应当做些什么.由于我们的法律和西方不同,所以我就不翻了.有兴趣的可以自己看一看.主要的两点就是:1.马上找到一个律师为你处理这一切.2.不要告诉警察任何东西,也不要出卖其他人.
VII. 有用的程序
----------------------------------------------------------------------
这里有一个你应该找到并使用的程序列表.不要给我发email问我在哪里找到它们 - 自己到
hacker世界中去找!我只列出了最好的log编辑程序(见III-4和IV-3).其他有趣的程序还有telnet重定向程序(见IV-2),但这种程序有很多,大部分只能在1-3种unix类型下编译,所以列表没什么用.
先节是以下几个术语:
改变 - 将logfile中的域改成你喜欢的任意内容
删除 - 删除你要求的记录项
编辑 - 真正的logfile编辑器.
重写 - 只用0字节来重写记录.
不要用这样的软件(e.g. zap) - 它能被检测到!
LOG 修改器
ah-1_0b.tar 改变记帐信息的记录
clear.c 删除utmp,wtmp,lastlog和wtmpx中的记录
cloak2.c 改变utmp,wtmp和lastlog中的记录.
invisible.c 用预设值重写utmp,wtmp和lastlog
所以它比zap更好.注意看,有好多inv*.c!
marryv11.c 编辑utmp, wtmp, lastlog 和 accounting 数据 - 最好的!
wzap.c 删除wtmp中的记录
wtmped.c 删除wtmp中的记录
zap.c 重写utmp, wtmp, lastlog - 不要用它!它会被检测到!
I. 概述
II. 思想认识(MENTAL)
III. 基础知识
IV. 高级技巧
V. 当你受到怀疑时...
VI. 被捕
VII. 有用的程序
VIII. 最后的话
I. 概述
----------------------------------------------------------------------
>> 译者注:本文是德国著名hacker组织"The Hacker's Choice"的96年写的一篇文章但今天读来仍颇有收获,就象他自己说的:"即使是一个很有经验的hacker也能从这里学到一些东西".在翻译的过程中对原文做了一些改动,也加入了一些自己的理解,
>> 不当之处,还请赐教.
warning3@hotmail.com
注意 : 本文分为两部分.
第一部分讲述了一些背景和理论知识.第二部分通过具体的实例教你一步一步了解该做什么和不该做什么.
如果你懒得看完全部文章,那就只读第二部分吧.它主要是写给那些Unix hack新手看的.
如果你把尽快得到最新的exploits当成最重要的事的话,那我要说-你错了.
>> 译者注:exploits可以理解为"漏洞",不过我并不想这么翻,翻过来总感觉怪怪的,所以我还是保留了原文.文中还有一些地方也是如此处理,不再一一注明
一旦警察没收了你的计算机、你的所有帐户都被取消、你的一切活动都被监视的时候,即便是最好的exploit对你又有什么用呢?我不想听那些辩解的话.不,最重要的事应该是不要被捕!这是每个hacker都应该明白的第一件事.因为在很多情况下,特别是当你首次hack一个由于饱受入侵之苦而开始对系统安全敏感的站点时,你的第一次hack也许就将成为你最后一次hack.
所以请仔细阅读所有章节!
即使是一个很有经验的hacker也能从中学到一些东西.
下面是各节的简介:
节 I - 你现在正在读的
节 II - 思想认识
1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
节 III - 在你开始hack前应当知道的基本知识
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
节 IV - 你该了解的高级技巧
1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
节 V - 一旦你受到怀疑你该怎么做
节 VI - 当你被捕时该做的与不该做的
节 VII - 一些用于隐藏痕迹的程序的列表
节 VIII- 最后的话,作者想说的一些废话
请仔细阅读,开动脑筋.
II. 思想认识(MENTAL)
>> 译者注:这一节的目的主要是提醒你树立正确的"hack"观 ;)
----------------------------------------------------------------------
内容: 1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
>> 译者注:paranoid的意思是"患偏执狂的",在这里可能是当
>> "小心谨慎"来讲吧.
* 1. 动机 *
不管做什么事,信念总是取得成功的一个关键.它是你的动力源泉,它激发你去奋斗,自我约束,小心谨慎而又面对现实,准确的估计风险,它也能让你去做你不喜欢做但又非常重要的事情(即使你现在就想去游泳).如果你不激励自己去编制重要工具,等候恰当的时机去攻击目标,那你永
远不能成为真正的hacker.
一个成功而又优秀的hacker必须满足这些要求.它就象健身和节食---如果你真正努力去做,你就能成功.
* 2. 为什么你必须要谨慎 *
当然,小心谨慎并不会让你的生活变得更幸福.然而如果你从不做最坏的打算,任何事情都能击倒你,让你失去平衡.你正在做的事会让你冒很大风险.而在你正常的生活中你并不需要担心警察,小偷什么的.但如果你从另一方面考虑,你要知道你正在给别人的生活带来麻烦和恶梦--他们很
想阻止你.尽管你不认为这是犯罪.但当警察迅速逮捕每个可能被牵扯的人时,你会发现一件很悲惨的事:你是有罪的除非你能证明你无罪!一旦你得到了一个hacker的"污名",你就永远不能将其去除.一旦你有了犯罪纪录,你将很难找到一份工作.特别是没有软件公司甚至没有与计算机有关的公司会聘用你,他们会害怕你的技术.你也许不得不移民...一旦跌倒了,能再爬起来的只是少数人.
要小心谨慎!要保护好你自己!记住你得到的一切都可能失去!绝不为做额外的反跟踪工作而感到愚蠢!绝不为如果别人嘲笑你太谨慎而烦心!决不要因为太懒或者厌倦而放弃修改log文件!一名hacker必须%100的完成他的"工作"!
* 3. 怎样才能小心谨慎 *
如果你读了上面的话并且你认为那是对的,那就容易了---你已经变得小心谨慎了但这必须要变成你生活中的一部分才行,当你总是考虑究竟是谁告诉你了那些事,考虑你的电话和email可能已被监视的时候,那它已经变成你生活的一部分了.
如果上面这些还不能帮你,那么考虑一下如果你被捕会发生什么.你的女友还会站在你这边吗?你想看到你父母为你流泪吗?你想丢掉饭碗或学业吗?
不要给这一切以发生的机会!
如果这还不能警醒你:离HACKING远点儿!!!对整个hacker社会和你的朋友来说,你都是个危险人物!
* 4. 保持谨慎 *
我希望现在你明白为什么小心谨慎的重要性了.
所以保持谨慎.一个错误或者一次偷懒都可能彻底毁掉你的生活和事业.在做一件事时应时刻记着你的动机是什么.
>> 译者注:这部分是让你知道你正在干什么及你的处境.如果你不想让你成为无聊记者津津乐道的话题---"某地破获重大黑客案...",那就多看看,多想想.要知道,自己是这种新闻的主角和看别人的新闻可完全不是一个感觉.所以要:谦虚谨慎,戒骄戒躁 :-)
III. 基础知识
----------------------------------------------------------------------
内容 :
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
* 1. 前言 *
在你开始你的初次hack之前,你应当知道这些并且进行些练习.这些都是非常基本的,不知道这些你很快就会有麻烦了.即便是一名很有经验的hacker也能从中得到一些新的提示.
* 2. 自身安全 *
系统管理员读了你的email吗?你的电话被警察监听了吗?警察没收了你存有所有hacking数据的计算机吗?
如果你不接收可疑的email,不在电话里谈论hacking/phreaking的话题,在你的硬盘上也没有敏感和私人数据的话,那你不必担心上面那些情景.但那样你就并不是一个hacker.每个hacker和phreaker都与其他人保持联系并把他的数据保存在某个地方.
加密所有敏感数据!!!
在线硬盘加密程序是非常重要和有用的:
在internet上游很多好的免费硬盘加密程序,它们对你的操作系统来说是完全透明的.下面所列的几个软件都是经过测试的,是hacker's的首选工具:
- 如果你用MsDos,你可以使用SFS v1.17或者SecureDrive 1.4b
- 如果你用Amiga,你可以使用EnigmaII v1.5
- 如果你用Unix,你可以使用CFS v1.33
>> 译者注:在win9x下可以考虑emf,iprotect...
文件加密软件: 你可以使用任何一种加密软件,但它应该是使用一种众所周知的安全加密机制.绝对不要用那些被出口的加密程序,它们的有效密钥长度被缩短了!
- Triple DES
- IDEA
- Blowfish (32 rounds)
加密你的Email!
- PGP v2.6.x 是个不错的工具.
如果你想讨论重要的事情的话,加密你的电话.
- Nautilus v1.5a 是迄今最好的
当你连到一个unix系统时加密你的终端.
一些人可能正在sniffing或者监视你的电话线:
- SSH 是最安全的
- DES-Login 也不错
>> 译者注:- SSL 基于SSL的一些软件也可以一试
用强壮的不可猜测的,不在任何字典中的密码.它应当看起来象随机的但又容易记忆.如果密码长度可以比10个字符更长,那就用更长的.可以从书中抽取一句话,并略作修改.请将你的hacker朋友的电话号码加密两遍.如果你不加密,你应当从公用电话给他打电话.
>> 译者注:其实有个好记又难猜的密码并不难,例如考虑句子"I'm a haxor!"可以从中抽>> 取几个单词组成I'mhaxor,好象没有数字,呵呵,用"eleet"的hacker语言,haxor=h4x0r所以我们的口令可以是:I'mh4x0r(我是hacker).这样的密码恐怕只能用暴力破解了.
如果你对hacking有了深入了解,你应当加密所有的东西!
为你的数据做个备份,当然要先加密,把它放在一个隐秘的地方,最好不要在家里.所以即使你因为失误,火灾或警察搜捕等原因丢失了数据,你还可以得到备份数据.
只有当你真的需要它们时才写出来,否则将它们放在一个机密文件或加密分区里更安全.一旦你不需要它们了,烧掉那些纸.你也可以用只有你自己知道的加密机制将它们写下来,但不要告诉任何人,也别太经常的使用它.也许它很容易被分析和破解。真正沉稳和谨慎的hackers应该考虑实施干扰方案.警察,间谍,其他hacker能监视你的举动.一个拥有先进设备的人可以获得他想要的任何东西:
计算机发射的电子脉冲可以从100米以外的距离被截获,可以显示你的监视器屏幕,监听你的私人谈话,确认键盘敲击时的高频信号等等...所以各种可能性总是存在的.成本低廉的应付方法就是采用电子脉冲干扰发射机,商店里就有卖的.如果你不想让任何人监视你,我认为这些还不够...
>> 译者注:不知道我们的商店里有没有卖的.;-)
* 3. 你自己的帐户 *
下面让我们谈谈你自己的帐户.它就是你在学校/公司/ISP那里得到的帐户,它总是与你的真实姓名联系在一起,所以在使用它时绝对不要违背下面的原则:
永远不要用你的真实帐户做任何非法或者惹人怀疑的事!永远不要试图从你的真实帐户telnet到任何被hacked主机去!当然可以用这个帐号订阅安全mailing lists.但任何与hacking有关的东西都必须加密或者立刻销毁.决不要在你帐号下保存hacking或security工具.尽量用POP3连到你的mailserver下载或者删除你的邮件(如果你对unix比较熟悉,还可以直接telnet到POP3端口执行下载或者删除命令).决不要泄漏你的真实email给你不信任的人,只把它给你信任的人,他们也
应当是比较注意安全问题的人,否则如果他们被捕,下一个就是你了(或许他们根本就是警察,而不是hacker.).与其他的hacker用email交流时必须要用PGP加密,因为系统管理员经常偷看用户目录,甚至读区别人的email!!其他的hacker也可能hack你们的站点并试图得到你的数据.
绝不要用你的帐号表明你对hacking感兴趣!对安全感兴趣可以,但不要再进一步了.
>> 译者注:与别人交流时可以申请免费信箱,最好是国外的,比如hotmail之类,登陆时注意最好
通过proxy.自己的真实信箱应当只用来进行一般的正常通信,与朋友/老师/同事...
* 4. LOG文件 *
有三个重要的log文件:
WTMP - 记录每次登录的信息,包括登陆/退出的时间,终端,登录主机ip
UTMP - 在线用户记录
LASTLOG - 记录用户上次是从哪里登录的
当然还有其他的log,它们将在"高级技巧"一节种讨论.每次通过telnet,ftp,rlogin,rsh
的登录都会被记录到这些文件中.如果你正在hacking,把自己从这些记录中删除就是很重要的了.否则他们会:
a) 准确的发现你什么时候在搞hacking活动
b) 发现你从那个站点过来
c) 知道你在线的时间有多长,以便计算你给他们造成的损失
绝对不要删除这些log文件!!!那等于通知管理员:"嗨,你的机器上有个hacker!".找一个好程序来修改这些log.ZAP(或ZAP2)经常被认为是最好的但事实上它并不是.它只是简单的用0来填充用户上次登陆的数据段.CERT已经发布了一个简单的程序用来检查这些全零数据项.所以这样也会很容易就让人知道现在有个hacker在活动,这样你所有的工作就没有意义了.ZAP的另外一个缺陷是当它找不到那些log文件时,它并不报告.所以在编译之前必须先检查一下路径!你应该使用能改变记录内容的程序(象cloark2.c)或者能真正删掉记录的程序(象clear)
>> 译者注: THC提供的cleara.c ,clearb.c是非常好用的清除工具.可以清除utmp/utmpx,wtmp/wtmpx,修复lastlog让其仍然显示该用户的上次登录信息(而不是你登录的信息).如果你发现你登录后没有显示上次登录信息,那很可能你的机器,可能已经被人hack了,当然,即使显示正确的信息也未必就没有被hack.;-)
一般来说要修改log你必须是root(有些老版本系统例外,它们将utmp/wtmp设成允许所有人可写)但如果你不能得到root权限---你该怎么做呢?你应该rlogin到你现在所处的主机,以便在lastlog种增加一个不是那么惹人怀疑的数据项,它将在该用户下次登录时被显示,如果他看到"上次从localhost登录"的信息时也许不会怀疑.
>> 译者注:这也是没有办法的办法,换了我,我就会怀疑.;)
很多unix系统的login命令有一个bug.当你登录以后再执行一遍login命令时,它将用你当前的终端重写UTMP中的login from段(它显示你是从哪里来的!)那么这些log文件缺省在什么地方呢?
这依赖于不同的Unix版本.
UTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
WTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
LASTLOG : /usr/var/adm 或 /usr/adm 或 /var/adm 或 /var/log
在一些旧unix版本中lastlog数据被写到$HOME/.lastlog
* 5. 不要留下痕迹 *
我曾经碰到很多hacker,他们把自己从log里删除了.但他们忘记删掉他们在机器中留下的其他一些东西:在/tmp和$HOME中的文件Shell 记录一些shell会保留一个history文件(依赖于环境设置)记录你执行的命令.这对hacker来说确实是件很糟糕的事.最好的选择就是当你登录以后先启动一个新shell,然后在你的$HOME中查找历史纪录.
历史记录文件:
sh : .sh_history
csh : .history
ksh : .sh_history
bash: .bash_history
zsh : .history
>> 译者注:.*history是我最喜欢看的文件之一,通过它你可以了解root或用户常干些什么, 从而得知他们的水平如何,如果他们只会执行"ls","pwd","cp"...那说明水平不过尔尔,无须太担心.不过如果你发现root喜欢"find / -type f -perm -04000 -exec ls -a
l {} \;"," "vim /var/adm/messages","ps -aux( -elf) ","netstat -an"....那你就要小心一点了。
备份文件 :
dead.letter, *.bak, *
在你离开前执行一下"ls -altr"看看你有没有留下什么不该留下的东西.你可以敲4个csh命令,它能让你离开时删掉这些历史文件,不留下任何痕迹.
mv .logout save.1
echo rm .history>.logout
echo rm .logout>>.logout
echo mv save.1 .logout>>.logout
>> 译者注:对于bash,有一个简单的办法就是执行一下"HISTFILE=",就是不设置bash的历史文件,这样就不会有讨厌的.bash_history了.(准确地说,是不会往$HOME/.bash_history里写了)
>> 或者退出的时候简单的敲kill -9 0 ,它会杀掉这次登录后产生的所有进程,bash也不会往.bash_history里写
* 6. 你应当避免的事 *
不要在不属于你的机器上crack口令.如果你在别人(比如说一所大学)的机器上破解口令,一旦root发现了你的进程,并且检查它.那么不仅你hacking的帐号保不住了,可能连你得到的那passwd文件也没了.那学校将会密切注视你的一举一动...所以得到口令文件后应该在自己的机器上破解.你并不需要破解太多的帐号,能破出几个就够了.如果你运行攻击/检测程序象ypx,iss,satan或其他的exploiting程序,应当先改名再执行它们.或者你可以修改源码改变它们在进程列表中显示的名字...
>> 译者注:这并不难,你只要在main()中将argv[]用你喜欢显示的名字替代就可以了比如argv[0] ="in.telnetd",argv=""...(当然必须在程序已经从argv中读取了所需的参数之后).
如果某个细心的用户/root发现5个ypx程序在后台运行,他马上就会明白发生了什么.当然如果可能的话不要在命令行中输入参数.如果程序支持交互方式,象telnet.应当先敲"telnet",然后"o target.host.com"...这就不会在进程表中显示目标主机名.
>> 译者注:如果你用ftp,最好这样做:
>> $ ftp -n
>> $ ftp>o target.host
>> blahblah...(一些连接信息)
>> blahblah...(ftp server版本)
>> ftp>user xxx
>> ....
如果你hack了一个系统---不要在任何地方放suid shell!最好装一些后门象(ping,quota或者login),用fix来更正文件的atime和mtime.
>> 译者注: 放suid shell是很蠢的,非常容易被root发现.
IV. 高级技巧
----------------------------------------------------------------------
内容 : 1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
* 1. 前言 *
一旦你装了第一个sniffer开始你的hack生涯,你就应该知道并使用这些技巧!请运用这些技巧---否则你的hack之旅就行将结束.
* 2. 阻止任何跟踪 *
有时候你的hacking活动会被人发现.那并不是什么大问题 - 你hacked一些站点可能会被关掉,但谁管它呢,赶紧离开就是了.但如果他们试图跟踪你的来路(通常是为了抓住你)的话那就很危险了!
这一节将告诉你他们跟踪你的各种可能的方法以及你该如何应对.
* 通常对系统管理员来说发现一个hacker是从哪里来的并不是什么问题:检查log记录(如果那个hacker真的那么蠢的话);看看hacker安装的sniffer的输出记录(也许里面也记下了他的连接)或者其他系统记帐软件(象loginlog等等);甚至可以用netstat,显示所有已经建立的网络连接--如果那个hacker正在线的话,那他就被发现了.这就是为什么你需要一个gateway server(网关).
* 什么是gateway server?
它是你所"拥有"的很多服务器中的一个,你已经得到了它的root权限.你需要root权限去清除wtmp/lastlog/utmp等系统记录或者其他一些记帐软件的log文件.除此之外你不在这台机器上做任何其他的事(它只是个中转站).你应当定期更换gateway server,可以每隔1,2个星期更换一次,然后至少一个月内不再使用原来的gateway server.这样他们就很难跟踪到你的hacking server.
* hackin server - 所有活动的出发点你从这些机器开始hacking.Telnet(或者更好的:remsh/rsh)到一个gateway server,
然后再到一个目标机器.你需要有root权限以修改log.你必须每隔2-4个星期就更换hacking server..
* 你的堡垒/拨号主机.
这是个临界点.一但他们能跟踪回你拨号进入的机器,你就有麻烦了.只要打个电话给警察,再进行一次通信线路跟踪,你的hack活动就会成为历史了,也许是你的未来.在堡垒主机上你不需要得到root权限.既然你只是通过modem拨入,那里没有什么必须修改的记录.你应该每天用一个不同的帐号拨号进入,尽量用那些很少使用的.你应该找到至少2个你能拨号进去堡垒主机,每隔1-2个
月更换一次.
>> 译者注:我对phreak不熟.我猜大部分的国内hacker还没什么本事能躲过电信局的跟踪.所以最好不要用别人的帐号上网,特别是那些很少上网的帐号,一旦他发现上网费用剧增,肯定会让电信局追查的,到时候你就大难临头了.如果你用那些上网频繁的人的帐号,他反倒不会注意,只会以为这个月上的太厉害了.:-)(这绝对没有鼓励你盗用别人帐号的意思,这等于盗窃,凭什么你
上网要别人交钱?就凭你会用john破几个口令吗?hacker的名声就是让这些打着hacker旗号的无耻之徒败坏的.对这种人就得抓!所以我对这样的phreaker没有什么好感,你要真有本事,就别嫁祸别人,而且还要让电信局查不出来.) 说多了,咱们言归正传.
注意: 如果你能每天拨入不同的系统(比如通过"蓝盒子"),那你就不需要那些hacking server了.
* 使用蓝盒子,这样即使他们跟踪到你的堡垒主机,也不能(至少是不能很容易地)追踪到你的电话...使用蓝盒子必须小心,德国和美国的电话公司有专门的监视系统来追踪使用蓝盒子的人...
使用一个中间系统来传送你的电话将会使跟踪更加困难, 但是同样由于你使用一个pbx或其他的什么东西, 仍使你处于被抓的危险中. 这取决于你.
注意在丹麦所有的电话数据均被记录!即使在你打完电话10年后,他们仍然能证明你曾登录过他们的拨号系统从事hack活动...
- 其他的
如果你想运行satan,iss,ypx,nfs文件句柄猜测程序..你应当使用一个专门的服务器来完成.不要用这个服务器telnet/rlogin到目标服务器,只是用它来进行检测.
有些程序可以bind到一个特殊端口,当一个指定到该端口的连接建立的时候,它自动打开一个连接连到另外一个服务器的某个端口(有些就模拟一个shell,你可以从这个socket daemon中"telnet"到其他机器).使用这种程序你不会被记录(防火墙log除外).有很多程序可以帮你完
成上述功能.
>> 译者注:这种程序我常用的有datapipe.c,telbounc.c,还是很好用的.它就象是个代理服务器,但是不会有记录.:)
如果可能的话,hacking server或者gateway server应该在国外!因为如果你的入侵被发现,当发现你来自国外的主机时,大多数网管都会放弃追查.即使是警察要通过不同的国家追踪你,这也至少可以拖延2-10个星期的时间...
#下面是hack过程的简图,也许对你有些帮助;-)
+-------+ ~---------------> +-------------+ +-----------+
|+-----+| > > | | | |
||本机 || --> > 安全拨号线路 > --> | 堡垒主机 | --> | hacki
ng |
|+-----+| > > | (至少有3个) | | server |
+-------+ ~---------------> +-------------+ +-----------+
|
|
v
+-----------------+ +--------+ +-----------+
| | | | | |
| 内部网络中的主机| ... <-- ... |目标主机| <-- | gateway | | | | | | server | +-----------------+ +--------+ +-----------+ * 3. 找到并处理所有的LOG文件 * 找到所有的logfiles是很重要的---即使他们被隐藏.要找到它们有两种可 能的方法: 1)找到所有打开的文件. 既然所有的log必须写到某个地方去,所以用可以用LSOF(LiSt Open Files)程序 去检查所有打开的文件,必要的话就得修改它们.>> 译者注:lsof由Vic Abell 编写,用来提供被进程打开的文件的信息,
>> 它的最新版本可以在ftp://vic.cc.purdue.edu/pub/tools/unix/lsof下找到.有趣的是,不久前有人发现lsof4.40以前的版本中存在buffer overflow问题,可以取得root权限.:-)
2) 搜索所有在你登录后有变化的文件在你登录后,执行"touch /tmp/check",然后可以干你的活.最后只要执行"find / -newer /tmp/check -print",并检查找到的文件,如果其中有记帐文件,就应该修改它.注意不是所有版本的find都支持 -newer 参数.你也可以用"find / -ctime 0
-print" 或者 "find / -cmin 0 -print"来查找它们.
>> 译者注:我更喜欢用-exec ls -l {} \;来代替-print,因为这可以列出比较详细的信息. 注意上述方法主要是针对系统记帐软件的,它可能会记录你执行的命令.对于只记录login信息的软件,它在你看到shell提示符以前就已经完成记录了.所以用这种检查是查不出来的.
检查你找到的所有的logfiles.它们一般在/usr/adm,/var/adm或者/var/log,/var/run
.
如果它们被记录到@loghost,那你可能就有点麻烦了.你需要hack那台loghost主机去修改log...
>> 译者注:一般单纯用作loghost的机器比较难hack,因为它往往关掉了几乎所有端口,并且只
允许从控制台登录.对于这样的机器,可以用DoS攻击使之瘫痪,从而失去log功能.(要hack往往比较难,要crash it则相对容易一些.;-)当然,本次登陆的记录仍然会被保存下来.
为了处理logs,你可以用"grep -v"或者用wc统计行数后,再用"tail -10 log"察看最后10行
,或者用编辑器vi,emcas.
>> 译者注:如果你从a.b.c来,你可以用grep -v "a.b.c" logfile>logtemp;mv logtemp logfile;来清除所有含有a.b.c的行.如果log文件比较大,你也可以用vim来编辑.注意这只能用来修改文本文件!!!对二进制文件的修改可能导致文件格式被破坏!!!
如果数据文件是二进制格式的,你应当首先查明它是由什么软件产生的,然后设法找到该软件的源码,分析记录项的结构,自己编程修改记录.(可以利用现成的程序加以修改,比如Zap,clear
cloak...).
如果系统安装了accounting软件.你可以用zhart写的acct-clener---它非常有效!
如果你必须修改wtmp,但系统又不能编译源程序也没有perl....你可以这样做,先uuencode
wtmp,然后运行vi,移动到最后一行,删除最后以"M"开头的4行...然后保存退出.uudecode
.然后最后5个wtmp记录项就被删除了.;-) 注意这只在SCO unix下有效,linux下是不行的.
>> 译者注:我没有验证这个,因为没有SCO服务器.如果你要这么做,记得要先做个wtmp的备份.
如果系统用wtmpx和utmpx,那你又有麻烦了..迄今我还不知道有哪个cleaner程序可以处理它们.你不得不自己编一个程序来完成工作.
>> 译者注:wtmpx和utmpx结构与wtmp和utmp类似,只要将清除utmp和wtmp的软件略加修改就可
>> 以了.而且现在已经不少现成的程序可以修改utmpx/wtmpx了.
* 4. 检查SYSLOG配置和记录 *
大部分程序都用syslog函数来记录它们需要的所有东西.因而检查syslogd的配置文件是很重要的.这个配置文件是/etc/syslog.conf - 我不会告诉你它的格式是什么/每一项是什么意思
,
自己去读它的man页.
对你来说重要的syslog类型是kern.*,auth.*和authpriv.*.看看它们被写到哪里了,如果写到文件里还可以修改.如果被转发到其他主机,你必须也要hack它们.如果消息被发给某个用户,tty或者控制台.你能耍点小花招发很多个假消息象"echo 17:04 12-05-85 kernelsendmail[243]: can't resolve bla.bla.com > /dev/console"(或其他你想flood的的设备),让它卷屏,以隐藏你引发的信息.这些log文件是非常非常重要的!检查它们!
* 5. 检查已经安装的安全程序 *
很多注重安全的站点都通过cron运行安全检查程序.crontabs通常在/var/spool/cron/crontabs.检查里面所有的文件,特别是"root"文件,检查它里面都运行了什么程序.用"crontab -l root"可以快速的检查root crontab的内容.
这些安全工具往往装在管理员的目录下比如~/bin.
这些检查软件可能是 tiger, cops, spi, tripwire, l5,binaudit, hobgoblin, s3 等等...
你必须检查它们都报告了些什么东西,看它们是否报告了一些显示出你入侵迹象的东西.如果是的话,你可以 - 更新软件的数据文件,是它们不再报告这种类型的消息.
- 可以重新编程或修改该软件使它们不再产生报告.
- 如果可能的话,删除你安装的后门或其他程序,并试着用其他的方法来完成。
* 6. 检查系统管理员 *
对你来说了解系统管理员采取了那些安全措施是非常重要的.因此你需要知道他们经常使用哪些
普通用户帐号.你可以检查root的.forward文件和alias内容.看看sulog文件,注意那些成功su成root的用户.检查group文件中的wheel和admin组(或者其他任何与管理员相关的组).你也可以
在passwd文件中查找admin,也许你又能找到一个管理员帐号.现在你应该已经知道这台机器上谁是管理员了.进入他们的目录(如果系统不允许root读所有的文件,用chid.c或者changeid.c将自己的uid变成该用户的),检查他们的.history/.sh_history/.bash_history文件看看他们经常执行什么命令.也应当检查他们的.profile/.login/.bash_profile文件看看里面都设置了什么alias,是否执行了什么自动安全检查或logging程序.也检查他们的~/bin目录!大多数情况下被编译的安全程序被放到那里面!当然也要看一下他们的每一个目录(ls -alR ~/).如果你找到任何与安全有关的东西,请读5小节以设法绕过它们的安全保护.
* 7. 怎样修正checksum检查软件 *
一些管理员真得很怕hacker所以装了一些软件来检查二进制文件.如果一个二进制文件被改动了,下次管理员做二进制检查的时候,它将被检测到.那么你怎么找到是否系统安装了这样的程序,又怎样修改它们以便你能植入你的木马程序呢?
注意有很多的二进制检查程序,而且要写一个也真是非常容易(15分钟就够了),你可以用一个
小的script完成这个工作.所以如果这样的软件被安装的话要找到它们是比较困难的.注意
有些常用安全检查程序也提供这样的检查.下面是一些应用得很广泛的软件:
软件名 标准路径 二进制文件名
tripwire : /usr/adm/tcheck, /usr/local/adm/tcheck : databases, tri
pwir
e
binaudit : /usr/local/adm/audit : auditscan
hobgoblin : ~user/bin : hobgoblin
raudit : ~user/bin : raudit.pl
l5 : 编译所在目录 : l5
你要明白有很多种可能!这软件或数据库甚至可能放在一个正常情况下不被mount的盘上或者在其他主机export的NFS分区上.也可能checksum数据库是储存在一个写保护的介质上的.各种可能性都有!但一般情况下你只要检查上述软件是否被安装就可以了,如果没有的话,你就可以改变某些二进制文件.如果你没有找到那些软件,但你又知道这是一个进行了完善安全保护的站点的话,你就不应该改变二进制文件!它们(二进制检查软件)肯定被藏在什么地方了.
如果你发现了这种软件被安装并且你可以修改它们(比如不是放在只读介质上,或者可以通过一些办法绕过限制 - 比如umount该盘然后重新mount成可写的)的话,你该怎么做呢?你有两种选择:首先你可以只检查软件的参数,然后对已经修改过的二进制文件执行一次"update"检查.比如用tripwire的话你可以执行" tripwire -update /bin/target ".第二种办法是你可以编辑要被检查的二进制文件名单 - 从中删除你改动过的二进制文件名.注意你也应当看看是不是连数据库文件自身也会被检查!如果是的话 - 先update再删除数据库文件名.
* 8. 注意某些用户的安全陷阱(诡计?) *
这种情况较少发生,这里提出来主要是为了讨论的更完全.一些用户(可能是管理员或者hacker)通常不象他自己的帐户被别人使用.所以他们有时候会在他们的启动文件里采取一点安全措施.
所以要检查所有的以"."开头的文件(.profile,.cshrc,.login,.logout 等等),看看他们执行了什么命令,记录了些什么东西,以及他们的搜索路径是怎么摄制的.如果某个目录(比如HOME/bin)出现在/bin的前面,你就应该检查一下那个目录的内容了...也许里面装了个程序"ls"或者"w",它会先记录被执行的时间然后再执行真正的程序也许还有些程序用来自动检查wtmp和lastlog文件是否被zap处理过,检查.rhosts,.Xauthority文件,或是否有sniffer正在运行...千万不要使用一个unix高手的帐号!
* 9. 其他 *
最后,在讨论受怀疑或被捕的话题之前,还有一些其他的事情值得引起注意.老的telnet client会export USER变量.一个了解这一点的系统管理员可以编辑telnetd,从而得到所有(通过telnet登录进来的)用户名.一旦他注意到你,他就可以很容易的得知你是从(远方主机的)哪个帐号hack进来的.新的client(客户端程序)已经解决了了这一问题 -但是一个聪明的管理员仍然可以得到其他的信息以鉴别用户:UID,MAIL,HOME变量,这些变量仍然被export,这就可以很容易得鉴别 hacker使用的是哪个帐户.因此在你进行telnet前,记得要改变USER,UID,MAIL和HOME变量,如果你正处在home目录下的话也许甚至要改变PWD变量.
在HP Unix(版本低于v10)中你可以建立隐藏目录.我不是说那些以"."开头的目录而是一些有特殊标志的目录.HP在v9版推出了它,但从v10版本以后就去除了(因为只有hacker才是用它 ;-).
如果你执行"chmod +H directory",则directory目录就不能用"ls -al"列出.为了看这个隐藏目录,你需要为ls增加 -H 参数,例如:"ls -alH".
无论什么时候,当你需要改变文件的日期时,记住你能用"touch"命令设置atime和mtime.你只能通过直接的硬盘读写来设置ctime.
如果你在一个重要系统中安装了sniffer,一定要加密sniffer的输出或者让sniffer通过icmp或者udp将所有被截获的数据发送到一个由你控制的外部主机.为什么要这样做?因为这样即使管理员发现了sniffer(通过cpm或其他检查sniffer存在的程序),他们也不能从sniffer log中得知哪些东西被sniff了,所以他也不能即使提醒正被你sniff的主机.
V. 当你被怀疑时...
----------------------------------------------------------------------
一旦你受到怀疑(被警察或是系统管理员)你应该采取些特别的行动是他们不能得到不利你的
证据.
注意 : 如果系统管理员认为你是个hacker,你就是有罪的直到你被证明是无辜的!这些管理员根本不理会什么法律(有时候我认为hacker与管理员的不同仅仅在于那台计算机属于管理员而已).当他们认为你是个hacker的时候,你就是有罪的,没有律师为你辩护.他们会监视你,你的邮件,文件,甚至记录你的键盘(如果他们够利害的话).当警察被牵扯进来的时候,你的电话线也可能被监听,搜捕行动也许跟着就来了.
如果你注意到你正受到怀疑,一定要保持低调!不要采取任何攻击性行动!最好是等上至少1到2个月,什么都不做.警告你的朋友不要给你发任何邮件,或者只发一些正常的/无害的邮件.如果你突然采用PGP加密邮件,这会提醒正在监视的警察和管理员---你发现他们的监视了.切断与
hacking有关的联系,写点儿文章或者编编程序,一直等到一切都过去.及主要加密你的敏感数
据,销毁所有记有帐号数据,电话号码等等的纸张.当警察搜捕你的时候,那些东西是他们要找的
最重要的东西.
VI. 被捕
----------------------------------------------------------------------
Note that this small chapter covers only the ethics and basics and
hasn't got any references to current laws - because they are different
for every country.
Now we talking about the stuff you should/shouldn't do once the feds
visited you. There are two *very* important things you have to do :
1) GET A LAWYER IMMEDEANTELY !
The lawyer should phone the judge and appeal against the search
warrant. This doesn't help much but may hinder them in their work.
The lawyer should tell you everything you need to know what the
feds are allowed to do and what not.
The lawyer should write a letter to the district attorney and/or
police to request the computers back as fast as possible because
they are urgently needed to do business etc.
As you can see it is very useful to have got a lawyer already
by hand instead of searching for one after the raid.
2) NEVER TALK TO THE COPS !
The feds can't promise you anything. If they tell you, you'll get
away if you talk, don't trust them! Only the district attorney
has got the power to do this. The cops just want to get all
information possible. So if you tell them anything they'll have
got more information from and against you.
You should *always* refuse to give evidence - tell them that you
will only talk with them via your lawyer.
Then you should make a plan with your lawyer how to get you out of this
shit and reduce the damage.
But please keep in mind : don't betray your friends. Don't tell them
any secrets. Don't blow up the scene.
If you do, that's a boomerang : the guys & scene will be very angry
and do revenge, and those guys who'll be caught because of your
evidence will also talk ... and give the cops more information about
*your* crimes!
Note also that once you are caught you get blamed for everything which
happened on that site. If you (or your lawyer) can show them that they
don't have got evidences against you for all those cases they might
have trouble to keep the picture of that "evil hacker" they'll try to
paint about you at the court. If you can even prove that you couldn't
do some of the crimes they accuse you for then your chances are even
better. When the judge sees that false accuses are made he'll suspect
that there could be more false ones and will become distrusted against
the bad prepared charges against you.
I get often asked if the feds/judge can force you to give up your
passwords for PGP, encrypted files and/or harddisks.
That's different for every country. Check out if they could force you
to open your locked safe.
If that's the case you should hide the fact that you are crypting your
data! Talk with your lawyer if it's better for you to stand against
the direction to give out the password - maybe they'd get evidences
which could you get into jail for many years.
(For german guys : THC-MAG #4 will have got an article about the german
law, as far as it concerns hacking and phreaking - that article will
be of course checked by a lawyer to be correct. Note that #4 will only
discuss germany and hence will be in the german language.
But non-germans, keep ya head up, this will be the first and last german
only magazine release ;-)
>>译者注:这一节是讲述了如果被捕,应当做些什么.由于我们的法律和西方不同,所以我就不翻了.有兴趣的可以自己看一看.主要的两点就是:1.马上找到一个律师为你处理这一切.2.不要告诉警察任何东西,也不要出卖其他人.
VII. 有用的程序
----------------------------------------------------------------------
这里有一个你应该找到并使用的程序列表.不要给我发email问我在哪里找到它们 - 自己到
hacker世界中去找!我只列出了最好的log编辑程序(见III-4和IV-3).其他有趣的程序还有telnet重定向程序(见IV-2),但这种程序有很多,大部分只能在1-3种unix类型下编译,所以列表没什么用.
先节是以下几个术语:
改变 - 将logfile中的域改成你喜欢的任意内容
删除 - 删除你要求的记录项
编辑 - 真正的logfile编辑器.
重写 - 只用0字节来重写记录.
不要用这样的软件(e.g. zap) - 它能被检测到!
LOG 修改器
ah-1_0b.tar 改变记帐信息的记录
clear.c 删除utmp,wtmp,lastlog和wtmpx中的记录
cloak2.c 改变utmp,wtmp和lastlog中的记录.
invisible.c 用预设值重写utmp,wtmp和lastlog
所以它比zap更好.注意看,有好多inv*.c!
marryv11.c 编辑utmp, wtmp, lastlog 和 accounting 数据 - 最好的!
wzap.c 删除wtmp中的记录
wtmped.c 删除wtmp中的记录
zap.c 重写utmp, wtmp, lastlog - 不要用它!它会被检测到!
防止ASP木马在服务器上运行
[ 2007-03-25 03:31:11 | 作者: sun ]
如果您的服务器正在受ASP木马的困扰,那么希望这篇文章能帮您解决您所面临的问题。
目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。
一、使用FileSystemObject组件
FileSystemObject可以对文件进行常规操作
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/Scripting.FileSystemObject/改名为其它的名字,如:改为FileSystemObject_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/Scripting.FileSystemObject/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
注销此组件命令:RegSvr32 /u C:/WINNT/SYSTEM32/scrrun.dll
禁止Guest用户使用scrrun.dll来防止调用此组件。
使用命令:cacls C:/WINNT/system32/scrrun.dll /e /d guests
二、使用WScript.Shell组件
WScript.Shell可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/WScript.Shell/及HKEY_CLASSES_ROOT/WScript.Shell.1/改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/WScript.Shell/CLSID/项目的值
HKEY_CLASSES_ROOT/WScript.Shell.1/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
三、使用Shell.Application组件
Shell.Application可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/Shell.Application/
及HKEY_CLASSES_ROOT/Shell.Application.1/
改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/Shell.Application/CLSID/项目的值
HKEY_CLASSES_ROOT/Shell.Application/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
禁止Guest用户使用shell32.dll来防止调用此组件。
使用命令:cacls C:/WINNT/system32/shell32.dll /e /d guests
注:操作均需要重新启动WEB服务后才会生效。
四、调用Cmd.exe
禁用Guests组用户调用cmd.exe
cacls C:/WINNT/system32/Cmd.exe /e /d guests
通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。
目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。
一、使用FileSystemObject组件
FileSystemObject可以对文件进行常规操作
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/Scripting.FileSystemObject/改名为其它的名字,如:改为FileSystemObject_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/Scripting.FileSystemObject/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
注销此组件命令:RegSvr32 /u C:/WINNT/SYSTEM32/scrrun.dll
禁止Guest用户使用scrrun.dll来防止调用此组件。
使用命令:cacls C:/WINNT/system32/scrrun.dll /e /d guests
二、使用WScript.Shell组件
WScript.Shell可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/WScript.Shell/及HKEY_CLASSES_ROOT/WScript.Shell.1/改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/WScript.Shell/CLSID/项目的值
HKEY_CLASSES_ROOT/WScript.Shell.1/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
三、使用Shell.Application组件
Shell.Application可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT/Shell.Application/
及HKEY_CLASSES_ROOT/Shell.Application.1/
改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT/Shell.Application/CLSID/项目的值
HKEY_CLASSES_ROOT/Shell.Application/CLSID/项目的值
也可以将其删除,来防止此类木马的危害。
禁止Guest用户使用shell32.dll来防止调用此组件。
使用命令:cacls C:/WINNT/system32/shell32.dll /e /d guests
注:操作均需要重新启动WEB服务后才会生效。
四、调用Cmd.exe
禁用Guests组用户调用cmd.exe
cacls C:/WINNT/system32/Cmd.exe /e /d guests
通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。
十分钟看懂360系统诊断日志
[ 2007-03-25 03:30:59 | 作者: sun ]
写在前面
当确定一个系统可能存在问题的时候,首先要做的,就是找出系统的问题所在,这个时候我们就需要来“看懂”系统诊断日志,找出原因所在,然后再来做相应清除。虽然现在有很多的流氓清除软件,但跟杀毒软件一样,他们永远是跟着流氓软件后面在奔跑,当这个流氓是一个新出来的时候,必须要经过以下步骤:
厂商拿到样本——>分析——>加入特征码/病毒行为——>更新病毒特征库——用户下载——>查杀成功
所以有时不得以,我们需要自己来诊断一下,当然,这个诊断远没有想象的那么难。目前比较常用的诊断工具有Hijackthis,360safe,SRENG等几个软件。360safe经过几次升级,借鉴了Hijackthis的日志项,目前已经做得很完善了。本篇文章最早2006/10/10发于360官方的紧急救援区并长期置顶,今天把它拿过来,作为对我的BLOG的一个补充。
很多网络新手对于360的扫描日志看不懂,或者看了之后不知道怎么处理,请花5分钟来了解一下,比你发了日志等待别人来解答强,要他救,更要自救。其实很多作很简单的:
使用方法:
确定可疑项——文件粉碎器删除相应文件——重启——用360修复注册表残留值
以下面这篇贴子为例:
http://bbs.360safe.com/viewthread.php?tid=11221&extra=page%3D1
这个日志其实最主要看6项:
02,浏览器辅助对象★★★★★
这个是最需要关注的重点之一。浏览器辅助对象(BHO),本来是IE提供其它程序扩展浏览器的功能所开放的接口,在浏览器启动的时候,自动加载。这个是几乎所有流氓广告软件的“兵家必争之地”。一般情况下,它可能有很多个,如:
O2-BHNTIECatcherClass-{C56CB6B0-0D96-11D6-8C65-B2868B609932}-C:\ProgramFiles\Xi\NetTransport2\NTIEHelper.dll
在这一项中,我们一般看最后面一行,那个.dll文件的位置,这里是C:\ProgramFiles\Xi\NetTransport2\NTIEHelper.dll就是这个ie模块对应的文件,从对应文件目录或者文件名上我们可以分辨这个模块到底是干什么用的—NetTransport是下载工具影音传送带,那么这一项就应该没问题。
如果你看到这个目录不认识,那就需要注意了。尤其注意这个.dll是位于temp目录或者windows/system32目录下,那就基本可以肯定是有问题的了,如示例文章的日志中,这两个都有肯定有问题的:
O2-未知-BH(ShowBarExClass)-[cn5940barModule]-{15953528-6C01-481A-8DB4-01888FB85B7D}-C:\WINDOWS\system32\CN5940~1.DLL
O2-未知-BH(IPCUSmartLinkClass)-[MicrosoftInternetExplorerExtension]-{A5352191-32C0-4EDB-B265-382F576C32FF}-C:\WINDOWS\system32\IPCUHelper2.dll
处理建议:
方法一:在360里——修复——全面诊断——浏览器辅助对象,选中之后进行修复。可以多试几次。
方法二:用Autoruns或者hijackthis这两个工具(www.nslog.cn)
04,自启动项★★★★★
历来自启动项是所有木马/病毒/流氓软件的“兵家必争之地”。当一个流氓软件入侵和被安装到用户机器之后,必然要想办法让用户下次启动计算机的时候,自身还可以运行。方法有多种,放到自启动是最常用最根本的一招。Windows的自启动有十多个地方,常用的如注册表、INI文件,启动组等。Hijackthis会把所有的自启动列出来。包括名称和运行的文件名。
如示例文章中的这个,一共有六项都有问题:
O4-高危险-HKLM\..\Run:[SoundMam][怀疑为恶意程序或病毒,请使用杀毒软件进行查杀。]C:\WINDOWS\system32\SVOHOST.exe
O4-未知-HKLM\..\Run:[IEUpdates][]C:\WINDOWS\system32\Updates.exe
O4-未知-HKCU\..\Run:[updatereal][]C:\WINDOWS\realupdate.exeother
O4-未知-HKCU\..\Run:[daemon][Microsoft基础类应用程序]C:\WINDOWS\daemon.exe
O4-未知-HKCU\..\Run:[wow][]C:\WINDOWS\system32\Launcher.exe
O4-未知-HKCU\..\Run:[zz][]C:\WINDOWS\system32\intenet.exe
O4-高危险-HKCU\..\Run:[rx][疑为恶意程序或病毒。]C:\WINDOWS\system32\explore.exe
处理建议:
对于一般用户,我给出的建议是除了C:\windows\system32\ctfmon.exe这个输入法指示器,其它的除非你知道是自己安装的程序如(C:\programfiles\tencent\qq\qq.exe),其它的一律删除。
如果修复了,它又偷偷出现,那么基本就肯定有问题(一般流氓软件都会有这种自我修复、保护的功能)。对应怀疑是流氓软件的,相应的.exe也要先删除了。
360里——修复——启动项,选中后进行修复,可以多做几次。
023,系统服务★★★★
系统服务是另外一个流氓软件越来越重视的地方。一般Windows系统的服务在这里不会显示出来。只有第三方安装的服务才会显示出来。所有显示的,都需要留心。
如示例文章中的三项都有问题:
O23-未知-Service:NetSys[管理系统网络连接,您可以查看系统网络连接。]-C:\WINDOWS\system32\NetSys.exe
O23-未知-Service:NetWorkLogon[支持网络上计算机远程登陆事件。如果此服务被停用,网络登陆将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。]-rundll32.exe
O23-未知-Service:NetWorkLogons[支持网络上计算机远程登陆事件。如果此服务被停用,网络登陆将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。]-rundll32.exe
处理建议:
如果知道是自己安装的如MySQL,Apahce这类可以不管,其它的服务一般会冒充,起一个类似于很象正常的名字,如Windowsupdatas,NTServices,等。我的建议是所有你不清楚的,全部删掉。尤其.exe的可执行路径位于windows,System32目录下的。(system32目录下的rundll32.exe除外,这个.exe文件不要删除,直接把服务删除便可)
360里——修复——系统服务,选中后进行修复,可以多做几次。
也可以在CMD窗口(开始——运行——cmd.exe)下输入:
scdelete"服务名"来删除一个服务。
[b]——如果360修复之后它又出现了,那么便先用顽固文件删除工具把相应的.exe给删除掉(见置底的),重启一下,然后再修复。
010,WinsockLSP“浏览器绑架”
这个是近来新出现的“相当”有恶意的流氓软件形径,如果用户把相关的文件删掉,会造成用户计算机无法访问网络!
LSP全称为“WindowsSocketLayeredServiceProvider”(分层服务提供商),这是Winsock2.0才有的功能。通俗一点来说,它是Windows所有底层网络Socket通信需要经过的一个大门。而流氓软件在这个地方把自己的软件加进去了,这样就可以截取所有用户访问网络的数据包,可以针对性地投放广告,获取用户访问习惯——想一想,当你访问一个网络的时候,所有数据都被一只大眼睛盯着看,是什么感觉?而当用户如果不清楚删除这个.dll文件,那么就会造成用户不能访问网络。
如示例中有问题的:
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
(正确的应该是system32\mswsock.dll和rsvpsp.dll这两个。)
处理建议:
方法一:先删除对应的.dll文件,然后在360里——修复——修复LSP连接。
方法二:先删除对应的.dll文件,然后下载Lsp-fix( http://www.cexx.org/lspfix.htm )这个工具
方法三:先删除对应的.dll文件,然后重装TCP/IP协议:
http://hi.baidu.com/nslog/blog/item/c478d5f942b94359242df26f.html
*****************************************************************************************
以下为360卫士2.0以后版本新增加的,对系统诊断也很有帮助,只建议高级用户诊断使用:
2006年12月20更新
*****************************************************************************************
040,系统进程加载项
现在有一些流氓软件升级之后,不是通过BHO或者Services来加载,没有一个独立的可执行程序,那样很容易被发觉。它们就通过注入到系统进程空间(如exploer.exe资源管理器),把自己变为正常系统的一部分,这样只要你开了资源管理器,它就在后台运行着了。如下面的:
O40-Explorer.EXE--C:\WINDOWS\system32\dllwm.dll--55125f396efcc0ce7e3f4522669d8cdb
O40-Explorer.EXE--C:\WINDOWS\system32\dms.dll--d2b55c379eeabef0b8925dc8e9a1a58e
360会显示所有没有经常Windows签名的.dll文件,即非微软官方的,这些都是可疑的以及重点查处的对象(当然,不是说100%有问题)
处理建议:
必须要
删除对应的.dll文件,删除办法有几种:
1、用文件粉碎器
2、用unlocker
3、试着到安全模式下删除
041,系统驱动
系统驱动是Windows系统最底层的,它没有进程,没有可执行文件,是通过在drivers目录下的.sys文件来体现。也是所有流氓软件用得最高的一招,象前段时间流行的MY123,飘雪以及几个大流氓:CNNIC,MyIEHelper等,因为采取种种保护策略,所以一般用户很难处理,如下面这个:
O41-csysiymq-csysiymq-C:\WINDOWS\system32\drivers\csysiymq.sys-(running)---
.O41-dtscsi-dtscsi-C:\WINDOWS\system32\drivers\dtscsi.sys-(running)---
O41-IBMPMDRV-IBMPMDRV-C:\WINDOWS\system32\drivers\ibmpmdrv.sys-(running)---7514f26bd730a23b4dcd0f51cd007add
360会显示所有没有经过Windows签名的驱动文件作为分析参考的依据,同样的道理,这里面也有非常多的其它正常软件,如瑞星,卡巴等,这里的处理要求高一点,需要有一定的经验。如果上面几项都处理完了,还有主页被改,弹窗口等现象,就需要考察这里了。
处理建议:
必须要
删除对应的.sys文件,删除办法有几种:
1、用文件粉碎器
2、用unlocker
3、试着到安全模式下删除
以上所有修复不成功的,一般都流氓软件有自我保护功能,可以用下面的办法:
1、用顽固文件删除工具,请参考:
http://bbs.360safe.com/viewthread.php?tid=9432&extra=page%3D1
2、找出流氓软件的驱动保护:
http://hi.baidu.com/nslog/blog/item/c08cbefb2c6b5c224f4aea91.html
其它参考:
360safe安全卫士下载
http://www.360safe.com
Hijackthis浏览器劫持日志精解
http://hi.baidu.com/nslog/blog/item/b208922f52cb04381e30895f.html
清除流氓软件的第一利器(IceSword)
http://hi.baidu.com/nslog/blog/item/14bc35dbac337866d1164e21.html
WinXP/2000/2003下如何重装TCP/IP协议
http://hi.baidu.com/nslog/blog/item/c478d5f942b94359242df26f.html [/b]
当确定一个系统可能存在问题的时候,首先要做的,就是找出系统的问题所在,这个时候我们就需要来“看懂”系统诊断日志,找出原因所在,然后再来做相应清除。虽然现在有很多的流氓清除软件,但跟杀毒软件一样,他们永远是跟着流氓软件后面在奔跑,当这个流氓是一个新出来的时候,必须要经过以下步骤:
厂商拿到样本——>分析——>加入特征码/病毒行为——>更新病毒特征库——用户下载——>查杀成功
所以有时不得以,我们需要自己来诊断一下,当然,这个诊断远没有想象的那么难。目前比较常用的诊断工具有Hijackthis,360safe,SRENG等几个软件。360safe经过几次升级,借鉴了Hijackthis的日志项,目前已经做得很完善了。本篇文章最早2006/10/10发于360官方的紧急救援区并长期置顶,今天把它拿过来,作为对我的BLOG的一个补充。
很多网络新手对于360的扫描日志看不懂,或者看了之后不知道怎么处理,请花5分钟来了解一下,比你发了日志等待别人来解答强,要他救,更要自救。其实很多作很简单的:
使用方法:
确定可疑项——文件粉碎器删除相应文件——重启——用360修复注册表残留值
以下面这篇贴子为例:
http://bbs.360safe.com/viewthread.php?tid=11221&extra=page%3D1
这个日志其实最主要看6项:
02,浏览器辅助对象★★★★★
这个是最需要关注的重点之一。浏览器辅助对象(BHO),本来是IE提供其它程序扩展浏览器的功能所开放的接口,在浏览器启动的时候,自动加载。这个是几乎所有流氓广告软件的“兵家必争之地”。一般情况下,它可能有很多个,如:
O2-BHNTIECatcherClass-{C56CB6B0-0D96-11D6-8C65-B2868B609932}-C:\ProgramFiles\Xi\NetTransport2\NTIEHelper.dll
在这一项中,我们一般看最后面一行,那个.dll文件的位置,这里是C:\ProgramFiles\Xi\NetTransport2\NTIEHelper.dll就是这个ie模块对应的文件,从对应文件目录或者文件名上我们可以分辨这个模块到底是干什么用的—NetTransport是下载工具影音传送带,那么这一项就应该没问题。
如果你看到这个目录不认识,那就需要注意了。尤其注意这个.dll是位于temp目录或者windows/system32目录下,那就基本可以肯定是有问题的了,如示例文章的日志中,这两个都有肯定有问题的:
O2-未知-BH(ShowBarExClass)-[cn5940barModule]-{15953528-6C01-481A-8DB4-01888FB85B7D}-C:\WINDOWS\system32\CN5940~1.DLL
O2-未知-BH(IPCUSmartLinkClass)-[MicrosoftInternetExplorerExtension]-{A5352191-32C0-4EDB-B265-382F576C32FF}-C:\WINDOWS\system32\IPCUHelper2.dll
处理建议:
方法一:在360里——修复——全面诊断——浏览器辅助对象,选中之后进行修复。可以多试几次。
方法二:用Autoruns或者hijackthis这两个工具(www.nslog.cn)
04,自启动项★★★★★
历来自启动项是所有木马/病毒/流氓软件的“兵家必争之地”。当一个流氓软件入侵和被安装到用户机器之后,必然要想办法让用户下次启动计算机的时候,自身还可以运行。方法有多种,放到自启动是最常用最根本的一招。Windows的自启动有十多个地方,常用的如注册表、INI文件,启动组等。Hijackthis会把所有的自启动列出来。包括名称和运行的文件名。
如示例文章中的这个,一共有六项都有问题:
O4-高危险-HKLM\..\Run:[SoundMam][怀疑为恶意程序或病毒,请使用杀毒软件进行查杀。]C:\WINDOWS\system32\SVOHOST.exe
O4-未知-HKLM\..\Run:[IEUpdates][]C:\WINDOWS\system32\Updates.exe
O4-未知-HKCU\..\Run:[updatereal][]C:\WINDOWS\realupdate.exeother
O4-未知-HKCU\..\Run:[daemon][Microsoft基础类应用程序]C:\WINDOWS\daemon.exe
O4-未知-HKCU\..\Run:[wow][]C:\WINDOWS\system32\Launcher.exe
O4-未知-HKCU\..\Run:[zz][]C:\WINDOWS\system32\intenet.exe
O4-高危险-HKCU\..\Run:[rx][疑为恶意程序或病毒。]C:\WINDOWS\system32\explore.exe
处理建议:
对于一般用户,我给出的建议是除了C:\windows\system32\ctfmon.exe这个输入法指示器,其它的除非你知道是自己安装的程序如(C:\programfiles\tencent\qq\qq.exe),其它的一律删除。
如果修复了,它又偷偷出现,那么基本就肯定有问题(一般流氓软件都会有这种自我修复、保护的功能)。对应怀疑是流氓软件的,相应的.exe也要先删除了。
360里——修复——启动项,选中后进行修复,可以多做几次。
023,系统服务★★★★
系统服务是另外一个流氓软件越来越重视的地方。一般Windows系统的服务在这里不会显示出来。只有第三方安装的服务才会显示出来。所有显示的,都需要留心。
如示例文章中的三项都有问题:
O23-未知-Service:NetSys[管理系统网络连接,您可以查看系统网络连接。]-C:\WINDOWS\system32\NetSys.exe
O23-未知-Service:NetWorkLogon[支持网络上计算机远程登陆事件。如果此服务被停用,网络登陆将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。]-rundll32.exe
O23-未知-Service:NetWorkLogons[支持网络上计算机远程登陆事件。如果此服务被停用,网络登陆将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。]-rundll32.exe
处理建议:
如果知道是自己安装的如MySQL,Apahce这类可以不管,其它的服务一般会冒充,起一个类似于很象正常的名字,如Windowsupdatas,NTServices,等。我的建议是所有你不清楚的,全部删掉。尤其.exe的可执行路径位于windows,System32目录下的。(system32目录下的rundll32.exe除外,这个.exe文件不要删除,直接把服务删除便可)
360里——修复——系统服务,选中后进行修复,可以多做几次。
也可以在CMD窗口(开始——运行——cmd.exe)下输入:
scdelete"服务名"来删除一个服务。
[b]——如果360修复之后它又出现了,那么便先用顽固文件删除工具把相应的.exe给删除掉(见置底的),重启一下,然后再修复。
010,WinsockLSP“浏览器绑架”
这个是近来新出现的“相当”有恶意的流氓软件形径,如果用户把相关的文件删掉,会造成用户计算机无法访问网络!
LSP全称为“WindowsSocketLayeredServiceProvider”(分层服务提供商),这是Winsock2.0才有的功能。通俗一点来说,它是Windows所有底层网络Socket通信需要经过的一个大门。而流氓软件在这个地方把自己的软件加进去了,这样就可以截取所有用户访问网络的数据包,可以针对性地投放广告,获取用户访问习惯——想一想,当你访问一个网络的时候,所有数据都被一只大眼睛盯着看,是什么感觉?而当用户如果不清楚删除这个.dll文件,那么就会造成用户不能访问网络。
如示例中有问题的:
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
O10-未知-WinsockLSP:[][{E70F1AA0-AB8B-11CF-8CA3-00805F48A192}]C:\WINDOWS\system32\RICHED40.dll
(正确的应该是system32\mswsock.dll和rsvpsp.dll这两个。)
处理建议:
方法一:先删除对应的.dll文件,然后在360里——修复——修复LSP连接。
方法二:先删除对应的.dll文件,然后下载Lsp-fix( http://www.cexx.org/lspfix.htm )这个工具
方法三:先删除对应的.dll文件,然后重装TCP/IP协议:
http://hi.baidu.com/nslog/blog/item/c478d5f942b94359242df26f.html
*****************************************************************************************
以下为360卫士2.0以后版本新增加的,对系统诊断也很有帮助,只建议高级用户诊断使用:
2006年12月20更新
*****************************************************************************************
040,系统进程加载项
现在有一些流氓软件升级之后,不是通过BHO或者Services来加载,没有一个独立的可执行程序,那样很容易被发觉。它们就通过注入到系统进程空间(如exploer.exe资源管理器),把自己变为正常系统的一部分,这样只要你开了资源管理器,它就在后台运行着了。如下面的:
O40-Explorer.EXE--C:\WINDOWS\system32\dllwm.dll--55125f396efcc0ce7e3f4522669d8cdb
O40-Explorer.EXE--C:\WINDOWS\system32\dms.dll--d2b55c379eeabef0b8925dc8e9a1a58e
360会显示所有没有经常Windows签名的.dll文件,即非微软官方的,这些都是可疑的以及重点查处的对象(当然,不是说100%有问题)
处理建议:
必须要
删除对应的.dll文件,删除办法有几种:
1、用文件粉碎器
2、用unlocker
3、试着到安全模式下删除
041,系统驱动
系统驱动是Windows系统最底层的,它没有进程,没有可执行文件,是通过在drivers目录下的.sys文件来体现。也是所有流氓软件用得最高的一招,象前段时间流行的MY123,飘雪以及几个大流氓:CNNIC,MyIEHelper等,因为采取种种保护策略,所以一般用户很难处理,如下面这个:
O41-csysiymq-csysiymq-C:\WINDOWS\system32\drivers\csysiymq.sys-(running)---
.O41-dtscsi-dtscsi-C:\WINDOWS\system32\drivers\dtscsi.sys-(running)---
O41-IBMPMDRV-IBMPMDRV-C:\WINDOWS\system32\drivers\ibmpmdrv.sys-(running)---7514f26bd730a23b4dcd0f51cd007add
360会显示所有没有经过Windows签名的驱动文件作为分析参考的依据,同样的道理,这里面也有非常多的其它正常软件,如瑞星,卡巴等,这里的处理要求高一点,需要有一定的经验。如果上面几项都处理完了,还有主页被改,弹窗口等现象,就需要考察这里了。
处理建议:
必须要
删除对应的.sys文件,删除办法有几种:
1、用文件粉碎器
2、用unlocker
3、试着到安全模式下删除
以上所有修复不成功的,一般都流氓软件有自我保护功能,可以用下面的办法:
1、用顽固文件删除工具,请参考:
http://bbs.360safe.com/viewthread.php?tid=9432&extra=page%3D1
2、找出流氓软件的驱动保护:
http://hi.baidu.com/nslog/blog/item/c08cbefb2c6b5c224f4aea91.html
其它参考:
360safe安全卫士下载
http://www.360safe.com
Hijackthis浏览器劫持日志精解
http://hi.baidu.com/nslog/blog/item/b208922f52cb04381e30895f.html
清除流氓软件的第一利器(IceSword)
http://hi.baidu.com/nslog/blog/item/14bc35dbac337866d1164e21.html
WinXP/2000/2003下如何重装TCP/IP协议
http://hi.baidu.com/nslog/blog/item/c478d5f942b94359242df26f.html [/b]
漏洞分类及进一步发掘
[ 2007-03-25 03:30:46 | 作者: sun ]
漏洞是一个永远的童话。实现劫富济贫的英雄梦想,实现打破技术垄断的自由蓝图,发现漏洞的人,利用漏洞的人,修补漏洞的人,喜欢漏洞的人,害怕漏洞的人就象这个多彩的世界一样,他们构成了计算机网络安全世界永远的角色!
现在很多口必称漏洞,把漏洞的利用当自己的绝招和宝贝,其实漏洞是什么,我们或许存在着很多误解。下面结合相关资料和我个人的理解,我们今天就讲讲什么是漏洞,这个十分基本的问题。
1、什么是漏洞
专业上讲漏洞是在硬件、软件、协议的具体实现或系统安全策略上(主要是人为)存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。但是,其实这是一个纲目,很多书上定义都不同,这里算是比较全面的。怎么理解呢,还是有例子来说吧,这几十年来,漏洞太多了,不能一一说。
2、漏洞的狭义范围
漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。怎么理解呢,就是在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。
3、漏洞的广义范围
这里的漏洞是指所有威胁到计算机信息安全的事物。包括人员、硬件、软件、程序、数据。
4、漏洞的长久性
漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。
5、漏洞的隐蔽性
系统安全漏洞是指可以用来对系统安全造成危害,系统本身具有的,或设置上存在的缺陷。总之,漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷,作系统和其他软件编程中的错误,以及在使用该系统提供的安全机制时人为的配置错误等。
系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。
6、漏洞的必然被发现性
漏洞虽然可能最初就存在于系统当中,但一个漏洞并不是自己出现的,必须要有人发现。在实际使用中,用户会发现系统中存在错误,而入侵者会有意利用其中的某些错误并使其成为威胁系统安全的工具,这时人们会认识到这个错误是一个系统安全漏洞。系统供应商会尽快发布针对这个漏洞的补丁程序,纠正这个错误。这就是系统安全漏洞从被发现到被纠正的一般过程。
系统攻击者往往是安全漏洞的发现者和使用者,要对于一个系统进行攻击,如果不能发现和使用系统中存在的安全漏洞是不可能成功的。对于安全级别较高的系统尤其如此。
系统安全漏洞与系统攻击活动之间有紧密的关系。因而不该脱离系统攻击活动来谈论安全漏洞问题。广泛的攻击存在,才使漏洞存在必然被发现性。
7、为什么要紧跟最新的计算机系统及其安全问题的最新发展动态
脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。
同时应该看到,对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,既使是以前所作的工作也会逐渐失去价值。
你喜欢漏洞,你讨厌也好。它永远存在,做到了"不以物喜,不以己悲",实现了"爱她就爱她的灵魂----自由,平等,共享,创新"。 同时它也证明了这个世界没有绝对的安全,如果世界上永远存在计算机存在软件,那么它又将证明什么叫永恒。童话里有永恒的虚假的美, 而漏洞是永恒的真实的童话。
一、不同角度看安全漏洞的分类
对一个特定程序的安全漏洞可以从多方面进行分类。
1、从用户群体分类
●大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。
●专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。
2、从数据角度看分为
●能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。
●能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)
●输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)
3、从作用范围角度看分为
●远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows。
●本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。
4、从触发条件上看可以分为
●主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。
●被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。
5、从操作角度看可分为
●文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:
◇写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;
◇内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;
●内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。
●逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:
◇条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)
◇策略错误,通常为设计问题,如历史上FreeBSD的Smart IO漏洞。
◇算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。
◇设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。
◇实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)
●外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。
6、从时序上看可分为
●已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。
●刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。
●0day:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。
二、不同角度看待漏洞利用
如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。
漏洞利用的视角有:
●数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。
●权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。
●可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。
●认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。
●代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。
三、漏洞发掘方法
首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:
●fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。
●源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。
●IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。
●动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。
●补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。
以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。
四、漏洞等级评定
考察漏洞的危害性应该紧密的和利用该漏洞带来的危害相关,并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例,比较好的划分方法为:
1 可远程获取OS、应用程序版本信息。
2 开放了不必要或危险得服务,可远程获取系统敏感信息。
3 可远程进行受限的文件、数据读取。
4 可远程进行重要或不受限文件、数据读取。
5 可远程进行受限文件、数据修改。
6 可远程进行受限重要文件、数据修改。
7 可远程进行不受限得重要文件、数据修改,或对普通服务进行拒绝服务攻击。
8 可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。
9 可远程以管理用户身份执行命令(受限、不太容易利用)。
10 可远程以管理用户身份执行命令(不受限、容易利用)。
本地漏洞几乎都是导致代码执行,归入上面的10分制可以为:
远程主动触发代码执行(如IE的漏洞)。
远程被动触发代码执行(如Word漏洞/看图软件漏洞)。
五、DEMO
一个防火墙隔离(只允许运维部的人访问)的网络里运行一台Unix服务器;操作系统中只有root用户和oracle用户可登陆,操作系统中运行了Apache(nobody权限)、Oracle(oracle用户权限)等服务。
一个攻击者的目的是修改Oracle数据库中的帐单表的数据。
其可能的攻击步骤为:
●1.接入运维部的网络,获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。
●2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。
●3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。
●4.用Oracle的sysdba登陆进入数据库(本地登陆不需要密码)。
●5.修改目标表的数据。
以上5个过程分析下来为:
●第1步:认证绕过
●第2步:远程漏洞、代码执行(机器码)、认证绕过
●第3步:权限提升、认证绕过
●第4步:认证绕过
●第5步:数据写
现在很多口必称漏洞,把漏洞的利用当自己的绝招和宝贝,其实漏洞是什么,我们或许存在着很多误解。下面结合相关资料和我个人的理解,我们今天就讲讲什么是漏洞,这个十分基本的问题。
1、什么是漏洞
专业上讲漏洞是在硬件、软件、协议的具体实现或系统安全策略上(主要是人为)存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。但是,其实这是一个纲目,很多书上定义都不同,这里算是比较全面的。怎么理解呢,还是有例子来说吧,这几十年来,漏洞太多了,不能一一说。
2、漏洞的狭义范围
漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。怎么理解呢,就是在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。
3、漏洞的广义范围
这里的漏洞是指所有威胁到计算机信息安全的事物。包括人员、硬件、软件、程序、数据。
4、漏洞的长久性
漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。
5、漏洞的隐蔽性
系统安全漏洞是指可以用来对系统安全造成危害,系统本身具有的,或设置上存在的缺陷。总之,漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷,作系统和其他软件编程中的错误,以及在使用该系统提供的安全机制时人为的配置错误等。
系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。
6、漏洞的必然被发现性
漏洞虽然可能最初就存在于系统当中,但一个漏洞并不是自己出现的,必须要有人发现。在实际使用中,用户会发现系统中存在错误,而入侵者会有意利用其中的某些错误并使其成为威胁系统安全的工具,这时人们会认识到这个错误是一个系统安全漏洞。系统供应商会尽快发布针对这个漏洞的补丁程序,纠正这个错误。这就是系统安全漏洞从被发现到被纠正的一般过程。
系统攻击者往往是安全漏洞的发现者和使用者,要对于一个系统进行攻击,如果不能发现和使用系统中存在的安全漏洞是不可能成功的。对于安全级别较高的系统尤其如此。
系统安全漏洞与系统攻击活动之间有紧密的关系。因而不该脱离系统攻击活动来谈论安全漏洞问题。广泛的攻击存在,才使漏洞存在必然被发现性。
7、为什么要紧跟最新的计算机系统及其安全问题的最新发展动态
脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。
同时应该看到,对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,既使是以前所作的工作也会逐渐失去价值。
你喜欢漏洞,你讨厌也好。它永远存在,做到了"不以物喜,不以己悲",实现了"爱她就爱她的灵魂----自由,平等,共享,创新"。 同时它也证明了这个世界没有绝对的安全,如果世界上永远存在计算机存在软件,那么它又将证明什么叫永恒。童话里有永恒的虚假的美, 而漏洞是永恒的真实的童话。
一、不同角度看安全漏洞的分类
对一个特定程序的安全漏洞可以从多方面进行分类。
1、从用户群体分类
●大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。
●专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。
2、从数据角度看分为
●能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。
●能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)
●输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)
3、从作用范围角度看分为
●远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows。
●本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。
4、从触发条件上看可以分为
●主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。
●被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。
5、从操作角度看可分为
●文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:
◇写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;
◇内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;
●内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。
●逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:
◇条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)
◇策略错误,通常为设计问题,如历史上FreeBSD的Smart IO漏洞。
◇算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。
◇设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。
◇实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)
●外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。
6、从时序上看可分为
●已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。
●刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。
●0day:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。
二、不同角度看待漏洞利用
如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。
漏洞利用的视角有:
●数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。
●权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。
●可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。
●认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。
●代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。
三、漏洞发掘方法
首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:
●fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。
●源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。
●IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。
●动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。
●补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。
以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。
四、漏洞等级评定
考察漏洞的危害性应该紧密的和利用该漏洞带来的危害相关,并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例,比较好的划分方法为:
1 可远程获取OS、应用程序版本信息。
2 开放了不必要或危险得服务,可远程获取系统敏感信息。
3 可远程进行受限的文件、数据读取。
4 可远程进行重要或不受限文件、数据读取。
5 可远程进行受限文件、数据修改。
6 可远程进行受限重要文件、数据修改。
7 可远程进行不受限得重要文件、数据修改,或对普通服务进行拒绝服务攻击。
8 可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。
9 可远程以管理用户身份执行命令(受限、不太容易利用)。
10 可远程以管理用户身份执行命令(不受限、容易利用)。
本地漏洞几乎都是导致代码执行,归入上面的10分制可以为:
远程主动触发代码执行(如IE的漏洞)。
远程被动触发代码执行(如Word漏洞/看图软件漏洞)。
五、DEMO
一个防火墙隔离(只允许运维部的人访问)的网络里运行一台Unix服务器;操作系统中只有root用户和oracle用户可登陆,操作系统中运行了Apache(nobody权限)、Oracle(oracle用户权限)等服务。
一个攻击者的目的是修改Oracle数据库中的帐单表的数据。
其可能的攻击步骤为:
●1.接入运维部的网络,获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。
●2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。
●3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。
●4.用Oracle的sysdba登陆进入数据库(本地登陆不需要密码)。
●5.修改目标表的数据。
以上5个过程分析下来为:
●第1步:认证绕过
●第2步:远程漏洞、代码执行(机器码)、认证绕过
●第3步:权限提升、认证绕过
●第4步:认证绕过
●第5步:数据写
三步堵死SQL注入漏洞
[ 2007-03-25 03:30:30 | 作者: sun ]
SQL注入是什么?
许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。
网站的恶梦——SQL注入
SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。
防御SQL注入有妙法
第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试(。
可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。
第二步:对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。
第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。
1.对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。
2.对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。
3.把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。
我们通过上面的三步完成了对数据库的修改。
这时是不是修改结束了呢?其实不然,要明白你做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。我想这时大多数人已经想到了办法,对,只要在管理员登录的页面文件中写入字符限制就行了!就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。
许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。
网站的恶梦——SQL注入
SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。
防御SQL注入有妙法
第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试(。
可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。
第二步:对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。
第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。
1.对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。
2.对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。
3.把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。
我们通过上面的三步完成了对数据库的修改。
这时是不是修改结束了呢?其实不然,要明白你做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。我想这时大多数人已经想到了办法,对,只要在管理员登录的页面文件中写入字符限制就行了!就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。