本节书摘来自异步社区《黑客秘笈——渗透测试实用指南(第2版)》一书中的第2章2.1节被动信息搜索——开源情报(OSINT),作者【美】Peter Kim(皮特 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。
第2章 发球前——扫描网络
黑客秘笈——渗透测试实用指南(第2版)
当您走进SUCK公司区域时,游戏已经开始了。在开展渗透测试工作前,甚至在攻击无辜的受害者之前,我们都需要分析对手。研究目标的弱点,熟悉网络环境将有助于渗透测试工作的开展。本章采取与普通渗透测试书籍稍有不同的视角,可以认为是现有扫描过程的补充,而不是替代。无论是渗透测试的老手,还是刚刚入门的新手,在介绍渗透测试时都会多次提起扫描工作。本章不会把各种网络扫描器、漏洞扫描器、SNMP扫描器拿出来详细对比,而是着重阐述最有效的扫描流程。本章分为开源情报扫描、外部扫描、内部扫描和Web应用程序扫描4个部分。
2.1 被动信息搜索——开源情报(OSINT)
通过开源情报搜索技能的培训,您竭尽所能查找SUCK公司在互联网上的信息。我们试图成为SUCK公司的一员,查找他们的秘密,了解他们习惯用语,找到公司的雇员。
在开展开源情报搜索前,最好创建伪造的社交媒体账户。下面是一些例子(拥有越多越好)。
LinkedIn
Twitter
Google+
Facebook
Instagram
MySpace
Glassdoor
您肯定不愿意暴露自己的个人账户,因为很多网站将显示访问网页的用户信息。如果使用真实的个人信息,可能很快暴露身份,这将导致整个任务的失败。现在已经做好开源情报搜集的准备,可以开始收集数据。
我们将开始被动信息搜索。被动信息搜索是指在不接触目标的情况下搜集目标、网络、客户以及其他信息。这非常棒,因为被动信息搜索是依赖互联网搜集资源,不会产生任何引起目标警觉的动作。在接触目标之前,可以进行充分的信息搜索,有助于节省大量的时间。现在回顾一下开源情报的工具和一些资源。
2.1.1 Recon-NG(https://bitbucket.org/LaNMaSteR53/recon-ng, Kali Linux)
Recon-NG是一个非常好的工具,主要通过被动信息搜索,查询一个公司的开源情报。在开始渗透测试任何目标前,这应该是首先要做的工作。通过搜索,能够获得IP地址、命令规则、位置、用户、邮件地址、可能密码泄露或者其他大量信息(见图2.1)。
1.前提
工具中的一些模块(例如Linked-In或者Jigsaw)能够提供有价值的数据,但是需要获取这些网站的API密钥。我会带您了解获取API密钥的过程(密钥是免费的并且非常易于使用)。
为了使用ipinfodb数据库,查找指定IP地址的精确位置,需要获取一个API密钥。访问网站,注册密钥。在下面的例子中,添加密钥到本地数据库。
2.运行Recon-NG
cd /opt/recon-ng
./recon-ng
workspaces add [公司名字,例如SUCK公司]
add domains [域名,例如suck.testlab]
add companies
use recon/domains-hosts/bing_domain_web
使用Bing查询域名
run
use recon/domains-hosts/google_site_web
使用Google查询域名
run
use recon/domains-hosts/baidu_site
使用baidu(中国搜索引擎)查询域名
run
use recon/domains-hosts/brute_hosts
暴力破解子域名
run
use recon/domains-hosts/netcraft
使用netcraft查询域名
run
use recon/hosts-hosts/resolve
将所有域名解析成IP地址
run
use recon/hosts-hosts/reverse_resolve
将所有域名解析成主机名/域名
run
use discovery/info_disclosure/interesting_files
在指定域名中查找一些文件
run
keys add ipinfodb_api [KEY]
这就是早期添加到infodb数据库中API密钥的位置
use recon/hosts-hosts/ipinfodb
查找探测IP地址的地理位置
run
use recon/domains-contacts/whois_pocs
使用whois查询邮件地址
run
use recon/domains-contacts/pgp_search
查询公共PGP存储中的邮件地址
run
use recon/contacts-credentials/hibp_paste
将搜集的邮箱账户与“Have I Been PWN’ed”网站进行比对。如果比对成功,就可以找到一些泄露的密钥,促进渗透测试工作的开展。
run
use reporting/html
创建报告
set CREATOR HP2
set CUSTOMER HP2
run
exit
firefox /root/.recon-ng/workspaces/SUCK_Company/results.html
这将在一个网页中生成所有成果的报告。观察一下搜集到什么类型的重要数据(见图2.2)。
如图2.2所示,能够快速识别大量域名、IP、地理位置和邮件地址等。这将是一个好的起点,有助于对受害者进行渗透攻击,下面继续搜集数据!
2.1.2 Discover脚本(https://github.com/leebaird/discover, Kali Linux)
Lee Baird编写的Discover脚本一直是我喜欢的被动信息搜集工具,使用便捷,并能够搜集大量的信息。应用被动探测扫描方式,Discover使用以下工具:dnsrecon、goofile、goog-mail、goohost、theharvester、metasploit、urlcrazy、whois、dnssy、ewhois、myipneighbors和urlvoid。Discover工具更新频繁,是搜集开源情报非常棒的工具(见图2.3)。
cd /opt/discover
./discover.sh
1.Domain
1.Passive
[公司名称]
{域名]
firefox /root/data/[Domain]/index.htm
如图2.4所示,搜索的结果包括邮件地址信息、雇员名字和主机信息。
报告中包括域名抢注和域名比特翻转等一些引人关注的搜索结果。Discover工具展示了哪些相似域名已经注册,哪些还没有被注册(见图2.5)。在一个任务中,相似域名在网络钓鱼、建立信任或突破目标攻击时是非常有价值的。
2.1.3 SpiderFoot(http://www.spiderfoot.net/, Kali Linux)
开展开源情报搜集时,我喜欢使用的另外一个工具是SpiderFoot。Steve Micallef编写的SpiderFoot小工具扫描速度快,主要用于侦察获取开源情报(见图2.6)。每一个工具查询数据都有细小差别,呈现的风格也不一样,因此使用多个工具搜集开源情报数据对汇集生成受害公司的信息视图将大有益处。
运行SpiderFoot
cd /opt/spiderfoot/spiderfoot*
python ./sf.py
open up a browser and go to http://127.0.0.1:5001/
那么搜集什么类型的信息呢?所有的信息,例如IPv6地址的黑名单、网站共用主机和邮件地址。正如您知道的,每个工具维护方式是不一样的,经常一个工具与另一个工具输出的信息区别很大。SpiderFoot的优点在于能够快速、方便获取大量(我的意思是一吨)有价值的开源情报信息。在对一个网站进行大约几秒钟快速扫描后,我搜集了大量关于域名或者IP地址的信息(见图2.7)。
通过使用这三个工具获取大量的开源情报,使我们对受害者有了清楚的了解。这些数据对后续的渗透测试工作非常有价值,确保您可以仔细浏览所有的数据。