IRC攻防手册

IRC攻防手册
本文将对目前网络上越来越流行的IRC聊天的安全做一点分析,如果你还不知道什么是IRC,可以访问相关站点//xirc.yeah.net),也可以访问我一年多没有更新的站点//eirc.yeah.net,我这里不再重复解释这些问题。由于目前IRC的大部分用户都是使用Mirc客户端的,所以这里我们以Mirc为前提来讨论,对于使用别的IRC客户端的MS系统用户,我们强烈推荐你使用Mirc,因为它强大的功能使得你可以很容易的配置并使用它(主要是别的客户端我不会用,#%!……×※?:))))。最新版本的Mirc可以到//www.mirc.com下载。好了,废话少说,Let’sgo~~


IRC安全常识

这部分介绍一些基本的IRC安全知识,以及Mirc的一些安全设置。
1.在陌生的IRC里面不要使用你的真名字,也不要随意透露你的电话啊,家庭住址啊,QQ号码什么什么的,免得半夜鬼敲门。
2.IRC的用户信息不要如实的填写。特别是名字和email。Mirc用户按alt+o,在弹出的对话框的连接选项中可以修改个人信息。名字只要不是你的真名就可以,最好呢就是填上你常用的nick,email填yournick@irc.com好了。接着把下面那个隐藏模式选上,用处不是很大,好过没有。
3.不要轻易的相信你不熟悉的人的话。这点可以引起很多的irc问题,比如暴露你的ip,或者使你的电脑蓝屏之类的。举例来说:
经常可以看到这样的话:
请大家双击-->//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
更有甚者,把http后面的内容改成和背景色一样。比如白色,你看到的就是这样的
请大家双击--很好看的哦。
那个URL可以连到他自己的电脑上,用来骗取你的ip,也可以是炸弹的地址,引诱你上勾,一旦你点了,机器立刻就蓝屏了。
4.不要和陌生人使用DCCchat也不要轻易的接收人家Dcc给你的文件,特别是一些可以运行的文件(以"exe","vbs","com","bat","pif","scr","lnk","js"等为后缀的文件),很可能是恶意文件。在Mirc中按alt+O->DCC把发送请求和聊天请求都选成显示聊天对话框,如果选择自动获得/接受的话,一来容易收到恶意程序,二来也给攻击者使用DCCflood提供了方便。DCC选项中的文件夹子选项可以设置能接收的文件类型,推荐为:打开忽略文件除了:*.jpg,*.gif,*.png,*.bmp,*.txt,*.log,*.wav,*.mid,*.mp3,*.zip。


