Author:LengF      Time:2011/6/14

0x00 题外话
在进行一次***测试的时候,首先第一步是踩点,踩点即收集目标的信息方便后面***到思路利用及综合分析。本文描述不需要任何工具的踩点技术

0x01 踩点思路

1.探测web架构
(1)telnet www.target.com 80 返回下:

 
  1. <html> 
  2. <head><title>400 Bad Request</title></head> 
  3. <body bgcolor="white"> 
  4. <center><h1>400 Bad Request</h1></center> 
  5. <hr><center>nginx/0.8.53</center> 
  6. </body> 
  7. </html> 

得到了nginx/0.8.53 ,虽然还没办法判断是什么系统,按照这个判断大致可以判断是Linux(偶尔有些奇特的管理员在windows搭建nginx)

如果判断是Linux,尝试22,
telnet www.target.com 22 可以连接说明打开,有时候会返回SSH版本。
SSH-2.0-OpenSSH_5.2
同理也要尝试21端口

telnet www.target.com 21 返回

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 30 allowed.
220-Local time is now 05:28. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.

得知对方是Pure-FTPd搭建的ftp,并且可以进一步确认使用的是Linux系统。

如果是window你可以尝试你关心的端口开放情况,比如3389,8080,21,445,139等,当然端口开放情况可以应用所有平台。有时候端口被修改,你就借助工具来扫描了。
但是有一种情况比较难以判断,在t00ls上看到端口有大于65535的。
实例:telnet www.t00ls.net 80 然后输入head返回:

 
  1. HTTP/1.0 400 Bad Request 
  2. Server: squid/2.7.STABLE8 
  3. Date: Tue, 14 Jun 2011 05:17:08 GMT 
  4. Content-Type: text/html 
  5. Content-Length: 1213 
  6. X-Squid-Error: ERR_INVALID_REQ 0 
  7. X-Cache: MISS from WIN-S6AV24UOFUF 
  8. X-Cache-Lookup: NONE from WIN-S6AV24UOFUF:80 
  9. Via: 1.0 WIN-S6AV24UOFUF:80 (squid/2.7.STABLE8) 
  10. Connection: close 
  11.  
  12. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or 
  13. g/TR/html4/loose.dtd"> 
  14. <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859 
  15. -1"> 
  16. <TITLE>ERROR: The requested URL could not be retrieved</TITLE> 
  17. <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,san 
  18. s-serif}PRE{font-family:sans-serif}--></STYLE> 
  19. </HEAD><BODY> 
  20. <H1>ERROR</H1> 
  21. <H2>The requested URL could not be retrieved</H2> 
  22. <HR noshade size="1px"> 
  23. <P> 
  24. While trying to process the request: 
  25. <PRE> 
  26. header 
  27.  
  28. </PRE> 
  29. <P> 
  30. The following error was encountered: 
  31. <UL> 
  32. <LI> 
  33. <STRONG> 
  34. Invalid Request 
  35. </STRONG> 
  36. </UL> 
  37.  
  38. <P> 
  39. Some aspect of the HTTP Request is invalid.  Possible problems: 
  40. <UL> 
  41. <LI>Missing or unknown request method 
  42. <LI>Missing URL 
  43. <LI>Missing HTTP Identifier (HTTP/1.0) 
  44. <LI>Request is too large 
  45. <LI>Content-Length missing for POST or PUT requests 
  46. <LI>Illegal character in hostname; underscores are not allowed 
  47. </UL> 
  48. <P>Your cache administrator is <A HREF="mailto:webmaster">webmaster</A>
  49.  
  50. <BR clear="all"> 
  51.                 <HR noshade size="1px"> 
  52.                                        <ADDRESS> 
  53.                                                 Generated Tue, 14 Jun 2011 05:17 
  54. :08 GMT by WIN-S6AV24UOFUF (squid/2.7.STABLE8) 
  55.                                               </ADDRESS> 
  56.                                                         </BODY></HTML> 
  57.  
  58.  
  59. 遗失对主机的连接。 

