菜鸟黑客学堂之浅谈解密技术
好象大家对网上安全的问题看法差别很大,有些好象还觉得网上真的很安全,呵呵。。所以想有时间分几次谈谈自己的看法
,不过想先举个例子,就学校的网络系统而言,用10秒的时间,你可以看到什么?
我看到的是这样的:
210.34.0.12=’www.xmu.edu.cn’
210.34.0.13=’bbs.xmu.edu.cn’
210.34.0.14=’dns.xmu.edu.cn’
210.34.0.17=’yanan.xmu.edu.cn’
210.34.0.18=’JingXian.xmu.edu.cn’
210.34.0.55=’nv6000.xmu.edu.cn’
210.34.0.1=’router.xmu.edu.cn’
210.34.0.2=’xmu.edu.cn’
210.34.0.15
210.34.0.65=’net.xmu.edu.cn’
210.34.0.66
ok.那么这些又代表什么呢?
看看bbs--210.34.0.13吧,再用10秒。
Port 13 found. Desc=’daytime’
Port 9 found. Desc=’discard’
Port 19 found. Desc=’chargen’
Port 21 found. Desc=’ftp’
^^^
可能有东东的。
请参考CERT coordination Center 关于这个东东的说明。
wuarchive.wustl.edu:/packages/ftpd.wuarchive.shar
Port 22 found.
Port 23 found. Desc=’telnet’
Port 25 found. Desc=’smtp’
Port 80 found. Desc=’www’
^^^^^^^^^^^^^^^^^^^
这是个bug.使用别的工具,你可以看到进程所有者。呵呵。。你说是root吗?
Port 110 found. Desc=’pop3’
Port 111 found. Desc=’portmap/sunrpc’
Port 37 found. Desc=’time’
Port 7 found. Desc=’echo’
Port 513 found. Desc=’login/who’
Port 514 found. Desc=’shell/syslog’
Port 540 found. Desc=’uucp’
Port 970 found.
Port 971 found.
Port 972 found.
Port 976 found.
Port 977 found.
提供的服务不少嘛,好了,现在对一个有经验的hacker(是hacker,
不是cracker)来说,这台主机已经在你手上了,离root不远了,这里我只是举
个例子。并没有褒贬本bbs的意思。还望见谅。当然,这没什么。相信很多人可
以这样的。所以,我想对网络的安全问题谈自己的一些看法,边整理边贴,贴到
哪里算哪里。可能会涉及到的有关参考资料,技术报告,白皮书等,我会尽可能
列出网址。对于 提供的服务不少嘛,好了,现在对一个有经验的hacker
(是hacker,不是cracker)来说,这台主机已经在你手上了,离root不远了,
这里我只是举个例子。并没有褒贬本bbs的意思。还望见谅。当然,这没什么。
相信很多人可以这样的。所以,我想对网络的安全问题谈自己的一些看法,边整
理边贴,贴到哪里算哪里。某些用PostScript格式的说明文件,你可以到这些
地方去下载。能列出网址。对于
ftp://ftp.winsite.com/pub/pc/winnt/txtutil/rops3244.zip
http://www.cs.wisc.edu/%7Eghost/gsview/index.html
相关的工具软件我也会列出下载站点,但是某些程序请你自己编译,并且不保证
没有特络伊木马或其他恶意代码。
从Crack Password说起吧。
黑客技术(2)-破解密码
所有看法纯属个人见解,欢迎指正,有悖你想法的地方,
请E_mail:cnmumak@163.com
密码破解:
网络很大一部分安全是靠密码保护的,但是密码可以被破解,所以还是有可能被
人入侵系统的。我想这是大部分人对破解密码的看法。也就是,我可以用一些技
巧来获得系统的口令文件,然后我用某个算法来计算加密的口令,然后,呵呵
。。其实不然。。事实上,我的看法是被加密过的密码大部分是不可能被解码的
。加密算法的过程绝大多数是单向的。所以,真正加密过的密码是不可能解出来
的。(Microsoft例外,呵呵 。。)
大部分的破解程序只是使用和原来加密密码的同样算法,透过分析,试着找出对
应的加密版本和原来的密码。也就是通常cracker们说的“暴力”算法。一个一个试。
呵呵。。试到你提供的字典文件中的某个单词刚刚好和那个傻瓜用户的密码一样,
如果字典文件找完了,还没有一个一样的单词,呵呵,,我看什么东东都没有,
白浪费时间而已,所以,很多的高手通常的字典文件都100M左右,不奇怪的。
可见,“大多数人认为只要他们的密码没有在usr/dict/words中,就安全了,
所以不关心帐号的安全。。 ”(Daniel V. Klein 的"A survey of implements to, PasswordSecurity")所以,提供注册密码或CD-Keys不是破解密码,而在网上提供这些东东的行为和海盗没什么差别。你可以到alt.cracks这个新闻组里看看这些海盗们。
真正的破解密码程序看起来向这样:
Microsort很关心是不是有人偷了他的windows。所以Microsoft搞了一个CD-keys
的保护程序。相信大家都知道是怎么一回事,有个人呢,看不下去,所以就写了
一个程序,经过
1。将所有明显的和跟键值无关的拿掉。
2。将剩下的数全部相加。
3。结果除7。
如果你没得到小数,你拿到了一个有效的CD-Keys。
设计这个软件的人叫Donald Moore,你可以在
http://www.apexsc.com/vb/lib/lib3.html 得到整个详细说明和分析。
在:http://www.futureone.com/~damaged/pc/microsoft_cd_key/mscdsrc.html
得到完整源代码。
还有的呢? 我想大多数人对UNix平台的密码很感兴趣。在Unix上,所有使用者
的id 和密码都放在一个集中的地方,/etc/passwd(shadow).因此我们关心的就
是这个地方舒服吗?事实上从DES(美国国家标准局和国家安全总署联合背书的)
的加密程序Crypt(3)来看,想要破解是有这样一种可能的(1/70,000,000,000,000,000)几率。
(详细的DES,crypt资料从:ftp://gatekeeper.dec.com/glibc-1.09.1.tar.gz
拿到) 但是,如果你拿到passwd,取出密码段喂给某个程序,加密后和原来的做比较,如果一样,
90%你拿到口令了。就是这么简单。网络其实就这么安全。
如何拿到passwd超出本版的范围,也不在我知识掌握之中,但是,你可以从
http://sdg.ncsa.uiuc.edu/~mag/Misc/wordlists.html下载几个字典文件研究一下。
从:http://www.fc.net/phrack/under/misc.html
http://www.ilf.net/~toast/files/
http://www.interware.net/~jcooper/cracks.htm拿到CrackerJack.
从:http://tms.netrom.com/~cassidy/crack.htm拿到PaceCrack95.
看看他们对你的系统有没有威胁。
其他的密码破解采用相近的方法。有兴趣的话,你可以找一个zipCrack10或
FastZip2.0玩玩。
WordPerfect可以找Decrypt.
excel的用excrack
windows的Pwl文件。。呵呵。。用Glide.
http://www.iaehv.nl/users/rvdpeet/unrelate/glide.zip
Novell的用netcrack.
Nt的用password NT http://www.omna.com/yes/andyBaron/recovery.htm
.........
我想我是无法列尽这些东东的,不过可以说的是,没有什么软件能提供给你真正的安全保护。特别是当你上线的时候。。。
感觉好象乱乱写。。呵呵。。太多的关于密码的东东了,我只是想说,不管你用什么系统,在Crack眼中,没有什么安全性可言。
明天再整理如何在网络中收集你想要的有关对方主机信息。谈谈host ,traceroute,rusers,finger 如何将你的主机信息告诉别人。并且告诉到什么程度。呵呵。。
黑客技术(3)-Scanner
网络安全上,最有名的我想莫过于Scanner了。。它是一个可以自动侦察系统安全的程序,大部分情况下,用来找出系统的安全弱点。通过对Tcp的ports和服务的侦察,然后将信息记录下来,提供目标的安全分析报告,这是标准的scanner,象unix上的某些服务,如:host,rusers,finger等,只是半个scanner.完全发挥Scanner的功能要求使用者必须掌握相应的tcp,C,Perl,Socket的基本常识。关于socket可以从:http://147.17.36.24/prog/sockets.html得到详细的设计说明。
那么Scanner到底会告诉你什么呢?其实他真的不告诉你什么,呵呵。。他只是将信息完整的记录下来,做为一个系统管理员,会看出内在的弱点才是要命的,因此,我不知道你通常是怎么做的,我是到这些地方去看信息的。
firewalls@greatcircle.com
sneakers@cs.yale.edu
www-security@ns2.rutgers.edu
ntsecurity@iis
bugtraq@netspace.org
多了解这些信息对看出由scanner记录的东东很由好处。
比如:finger root@server.com 后我得到这样得信息:
login name: root in real life: 0000-Adim(0000)
^^^^^^^^^^^^^^^
Directory: /shell: /sbin/sh
Last login tue Feb 18 19 04:05:58 1997;
Unread since Web Feb.........
No Plan.
现在我起码知道server.com这台主机上跑Solaris.再用ftp或telnet我可以知道Solaris
的版本号,然后我可以知道那个版本的有什么Bugs, 分别是哪一级的,我如何做。。。。
可见,Scanner能找到网络上的机器,找出机器的信息,提供某些人分析。
一个典型的例子:
1995年,SGI卖出许多“WebForce”的机器,机器很不错,多媒体功能很强,跑的是IRIX ,不幸的是,有个系统的内置帐号“lp”不需要密码。(本市有这样的机器)好了,现在我想看看究竟是哪一台,他的硬盘有些什么,我这样做:
1。我找到一个搜索引擎,查找“EZSetup + root: lp:” (老土的方法)
或者,我用scanner.使用scanner的telnet对202.XXX.XXX.000到202.XXX.XXX.255
全部进行telnet.传回的信息象这样:
Trying 202.XXX.XXX.XXX
Connected to ........
Escape Character is "]"
IRIX 4.1
Welcome .........
Login:
2。我马上离开了。。呵呵。。。。
想了解最后一个使用这个bug的人的ip地址,finger lp@the.sgi.box 这小子很牛。
修改你的passwd 使其中一行这样:lp:*:4:7:lp:/var/spool/lpd: 你的问题解决了。
在unix中,host执行nslookup一样的功能。但是,host是unix中最危险,最有
威胁性的十大工具之一,(我认为)比如:
我host 某个大学。
host -l -v -t any edu.cn
呵呵。。你会看到:
Found 1 addresses for XXX.XXX.edu.cn
Found 5 addresses for XXX.YYY.edu.cn
..
..
Trying 210.XXX.XXX.XXX
XXX.XXX.edu.cn 86400 IN SOA
961112121
900
900
604800
86400
....
XXX.YYY.edu.cn 86400 IN HINFO SUN-SPARCSTATION-10/41 UNIX
XXX.ZZZ.edu.cn 86400 IN HINFO DEC-ALPHA-3000/300LX OSF1
....
XXX.xmu.edu.cn 86400 IN HINFO PC-PENTIUM DOS/WINDOWS
....
一个将近120K的文件。
好了,现在我知道跑dec的机器可能有mount -d -s 的毛病。跑sun的机器可能有patch-ID#100376-01的问题。 跑windows 95 的机器可能有SMB协议,我可以用SAMBA来连上共享目录。
Rraceroute 同样也是unix中的犀利工具,用来确定主机到底在什么地方。具体功能我不说了,他和rusers, finger一样,提供一些看起来好象没什么的资料,但是,你可以利用某些技巧来定位一个目标。
还有一个命令shownount.他的-e参数可以提供某些目录的bug出来。
类似的工具你可以参考这些:
netscan http://www.eskimo.com/~nwps/index.html
NetWork Toolbox http://wwwljriver.com/netbox.html
Tcp/Ip Surveyor ftp://wuarchive.wustl.edu/systems/ibmpc/win95/netutil/wssrv32nz
ip
真正的Scanner:
NSS http://www.giga.or.at/pub/hacker/unix/
Strobe http://sunsite.kth.se/linux/system/network/admin/
SATAN http://www.fish.com
IdentTCPscan http://www.giga.or.at/pub/hacker/unix/ (这是我强力推荐的)
Connect http://ww.giga.or.at/pub/hacker/unix/
SafeSuite (强力推荐的软件,由ISS发展小组开发)
Safesuite提供3个scanner,
Intranet scanner , Web scanner ,firewall scanner.
提供6个攻击测试:
sendmail,ftp,nntp,telnet ,prc,nfs
如果你的主机通过了这个软件,呵呵。。不要命的hacker可能会和你拼了。使用这个软件,我很轻易的就发现了学校一台主机的三个致命弱点。rlogin,ftp,httpd。每个都够你使用root权限。
如何使用和到哪里去下载这个软件我不太清楚,你可以到网上去找。
总之,我相信任何的系统都存在安全上的风险,对于想真正了解网络安全的系统管理员,都应该从很细小的资料上注意起。并且应该时刻注意你所用的系统有没有新的不安全因素出现在网上。
还想谈的安全问题还有sniffer,trojans,fake ip,email bomb,system bugs,
microsoft(oob 139,1031,80),some unix problem.(telnet,nfs..),hacker&cracker.
这些都是我长期收集的资料和实际操作中碰到的。所以只能是整理到哪里贴到哪里。当然,这些只是我的个人看法,能谈到什么程度我不敢说,但是我希望能对关心网络安全问题的人提供一些帮助。也希望大家一起来真正了解我们面对的机器能保存些什么秘密。
黑客技术(4)-Windows和Nt
Microsoft的安全问题一直是一个很敏感的问题,因为网络上有太多的使用者了,在我收集的长达79页的Microsoft技术规范说明中,谈到安全问题的仅仅是一段“比以往的版本,在安全技术上有很大的改善”,显然,Microsoft更关心的是有没有人偷他的软件去使用,而不是用户在使用软件时是否安全。那么,摆在眼前的就是:Microsoft从来就不是一个安全的平台,即使是Nt系统,虽然Nt经过了NSA的安全等级C2鉴定。但是,请注意以下的补充说明:
1·C2在EPL中是很低的等级。
2·NT的C2只在某些硬件上才能达到,(Compaq Poliant 2000,DECpcAXP/150 Alpha)
3·NT的C2认证是假定在没有网络的情况下。
所以,在Microsoft的Windows产品中,基本的安全功能就相当的缺乏,所有密码的功能基本是依赖一个PWL的文件,所以,了解这份文件,你也就了解了Windows的所谓的安全机制。
在Windows中,使用两个函数来计算密码:
WnetCachePassword( )
WnetGetGachedPassword( )
如果你是一个软件设计人员,那么你可以使用相同的这两个函数来获得使用者的密码。但是,更简单的方法是,你可以在Windows系统目录下,直接删除PWL文件,然后再以你的口令生成一个文件。
详细的说明你可以参考:http://199.44.114.223/rharri/tips.htm
或者你可以到http://www.iaehv.nl/users/rvdpeet/unrelate/glide.zip下载这个软件,
然后试试在你的机器上运行。
如何解决上述问题,你可以使用Fortres 101,在http://www.fortres.com/f101.htm
上面说的只是单机的情况,那么,如果你的机器在网络上呢?
这里有我一份在去年3月份的记录。对在记录中出现的任何机器,我很抱歉将你们列出来。
但是我保证没有动改你们的硬盘。呵呵。。。。
1997.3.27 xx:xx:xx
我从internet连线上学校的网络,当时,我用了一个Scanner来扫描整个的网络,
令人惊奇的是,我从结果窗口中看到了这样的一些信息:
Win95client: littlesun
Win95client: tina&ryu
.....
.....
Win95client: subtle
.....
WinNtServer: XXXXXX Domain:XXXXX_XX
.....
Ok, 接下来,我只是用网络邻居来打开某台机器,然后,我立刻就发现了一些的共享目录。其中的某些目录你可以用"guest"来连上,到了这一步,如果你是一个别有用心的人,你会怎么做?我想象的做法应该是:
1. 到95的系统目录下,下载所有的PWL文件。 (其中就有Administrator的)
2. 到我本机后,用glide在一秒中内解出所有的密码。
3. 然后我想,可能有某台机器是连上NT服务器的系统管理员的工作平台,这样的话,
他不太可能使用两个密码来登录Nt域和他本地的Win95系统,通常在服务器上的
Administrator和他在本地的Administrator用户口令相同。
4. 于是,我可以用这个密码来登录发现的那一台服务器,用administrator.
Ok, 脆弱的工作站连累了Nt服务器。这就是结果。
出现这样的安全问题,原因是什么?就是Windows采用的SMB协议所带来的问题。
SMB(Server Message Block) ,Microsoft用这个协议来实现系统在网络中的共享协定。
包括:文件,目录,打印机,通讯口等。这个协议可以加在很多协议上跑,象Tcp/Ip,
NetBios,Ipx/spx
于是,hacker就可以使用telnetd透过SMB来或取windows,Nt的共享目录,然后就可以:
1. 使用SMB的clinet端送"dir ..\"给服务器,造成"denial-of-service"的攻击。
2.使用SAMBA连上共享目录。慢慢观赏你的硬盘。呵呵。。。
解决问题的方法是:不绑定SMB给Tcp/Ip.
去http://ftp.microsoft.com/developr/drg/cifs/中找详细的SMB资料,然后到
http://www.microsoft.com/kb/articles/q140/8/18.htm找一个SMB的patch.
这只是nt系统中普遍存在的问题,实际上,根据我个人的看法,在一个Nt中,你起码
应该注意这些问题:
1.Port 80的远程漏洞。
Telnet到prot 80 ,发送这样的命令:get ../..
ok ,Web服务器立即当掉。 使用Service pack 1a,2来修复这个问题。
2. Denial-of-Service的攻击。
到http://ntinternals.com/cpuhog.htm取cpuhog这个软件,他使你的nt服务器
Cpu达到100%忙碌状态,然后死掉。
3. port 135,1031的问题。
这个OOB的问题相信大家都知道,但是Microsoft对1031口存在的问题却不太关心。
在1997年2月2日的Microsoft报告中就明显指出这个问题,到现在还没有有效的解决方法。
4. 对DNS-Denial的攻击,使用Service Pack 3来修复。
5. 通常hacker会用的由nbtstat来查询机器名称,放入lmhosts文件后,对网络查询
来得到共享目录,使用者信息,等。。。。
这些是我个人对使用Nt的看法,当然,如果你有更好的建议,你可以发E-mail给我。
再谈谈nt的密码问题,Nt的密码采用和95不同的机制来实现。在Nt中,使用的安全模型是DAC ( Discretionary Access Control ).你可以从这个网址得到完整的参考:
http://www.v-one.com/newpages/obook.html
而DAC的实现有赖于NTFS,所以,请你在安装Nt时,选用NTFS选项。
但是,不要以为NTFS能带给你100%的安全,到这个地址:
http://www.hidata.com/guest/nthacks/passworddll.htm
你可以得到一个工具。呵呵。。你自己用用看。
这里我想列出一些可能对你管理nt服务器有用的工具,它们可以用来找出你系统的弱点,
或者防范网络hacker的攻击:
scanNT: http://www.omna.com/yes/andybaron/pk.htm
Systems Management Server : http://www.microsoft.com/smsmgmt/revgd/sms00.htm
Dump ACL: http://www.net-shopper.co.uk/software/nt/dmpacl/index.htm
上述是我对Microsoft的操作系统安全问题的看法,实际上,有些问题并不只是在windows或nt中,在Microsoft的dos,winword, access,excel ,front page webserver ,o’reilly websiteserver等产品中,都有不少的安全弱点。
体力所限,我无法完全列出,有兴趣可以和我直接联系。
黑客技术(5)-Sniffer
Sniffer
了解什么是Sniffer之前,我想先说说网络的基本构成,通常的网络看起来
是这样的:
一个控制软件的控制台(可以是pc机、工作站等)
一套用来控制网络硬件的软件
一个支持Ethernet封包的网络控制卡
一条用来使封包从这里流到那里的传输设备
另一套和上述相同设备的硬件、软件。
可见,这其中的一个关键环节是封包如何在网上跑,当然,可以用tcp/ip、ipx等。。或是多个的组合,那么,Sniffer的目的就是将整个的网络界面变成不区分的状态,然后再截取网络上的封包。传统上的Sniffer可以是硬件或软件或硬件和软件的结合。由于Ethernet的工作方式,网络请求在网上一般以广播的方式传送,这个广播是非验证的,也就是每个nodes都可以收到,除了目标接受者会回应这个信息外,其他的接受者会忽略这个广播。Sniffer就是一个专门收集广播而决不回应的东东。由于sniffer是工作在封包这一级的产品,因而,它对网络的安全威胁是相当大的,因为它可以:
1。抓到正在传输的密码。
2。抓到别人的秘密(信用卡号)或不想共享的资料。
3。可以通过管理员封包破解相互信任的系统域。
可见,通常的安全分析将sniffer放在第二级的攻击不是没道理的,如果你在你管理的网络中发现了sniffer, 那么它代表的是有个cracker已经进入你的网络了,并且正在收集使用者的id和密码。现在我想你可能已经知道sniffer的工作原理了,如果你想多了解它攻击目标后会如何,请参考:
http://yahi.csustan.edu/studnotw.html
http://www.securitymanagement.com/library/000215.html
(美国陆军导弹研究中心和Whist Sands导弹发射基地事件)
在中国,我没有收集到可靠的sniffer攻击的例子,但是,可以肯定的是,有人在广州网易上这样做过,但是我没有证据来说明。(请注意如果有人在你的网络上放sniffer,你的封包传送丢失的机会将大增)。
那么如何得到一个sniffer来研究研究呢? 在ms-dos平台上有个杰出的sniffer
:Gobbler
你可以到这里找到它:
http://www.cse.rmit.edu.au/~rdssc/courses/ds738/watt/other/gobbler.zip
ftp://ftp.mzt.hr/pub/tools/pc/sniffers/gobbler/gobbler.zip
它可以在pc上执行,并且只分析区域内的封包,还可以设定只分析每个封包的前200到300个字节,这其中包含了用户名称和密码,通常,Cracker要这些就可以了。(这一点很重要,想象一下,如何没有节制的收集封包,几分钟内,你的硬盘就可能放不下任何文件了),还有,我个人认为很重要的一点,Gobbler可以很轻易的看到每个封包从哪里来,要到哪里去,我觉得这起码使我的工作变的很有针对性。
还有一个 C 的sniffer, Ethload.一个相当完整的sniffer.它可以在这些协议
上跑:
Novell odi
2Com/Microsoft Protocol Manager
PC/TCP/Clarkson/Crynwr
可以分析这些封包:
Tcp/Ip
DECnet
OSI
XNS
Netware
NetEBUI
你可以到这些地方下载:
ftp://oak.oakland.edu/simtel/msdos/lan/ethld104.zip
http://wwww.med.ucalgary.ca:70/1/ftp/dos/regular
Netman : http://www.cs.curtin.edu.au/~netman/
这是一个可以在X-windows中执行的sniffer.可我觉得这个功能不太可能用上,试想一下,如果有个Cracker在你的网络中执行X-windows而你不知道,呵呵。。。那我觉得,你的问题比被别人放sniffer更粗。
Esniff.c 这是一个专门用来收集Sun平台的封包流量的产品。原始的C代码只抓取封包的开始部分,(使用者id和密码)。你可以将它修改成抓取其他信息。
可以从这里下载这个C代码:
http://pokey.nswc.navy.mil/docs/progs/ensnif.txt
ftp.infonexus.com
其他的sniffer产品包括:
Sunsniff : http://mygale.mygale.org/08/datskewl/elite
http://hacked-inhabitants.com/warez/sunsniff.c
Linux_sniffer.c
http://mygale.mygale.org/08/datskewl/elite
Nitwit.c (在你使用之前,提醒你先看一遍源程序)
www.catch22.com/twilight.net/phuncent/hacking/proggies/sni
ffers/nitwit.c
Ok.现在我们都知道了什么是sniffer, 从哪里你可以得到sniffer,那么,我如何知道我的网络有没有被装上sniffer呢?理论上的答案是:没有办法。这也是为什么我们说sniffer的危险程度相当高的原因之一,因为它太安静了。换句话说,它不在你的系统中留下什么。并且你不知道它在你网络的哪个地方跑。
两种建议的方法:
1。列出当前在你机器上的所有进程。使用dos,windows,win95的用户可能有问题。但是Nt和Unix用户可以很容易。注意在Unix下,我通常的做法是:
想办法将ps放入一只特洛伊木马,(如果有权限的话)当别人使用ps -augx时,先kill我的sniffer进程。
所以,请你用root path中的ps.
2。直接去找sniffer.因为网上也就那么20来种sniffer,大多数cracker不会自己去花时间专门为你的网络写个sniffer(除非你每次在物理食堂吃的比他好很多),但是,如果他真的写了,呵呵。。你最好花几个小时来检查你的目录的一致性。如果你使用Unix,你最好先和你女朋友打声招呼。
那么假设很不幸的,你花了几个小时后,你得出了结论:我的网络被放了一个sniffer。我要怎么办?
通常我一定要先停止网络运行。然后,我考虑一个能加密封包的产品。SSH和f-SSH,这个产品使用ports 22,用RSA来计算连线的封包。可惜的是,你必须叫你的用户习惯这个产品,虽然SSH有免费的版本在网上等你。(win95,Unix 的都有。) 第二:我考虑重新架构我的网络,但是要花很多钱。(可以用Bridge或路由重新分割网络,重新考虑信任域等。。)重新架构网络超过我的讨论范围。
建议你不要只考虑火墙,因为火墙是给hacker破解用的。就好象shadow密码一样。在NIS中,shadow依然是个BUG.
最后说明一点:使用sniffer不那么单纯,要具备一定的网络知识才能真正使
用它来获取你想要的信息。(否则,它会帮你收集一大把垃圾的)因为它要
工作的环境是很底层的网络界面。
黑客技术(6)- 再议 Sniffer
停了很久没有再写了,近来有太多的人在提级sniffer , 我发现还是有很多人对sniffer
这个概念很模糊,所以想再说一下Sniffer. 所说全是个人观点,欢迎指正。
sniffing 和 spoofing 一样是作用在网络基础结构的底层。通常情况下,用户并不直
接和该层打交道,有些甚至不知道有这一层存在,呵呵。他们只是用ftp.http.telnet
.email 等,所以,应该说snffer的危害是相当之大的,通常使用sniffer 是一
次spoofing的开始。
那么到底sniffer是怎样的一种概念呢?
sniffer 是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。
(ISS)
在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于sniffer %2C系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。但是,同时,如果有心之人(非系统管理员)使用了sniffer ,那么,他同样也可以获得和管理员一样多的信息,同样也可以对整个的网络做出判断。当然,SPP相信他不会用这些信息去管理网络。
现在网络上到处可见免费的sniffer , 各种平台下的都有,我真不知道,这对管理员来说是好事还是坏事。(参看上一篇关于sniffer的文章,你可以知道现在找个sniffer多容易)
话说回来,那么sniffer是如何在网络上实施的呢?
谈这个问题之前还应该先说一下Ethernet的通讯. 通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
2、帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作
系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer 就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种
“混杂”方式时,该nc具备“广播地址”,它对所有遭遇到的每一个帧都产生一个硬件
中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。
(绝大多数的nc具备置成promiscuous方式的能力)
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并
且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整
体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid 和
passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使
入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而 sniffer可以很轻松截获在网
上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的
email会话过程。
4、窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的 ip 地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大条得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
那么,通过交换设备(网桥、交换机、路由等)所形成的网络边界是否可以有sniffer存在的空间呢?我想这是一个有趣的问题。能形成网络边界的交换设备并不是把来自一边的所有的帧都丢到另一边的。他们通常允许某些报文通过边界而阻止某些报文(特别是网络广播)通过边界。因此从理论上讲,通过交换设备对网络进行分段后,sniffer将无法透过边界而窥探另一边的数据包。但是,请注意:这是在边界设备不转发广播包的情况下(这也是通常的网络情况)。
一旦入侵者使用spoofer 诱骗某个边界设备而将自己的广播包流入不该进入的网段后,原理上还是在一个共享设备端使用sniffer 而实际上将是听到了边界的另一边。(详细的spoofer应用我会再整理出来)当然,这样会牵涉到ip 欺诈和Mac欺诈的问题,然而,你别忘了, sniffer和spoofer是很少分开来 的。
既然sniffer如此嚣张又安静,我要如何才知道有没有sniffer在我的网上跑呢?这也是一个很难说明的问题,比较有说服力的理由证明你的网络有sniffer目前有这么两条:
1、你的网络通讯掉包率反常的高。
通过一些网络软件,你可以看到你的信息包传送情况(不是sniffer),向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在听,那么你的信息包传送将无法每次都顺畅的流到你的目的地。(这是由于sniffer拦截每个包导致的)
2、你的网络带宽将出现反常。
通过某些带宽控制器(通常是火墙所带),你可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在听。实际操作中,我还发现,如果某台机器(非服务器)在不该使用广播的网络中使用了ICMP 类型10 、11、9等这一类的广播,呵呵。。有可能。。。非常有可能。。。如果同时出现udp520口的rip广播。呵呵。。那就百分之N接近。。。。。
在非高速信道上,如56K ddn 等,如果网络中存在sniffer ,你应该也可以察觉出网络通讯速度的变化。
最后再说明的是,并不是使用了交换设备就可以完全阻止sniffer , 如果系统管理员错误的使用了网络的拓扑结构,比如,工作站或终端通过某个集连设备集中到交换集线器,然后通过路由再进入主机群。这样的布线表面看来好象有物理上的分割,但实际上,从逻辑的观点,任何一台机器的数据除了到达主机外,还同时流向别的机器。任何一台机器都有可能架个sniffer 来监控从本地网络流向主机的所有数据。安全的布线应该是从各终端就使用交换设备。(在没有spoofer的情况下)
黑客技术(7)- ARP欺骗
ARP 欺骗技术
本来不打算写这接下的一系列讨论欺骗的文章(计划中有arp欺骗、icmp欺骗、路由rip欺骗、ip地址欺骗等),这主要是自己有些担心有些人会给网管增加日常工作量,但是想想还是写的好,因为通常在你猛打完补丁后,你可能觉得你的系统安全了,但是,实际上,打补丁只是安全措施里的一个很基本的步骤而已,通常一个hacker要进入你的系统,他所要做的并不是你打补丁就可以避免的,象这些欺骗都要求你必须掌握相当的网络底层知识和合理安排物理布线
才可阻止得了的。特别是多种手法混用的时候,特别要说明的是:有些人往往以为会使用某些工具入侵就觉得自己是个hacker,呵呵。。其实,我认为这只是入门而已(有些是连门都找不到),通过本文,我想让人们知道,一个hacker在真正入侵系统时,他并不是依靠别人写的什么软件的。更多是靠对系统和网络的深入了解来达到这个目的。
我想我会尽可能将我知道的写出来,同时也将尽可能把防止欺骗的解决办法写出来,当然,这只是我知道的而已,如果有失误的地方,欢迎指正。 呵呵。。
首先还是得说一下什么是 ARP ,如果你在UNIX Shell下输入 arp -a
(9x下也是),你的输出看起来应该是这样的:
Interface: xxx.xxx.xxx.xxx
Internet Address Physical Address Type
xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic
xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic
...... ......... ....
这里第一列显示的是ip地址,第二列显示的是和ip地址对应的网络接口卡的硬件地址(MAC),第三列是该ip和mac的对应关系类型。
可见,arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议,它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。
为什么要将ip转化成mac 呢?呵呵。。解释下去太多了,简单的说,这是因为在tcp网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义,但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的mac地址来识别,也就是说,只有mac地址和该ip包中的mac地址相同的机器才会应答这个ip包(好象很多余,呵呵。。),因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp --> mac 的转换表。通常是动态的转 换表(注意在路由中,该arp表可以被设置成静态)。也就是说,该对应表会被
主机在需要的时候刷新。这是由于乙太网在子网层上的传输是靠48位的mac地址而决定的。
通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的mac地址,如果没有找到,该主机就发送一个ARP广播包,看起来象这样子:
“我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的
主机请报上你的mac来”
ip为xxx.xxx.xxx.xx1的主机响应这个广播,应答ARP广播为:
“我是xxx.xxx.xxx.xx1,我的mac为xxxxxxxxxx2”
于是,主机刷新自己的ARP缓存。然后发出该ip包。
了解这些常识后,现在就可以谈在网络中如何实现ARP欺骗了,可以看看这样一个例子:
一个入侵者想非法进入某台主机,他知道这台主机的火墙只对192.0.0.3(假设)这个ip开放23口(telnet),而他必须要使用telnet来进入这台主机,所以他要这么做:
1、他先研究192.0.0.3这台主机,发现这台95的机器使用一个oob就可以让他
死掉。
2、于是,他送一个洪水包给192.0.0.3的139口,于是,该机器应包而死。
3、这时,主机发到192.0.0.3的ip包将无法被机器应答,系统开始更新自己的
arp对应表。将192.0.0.3的项目搽去。
4、这段时间里,入侵者把自己的ip改成192.0.0.3
5、他发一个ping(icmp 0)给主机,要求主机更新主机的arp转换表。
6、主机找到该ip,然后在arp表中加如新的ip-->mac对应关系。
7、火墙失效了,入侵的ip变成合法的mac地址,可以telnet 了。
(好象很罗嗦,呵呵。。不过这是很典型的例子)
现在,假如该主机不只提供telnet , 它还提供r命令(rsh,rcopy,rlogin等)那么,所有的安全约定将无效,入侵者可以放心的使用这台主机的资源而不用担心被记录什么。
有人也许会说,这其实就是冒用ip嘛。。呵呵。。不错,是冒用了ip,但决不是ip欺骗,ip欺骗的原理比这要复杂的多,实现的机理也完全不一样。
上面就是一个ARP的欺骗过程,这是在同网段发生的情况,但是,提醒注意的是,利用交换集线器或网桥是无法阻止ARP欺骗的,只有路由分段是有效的阻止手段。(也就是ip包必须经过路由转发。在有路由转发的情况下,ARP欺骗如配合ICMP欺骗将对网络造成极大的危害,从某种角度将,入侵者可以跨过路由监听网络中任何两点的通讯,如果有装火墙,请注意火墙有没有提示过类似:某某IP是局域IP但从某某路由来等这样的信息。详细实施以后会讨论到。)
在有路由转发的情况下,发送到达路由的ip的主机其arp对应表中,ip的对应值是路由的mac。
比如:
我 ping www.nease.net 后,那么在我主机中,www.nease.net的IP对应项不是nease的mac 而是我路由的mac。其ip也是我路由的IP.(有些网络软件通过交换路由ARP可以得到远程IP的MAC)
有兴趣做深入一步的朋友可以考虑这样一种情况:
假设这个入侵者很不幸的从化学食堂出来后摔了一跤,突然想到:我要经过一个路由才可以走到那台有火墙的主机!!! ^^^^
于是这个不幸的入侵者开始坐下来痛苦的思考:
1、我的机器可以进入那个网段,但是,不是用192.0.0.3的IP
2、如果我用那个IP,就算那台正版192.0.0.3的机器死了,那个网络里的机器也不会把ip包丢到路由传给我。
3、所以,我要骗主机把ip包丢到路由。
通过多种欺骗手法可以达到这个目的。所以他开始这样做:
1、为了使自己发出的非法ip包能在网络上活久一点,他开始修改ttl为下面的过程中可能带来的问题做准备。他把ttl改成255.(ttl定义一个ip包如果在网络上到不了主机后,在网络上能存活的时间,改长一点在本例中有利于做充足的广播)
2、他从贴身口袋中掏出一张软盘,这张有体温的软盘中有他以前用sniffer时保存的各种ip包类型。
3、他用一个合法的ip进入网络,然后和上面一样,发个洪水包让正版的192.0.0.3死掉,然后他用192.0.0.3进入网络。
4、在该网络的主机找不到原来的192.0.0.3的mac后,将更新自己的ARP对应表。于是他赶紧修改软盘中的有关ARP广播包的数据,然后对网络广播说“能响应ip为192.0.0.3的mac 是我”。
5、好了,现在每台主机都知道了,一个新的MAC地址对应ip 192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。6、他开始再修改软盘中的有关ICMP广播包的数据,然后发送这个包,告诉网络中的主机:“到192.0.0.3的路由最短路径不是局域网,而是路由,请主机重定向你们的路由路径,把所有到 192.0.0.3的ip包丢给路由哦。”
7、主机接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3 的ip通讯都丢给路由器。
8、不幸的入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口,用ip 192.0.0.3.
9、这个入侵者一把冲出芙蓉一(229),对着楼下来往的女生喊到:“一二一。。”
呵呵。。他完成了。
注意,这只是一个典型的例子,在实际操作中要考虑的问题还不只这些。
现在想想,如果他要用的是sniffer会怎样?
假如这个入侵者实在是倒霉 (因为喊“一二一。。”而被女生痛殴),当他从地上爬起来后突然发现:其实我要经过好几个路由才可以到那台主机啊。。。。。
这时他要怎么做?
呵呵。。。有兴趣做更深入了解的朋友可以自己构思。通常入侵者是这样做的:
1、苦思冥想六天六夜。。。。。
.
.
.
N、一把冲出芙蓉一(229),狂叫一声,一头栽向水泥马路。
可见,利用ARP欺骗,一个入侵者可以得到:
1、利用基于ip的安全性不足,冒用一个合法ip来进入主机。
2、逃过基于ip的许多程序的安全检查,如NSF,R系列命令等。
甚至可以得到:
栽账嫁祸给某人,让他跳到黄河洗不清,永世不得超生。
那么,如何防止ARP欺骗呢?从我收集整理的资料中,我找出这几条:(欢迎补充)
1、不要把你的网络安全信任关系建立在ip基础上或mac基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在ip+mac基础上。
2、设置静态的mac-->ip对应表,不要让主机刷新你设定好的转换表。
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。
确保这台ARP服务器不被黑。
5、使用"proxy"代理ip的传输。
6、使用硬件屏蔽主机。设置好你的路由,确保ip地址能到达合法的路径。
(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的ip包中获得一个rarp请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致
陷阱包丢失。
以下是我收集的资料,供做进一步了解ARP协议和掌握下次会说到的sniffer on
arp spoofing
ARP的缓存记录格式:
每一行为:
IF Index:Physical Address:IP Address:Type
其中: IF Index 为:1 乙太网
2 实验乙太网
3 X.25
4 Proteon ProNET (Token Ring)
5 混杂方式
6 IEEE802.X
7 ARC网
ARP广播申请和应答结构
硬件类型:协议类型:协议地址长:硬件地址长:操作码:发送机硬件地址:
发送机IP地址:接受机硬件地址:接受机IP地址。
其中:协议类型为: 512 XEROX PUP
513 PUP 地址转换
1536 XEROX NS IDP
2048 Internet 协议 (IP)
2049 X.752050NBS
2051 ECMA
2053 X.25第3层
2054 ARP
2055 XNS
4096 伯克利追踪者
21000 BBS Simnet
24577 DEC MOP 转储/装载
24578 DEC MOP 远程控制台
24579 DEC 网 IV 段
24580 DEC LAT
24582 DEC
32773 HP 探示器
32821 RARP
32823 Apple Talk
32824 DEC 局域网桥
如果你用过NetXRay ,那么这些可以帮助你了解在细节上的ARP欺骗如何配合
ICMP欺骗而让一个某种类型的广播包流入一个网络。
页:
[1]