关于IRC木马
除了网上流行的一些常见木马程序,比如冰河,sub7等,我们还要注意一些不常见的针对IRC的木马和病毒。大部分木马都有很好的隐蔽性,而且,别人可以通过它远程控制你的机器,利用它来窃取你的信息,夺IRC频道权限,或者是利用你的机器发动DOS攻击等,总之,一旦中了木马,爱机的命运就掌握在别人手上了。木马一般不会自动运行,往往绑定在别的一些应用程序中,一旦你运行了这些带木马的程序,木马也就启动了。我们这里把一些有名的IRC木马和病毒列举出来,希望能为保护你的爱机做点“贡献”。
1.Srvcp.exe
如果你发现你突然以”Drones”或”clonebots”的名义被杀线(K-lined),那么你很可能就是中了这玩意了。
2.Link.vbs
Link.vbs是一段VBScript程序。它会把自己发送到你的Outlook地址簿里的每个人。同时,它也会在Mirc和Pirch上增加脚本,使得别人一加入你所在的频道,它就会自动地用DCC向来者发送自己。
3.BackOrifice和NetBus
功能强大的木马,无须多说,目前的杀毒软件都能够杀除它们,到pchome.net下载金山毒霸即可。
4.Script.ini
Script.ini是Mirc默认的脚本文件,很容易成为目标。Mirc会自动加载这个文件。并且有很多的功能,比如窃听你和别人的谈话,利用你的mirc来执行IRC命令,抢占频道,并且会自动向IRC用户分发自己,以达到传播的目的。
5.dmsetup.exe
常把自己伪装成”xxxxx.jpg.com”,这样在95/98里面看上去将是一张jpg图片,大小大约80k。
一旦木马运行,它首先会把自己复制到c:windoom.exec:windowsFreeporn.exe,在autoexec.bat文件最后增加2行内容,然后会在你的C:和c:programfiles文件夹里面创建几万个文件夹出来,具体数目看你的硬盘容量了L.
6.除了上面这些,还有很多知名mirc木马,具体的可以访问PC100的站点//go.163.com/~kingpc/irchelp/av/和//www.irchelp.org/irchelp/security/trojan.html。
其实,有过mircscript编程经验的人都知道,利用mirc的脚本,是很容易写出木马的。以下几点可以防止机器被木马感染:
1.不要下载那些你不能确定是否安全的文件,特别是一些个人站点上的东西,小心“糖衣炮弹”,Mircscript也不要随意使用。频道里面打出来的URL也不要随意的点击。
2.下载的文件要注意查看扩展名,windows默认是隐藏最后一个扩展名的,所以有的时候你拿到plmm.jpg的时候,不要急着看,先看看扩展名也无妨。
3.不要使用Mirc的DCC自动接收功能。
4.在mirc频道中,别人让你打什么命令,如果你不熟悉那个命令就不要打他。
5.安装一个杀毒软件,如金山毒霸


关于IRC聊天室里暴露IP的问题
对与个人上网来说,IP一旦暴露了,炸弹随之也就来了。网上很多人都会很乐意地帮你省网费(炸你下线),不过,和MM聊天正在兴头上,断了线总是一件不爽地事情。虽然断线对你地电脑里面地东西没有什么损失,不像名病毒和木马,又删又改的,但是我想各位都不会希望自己成为被炸的对象。那么,在IRC中是如何暴露自己的IP地址的呢?方法主要可以分两类,一类是骗,一类是查。如何骗呢?
1.在自己的Mirc里面输入命令//echo$ip看看。是不是出来的ip了?对了!,那个ip就是你自己在网上的IP地址,当然,用这个命令别人是看不到的。把echo改成//say或者//me之类的试试看,整个频道的人就都知道了。以前我在聊天室里面说:大家打//say$ip看看,很有意思的,名字会变色呢,刷的就出来好些ip来。
2.大家都知道很多论坛,bbs都会把访问者的IP如实的记录下来,而且别人可以查看。所以,只要骗别人访问某个bbs,论坛,然后区看记录就可以了。
3.在自己的机器上开上查ip的工具,然后,骗人家访问你的机器。人家一旦访问了你的机器,嘟~!IP蹦出来了。
以上这些只要你自己小心,不要随意相信别人的话就可以了。用查的方法,自己恐怕就无能为力了。如何查呢?先来熟悉2个IRC命令:
/who/whois

/whospringold
-
*springoldH~ling_zhu@127.0.0.FastNet-14601:0coolove
springold结束/WHO列表
-

/whoisspringold
-
springold是~ling_zhu@127.0.0.FastNet-14601*coolove
springold正在使用IRC.FastNet.OrgFastNetIRCServer
springold已经空闲27mins55secs,登录在SatJun0218:53:21
springold结束/WHOIS命令
-
看到了么?两个命令的执行结果里面都有
~ling_zhu@127.0.0.FastNet-14601
其中的127.0.0.FastNet-14601就是你的IP,当然这个是mask过的,最后一位无法得知。这是因为连进服务器的时候,执行过/modenick+x的结果。
我们现在把+x去掉看看
用户spirngold运行下面的命令
/modespringold–x
[19:23:26]***springold设定模式:-x
ok,执行成功。
现在切换到另外一个用户test的mirc里。
/whospringold
-
*springoldH~ling_zhu@127.0.0.1:0coolove
springold结束/WHO列表
-

