远程攻击学习ABC—从SATAN开始的漏洞收集 我声明整理这篇文章的初衷不是怂恿更多人去搞破坏,只是想说明这么一件事情而已。如果你以为这篇文章能教会你什么的话,那么你也错了,因为往往技术取决于你的经验,而经验这东西需要自己去实践。当然了,最重要的是这篇文章总得来说还是比较杂乱的。(XMW) #漏洞的感念: 漏洞是硬件、软件或者是安全策略上的错误而引起的缺陷,从而可以使别人能够利用这个缺陷在系统未授权的情况下访问系统或者破坏系统的正常使用。这些缺陷所能影响到的网络范围是很大的,其中包括路由器、客户和服务器程序、操作系统、防火墙等。(XMW) 漏洞本身不会自己出现,它依赖于人的发现。而你每天看到的那些“最新”安全漏洞描述,这些可能是被HACKER、安全服务组织、其程序生产商或者还有不安分者发现的。而这些漏洞的信息则是以不同的方式发布的。如果这个漏洞是安全服务者或者是HACKER还有就是程序生产商发现的话那么就会及时的出现在一些安全资讯邮件列表或者BBS上,以便于网络单位查询和弥补。而那些被不安分者发现的漏洞,一般是通过破坏一大堆或者更多的服务器来“发布”的。这个例子你可以用去年微软的一个bug来证实。因为微软公司和安全服务者接受到这个漏洞信息的代价是近万台服务器被Denial of Service。我记得我在去年在订阅的国外一个网络破坏组织的内部邮件列表中收到一个关于Unix中的缓冲区溢出的漏洞,它所能影响到的Unix版本很多而且危险程度不小。但这个漏洞最后被打上补丁由安全服务组织发布却是在一个半月之后,这短短的一个半月所受到伤害的服务器一大堆,其中还包括美国的MILNET和印度某核武器研究所。 #发现安全漏洞: 要想发现漏洞是一件复杂的过程,它需要你熟悉各种语言和相当的网络技术。但我提前说了,我并没有发现过什么可值得说明的漏洞,你可理解为我仅仅只是知道这是怎么一回事就行了。:) 在这里我本想从两部分来描述,第一就是漏洞的是怎么产生和人为产生的安全弱点;第二就是我们做为一般用户怎么样才可以得到目标服务中存在着一些漏洞。但上个月在Net.kook BBS上Ghastful-elf有发一篇《Simple Discover Safety Failing》,在这篇里他系统的讲述了产生漏洞的情况和它们的共性,所以我就没必要再浪费我们的时间去描述了,就只说其二。(XMW) 如何得到系统的漏洞信息 当然是扫描了。扫描器是自动检测远程或本地安全性弱点的程序。而真正的扫描器是TCP端口扫描器,这样的一些程序可以指定某些TCP/IP端口(ftp等)以及她的服务进行检测,记录住每个从目标机器中返回的信息。这样可以帮助你收集到目标主机上的有用的信息。而其它像host、rusers仅只是一些Unix上的网络 应用程序,这些一般用在观察某种服务是否正常工作。扫描程序也是很多攻击者较为常用的,很多攻击的开始都是从扫描先进行的。(XMW) 一、SATAN——撒旦 SATAN这程序应当是你知道的,它是Dan Farmer and Weitse Venema用C、Perl和一些HTML专门为Unix而设计的分析网络的安全管理和检测、报告的工具,利用它可以收集到目标主机的很多信息。它能在很多Unix平台上运行,大多都不需要移植。SATAN的确很古老了,但是它目前在网络安全领域中所起到的作用却一直没有衰退过,这也是值得我去描述它的原因。SATAN特点包括可扩展的框架、友好的界面以及检测系统的可伸缩方法。它总体结构允许使用者方便的增加附加的探测器,它可以方便快速自动的检测很多系统,这也就是SATAN自1995年4月发布以来能成为网络安全领域的重要程序的原因之一。(XMW) SATAN有一个很重要的也很奇特的功能,这个功能也体现了它的创造者的理念是很清楚的,他明白这个是干什么的。那就是SATAN的自动攻击程序。因为创作者把入侵做为了安全最慎重的环节。在进一步讨论SATAN之前有必要先了解SATAN都能干些什么,如果你经常更新你的漏洞资讯的话那么这对SATAN来说是最好不过的了。因为它可以扫到目标主机的很多已知漏洞。具体表现为: ●FTPD脆弱性及ftp目录是否可写。 目前大多数Unix系统都提供FTPD(有些版本的Unix是in.ftpd)守护进程,但启动时都是不带参数启动的,有时候很多入侵者控制到主机后想得到更高级功能的FTPD时会做重新启动机器的处理,在启动FTPD时会加进一些参数…… ●NIS的脆弱性 NIS是一种网络查询服务,它可以将所有包含系统管理员信息的文件保存在一个指定的主机上向来自网络其它的用户提供这些信息。 ●RSH的脆弱性 它是Unix中的一个服务程序,可以执行指定的命令。 ●NFS的脆弱性 NFS是一种网络文件系统,一种允许一台机器通过TCP/IP网络连接使用另一台机器上磁盘空间和文件的协议。它目前已经成为了Int-ernet上进行分布式访问的一种事实上的标准。 ●X服务器的脆弱性 ●Sendmail服务器的脆弱性Sendmail的主要功能是转发邮件。从Sendmail可以得到一些如当前时间和主机号等… 具体的扫描内容表现为: ●可写匿名的FTP根目录 ●借助TFTP的对任意文件的访问 ●从任何主机上的REXD访问 ●NIS口令File可被任何主机访问 ●向任何host调出的NFS文件系统 ●X服务器的服务器控制无效 ●老版本(在8.6.10前)的Sendmail(据我所知现在这个似乎没有了) 我们就先从SATAN的安装说起吧。SATAN要比一般的扫描程序占用更多的资源,尤其是内存和CPU功能方面要求更高一些。并且它还需要一套Perl5.0以上的脚本解释程序的支持,还需要一个浏览器,因为它在运行的时候会自动启动浏览器。SATAN程序包个头也比较大,容易暴露目标,所以你在寻找SATAN的安装平台的时候要想到以上几点,否则就有可能白费功夫。SATAN安装一般所在的目录是/satan -1.1.1(少数不同)。安装之前首先得运行Perl程序reconfig,用它搜索各种不同的组成成分,并自定义目录的路径。要是遇到那些没有把浏览器安装在标准目录里(并且没有在PATH中进行设置)的那么就得你自己手工进行设置了,因为reconfig找不到。还有就是遇到没有用DNS(指的是自己机器上)的,那么就必须在/satan-1.1.1/conf/satan.cf中进行$dont_use_nslookuo=1的设置了;最后你可以在分布式系统上运行SATAN的安装程序(IRIX或SunOS),不过在编译的时候你可得多注意一下了,很容易出错的。SATAN可以自动扫描整个子网,驾御它很容易。但使用之前你必须拥有起码的网络攻击的普通知识。一般对Unix进行攻击大多首要目标就是得到一个普通的登陆用户(我想这个在很多初学者都提过),即在/etc/passwd或NIS映射中的加密口令拷贝的获取,得到后便可利用Crack猜出至少一个口令。这就明显的表示出来对单一主机攻击的优越性,注重在目标主机与漏洞共存的系统,也就理解为系统受托于目标系统、各个系统连接在一个物理网上或者各个系统拥有相同的用户,那么攻击的发起者可以利用DNS高速缓存崩溃或IP欺骗伪装成某个受托系统或是用户,也可以是在信任主机或者是伪装成的信任关系与目标机器的传输间架起一道屏障,即所谓的包截获,来截获来于目标机器与各个机器间的数据信息。而目前最常见的则是对第一个用户口令的寻找,也就是上述所描述的/etc/passwd或NIS了。SATAN可以帮助你搜寻目标系统中未加限制的NFS允许根对其读与写或根的脚本,换句话来说就是SATAN可以为你收集到目标机器各个用户的管理级别或根级别访问系统。如果说用SATAN对一台毫无安全而言的Unix的话,根本不需要你做任何复杂的过程,它都可以为你得到系统的进入点或是找到一些不需要级别用户的权限即可控制系统。这就言语着ITL Scale中所说的ITL9级了,SATAN可以跨越它。因为在SATAN中作者写进了攻击程序,即可以模拟入侵者来自动完成对系统的入侵。这一点在Farmer&Venema93年合著的《Improving the Securty of Your Site Breaking Into It》和Farmer的《computer-Oracle and passwd system(COPS)》中都有详细的说明,即便是现在已经过了几年了,但这两篇著作仍有保持着其的权威性和重要性。(XMW) 总得来说,一般远程攻击第一阶段是获取系统上的一个user name and passwd,而第一步又可分为针对目标主机建立安全漏洞列表和信息库两个步骤,攻击者通过对目标主机的漏洞与机会进行搭配,而获取对系统的访问权限;第二阶段就是获取根的访问权限,一旦可以获取根的访问权限了那么这个机器就已经可以说被完全控制;第三阶段就是扩展访问权,用来对其它网络进行攻击,这个阶段还包括清扫攻击时留下的痕迹,这样就可以把自己隐藏起来不被发现(为此有人专门编写了一些隐藏踪迹的工具,最为著名的就是Kit Vtivoy的rootkit了,rootkit里包括了ps、ls 、sum、who等内容,rootkit本身可以篡改系统内的ps、ls、sum、who等信息的输出,这样管理员就不能确定二进制的完整性Integrity,因为sum被感染过,被感染过的ps则不能显示攻击者运行的程序,不过rootkit这个程序因为作者只是想做为技术交流所以没公开发布过,所以一般不容易得到它(如果你运气好的话可以ftp://semxa.technotr.com/tools/中“找”到它)。而SATAN所能做到的就是第一、二阶段。(XMW) 要想对SATAN做详细的介绍和说明的话我想它可能得一本书来描述。在这里当然不能那么详细的去做,所以尽量的用事例来说明它。可以从攻击者的角度来进行,首先来确定一个虚拟的攻击目标再jack in it。它为www.semxa.com,接着就这个目标进行走马观花一般的步骤说明。 A\第一步千篇一律,那就是收集目标机器的信息。为了简单但又详细说明SATAN的功能,首先做的是不用SATAN对www.semxa.com进行扫描,而是背弃SATAN之外的工具也或者完全是手工完成它。因为我觉得这样更加有persuasion。 1、获取主机名和IP地址以: 通过运行whois和nslookup可以获得semxa.com域里的dns1.semxa.com等几个主机,再用named-xfer程序的执行结果和whois、nslookup的结果一起分析,这样就得到在semxa.com域里那些DNS服务器跟网络有连接。到了这个时候一个简单的分别ping各主机便可得到这些主机有那些是在Firewall后等等信息。同时还得到semxa.com运行有ftp、telnet、SMTP等服务。不过很多攻击者不习惯于此!仅仅只是直接ping主机获取IP,其它不做出判断。在这里获得的IP地址为:4.4.4.4 2、获取系统OS类型信息: 通常攻击者习惯于利用telnet来判断系统的OS,因为它得到的信息是比较可靠的。有时候仅仅一个telnet因为系统做过保护所以也不一定能有详细的诸如OS具体类型、版本或者硬件平台等等结果,攻击者会尝试利用缺省的无口令帐号登陆系统,这些帐号有:guest、lp、nuucp、tour、demos、4Dggifs9、root等等。如果说某个telnet守护程序允许你向它发送环境变量并且不做任何接收限制的话这可是好的开端.当然管理员不会这么认为 or ;-)or;》 3、获取FTPD信息: 一个简单的ftp登陆,在起始行一般都会给出版本的信息。如 #ftp www.semxa.com Connected to www.semxa.com 220 www.semxa.com FTP server(Digital UNX Version wed Apr 8 09:21:53 EDT 1998) ready. …… 这个时候可以利用匿名用户ftp或者anonymous来尝试登陆,匿名的Ftp对攻击收集信息来说是很重要的。 User (www.semxa.com none)): ftp 530 User ftp access denied Login failed. …… 不过这个不允许匿名用户登陆,那么得到FTP server的所存在的弱点也是很有必要的,虽然说目前很多时候对于FTP server的弱点不会更多的引起注意力,但我想不久的将来FTP Server上的弱点有可能是个deathblow。(XMW) 4、获取Sendmail信息: 直接用telnet connected to SMTP的端25来获取信息。Sendmail最初设计没有考虑其安全性,所以也是一个漏洞集中地。 #telnet www.semxa.com 25 229 www.semxa.com Sendmail 8.8.7/8.8.7 ready at Wed Apr 这里得到了Sendmail版本为8.8.7,其配置文件版本也是8.8.7。 如果说这里的版本是8.6.10以前的话那么我就可以就此止步了。因为完全可以在它上面找到几个可用的漏洞来结束这次攻击的第一阶段。(XMW) 5、UDP/TCP扫描获取信息: 这样去做主要是想获取目标系统中的/etc/inetd.conf文件信息。这些文件提供了假定的监听端口服务列表,它们允许对其进行telnet的连接。但这么做很浪费时间,针对TCP端口可以依赖更快捷的途径如利用Strobeftp://semxa.technotr.com/tools/得到)来完成,但得注意Strobe遗留痕迹的问题。可我喜欢它的速度,还因它不需要money来login。:-)而对UDP端口可用COASTftp://semxa.technotr.com/tools/)来完成。这些信息那些可取那些不可取现在先别去理会。等把所有的信息全部收集完成之后自己就这些信息做一个列表再慢慢analysis了。(XMW) 6、获取Portmap信息: 网络服务主要通过三种机制提供的,它们是:永远监听端口的Networkguardianship course、用inetd监听端口并在inetd获得一个连接请求时被调用的网络程序以及用Portmap程序为特定程序的请求动态分配一个响应端口的rpc服务。对此类信息的收集可以利用rpcbindftp://semxa.tech-notr.com/tools/)程序完成,这个程序也是Weitse Venema写的。(XMW) 7、获取Boot信息: 在这里主要想做的就是获得同一个LAN网段内的bootps服务访问权限,通过一个ping来确定目标机器的LAN地址,而ping会让目标机器产生一个ARP请求包,在这个包里含有目标机器的LAN地址,然后可以转储目标系统 的ARP告诉缓存……这是案例!需要你跟目标主机在同一个LAN内,而现在的semxa.com并非如此。所以此段信息即便是能获取也不会有太大用处。当然了,如果能获取的话那么就证明跟semxa.com是在一个LAN内了。你可以当这些话是废话。:) 8、尝试finger、rusers、rwho来获取信息: finger用来显示用户信息,具体的做法随处可见了。而rusers则是用来显示一台远程主机的登陆用户列表的。rwho跟who有点相同,rwho是显示在本地的网络上和主机有那些人在登陆。rusers会产生跟finger类似的列表,但rusers则不能查询单个用户的信息。表现为:#rusers -1 www.semxa.com……rwho对于攻击来说不是很有用的信息,但如果你跟目标主机是在同一个LAN的话那么就可另当别论了,rwho依赖其守护进程rwhod,责任是向其它rwhod程序定期广播这个时间段谁在系统上的信息。(XMW) 9、获取NFS Export信息: NFS是一种系统程序,它主要负责文件传送操作的NFS协议,另外还可以使用MOUNT协议标识要访问的文件系统及其所在的远程主机。NFS有着良好的扩展性、信息访问的透明性、简化了中央支持任务和网络管理等等优点。但它在安全上却有很大的问题。NFS采用的是客户机/server结构的系统,客户机是一个使用远程目录的系统,那么此时远程目录就像是它自己的本地文件系统的一部分一样;而server提供本地资源能被远程主机安装的服务,允许磁盘上的有关目录或文件被其它主机访问。网络文件系统就是通过NFS s-erver的文件系统安装到客户机的文件系统而得以实现的。NFS协议只负责文件的传输工作,但不负责连接文件系统。在server端有一个叫mountd的守护进程则负责安装任务,响应的安装程序负责维持包含在安装工作中的一系列 主机名和路径名,一般在Unix中把已经共享的远程目录安装到本地的过程叫做“安装(mountd)目录”,再把做为远程访问提供一个目录叫做:“输出(exporting)目录”,前者是客户机的功能,后者是一种server的功能。在Unix中,有个查询消息的showmount命令,它的作用是在一台NFS主机上跟某远程的NFS的信息。如果某个远程主机是通过rpcinfo -p显示安装服务的话,那么用showmount命令可以询问到rpc.nounted中的detail。它的参数包括有showmount -a(命令打印一列已经加载输出文件系统的host) 和showmount -e(命令请求打印的列表包含通过NFS输出的文件系统以及它的授权)。NFS uid 16-bit就是个很显著的例子,一个NFS server依赖客户端的认证,但这种认证只是请求时的IP add,有个声称客户uid为0+2^16=65536的用户被accept并且不重新映射为新UID。当这个用户提出请求访问拥有的文件时,对uid的比较仅对其低16位进行,就将允许这个用户伪装成根。就本身而言,NFS应该是不对Internet开放的,即便是你需要那么做但也仅仅只能是读。如果说可以对根可以写的话,那么这对网络安全来说绝对是一个笑柄了。NFS依赖于客户方认证的。如果对showmount所输出的信息多加以分析的话,寻找它的漏洞所在,利用很多诸如Nfsbug、nfsmunu等工具就可以对NFS进行jack in。(XMW) 10、获取NIS信息: 网络信息服务NIS(以前也叫做黄页服务)允许在一个单位或者组织结构中共享系统管理方面的信息数据库,比如用户组、口令文件等,NIS可以为重要的管理文件提供重要服务,并自动传送这些文件。使用NIS可以达到集中管理的目的,不用再那么麻烦的在多台不同机器上修改文件,能够保证整个网络上管理信息的一致性。NIS也是基于客户/服务器模型。通过NIS访问同样的数据库的客户机的集合称为域。那些供网络查询的数据库通常由几个标准的Unix文件转换而成,这些数据库一般称为NIS映像。NIS的域的概念类似于DNS中的域。 在一个NIS域中所有的计算机不但共享了NIS数据库文件,也共享着同一个NIS server。为了访问NIS信息host必须有相应的域名,并且只能属于一个特定的域。NIS主server保存所有的数据库文件并对客户提供数据库访问和其它一些相关服务。NIS的数据库ASCII码文件一般保存在/var/yp/dom-inname。而在Unix下通过命令#domainname x可以来检查或设置NIS域名。 NIS server在向NIS/yp域中所有的系统分发关于数据库文件时,一般不做检测,只要对方是自己NIS域内并且知道其域名的每个ypbind用户。这显然就安全而言不是什么好事情,但对攻击者来说则是不错的现象。如果说用ftp或者telnet smtp发去N次请求,导致NIS客户请求的响应发生反应迟钝的现象,这样就使NIS客户广播一个请求,这请求跟另一个NIS server相连。那么攻击的时候对这个请求进行响应,让它连到自己的系统之上,并向该客户发布口令映射,如果这么完整的做完的话那么也就可以结束这次攻击的第一阶段了。 做为管理者而言,NIS同NFS一样,都不应该对Internet是访问的。更不应在不信任的环境下使用。保持良好的NIS域名秘密而不易被猜到。(XMW) 11、获取Web server信息: 收集Web server的信息是攻击中很main的环节,虽然说Web的守护进程httpd不会发生间接暴露server信息的情况,但Web page上的信息却很多都是有用的,当然了,这有用是针对攻击者而言的。比如说一个信箱用户名也许对应的就是一个可以登陆系统的用户名等等。而CGI、ASP漏洞被攻击者所利用来攻击系统的事件也都屡见不鲜。这里可以为获取semxa.com的Web页面路径做些测试。简单的利用浏览器眼睛多注视左下角就可以获得页面的存放路径,大多时间还将获得有关本地环境和URL的信息,如果目标机器对它的URL是隐藏的话那么这个就是不存在的。通过建立一个Web站点并使semxa.com内的成员机跟它相连接,这样可以获得一些客户信息,但也只实用于LAN。我一般是利用浏览器观察,把暂时认为有用的信息会记录下来。(XMW) 12、获取NNTP(网络新闻传输协议)信息: 很多时候通过NNTP是攻击时获取目标主机信息的最好办法。NNTP本身是用于新闻组server之间交换新闻的协议,它也适用于新闻浏览器跟新闻server之间的协议。仔细的搜索每条向目标主机地址中发送的网络新闻你就会发现这里面也有目标主机内投送源的Email地址或者部分由目标主机用户投送的消息。但不管源自何处,这对攻击来说都将是收集目标主机信息的方便之门。尽管NNTP可以在投送时选择信任的主机来保护它的信息。但诸如tin可以解释在新闻中潜入的MINE语句,可投送本身却隐藏着一个错误。如果有一条对.rhost 文件做外部ftp的MINE语句,那么就会很容易的为信任攻击打开系统之门。这对安全来说可不是什么好事情。(XMW) 13、收集关于路由的信息: 得到目标host所在的该网关是否运行这对攻击来说是很重要的。因为网关程序信任来自未授权源的路由包。当然了,首先你得明白网关与主机间的区别。网关是连接到多于一个网络的设备,它可以有选择把数据从一个网络转发到其它网络中。路由器则是有着专用的网关。而网关化的路由程序允许向其它路由守护程序广播路由表信息,这些路由包可以用来建立目标主机中每个系统的路由表图,它们还有助于向这个域内的系统珍表增加host name。这些查询可以利用netstat -nr来完成。通过查询可以知道目标段的IP是采取的哪个路由器connect的。(XMW) 14、获取identd信息: 获取目标host是否运行了一个或者多个identd server,这对于判断出跟有连接的网络信息。像获得运行着pidentd,那么起码可以得到一些用户的信息和系统版本的信息。比如说当现在我有个认识的人他在我的ICQ中,而他同时又是semxa.com的一个用户,此时他正登陆在semxa.com上,那么我可以利用ICQ发消息给他保持住跟他的connect,这样我就可以利用工具SOidlookftp://semxa.technotr.com/tools/)得到identd信息。 获取identd信息之后很有用,可以针对semxa.com的auth port利用ICQ跟semxa.com的用户的连接再做N次connect的尝试,impersonation成该用户再摸索一些诸如FTP server的bounce等漏洞(如果有的话),指定shell或者注册port作为server的目标port,并且scan客户机上all可能的port。如果说可以匹配的话那么就可以得到有用的rsh或rlogin对semxa.com访问权的用户。当然现在这只是猜想而已。最重要的还是能得到identd信息。(XMW) 15、获取IP层信息: 我需要知道semxa.com是否允许IP源路由及IP转发。可以在传输层通过IP转发向NEtWork发出一个包尝试得到响应。但不幸运它的firewall没那么差。捷径没有但还可以利用Kit Vtivoy的路由跟踪程序Rtrackerftp://semxa.technotr.com/tools/)来完成,通过对loose源路由用-g选项从源路由给目标路由发一个包如果能得到一个响应的话就算OK。获取是否允许IP源路由及IP转发是因为IP包分段本身不安全。如果说能通过Packet pry看到这种分段的happen,理念上可以截获连接同时再deceiving TCP头利用这种分段得到 根的impersonation。我尝试了tcpdump但无收获。前几天那位来自Gallo Mr rhinoceros在这里提到过可以在合适的时候"passed aggravate load begets of middle router fragments......"(CITE),不知道他可否能将步骤变成文字与大家Share。(XMW) 16、获取Simple network Management Protocol(SNMP)信息: SNMP是一个允许远程程序方便NetWork管理的server,它是个简单的NetWork管理协议,是与TCP/IP NetWork中像router、交换器、集线器(HUB)进行通讯的一系列标准。通过SNMP可以获取到host与route的信息。收集SNMP信息得从SNMP传输请求想起。一个SNMP请求包含一个Community name,它用于目标系统上的snmpd守护程序认证访问请求,而请求有两种,一种是SNMP GetRequest;另一种是SNMP SetRequest,在这里我不会假设你已经掌握了关于SNMP技术,因为We here of MOSES Dave Goldsmith的那篇〈once The attacked on entireness using SNMP〉比什么都详细,你需要去读一下(如果你还没看过的话)。不过我个人认为SNMP的明天不会很长。(XMW) 17、其它更多的信息: 事实上在获取信息的时候每个数据都是不应当放过的,因为一时的疏忽可能会使你失去机会。了解目标主机中所有的信息,这对最后整理很有用。除了以上所说的之外还应获取更多的(如果有时间的话)像可否进行Packet pry、NTP、relay chat、talk、systat、gopher、UUCP、CGI、编译器信息等等。最近以来,UUCP的安全问题一直在GOLD COAST上讨论的比较热闹,而我在一段时间内也很注意UUCP,但从上次Chameleon的“UUCP--age-old UUCP of safety problem”起,其可利用性也就随着“age-old”在我脑海沉没了。虽然 如此,但也并不意味着放弃(如果有的话)。 从上面开始到了现在也算是收集的大部分的信息,那么整理这些信息是很有必要的,这样看起来清楚一点不至于有疏漏。一般情况下我在收集完结束之后会搞一个像下面的一样的表格: host :www.semxa.com port server:21ftp、22SSH、23telnet、25SMTP、117UUCP…… —————————————————————————————— ftp server open os Digital UNX Version bugs log: ……………… 这样下来可以随手找到信息的。很方便。 前头所描述的是一般普通攻击手工简单收集和获取目标主机的信息的一种思路,之所以在表现SATAN中很大篇幅的说它,那是因为跟SATAN的本身是很有关系的。所有的信息手工收集起来需要很长时间也同样是一个巨大的工程。可能会花去你四到五个小时去做。而这些工作换成SATAN去做的话,仅仅在几分钟便可完 成,同时还会对那些已经植入代码的漏洞进行攻击尝试。如果说上述的信息都可用SATAN来完成的话,那么就可以断定,用SATAN扫描网络将是一个很危险的动作,这危险是相对恶意破坏而言的。 SATAN在扫描中很重视到目标系统中各种TCP and UDP端口上比较活跃的进程。但这些又取决于用户指定的扫描类型。在SATAN中,它的类型根据网络状况存在着三种扫描程度,这分别是:low-grade(轻度)、normal(标准)和grievous(重度)scan。而这三种程度又具体表现为: low-grade(轻度)扫描: 这种状态下的扫描是从DNS、rpc、portmap进行的。 DNS扫描时利用nslookup(Unix上一种交互式查询Internet主机、server名字的命令程序)来收集有关目标主机的更多点信息,这些信息包括目标主机的MX记录和授权nameserver。rpc扫描目标主机portmap请求一张服务列表,而后对列表进行扫描查询: bootparam、ypbind、selection-SVCnfs、rexd、arm、mountd、rusersd、netinfobind以及admind。 如果说portmap的服务列表中显示有mountd,那么SATAN就会进行showmount扫描,首先会要求目标的mountd给出一个列表,列表中显示哪些文件系统输出和哪些主机被允许加载它们。最后会要求目标mountd列出实际加载文件系统的host和被加载的文件系统。showmount是Unix中一个消息查询的命令,它可以给出一台远程主机上的NFS信息,比如用$showmount -e 4.4.4.4。这样的扫描不做普通的TCP and UDP扫描的,扫描范围比较小。(XMW) normal(标准)扫描: 标准扫描包含了轻度扫描的所有内容,同时增加了对fingerd、各种TCP服务以及UDP服务的扫描。扫描时会根据结果和扫描规则库有选择的对rusers(这是个Unix上消息查询的命令,可以显示出一台远程机器上登陆用户列表)、bootparam和yn进行扫描。(XMW) finger的查询无须再说了。(XMW) SATAN随后会对TCP进行扫描,以便得到目标端口上活跃的gopher、http、FTP、telnet、SMTP、NNTP、UUCP以及X等服务。再者就是UDP端口上的DNS与Xdmcp的扫描。如果说查询时portmap报告回来目标的rusersd是可以用的,那么SATAN就会请求rusersd给出都有哪些用户,他们是从哪个系统上登陆进入的等等。 rpc bootparam服务可以让SATAN获取NIS的域名,如果SATAN一旦获得了这个域名的话,SATAN就会开始启动一个up -chk程序来尝试从NIS server上获得passwd、byanme映射。 现实中SATAN标准扫描是比较常用的。因为很多机器到这里就已经可以达到驾驭它的目的了。(XMW) serious(重度)扫描: 这次扫描包含了上述两种的全部内容。增加了对那些比较活跃的服务的更多一些的扫描。TCP的端口也从1到了65535(但默认时是1到9999),UDP的端口则是1到2050,32767到33500。很显然,这需要时间和多点资源了。(XMW) 上面这三种扫描其实仅仅只是SATAN扫描的前个阶段,主要是为了收集目标机器的信息。 在SATAN的规则扫描中包含了一些常见的安全漏洞的检查。但并不包含所有已知漏洞,这需要你来自己增加。经常的更新自己的SATAN漏洞库集对发现新漏洞是很重要的。通过创建一个新的.satan并将它放到bin/目录中就可以完成增加一个新的扫描了。 建立SATAN也很简单,但却很麻烦。在SATAN软件包里包含了大量的HTML构造起来的Web页,这些Web页是很重要的,因为很多漏洞的信息来自这些页面。上面简单的说了些关于建立SATAN的方式。在config/目录下编辑paths.pl and paths.sh文件,实现你做需要的文件放置位置;接着可以根据你自己的要求去编辑config/satan.cf,可以根据自己的需要考虑给$only-attack-these and $dont-attack-these增加一些 简单的实用的内容(这两个变量提供对SATAN扫描主机时的控制);运行rcsonfig脚本(应当注意的是这个脚本是Perl5.00x and a Web浏览器的增强脚本,如果rcsonfig选择的Web不适合,那么编辑config/paths.pl指向这个选择的浏览器,这时的Web浏览器变量是$MOSAIC);在satan-1.1.1/目录下执行make指令;如果你想隐藏自己或者是需要一个代理的话(因为这个时候会提示给你的)在SATAN 的文档中特别说明了不需要设置代理环境变量或浏览器代理;以root登录运行SATAN脚本,如果没有给出命令行参数,脚本调用一个小的Web server,也就是html.pl,再与之进行对话……一切妥当之后SATAN的主界面便会出现。由于SATAN操作很简单,就如何使用它来描述可能有点prosiness。《:-)首先启动SATAN,毫无疑问,启动它需要#。administrators在使用SATAN的候最好是将其配置成拒绝本地以外的IP来运行SATAN,但这也不完全可以防止。因为一般情况下使用IP欺骗便可以饶过这个环节。 接着配置管理选项,对www.semxa.com这单一的目标进行扫描必须将proximity最大设置成0并且关闭子网的扩展或者过早的编辑config/satan.cf,根据需求再利用$only-attack-these变量将扫描限制在单一之上。然后选择"Change the C-nfiguration File"项save修改。很多时候把限制放松到一个整的网段效果会好 许多,但这取决于你是否有这个时间和精力。 最后在"Target Selection"中植入目标地址,接着选择scan degree启动扫描就over了。后来需要做的就是等待结果。当SATAN的子线提示已经完成时,就可以在SATAN的Data Gather Of Screen选"View primary target results"来浏览结果。也可以在SATAN的子目录results/s-ata-data来看。 信息和弱点收集结束接着能做的就只有空洞的分析那些结果了。This is the job nerve-racking,当然只是就我而言的。:-\对于www.semxa.com,现在已经收集到了很多信息在我的表格中了,“对号入座”是目前该做的事情了。在SATAN收集到目标机器的OS的时候,我抽了这个空余时间到www.netsafety.com收集关于那个OS的所有漏洞的信息,有了它我就可以在SATAN的报告中标识出哪个可以用哪个该放弃。所以说经常留意最新的安全弱点报告是很重要的。但目前应当做的还是需要第一个能登陆系统的用户和它的口令。 对于匿名可以进入的系统来说,这无疑是一个好的兆头。虽说匿名的FTP本身并不是个漏洞,但是它却可以使攻击者能获得这个系统的信息以及更多的包括内部SATAN不能逾越的漏洞,甚至可以因为管理员的低级配置而获得/etc/passwd文件。目前在Internet上,提供匿名服务的系统依然很多。我们花点时间来探讨一下 这些吧(如果你也有时间的话)。但匿名FTP的未来我想应该不会很长远吧,毕竟它是一个潜在的安全隐患。从Unix上设置匿名的FTP服务路径: $mkdir/home/ftp $cd /home/ftp $mkdir bin $mkdir etc $mkdir pub $mkdir lib $cp /bin/ls /home/ftpbin $chmod 111 /home/ftp/bin/ls 接着需要创建只能被匿名FTP用户使用的FTP组,这个组没有其他成员的组,把这个新创建的组所能使用的项加到/etc/group文件里,再创建一个单独的$mkdir /home/ftp/etc/group FTP::50 建设匿名的FTP用户名,方法是把该用户的项放在/etc/passwd中,并创建一个为/home/ftp/etc/passwd文件,当然它只能包含该FTP项。内容表现为: FTP:*:23:32::no shell 接着需要做的就是把这个项设置成只读444: $chmod 444/home/ftp/etc/passwd $chmod 444/home/ftp/etc/group 以上这是一般的Unix上匿名FTP的配置。从上面的no shell不难看到匿名的FTP用户登陆后是无法通过shell对系统进行操作的。如果说出现可以通过shell来操作系统或的匿名FTP用户拥有合法的shell的话,那这个管理员一定是个Zanily Gink。而所谓的匿名用户获取/etc/passwd那也是属于管理员配置上的低级错误。匿名FTP的/home/ftp/etc目录里包含了passwd和group文件,这几个文件允许匿名用户使用ls来显示它们名称,但不是UID。至于passwd文件的密码域则是不可用的。但如果说管理员不慎把/etc/passwd和/etc/group文件copy到了/home/ftp/etc目录下,那么攻击者就该偷笑了。还有的危险就是telnet to ftp 21如果允许执行SITE CHMOD and SITE EXEC、/home的所有者是匿名FTP的用户,那么随便就可把权限设置成777或者 更多的进行修改等等等等。可semxa却没有匿名FTP服务,所以上面的话只是我想到了才说的。haha……:-x *就SATAN而言。www.semxa.com的实际漏洞并不是很多,但却有一个绝对够级别的漏洞——mount的漏洞。这是一个很老的漏洞了,据说可以延伸到VAX年代,Sun的描述是“如果两个连续的mount -d -s命令在几秒内发送给机器,则请求被实现……”。而对缓冲区溢出来说,一直是受到关注的。以缓冲区溢出为类型的安全漏洞是最为常见。但要利用缓冲区溢出上的漏洞那么你就得熟悉汇编语言、c and Unix、Windows甚至是Linux以及更多的系统。否则你只能看着别人去模仿,这是很不自然也很不方便的。当然了,最重要的还 是你得知道溢出的是什么缓冲区。Mixter95年曾经写过一篇初级的关于缓冲区溢出的利用的文章《Writing buffer overflow exploits - a tutorial for beginners》,我在这里纯粹是起一个“广而告之”的作用。看这篇文章你可以http://semxa.kstar.com/HANLU/buffer95.txt看到全部。* 我提倡把扫描的结果建立成表格的形式,是因为这样可以使你更好与漏洞进行匹配,这是很值得的。熟悉英文的用户在建立了表格之后可以去BUGTRAQ找,最重要的在这里你甚至还可以相匹配的攻击代码。而厌烦English的用户则可以去www.105.com.cn,这是一个很有价值的站点,在这里可以找到97年至今的各个系统的安全漏洞,当然大部分也是带有代码的。(XMW) 怎么利用所收集到的漏洞进行攻击暂时不是这个文章所讨论的问题。可事实上讨论漏洞如果利用却一直是很得到重视的,很多朋友都这么以为。可我认为这是后话,只是觉得一个真正的技术上的成功的背后大多是有着坚韧而不舍弃、勇往追求的执着精神努力而来的,绝不是从天上掉下来或者是从娘胎里带出来的“天生的天才”。如果说一个潜在的漏洞所能给你得到的是一个最高权限的话,那么没有任何漏洞的情况下呢?当我 们还在尝试Modem的拨号入侵甚至是再深奥一点的时候,美国人却正在进行着DCC attack,不由得发现世界如此之大,可我们太肤浅了…… 请相信一步难上青天,需要点点滴滴…… |