目录
0x01 前言
0x02 Whois信息
0x03 目标IP
0x04 IP2Location地理位置查询
0x05 IP2Domain反查域名
0x06 子域名
0x07 端口信息
0x08 敏感目录/文件
0x09 通过搜索引擎进行信息收集
0x10 邮箱收集
0x11 CMS类型
0x12 服务器与中间件信息
0x13 其他
0x14 总结
信息收集分为主动信息收集和被动信息收集。主动信息收集可以通过与目标主机进行直接交互,从而拿到我们的目标信息,如直接访问、扫描网站端口、服务等;被动信息收集则与主动信息收集相反,通过第三方服务间接获取目标信息,如Google Hacking、Whois查询等。总得来说,两种方法都有各自的优缺点。
Whois是一个用来查询域名注册信息数据库的工具,一般的域名注册信息会包括域名所有者、服务商、管理员邮箱地址、域名注册日期和过期日期等,这些信息往往是非常有价值的。同时我们还可以利用Whois反查工具,反向查询同一注册人、同一邮箱注册的其他的域名等。在渗透测试中,我们可以使用Linux下的whois命令、站长之家(http://whois.chinaz.com)或者爱站(www.aizhan.com)进行查询。
图1 对chinaz.com进行的查询结果
从图中可以看到,我们得到了关于chinaz.com域名的一些基本情况,如注册商、联系人、电话、域名服务器等。通过联系人反查可以发现注册在该联系人下的所有域名。
图2 Whois反查结果
当然,也可以使用爱站进行查询,除了注册商等基础信息之外,同时返回了相关子域名、同IP网站等相关信息,一定程度上降低我们刺探信息的时间。
图3 爱站查询结果
在一次渗透测试中,往往只是知道一个域名,需要你用着域名,来查找所有目标的IP和可用的域。
使用nslookup与dig两个工具,都可以查询指定域名所对应的IP地址,两者不同之处在于,dig工具可以从该域名的官方DNS服务器上查询到精确的权威解答,而nslookup只会得到DNS解析服务器保存在Cache中的非权威解答。
图1 使用nslookup工具对baidu.com进行查询的结果
使用set type=A可以对其IP地址进行解析,查询结果显示baidu.com域名被解析至123.125.115.110和220.181.57.216这两个IP地址。还可以使用set type=MX来查找其邮件转发(Mail Exchange)服务器。有些DNS服务器开放了区域传送,可以在nslookup中使用ls -d example.com命令来查看其所有的DNS记录,这些信息往往会暴露大量网络的内部拓扑信息。
备注:
>>nslookup [-d] [待查询的域名] //加上-d参数,即可查询域名的缓存
>>nslookup -qt=mx [待查询的域名] //查询邮件服务器信息
dig命令的使用更为灵活,比如可以在dig中指定使用哪台DNS解析服务器进行查询,同时采用dig命令会触发DNS解析服务器向官方权威DNS服务器进行一次递归查询,以获得权威解答。其基本的使用方法为:
>>dig @[DNS服务器] [待查询的域名]
可以在待查询域名后面加上A、NS、MX等选项以查找特定类型的DNS记录(默认为A)。从图2所示结果中可以看到baidu.com域名所映射的权威解答仍为123.125.115.110和220.181.57.216。
图2 使用dig工具查询baidu.com域名的权威解答
而对于一些采用了分布式服务器和CDN技术的大型网站,使用nslookup查询到的结果往往会和dig命令查询到的权威解答不一样,那么如何绕过CDN查找到目标的真实IP,对我们来说非常重要。
首先,我们需要判断下是否存在CDN,方法很简单,只要在不同地区进行ping检测就可以知道。不同地区ping同一个网址,得到不同的IP地址,那么该网站开启了CDN加速,相反如果得到的是同一个IP地址,那么极大可能不存在cdn,但是不绝对。
常用的工具:
CA App Synthetic Monitor(https://asm.ca.com/en/ping.php)、17CE(www.17ce.com)
其次,绕过CDN获取真实IP的方法互联网上有很多,我常用的有二级域名法,目标一般不会把所有的二级域名放在cdn上,伤钱呐,确定了没有使用CDN的二级域名后,本地将目标域名绑定到同ip,能访问就说明目标站与二级域名在同一服务器上,可能在同C段,扫描C段所有开80端口的ip,挨个尝试。
有些时候,你不仅希望得到目标的IP地址,还希望进一步了解目标所处的地理位置,地理位置的信息可能会暴露关于目标更加私密的信息,比如确定目标主机是某公司资产的一部分还是个人资产等。通常把由IP地址查询地理位置的方法称为IP2Location。
一些网站提供了IP到地理位置的查询服务,如果是查询国内的IP地址,推荐使用“QQ纯真数据库(http://www.cz88.net/)”。也可在其他网站http://www.gpsspg.com或https://www.maxmind.com/zh/geoip2-precision-demo上进行查询。
如果想了解更详细的地理位置信息,还可以根据结果中提供的经纬度使用谷歌地图或百度地图进一步查询。
如果你的渗透目标网站时一台虚拟主机,那么通过IP反查到的域名信息往往很有价值,因为一台屋里服务器上面可能运行多个虚拟主机,这些虚拟主机具有不同的域名,但通常共用一个IP地址。如果你知道有哪些网站共用这台服务器,就有可能通过此台服务器上其他网站的漏洞获取服务器控制权,进而迂回获取渗透目标的权限,这种攻击技术也称为“旁注”。C段是和目标机器IP处在同一个C段的其它机器;通过目标所在C段的其他任一台机器,想办法跨到我们的目标机器上。
常用工具:
- 使用http://www.ip-adress.com/reverse_ip/提供的服务查询有哪些域名指向同一个IP地址。
- http://www.webscan.cc/查询旁站和C段。
- NMAP扫描C段。
在渗透测试中,往往主站的防御会很强,常常无从下手,那么子站就是一个重要的突破口,比如某个子站存在漏洞,利用漏洞拿到数据库后利用用户密码尝试登陆主站后台等,因此子域名是渗透测试的主要关注对象,子域名搜集的越完整,那么挖到的漏洞就可能更多,而且往往同一组织机构的不同域名和应用服务中,往往都会存在相同的漏洞。
常用的工具有:
- Layer子域名挖掘机4.2纪念版源码
- 可以使用netcraft网站提供的信息查询服务来完成工作。打开https://searchdns.netcraft.com/,在搜索字段中输入域名如baidu.com,单机“lookup!”按钮后,就会得到图1所示的结果。
- sublist3r、subDomiansBrute等(后两个工具还没用过,但是也是极多人推荐使用的开源工具)
图1 使用netcraft网站服务查询baidu.com域名下的子站点域名
服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大。开始扫描之前不妨使用telnet先简单探测下某些端口是否开放,避免使用扫描器而被封IP,扫描全端口一般使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。常见的端口信息及渗透方法。
端口扫描工具:NMAP
端口号 | 端口服务/协议简要说明 | 关于端口可能的一些渗透用途 |
tcp 20,21 | ftp 默认的数据和命令传输端口[可明文亦可加密传输] | 允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4) |
tcp 22 | ssh[数据ssl加密传输] | 可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输,等等…常用于linux远程管理… |
tcp 23 | telnet[明文传输] | 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令,也许会有意想不到的收获 |
tcp 25 | smtp[简单邮件传输协议,多数linux发行版可能会默认开启此服务] | 邮件伪造,vrfy/expn 查询邮件用户信息,可使用smtp-user-enum工具来自动跑 |
tcp/udp 53 | dns[域名解析] | 允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控 |
tcp/udp 69 | tftp[简单文件传输协议,无认证] | 尝试下载目标及其的各类重要配置文件 |
tcp 80-89,443,8440-8450,8080-8089 | web[各种常用的web服务端口] | 各种常用web服务端口,可尝试经典的top n,,owa,webmail,目标oa,各类java控制台,各类服务器web管理面板,各类web中间件漏洞利用,各类web框架漏洞利用等等…… |
tcp 110 | [邮局协议,可明文可密文] | 可尝试爆破,嗅探 |
tcp 137,139,445 | samba[smb实现windows和linux间文件共享,明文] | 可尝试爆破以及smb自身的各种远程执行类漏洞利用,如,ms08-067,ms17-010,嗅探等…… |
tcp 143 | imap[可明文可密文] | 可尝试爆破 |
udp 161 | snmp[明文] | 爆破默认团队字符串,搜集目标内网信息 |
tcp 389 | ldap[轻量级目录访问协议] | ldap注入,允许匿名访问,弱口令 |
tcp 512,513,514 | linux rexec | 可爆破,rlogin登陆 |
tcp 873 | rsync备份服务 | 匿名访问,文件上传 |
tcp 1194 | open | 想办法钓账号,进内网 |
tcp 1352 | Lotus domino邮件服务 | 弱口令,信息泄漏,爆破 |
tcp 1433 | mssql数据库 | 注入,提权,sa弱口令,爆破 |
tcp 1521 | oracle数据库 | tns爆破,注入,弹shell… |
tcp 1500 | ispmanager | 主机控制面板 弱口令 |
tcp 1025,111,204 | nfs | 权限配置不当 |
tcp 1723 | pptp | 爆破,想办法钓账号,进内网 |
tcp 2082,2083 | cpanel主机管理面板登录 | 弱口令 |
tcp 2181 | zookeeper | 未授权访问 |
tcp 2601,2604 | zebra路由 | 默认密码zerbra |
tcp 3128 | squid代理服务 | 弱口令 |
tcp 3312,3311 | kangle主机管理登录 | 弱口令 |
tcp 3306 | mysql数据库 | 注入,提权,爆破 |
tcp 3389 | windows rdp远程桌面 | shift后门[需要03以下的系统],爆破,ms12-020[蓝屏exp] |
tcp 4848 | glassfish控制台 | 弱口令 |
tcp 4899 | radmin远程桌面管理工具 | 现在已经非常非常少了 抓密码拓展机器 |
tcp 5000 | sybase/DB2数据库 | 爆破,注入 |
tcp 5432 | postgresql数据库 | 爆破,注入,弱口令 |
tcp 5632 | pcanywhere远程桌面管理工具 | 抓密码,代码执行,已经快退出历史舞台了 |
tcp 5900,5901,5902 | vnc远程桌面管理工具 | 弱口令爆破,如果信息搜集不到位,成功几率很小 |
tcp 5984 | CouchDB | 未授权导致的任意指令执行 |
tcp 6379 | redis未授权 | 可尝试未授权访问,弱口令爆破 |
tcp 7001,7002 | weblogic控制台 | java反序列化,弱口令 |
tcp 7778 | kloxo | 主机面板登录 |
tcp 8000 | Ajenti主机控制面板 | 弱口令 |
tcp 8443 | plesk主机控制面板 | 弱口令 |
tcp 8069 | zabbix | 远程执行,sql注入 |
tcp 8080-8089 | Jenkins | jboss反序列化,控制台弱口令 |
tcp 9080-9081,9090 | websphere控制台 | java反序列化/弱口令 |
tcp 9200,9300 | elasticsearch | 远程执行 |
tcp 10000 | webmin linux主机web控制面板入口 | 弱口令 |
tcp 11211 | memcached | 未授权访问 |
tcp 27017,27018 | mongodb | 爆破,未授权访问 |
tcp 3690 | svn服务 | svn泄露,未授权访问 |
tcp 50000 | SAP Management Console | 远程执行 |
tcp 50070,50030 | hadoop | 默认端口未授权访问 |
Web网站同你使用的文件系统一样,会按照内容或功能分出一些子目录。有些目录是希望被来访者看到的,而有些则可能储存了一些不希望被人查看的内容,比如一些存储了私人文件的目录,以及管理后台目录等。
用扫描器扫描目录,这时候你需要一本强大的字典,重在平时积累。字典越强扫描处的结果可能越多,这一步主要扫出网站的管理员入口,一些敏感文件(.mdb,.excel,.word,.zip,.rar);扩展名为 inc 的文件:可能会包含网站的配置信息,如数据库用户名/口令等;扩展名为 bak 的文件:通常是一些文本编辑器在编辑源代码后留下的备份文件,可以让你知道与其对应的程序脚本文件中的大致内容;扩展名为 txt 或 sql 的文件:一般包含网站运行的 SQL 脚本,可能会透漏类似数据库结构等信息;同时查看是否存在源代码泄露,常见有.git文件泄露,.svn文件泄露,.DB_store文件泄露,WEB-INF/web.xml泄露。
常用的工具有:御剑后台扫描珍藏版,DirBuster。
在利用DNS域名和IP地址查询到目标网络的想过位置和范围信息之后,下一步就可以针对这些目标进行信息探查和收集。
目标网络对外公开的Web网站通常是探查的起始点,而许多流行的搜索引擎提供了功能强大的在线Web网站信息高级搜索功能,利用它们能够轻易地发现关于渗透目标的一些细枝末节的信息。在信息收集过程中千万不要忘了使用搜索引擎对目标进行一些探测,这些工作不需要耗费太多精力,却往往会带来意想不到的效果。
使用工具:
1、Google Hacking技术,书籍《Google Hacking for Penetration Testers(第2版)》,GHDB(Google Hacking DataBase,谷歌黑客数据库),可以在https://www.exploit-db.com/google-hacking-database/查看,该数据库包含了大量从事渗透或黑客活动所用的搜索字符串,所有GHDB中的搜索字符串只需要手工复制到Google的搜索字段中即可使用。
首先确定目标的邮件服务器所在的真实位置,看看邮件服务器自身有没有什么错误配置,比如,没有禁用VREY或者EXPN命令导致用户信息泄露。然后从whois中获取域名的注册人、管理员邮箱,利用搜索引擎或者社工库查看有木有泄露的密码,然后尝试泄露的密码进行登录,最后从目标站点上搜集邮箱,例如网站上的联系我们,我们发发邮件钓鱼什么的。常用的工具有kali下的theharester。
对目标渗透测试过程中,目标CMS是十分重要的信息,有了目标的CMS,分析出是属于哪家CMS厂商,就可以利用相关的bug进行测试,进行代码审计。
CMS识别方式有网站特有文件,例如网站命名规则;返回头的关键字;网页关键字;URL特征;Meta特征;Script特征;robots.txt;网站路径特征;网站静态资源;爬取网站目录信息;常用的工具有 云悉、BugScaner、WhatWeb。
通过Nmap、Zmap等端口和指纹识别功能搜集,也可以使用nc和telnet获取Banner信息进行识别,常用工具有whatweb、ZoomEye。
探测目标是否存在WAF,WAF识别一般是基于headers头信息,例如,Mod_Security是为Apache设计的开源Web防护模块,一个恶意的请求Mod_Security会在响应头返回“406 Not acceptable”的信息。waf00f是kali下的识别WAF的老工具,whatwaf不仅可以识别WAF类型还会给出一些bypass 方法;另外从乌云镜像站、CNVD搜集网站历史漏洞对渗透测试也是有很大帮助的。
信息搜集在渗透测试中的作用不言而喻,前期收集到的信息往往会在后期起到很大的作用。若您有什么建议可以留言,本人一定虚心接受。本篇文章会在日后的工作实践中不定期更新,可以多加关注本文。