/whoisspringold
-
springold是~ling_zhu@127.0.0.1*coolove
springold正在使用IRC.FastNet.OrgFastNetIRCServer
springold已经空闲35mins34secs,登录在SatJun0218:53:21
springold结束/WHOIS命令
-
我是在本机测试的。可以看到,执行过/modenick–x以后,对ip地址的mask也去掉了,任何人只要执行/whoisyournick就可以得到你的ip。所以在连进IRC的时候,请先执行下面的命令:
/modeyournick+x
但是,是不是+x之后IP就安全了呢?完全不是的。还是有别的方法可以查清楚最后那个mask过的数字。以前很多的IRC服务器都有个漏洞,利用/who命令就可以完全的查出来别人的IP,现在国内的IRC服务器好些都没有这个漏洞了,不过很多IRC经常更换服务器软件,难保以后不碰上。这里只给点提示
执行过上面的/whois之后我们得到了一个mask过的127.0.0.FastNet-14601
执行

/who127.0.0.FastNet-14601
-
*springoldH~ling_zhu@127.0.0.FastNet-14601:0coolove
*testH~ling_zhu@127.0.0.FastNet-14601:0coolove
127.0.0.FastNet-14601结束/WHO列表
-

/who127.0.0.*
-
*springoldH~ling_zhu@127.0.0.FastNet-14601:0coolove
*testH~ling_zhu@127.0.0.FastNet-14601:0coolove
127.0.0.*结束/WHO列表
-


/who127.0.0.5
-
127.0.0.5结束/WHO列表
-
可以看出来/who后面跟ip,可以查出IP所在的用户。所以…
/mode127.0.0.1*
/mode127.0.0.2*
……….执行255次?自己去想吧,不过数目是远小于255的,不然不是要累死我?当然如果呢会mircscript就更好了。写个脚本查也不是特别难。
刚才说了,目前的服务器大部分都不能这么查了。有别的方法么?当然啦。
既然已经知道了前面三位IP,最后一个mask过的要知道也不是很难了。用个扫描软件scan一下那个C段,从出来的几个IP里面再猜吧,如果扫描结果只有一个,那猜也不用猜了。如果和前面说的骗的方法相结合,也能收到很好的效果。
针对IP的攻击一般有两种,一种就是我们常说的“NUKE”,它利用95/98系统的一些bug进行攻击,通常攻击的结果都是死机或者蓝屏,所以通常也叫蓝屏炸弹。另外一种就是DOS,向你的机器发送大量的数据包,导致你的网络带宽消耗殆尽,正常的数据包无法正常收发。要防止nuke,只要你安装最新版本的98系统,或者打上补丁就可以。对付DOS,可以使用防火墙,lockdown,天网的效果都还不错,其中lockdown还有差杀木马的功能,值得一试。


基于IRC的flood以及防御方法

前面说了基于IRC的木马,和暴露IP所引起的一些攻击方法。事实上,在IRC里面你所能碰到的攻击手段大部分都是基于Mirc的flood攻击。
何谓flood?flood在英语里面的本意为洪水,在网络里,我们把使用大量的数据来使网络资源减少的攻击叫做flood。在IRC里面,你所见的大部分信息都可以被别有用心的人利用起来进行flood攻击,比如join/part频道,说话的msg,notice,动作(/me),改名字等等,只要重复的速度够快,次数够多,就形成了flood。好,我们来看看具体的一些flood手段。


