追踪器关联分析:利用Nmap与Ruby脚本挖掘网站技术关联

本文介绍了一种通过Google Analytics追踪码识别关联网站的技术方法,包含Nmap扫描脚本与Ruby解析工具的实现细节,适用于渗透测试中的目标侦察与关联分析。

追踪器追踪 - DigiNinja

在对客户进行侦察时,尝试识别与目标相关的其他网站或公司通常非常有用。一种方法是查看谁在为他们管理Google Analytics流量,然后找出他们还管理了哪些其他网站。

有一些在线服务可以做到这一点,最著名的可能是ewhois,但每当使用他人的资源时,你就要受制于数据的准确性和覆盖范围,特别是如果你为一个未被他们扫描过的小客户工作,那么你将得不到任何结果。

这就是我的追踪器追踪工具的用武之地。该工具分为两部分:第一部分利用nmap引擎的力量扫描你感兴趣的所有域名并提取追踪代码,这些代码随后以标准nmap格式与页面标题一起输出。然后我编写了第二个脚本,该脚本接收输出并生成一个分组和排序的CSV文件,供你分析。

以下是nmap部分的实际操作:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
nmap --script http-tracker_tracking.nse -p 80 -T 4 zonetransfer.me digininja.org -oA tracking

Starting Nmap 6.00 ( http://nmap.org ) at 2013-03-01 13:46 GMT
Nmap scan report for zonetransfer.me (217.147.180.162)
Host is up (0.024s latency).
PORT   STATE SERVICE
80/tcp open  http
| http-tracker_tracking: 
|   Tracking code: 7503551
|_  Page title: ZoneTransfer.me - DigiNinja

Nmap scan report for digininja.org (217.147.180.164)
Host is up (0.025s latency).
rDNS record for 217.147.180.164: www.digininja.org
PORT   STATE SERVICE
80/tcp open  http
| http-tracker_tracking: 
|   Tracking code: 7503551
|_  Page title: DigiNinja

Nmap done: 2 IP addresses (2 hosts up) scanned in 0.30 seconds

这表明digininja.org和zonetransfer.me共享相同的追踪代码。

然后你取创建的.nmap文件并将其传递给第二个脚本:

1
2
3
4
5
6
./parse_tracking.rb tracking.nmap tracking.csv
7503551
zonetransfer.me
ZoneTransfer.me - DigiNinja
digininja.org
DigiNinja

除了创建csv文件外,这还会按代码分组输出结果。最终的csv文件如下所示:

1
2
3
cat tracking.csv 
7503551,zonetransfer.me,ZoneTransfer.me - DigiNinja
7503551,digininja.org,DigiNinja

然后你可以在电子表格中打开并开始分析。我希望以更好的方式输出以更展示分组,如果你能建议一种方法,请联系我。

要检查的初始域名列表从哪里来?这取决于你,你可以根据客户所在的市场部门或地理位置生成列表。为了测试,我从Alexa抓取了一个列表。

下载和样本

追踪器追踪 1.0

一些样本数据 - 这是扫描Alexa前10,000个条目的结果。这产生了5650个追踪代码,其中5149个是唯一的。

最大的分组是:

描述 代码 网站数量
Wordpress/模板网站 11834194 9
色情网站 28822266 9
南美购物网站 8863458 9

使用技巧

使用此工具的任何部分都不需要特殊设置,nmap脚本可以从当前目录运行,并简单地通过–script参数引用,如上所示。Ruby脚本不需要任何gem,并且应该在任何Ruby安装上运行。

如果你想合并多个nmap扫描,由于我解析.nmap文件的方式,你可以简单地将它们全部合并成一个,准备传递给解析器。这就是我生成样本输出的方式。

如果你从Alexa获取列表,那么你需要从中去除前导位置字段,这个sed命令可以做到:

1
sed -i "s/^[0-9]*,//" top-1m.csv

要从输出csv文件中查看最大的分组:

1
cut -f 1 -d "," top_10000.csv | uniq -c|sort

在构建此工具时,我遇到了nmap中的几个值得提及的问题,第一个是他们解析HTTP重定向的方式。有一些网站不完全遵守RFC,但由于nmap遵守,这些网站在脚本中无法正确重定向。Twitter.com是我发现的第一个网站,但还有其他网站。有关更多信息,请参阅此邮件列表线程。

第二个是nmap中的一个常见错误,如果给定的头位置字段无法正确解析,它会失败,我已经报告了这个问题,希望很快能修复。这解释了样本输出中偶尔出现的错误。

最后,在有人指出有一个Ruby gem可以解析nmap创建的XML文件之前,我知道。然而,解析纯文本文件更容易,因为我已经有了可用的代码,并且不需要人们安装新的gem。

感谢BruCON

这是我第一个由BruCON 5x5奖赞助的工具。

支持网站

我不会为此网站上的任何项目获得报酬,所以如果你想支持我的工作,你可以使用下面的联盟链接,我可以获得账户积分或现金返还。通常只有几分钱,但它们都会累积起来。

请我喝一杯冰沙


所有内容由Robin Wood创建,除非另有说明。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计