情报搜集的目的是获取渗透目标的准确信息,以了解目标组织的运作方式,确定最佳的进攻路线,而这一切应当悄无声息地进行,不应让对方察觉到你的存在或分析出你的意图。简单地说,就是尽一切手段获取对方信息,同时隐藏好自己。
在情报搜集阶段前,我们应该花时间与目标系统进行一些必要的交互,大致了解目标系统的功能。
情报搜集往往需要较长的时间,会比较考验耐性!
往往情报搜集阶段会搜集到很多有用没用的信息,无论怎样,都需要详细记录下来。我使用脑图的方式进行记录,同时可以根据自己的使用习惯进行记录,如我见过其他大牛采用excel表格记录的形式。
一. 被动信息搜集
为什么叫被动信息搜集,因为我们可以在不接触到目标系统的情况下挖掘目标信息。什么意思,就是从其他平台上查找目标系统的信息。
1. whois查询
作用:寻找域名服务器等
kali Linux 中已经集成whois
工具,尝试查询testfire.net
的域名信息。
从图中的Name Server
信息我们可以看到,域名(DNS)服务器由AKAM.NET提供,这是关于不能攻击未授权系统的典型例子。在这个场景中,AKAM.NET
并不归testfire.net
所有,而是提供CDN服务的Akami公司。所以我们不能对这些DNS服务器进行攻击,应当转移到其他的攻击点上。
在线whois查询工具:http://whois.chinaz.com/ 功能没有kali上的齐全,有时候查不到信息。
2. Netcraft
Netcraft(http://searchdns.netcraft.com/ )是一个网页界面的工具
作用:能够发现承载某个特定网站的服务器IP地址
上面的netcraft在线网站是国外的,国内访问很慢。所以我们使用国内在线工具(http://ip.tool.chinaz.com/ )
从上面我们查到了testfire.net
的IP地址是65.61.137.117
,再对此IP地址做一次whois查询。
whois 65.61.137.117
从图中的Customer
看出,Rackspace 看起来很像是网站的服务提供商,同样不在我们的测试范围内。
3. nslookup
为了获取关于服务器的附加信息,我们使用Kali Linux执行nslookup
,大多数操作系统均集成了这个工具,我们利用它来挖掘testfire.net
的更多信息。
我们看到邮件服务器的DNS记录指向hostmaster.akamai.com。同样不在测试范围。
4. Google hacking
就搜索引擎来说:有条件的用Google,没条件的用bing国际版,实在不行就bing国内版,迫不得已就用百度吧。
Google hacking可以搜集到很多有用的信息,如子域名
,敏感信息
等。
inurl: 用于搜索网页上包含的URL。这个语法对寻找网页上的搜索,帮助之类的很有用。
intext: 只搜索网页部分中包含的文字(也就是忽略了标题,URL等的文字)。
site: 可以限制你搜索范围的域名。
filetype: 搜索文件的后缀或者扩展名。
intitle: 限制你搜索的网页标题。
allintitle: 搜索所有关键字构成标题的网页。 但是推荐不要使用
link: 可以得到一个所有包含了某个指定URL的页面列表。 例如link:http://www.google.com 就可以得到所有连接到Google的页面
这些语法同样适用于其他搜索引擎。
如果测试一个学校网站,Google hacking往往能查到关于这个学校的很多学生信息。美滋滋
二. 主动信息搜集
在主动信息搜集工作中,我们与目标系统直接交互,从而对其进行更深入的了解。举例来说,我们可以执行端口扫描
来确定目标系统开放了哪些端口、运行了哪些服务。多发现一个存活的主机或运行中的服务,就多一些渗透成功的机会。
但是请注意:如果你在主动信息搜集过程中不够小心,那么你很可能会被入侵检测系统(IDS)或入侵防御系统(IPS)给逮住,这绝对是一个执行隐秘任务的渗透测试者最不愿意看到的结果。
1. 使用nmap进行端口扫描
nmap只能扫描IP,不要沙沙的拿域名去扫。
推荐两个参数:
- -sS 执行一次隐秘的TCP扫描。
- -Pn 会告诉nmap不要使用ping命令预先判断主机是否存活,而是默认所有主机都是存活状态。
使用nmap扫描owaspbwa
靶机(owaspbwa是一款漏洞靶机,预置很多漏洞)
- -A 参数会显示更详细的信息,同时扫描的时间也会更长。
2. 在Metasploit中使用数据库
可以将扫描或者metasploit使用后的结果存储在数据库中。
这里使用postgresql
。
开启postgresql服务
在kali中,postgres数据库的账号密码配置文件所在目录:
/usr/share/metasploit-framework/config/database.yml
开启msfconsole
连接数据库db_connect 用户名:密码@127.0.0.1/数据库名
查看是否正确连接db_status
将nmap输出的结果导入Metasploit
对这台靶机虚拟机使用-oX
选项进行扫描(以xml格式导出结果),生成一个名为result.xml的文件。
使用db_import
导入结果到数据库中
执行hosts
命令后,返回了一个扫描的主机的IP地址列表,这证明我们已经成功地将nmap输出导入到了Metasploit中。
在msf终端运行nmap
使用之前需要先连接到数据库,因为运行结果会保存到数据库中。
成功连接到数据库后可以输入db_nmap
命令,这个命令能够在MSF终端中运行nmap,并自动将nmap结果存储在数据库中。
可以执行services
命令来查看数据库中的关于系统上运行服务的扫描结果。
3. 使用Metasploit进行端口扫描
在Metasploit中不仅能够使用第三方扫描器,而且在其辅助模块中也包含了几款内建的端口扫描器。
search portscan
查找msf提供的端口扫描模块
下面我们使用Metasploit的SYN端口扫描器
对单个主机进行一次简单的扫描。首先输入use scanner/portscan/syn
,然后设定RHOSTS
参数为192.168.91.132
,设定线程数为50
,最后执行扫描。
太慢了这玩意,不建议使用。
三. 针对性扫描
1. 服务器消息块协议扫描
服务器消息块协议(SMB协议)是一种客户端 - 服务器通信协议,用于共享对网络上的文件,打印机,串行端口和其他资源的访问。它还可以携带用于进程间通信的事务协议。
学习资料:http://www.xiladaili.com/news_detail/1646/
Metasploit可以利用它的smb_version
模块来遍历一个网络,并获取Windows系统的版本号。
smb_version
扫描器准确地判断出目标操作系统是WindowsXP,且安装了Service Pack2补丁。
可以使用hosts
命令查看数据库中保存的结果。
2. 搜寻配置不当的Microsoft SQL Server
简单说就是探测主机上是否有配置不当的SQL server数据库,如果有,则可以进一步进行渗透。
使用mssql_ping
扫描器不仅定位了MSSQL服务器地址,它还确定了MSSQL实例名、服务器的版本号以及服务器监听的TCP端口。可想而知,在一个有大量主机的子网中去查找MSSQL的监听端口,使用这种方法的速度比起用nmap对所有主机的所有端口进行扫描要快得多。
3. SSH服务器扫描
扫一下是否运行ssh服务,说不定就是一个弱口令!或者是存在漏洞的低版本SSH。
使用ssh_version
模块。
这个输出结果告诉我们,一些不同的服务器安装了不同补丁等级的版本。如果你想要攻击一个特定版本的OpenSSH服务程序,那么这些使用ssh_version
扫描得到的结果可能对你非常有价值。
差不多就先介绍这么多内容。
关于信息搜集,实在是有太多的内容可以展示,所有的信息搜集工具资料加起来都可以出一本书了。信息搜集真是渗透测试中的宝藏,后续我会发一篇关于我整理的信息搜集笔记,多多关注~多多交流学习~