追踪器追踪:利用Nmap和Ruby脚本分析网站关联性

本文介绍了一种通过Google Analytics追踪码识别关联网站的方法,使用Nmap脚本扫描目标域名并提取追踪码,再通过Ruby脚本生成分组CSV文件进行分析,适用于渗透测试和侦察阶段。

追踪器追踪

在对客户进行侦察时,尝试识别与目标相关的其他网站或公司通常很有用。一种方法是查看谁在管理他们的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 设计