原文作者:Cond0r,本站进行了:文字排版、语句修正、内容补充。

文章前言

    攻击必须是有目的性的,首先确立为什么攻击?怎么去攻击?成功了之后该怎么办?被发现了怎么办?遇到特殊情况该怎么办?等等,计划好了从而实行攻击。

事先踩点

    我们一般在渗透的时候,首先都是踩点,然后才实行攻击(呵呵,废话谁都是先踩点才实行),那我就先说说踩点。

    踩点工具,又分为主动方式和被动方式:

        一、所谓的主动,讲白了,就是你用扫描工具主动的对网站的弱点进行探测和获取网站的信息。

        二、而被动就是在正常访问的情况下获取网站的一些信息。当然,被动所获取的信息和主动是没法比的。

    其中被动踩点的工具,其中灰帽中所说的P0f(万能的被动操作系统指纹工具,具体的请看以下简介)。他可以通过你正常访问网站,从而获取网站操作系统的信息,使用方法就不在本文的诉述范围之内了。

P0f - 新的远程OS指纹被动判别工具:

    P0f能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。

    P0f不增加任何直接或间接的网络负载,没有名称搜索、没有秘密探测、没有ARIN查询,什么都没有。某些高手还可以用P0f检测出主机上是否有防火墙存在、是否有NAT、是否存在负载平衡器等等!

    P0f是继Nmap和Xprobe2之后又一款远程操作系统被动判别工具。它支持:

        1、反连 SYN 模式
        2、正连 SYN+ACK 模式
        3、空连 RST+ 模式
        4、碎片 ACK 模式

    P0f比较有特色的是它还可以探测:

        A、是否运行于防火墙之后
        B、是否运行于NAT模式
        C、是否运行于负载均衡模式
        D、远程系统已启动时间
        E、远程系统的DSL和ISP信息等

    输出结果类似的报表:

192.165.38.73:20908 - OpenBSD 3.0-3.4 (up: 836 hrs)
-> 217.8.32.51:80 (distance 6, link: GPRS or FreeS/WAN)

192.165.38.73:21154 - Linux 2.4/2.6 (NAT!) (up: 173 hrs)
-> 217.8.32.51:80 (distance 6, link: GPRS or FreeS/WAN)

192.165.38.73:22003 - Windows XP Pro SP1, 2000 SP3 (NAT!)
-> 217.8.32.51:80 (distance 6, link: GPRS or FreeS/WAN) 

下载地址(有多种系统版本,请自行选择):
    官方:http://lcamtuf.coredump.cx/p0f.shtml
    其他:http://freshmeat.net/projects/p0f/

    主动踩点的工具有很多扫描工具,如Nmap等。Nmap有隐蔽式的扫描,具体参数我忘了,本人很少注意自己的安全。

    有必要的情况下可以把网站的镜像全部问下载下来(我知道不是网站的建站源文件),可能在网站一些文件的注释里面会隐藏一些你意想不到的东西,还有CSS文件,有的人喜欢在CSS文件的前面写上自己名字之类的。还可以通过这样的方法找到建站的系统,从而去查看是否有漏洞而且实行攻击。你可以去查看网站的IP,然后去查看物理地址;有的网站下面会有手机或者电话号码,也可以查看到物理地址;还可以查域名的Whois信息,也会有物理地址、联系电话、邮箱等。

    从而判断是买、租的服务器,还是在自己公司。如果在主站未发现任何漏洞,还可以从同服务器的网站下手(即:旁注技术)。但是对于一些中型大型公司服务器都是独立的,甚至整个C段都是的,这样一丝敏感的信息都不能放过。甚至是服务器网站的美工与制作者,只要和网站牵扯上的都有可能成为突破点(那些用0day、溢出的,不在本文探讨之内)。


获取旗标

    (旗标就是网站的软件版本信息)

    对网站服务器软件的旗标获取,可以通过对网站提交错误数据,或者构造一个不存在的地址,看他报错的信息从而判断出版本。

    还可以通过抓包查看Http头来查看,当然自动获取的工具也有很多。

    对FTP获取版本,可以直接连接上去查看默认的欢迎信息就可以查看到服务器的版本。

    可以通过“nc -nvv ip pory”或“telnet ip port”获取回显信息,以确定远程服务器系统、软件版本之类的信息。

    Telnet是对目标主机的系统信息获取的很好的一个途径,看到telnet的信息可以判是路由还是系统,当然其中不包括修改了banner的。但是在linux下基本没多少人用telnet,因为telnet是不安全的协议。


收集信息

    对于信息的收集上面也提到了一些。

    我们还可以对目标网站的域名whois进行查询,这样可以获取的到一些注册信息,尽管可能不是网站管理员的。至少我们可以知道Dns,这样我们就可以按需要来是否可以尝试劫持Dns。

    (对网站漏洞进行扫描我一般都是用wvs,linux下用no啥的我忘记了,速度很慢,但是得到的东西真不错)

    在知道服务器物理地址或者管理电话的物理地址的情况下,可以去谷歌地球查看所在地的周边情况;这样在办成认识人的情况下进行电话社工的几率又增加了一些。

    还有就是我在开头所说的查看网页的源文件,可能发现一些意想不到的东西。

    还可以利用Google Hack进行获取更多的信息。在无法找到网站后台或者错误信息等情况下,可以试试通过Google Hack。

    本人在注入Mysql的网站的时候,有写权限,但是苦于没有绝对路径。我就去谷歌“site:域名 error”等错误提示,从而找到了绝对路径,成功写入一句话。

    还可以通过谷歌查找网站的电话号码或者Email等,从而收集到网站管理或者公司员工的一些敏感信息,这样对社工是大有好处的。

    对于信息的收集还有很多方法,在此我就不一一叙述了。


整理信息

    对于信息的整理还有有必要的,至少要对收集的信息进行归类,可能在独立进行渗透的时候不会发现什么好处。

    但在对一个大型网站或者团队进行渗透的时候,信息的整理就是很有必要的了。

    在对大型的网站进行渗透不是一天俩天的事情,时间久了,可能你记不得你在那个文件里记录了一些什么东西,现在要用到了,却找不到了。

    这样的情况不是没有的,这样对信息的整理就很必要。团队渗透的时候都是分工,你得到的信息至少要让别人能看明白。如果不加整理,这样别人看的不方便还要你给解释。在进行到关键步骤的时候一分一秒都不能耽搁的。


实行攻击

    好了,前面做了那么多准备,现在开始实行攻击了。

    在对网站攻击前准备我们已经准备好了,是不是就说明我们肯定能拿下目标了吗?这是不可能的!

    通过踩点,就是以上3步得到整理好的信息从而实行攻击。

    在知道对方一些弱点的信息的情况下而选择相应的攻击方式,不可能说,明明是注入漏洞,你非要去让他产生XSS。

    在知道对方建站系统的情况下可以尝试查找相对应的漏洞,来进行攻击。也可以查找对方应用软件的漏洞进行漏洞攻击……

    攻击的方法以及方式,就看你所收集的信息而定了,所以说踩点是很重要的。

附一张入侵、渗透流程图(与本文无关,属扩展知识)