Textflood
这种flood,是最常用的。一般用户最容易想到的就是这种flood。在频道里面打入一句话,
/sayxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(x为任意的内容,后同)
或者
/msg#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
这里的#可以改成人名或者具体的频道名。
然后不断的按↑Enter,或者ctrl+v,ctrl+v不断的像频道/或个人发送同样的一句话。你看到的结果是这样的
[06:18:50]γ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>γ
[06:18:50]γ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>γ
我最快只能每秒发送5句,虽然不会搞的你死机和断线,不过如果不采取点措施,想正常聊天是不大可能了。这种攻击方法有个弊端,就是攻击者自己也一句不拉的看到这些话,所以他们自己也别想好好的聊天了。
如果攻击是针对你个人的,使用ignore命令
/ignorenick
即可把该用户忽略。发自该用户的所有消息都将被服务器过滤掉,不会发到你的客户端。
如果攻击是针对一个频道的,则由频道管理员(管理员的名字前面有@)给该用户+b即我们通常所说的ban。
Ban命令的基本用法是
/bannicknn可以取1~8,也可以不要,ban会使用默认的数字。
Ban了以后,攻击者将看到下面的消息:
[07:31:42]***springold设定模式:+b*!*@127.0.0.FastNet-14601
[07:31:50]γxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxγ
#test不能向频道里发送信息(Youarebanned)
这时,他的话已经无法送到频道,floold自然也就失效。

Actionflood
重复使用
/mexxxxxxxxxxxxxxxxxxxx(x为随意内容)
引起flood,造成的影响和上面的差不多。不过攻击者自己可以不不要看到发除的内容(后面以x来代替),只要在me的前面加个小逗点.就可以,也就是/.me。你看到的攻击效果如下:
[06:35:30]*testxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
防御方法同上。

Noticeflood
威力比上面的2个都大些,上面的攻击你切换到另外一个频道,也就看不到了,而这个,躲是躲不掉的,无论你的窗口切换到哪个频道或小窗,都可以看到。和/.me一样。Notice也可以使用/.notice来消除攻击对攻击者自己带来的影响。
/noticespringoldxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/notice#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
前一句针对个人,后一句针对频道,所有在该频道的人都可以看到。看到的信息如下
[06:43:44]-test-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(针对个人)
[06:45:03]-test:#test-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(针对频道)
攻击者可以看出来都是test用户。


Nickflood
以很快的速度改名字也同样可以形成flood的。效果和Textflood一样,不过范围更大,只要是攻击者所在的频道,都受到攻击。不断重复下面的命令
//nick$rand(a,z)
即可形成flood。看具体攻击效果:
[06:54:59]***c现在命名为b
[06:55:10]***b现在命名为d
[06:55:10]***d现在命名为l
对付这种攻击很简单,把它ban了就可以,被ban的用户是不能改名字的。
当然前提是你要有@。如果一个频道没有一个人有帽子,那只能去#help频道请系统得管理员oper来了。如果oper也不在,那只能任由他胡作非为了L.


join/partflood
一个用户进出频道的时候,我们是可以看到如下的话的。
[07:11:10]***m3(~ling_zhu@127.0.0.FastNet-14601)离开#test
[07:11:15]***m3(~ling_zhu@127.0.0.FastNet-14601)参加#test
如果一个人不停的join/part,也就形成了join/partflood。Join/partflood通常是要写脚本来完成的。
要防止join/partflood,把他ban掉就可以了。被ban的用户一旦离开频道变无法再次加入频道,直到解除ban。

Ctcpflood
Ctcp攻击的效果比上面的要厉害些。具体的ctcp攻击有以下几种
/ctcpnickping
/ctcpnickversion
/ctcpnicktime
/ctcpnickfinger
受攻击者看到的效果是这样的:
[07:21:13][m3PING]
[07:21:16][m3VERSION]
[07:21:20][m3TIME]
[07:21:23][m3FINGER]
m3为攻击者的名字。
连续不断的发送/ctcpnickping:
[07:52:51]->[springold]PING
-
[07:52:51][springoldPINGReply]:5secs
[07:52:52]->[springold]PING
-
[07:52:52][springoldPINGReply]:8secs
从后面的reply(回复)的速度上可以看出攻击效果。
和前面的/notice/me等一样,同样也可以使用/.ctcp来消除攻击对自己的一些影响。