分析:从返回信息,我们知道t00ls.net使用squdi cache代理及web缓冲服务器(该软件普遍用于linux下,window下也有,可以参考http://www.budeyan.com/tech_notes/squid-peizhi/)。并且得到了计算机名WIN-S6AV24UOFUF,从命名来看应该是windows系统搭建的。在不同的情况下返回不同的结果,这个依赖于服务器的设置,但是有些没有返回内容。比如百度就没有返回信息了。说明做了安全设置(具体设置还望大家分享)。

2.服务器备案及网站域名绑定
(1)备案信息
通过国家备案中心公共信息查询http://www.miibeian.gov.cn/publish/query/indexFirst.action可以得到很多有用的信息可以看到网站备案管理员的真实姓名和他备案号下所有的网站,为社工和***增加了很多思路。另外,我们不能忘记whois查询http://whois.chinaz.com/Default.aspx(只是一个示例网站,有很多类似网站)从whois信息往往可以得到管理员注册电话和邮箱,还有注册机构另外可能还有管理员的真实地址和名称。
(2)网站域名绑定情况
域名绑定情况是查看目标服务器绑定多少个域名,这个很重要,因为如果是独立服务器那么***思路就比较单一(当然也可以C段嗅探,但是如果对方antiarp了,那就悲剧了)http://rootkit.net.cn/index.aspx 我常用的一个,如果是多域名,有可能也是独立主机,也可能是虚拟主机,有时候虚拟主机相对难搞一点。
3.nslookup踩点
很少用这个命令踩点,其实它很强大也很有用。当你面对一个大型的网络时,你可以知道内网中哪台是DNS服务器,而DNS服务器管理员是很少光顾的。为我们的潜伏提供了很有利的条件。下面看看如何利用这个命令探测:

 

 
  1. C:\Users\LengF>nslookup   
  2. 默认服务器:  localhost 
  3. Address:  192.168.11.1                 # 你现在的DNS服务器ip 
  4.  
  5. > ? 
  6. 命令:   (标识符以大写表示,[] 表示可选) 
  7. NAME            - 打印有关使用默认服务器的主机/域 NAME 的信息 
  8. NAME1 NAME2     - 同上,但将 NAME2 用作服务器 
  9. help or ?       - 打印有关常用命令的信息 
  10. set OPTION      - 设置选项 
  11.     all                 - 打印选项、当前服务器和主机 
  12.     [no]debug           - 打印调试信息 
  13.     [no]d2              - 打印详细的调试信息 
  14.     [no]defname         - 将域名附加到每个查询 
  15.     [no]recurse         - 询问查询的递归应答 
  16.     [no]search          - 使用域搜索列表 
  17.     [no]vc              - 始终使用虚拟电路 
  18.     domain=NAME         - 将默认域名设置为 NAME 
  19.     srchlist=N1[/N2/.../N6] - 将域设置为 N1,并将搜索列表设置为 N1、N2 等 
  20.     root=NAME           - 将根服务器设置为 NAME 
  21.     retry=X             - 将重试次数设置为 X 
  22.     timeout=X           - 将初始超时间隔设置为 X 秒 
  23.     type=X              - 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX、 
  24.                           NS、PTR、SOA 和 SRV) 
  25.     querytype=X         - 与类型相同 
  26.     class=X             - 设置查询类(如 IN (Internet)和 ANY) 
  27.     [no]msxfr           - 使用 MS 快速区域传送 
  28.     ixfrver=X           - 用于 IXFR 传送请求的当前版本 
  29. server NAME     - 将默认服务器设置为 NAME,使用当前默认服务器 
  30. lserver NAME    - 将默认服务器设置为 NAME,使用初始服务器 
  31. root            - 将当前默认服务器设置为根服务器 
  32. ls [opt] DOMAIN [> FILE] - 列出 DOMAIN 中的地址(可选: 输出到文件 FILE) 
  33.     -a          -  列出规范名称和别名 
  34.     -d          -  列出所有记录 
  35.     -t TYPE     -  列出给定 RFC 记录类型(例如 A、CNAME、MX、NS 和 PTR 等) 
  36.                    的记录 
  37. view FILE           - 对 'ls' 输出文件排序,并使用 pg 查看 
  38. exit            - 退出程序 
  39.  
  40. > 
  41. 看到上面帮助信息了吧,我们尝试获取一个目标的邮件服务器: 
  42. > set type=mx 
  43. > target.gov.ph 
  44. 服务器:  localhost 
  45. Address:  192.168.11.1 
  46.  
  47. 非权威应答: 
  48. target.gov.ph     MX preference = 10, mail exchanger = mta.target.gov.ph 
  49. 得到了邮件服务器地址了。 
  50. 在得到DNS服务器: 
  51. > set type=ns 
  52. > target.gov.ph 
  53. 服务器:  localhost 
  54. Address:  192.168.11.1 
  55.  
  56. 非权威应答: 
  57. target.gov.ph     nameserver = ns2.target.gov.ph 
  58. target.gov.ph     nameserver = ns.target.gov.ph 
  59. 如果你拿下了这两个服务器就可以潜伏在这里了。 
  60. 查看非顶级域名的分配情况: 
  61. >server ns2.target.gov.ph     # 设置默认服务器 
  62. >ls target.gov.ph             # 可以列出域名对应的IP地址A记录 

另外在Linux下我们可以使用host命令得到一些有用信息,比如MX记录等等

4.trceroute(linux)和tracert(windows)
这个可以让我们了解到我们访问目标的路由情况,为什么要了解这些呢?因为有可能在我们目标的前面有防火墙或者其他阻碍我们的***我们一般查看最后两个数据包,这两个很可能是对方的网关或者防火墙之类的东西。当然有时候会在中间某个线路断掉,这主要是由于你在访问目标的线路上某些路由设备采用了ACL访问控制列表不允许trceroute或者tracert的通行。
5.绕过禁止ping包的数据探测
有些目标的防火墙设置禁止ping了,那么我们可以利用发包程序发送TCP ACK数据包并根据目标网络返回RST去判断有哪些活跃主机。另外也可以利用nmap的-PT参数来绕过一些防火墙的拦截。这个主要依赖于一些扫描软件的扫描原理,常见的扫描方式有ICMP扫描,SYN扫描,ACK扫描,FIN扫描,NULL扫描,UDP扫描技术等等。推荐一款Linux的扫描Hping2,它在某些方面比nmap强大,允许用户设置UDP/TCp和Raw IP数据包,可以穿越一些防火墙。
0x02 总结
其实在没有工具情况下,我们就可以做很多事情了,我只是抛砖引玉,大家补充。不要忽略你可以得到的任何信息。