DCCflood
具体的由DCCchat和DCCsend两种。如果你的DCC选项设置成忽略,那这种攻击是无效的。如果你的DCC设置是自动接受的,那效果就比较”明显”了。具体的攻击脚本我这里不提供给大家,大家有兴趣测试的话可以到一些Mircscript网站上面去找。
防止这中攻击同样也可以使用/ignore命令。

除了上面的说的这些攻击方法外,还由另外一些攻击的手段,不过用的不是很多,比如
op/deop(加帽子也能用来攻击?废话)kick/invite等等,在这里不再详细讨论。需要指出的是,以上我写的都是用手工完成的。事实上,攻击这往往是使用了脚本的。一来方便,二来效果也更加明显。很多的时候,用手工来对付基于脚本的攻击是来不及的。一旦攻击开始,你向服务器发送的所有命令都无法正确的得到执行,因为资源都被攻击者占用了。攻击的脚本往往都使用/timer命令或者使用循环语句来。有关/timer命令的用法可以看mirc自带的帮助文件,也可以访//xirc.yeah.net
这里我举一个最简单的例子
/timer1001/.meit’sjustatest!!!!
这条语句将向频道以每秒一句的速度向频道发送100句:
[08:02:08]*m3it'sjustatest!!!!


下面我简单介绍一下floodprotect脚本的写作思路。我们先来看一个最基本的保护脚本例子:
-=--------------------------------------------------------------=-
on*:ACTION:*:#:{
%prot.act=strip($1-)
if($nick==$me)halt
if(slapisin%prot.act)halt
inc%self-protection.action[$+[$nick]$+[$chan]]
.timer14/unset%self-protection.action[$+[$nick]$+[$chan]]

if(%self-protection.action[$+[$nick]$+[$chan]]>6){
if($meisop$chan){
ban-u60$chan$nick$address($nick,2)
kick$chan$nick_4$+$readkicks.txt
unset%%self-protection.action[$+[$nick]$+[$chan]]
}
else{
ignore-pcu30$nick
echo-a_14$nickAction_4Flooding_14You,..ignorednow
notice$nick_14DoNotFlood_4$me_14.!YouwereIgnorednow!
}
}
}
-=--------------------------------------------------------------=-
这段脚本是针对Actionfloodachannel的。脚本的主要思路是这样的:
先判断是否自己发出的/me动作,如果不是在判断是否为slap,因为slap通常都是朋友开玩笑的,所以也过滤掉。如果两者都不是,就开始统计次数:
inc%self-protection.action[$+[$nick]$+[$chan]]
/me一次变量%self-protection.action[$+[$nick]$+[$chan]]的次数加一
另外再设置一个定时器,
.timer14/unset%self-protection.action[$+[$nick]$+[$chan]]
他的意思是,每过4秒就把变量%self-protection.action[$+[$nick]$+[$chan]]的值重置。接着就是判断是否形成flood以及做出相应的处理了。
if(%self-protection.action[$+[$nick]$+[$chan]]>6)
判断是否在4秒内发送了6句以上的Action,如果是,就进行相应的处理。这里,我们对自己在频道中有帽子和没有帽子作了不同的处理。
如果有帽子:
if($meisop$chan){
ban-u60$chan$nick$address($nick,2)
kick$chan$nick_4$+$readkicks.txt
unset%%self-protection.action[$+[$nick]$+[$chan]]
}
意为,把该用户ban掉60妙,然后提出频道,这样他就无法再60秒内再加入频道进行攻击。
如果没有帽子,就执行下面的脚本:
else{
ignore-pcu30$nick
echo-a_14$nickAction_4Flooding_14You,..ignorednow
notice$nick_14DoNotFlood_4$me_14.!YouwereIgnorednow.
}
先忽略该用户的/me消息30秒,然后给自己发送一条消息通知有人使用Actionflood你,并且已经被自己忽略了。接着给攻击者发送一条DoNotFlood_4$me_14.!YouwereIgnorednow.的警告。根据这个思路,可以写出很多的防卫脚本来保护自己。如果你对写脚本有兴趣的话可以去xirc或者是古新的bbs,我的小站里面有链接。如果你不想自己写,那么到网上面下载别人的bot好了。
为了躲避脚本的防卫,攻击者的脚本往往是多种攻击相结合的。比如针对上面的的防卫脚本,攻击者只要发送了5句之后,换成别的攻击,脚本的flood判断就无法触发。
防卫也就失去了作用,攻击者再用了别的flood之后,还可以转回来用Actionflood,因为4秒时间一过,变量被重置,计数又重新开始了。

有一定脚本使用经验的攻击者往往都使用一种更加厉害的攻击方法,那就是Clone。
被clone人flood过的人往往都是“谈clone色变”。那么,何谓“clone”?Clone就是用一个Mirc,利用socket编程复制很多个用户连接到IRC服务器上,这些在同一个Mirc上面的用户就是clone。Clone攻击的威力是很大的,因为所有clone用户可以一起使用前面所说的各种攻击,比如你clone了20个用户上去Actionflood,就相当于20你纠集了20个同党一起Actionflood,威力是你单个人攻击的20倍,而且事实上,脚本的速度往往是比手工的快的,攻击者为了达到好的攻击效果,clone数目往往是50个甚至是上百个,威力就会成倍增长。IRC用户一旦碰到这样的攻击,往往是屏幕定住,机器没有任何响应,不得不强行结束任务或者是重新启动,更别提什么IRC里面泡mm了。在实际的测试中,如果对一个频道进行clone20个人的flood,用不了多久,频道里面大部分(90%以上)的人就会因为和服务器的响应时间过长而断掉。Clone脚本我这里不便提供给大家,只提供几张clone攻击的截图给大家”欣赏”。图片地址:

图片1图片2图片3图片4图片5(因为软盘出了点问题,图片暂时无法提供,sry)

防御这样的攻击有一定的难度,以前面的那段脚本为例,如果每个clone都只Action5次,那么是不会触发防御脚本的,但是如果有50个clone的话,你将收到5*50=150条消息,而且时间很短,威力已经比较大了,如何和别的攻击一结合,命中率简直可以到100%。如和防止clone攻击呢?
对于频道来说,可以:
/mode#channel+kpassword
也可以设置成只邀请模式。这样别人就不能随意的进入频道,clone自然也进不来。
对于个人,恐怕只有断掉Mirc(或者重新启动机器,惨L),重新连进去,先执行一次
/ignorexxx.xxx.xx.xx(xxx.xxx.xx.xx为攻击者的ip,whois查除来的mask过的就可以),然后再进去聊天。
好了,终于写的差不多了。这里再作几点小小的补充说明吧
1.Mirc里面所有的命令默认都是以/开头的。至于命令本身,在你平时说话的地方输入,敲回车就可以了。
2.前面多处提到了ignore命令,这里针对这个命令作个说明
/ignorenick3彻底的忽略掉一个人
/ignorenick4忽略所有和该nick同ip的人
/ignore-tnick3忽略该nick对你的ctcp
/ignore-t*!*@*忽略所有的ctcp
更具体的用法请看mirc的帮助文件
3.千万不要用web上IRC,那样毫无安全性能可言,上面说的任何一种攻击手段对Webchat用户来说都将是致命的。
4.Mirc自己带了个flood设置,不过比较傻,具体位置是File/Options/Flood/自己去搞定吧。
5.linux用户千万不要以root身份上IRC,更不要在网站的服务器上面上IRC。
6.看过本文后,请不要使用本文提及的方法区攻击他人,如果你作了,一切后果自己负责,和本人无关。
7.本人并不是什么IRC高手,只是写些自己的心得,在这里要感谢给过我帮助的人们和那些IRC高手们。文中有什么错误啊,或者你对文章的内容有任何意见或者建议,都可以来信指导,我的email是:elliot@feng.com.cn(别炸哦),但是别问我如何去攻击,以及索要clone等攻击脚本,对这些要求,本人概不回信。