大家好,我是人见人爱、花见花开的花十一。今天主要跟大家分享及交流一些分析Tor方面的知识。
Tor是一种匿名通信系统,它使用多层加密和随机路由,将用户数据包通过多个节点传输,从而隐藏其来源和目标。
Tor(The Onion Router)是一种基于匿名化技术的网络传输协议,通过多个“中间节点”中转数据流以隐藏其源头和目的地。
这些中间节点组成了Tor网络。每个中间节点只知道上一个节点和下一个节点的IP地址,并且在转发数据时加入不同的加密层,使得数据无法被单个节点解密或跟踪到源头和目的地。
访问Tor网络很多方式,比如用户通过Tor客户端连接到本地的入口节点,入口节点将用户的请求进行加密并转发至中间节点,中间节点再将数据解密并转发至出口节点,最终出口节点将数据发送给目标服务器,如下图所示。
也可以利用Tor代理,Tor代理是一种将应用程序的网络流量路由到Tor网络的中继服务,用于访问.onion域名的网站。还有一些应用Tor网络的操作系统,如:Whonix、Tails 自身就是通过Tor连接互联网。
本文将对Tor IP识别和如何利用空间测绘发现Tor IP展开说说。
参考来源: https://zhuanlan.zhihu.com/p/34358838
TorIP分为三种:一是Tor节点,这类IP主要是传递Tor流量。二是Tor代理,这类IP就是用于访问Tor网络的代理IP。还有就是Tor服务IP,即部署onion网站的IP。
先来说下Tor节点IP,其默认监听9001端口,节点IP有很多属性,如下图,可以看到节点别名、联系邮箱、退出策略、指纹、节点权重等等,通过这些信息可以了解节点的身份验证信息、确认节点的可靠性和合法性。
在Tor网络中的节点包括入口节点、中继节点和出口节点。
中继节点是 Tor 最核心的组成部分,为路由和传递Tor流量提供服务。在Tor网络中,中继节点被分为三个不同的类别:普通中继节点、桥中继节点和千里眼中继节点(或称"审计节点")。
其中,普通中继节点是最常用的中继节点,这些地址在互联网上公开,任何人都可以使用它们来连接Tor网络;桥中继节点是一种特殊类型的中继节点,这些节点主要提供给那些需要绕过审查和防火墙的用户使用,具体地址不会公开发布,如下图。
在Tor官方网站中可以看到公开的普通中继节点IP地址和端口,而Type为Bridge的桥中继节点IP地址是隐藏的。
千里眼中继节点主要用来监测Tor流量可能存在的安全漏洞和网络攻击,保护Tor网络的安全性和稳定性。普通用户无法搭建该类型的节点,只有专业的安全公司或政府机关才会搭建。
(1) Tor Metrics,Tor Metrics(https://metrics.torproject.org/rs.html )是一个由Tor项目维护的网站,它提供了有关Tor网络中中继节点的各种数据和图表。
可以在该网站上查看搜索"flag:running"获取当前Tor网络中可用的所有中继节点。这个网站的数据存在延迟,新增的节点并不会马上同步过来。或者从Tor维护的collector网站上下载中继节点列表,地址:https://collector.torproject.org/archive/relay-descriptors/server-descriptors/
(2)使用python的stem库获取中继节点列表,这种方法本质上也是从Tor Metrics获取IP,首先用Controller.from_port 方法连接到本地的 Tor 客户端,利用controller.authenticate() 方法进行身份验证。然后使用 controller.get_network_statuses() 方法获取本地所有的中继节点列表。
import stem.descriptor.remote
from stem import Flag
from stem.control import Controller
# 连接到本地的 Tor 客户端
with Controller.from_port(port=9051) as controller:
controller.authenticate()
# 获取当前所有中继节点的列表
relays = controller.get_network_statuses()
for relay in relays:
print(relay)
另外搭建Tor中继节点的时候,如果加入中继节点失败,也会显示中继节点的IP地址
(3) 在网络空间测绘上通过特定语法获取节点IP。例如,在Shodan上搜索"Tor"或"Tor relay"等关键词,会返回Tor中继节点。
在X情报社区上搜索body="tor relay" 也可以发现节点IP。
不过返回的数据不够精准,需要配合其他条件筛选更精确的节点,比如body=tor relay && title=this is a tor relay,获取更精准的中继节点IP。
利用测绘获取的IP可以Onionoo验证其是否准确,Onionoo是Tor官方维护的在线查询工具,指定IP地址查询该IP是否为中继节点或出口节点。
地址:https://onionoo.torproject.org/details?search=ip。
如198.50.191.95在4月17日之前一直是tor中继节点,且有相关的指纹信息。
Tor代理是一种匿名的代理服务器,可以用来隐藏用户的真实IP地址。默认情况下监听9050或9150端口。如果有境外的vps可以尝试编辑/etc/tor/torrc,做如下配置的注释来搭建Tor代理。
Tor项目中有个Issues(https://gitlab.torproject.org/legacy/trac/-/issues/1667),向Tor端口发送报文"PROTOCOLINFOrn" ,服务会返回"I'm not an HTTP proxy",来说明该端口是Tor服务。
另外查看nmap的指纹库,可以发现其匹配逻辑是判断回报的响应头信息。
如下nmap进行指纹识别返回的服务名称是"tor-socks"。
基于上述两个特征可以在测绘里构造如下语法发现tor代理。
protocol=tor-socks
banner="501 Tor is not an HTTP Proxy"
如上图,返回了一批符合特征的IP,接下来可以通过curl命令验证IP是否可用,如下,34.70.6.35这个IP就是无认证的Tor代理。
curl --proxy socks5h:// 34.70.6.35:9201
https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion
在暗网上部署服务是依托Tor工具来实现的,通过对配置文件/etc/tor/torrc做如下配置当前主机即可获取一个onion域名。
(1)找到"HiddenServiceDir"部分
(2)这里可以搭建tor网站或者利用tor隐藏ssh服务。例如,想要对外隐藏ssh服务,配置如下内容。
HiddenServicePort 22022 127.0.0.1:22022
配置完成后重启tor,在 /var/lib/tor/other_hidden_service/目录下记录着该主机对应的.onion域名
(3)验证Tor服务,如下通过.onion域名获取到ssh端口的指纹信息
torsocks curl http://reyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbobcdxpwgad.onion:22
torsocks nc reyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbobcdxpwgad.onion 22
如果利用Tor搭建了网站可以空间测绘搜索以下语法,如下可以看到有2000+IP在暗网侧都有相对的业务。
Tor网络中的出口节点(Exit Node)是指最后一个中继节点,它将Tor流量从Tor网络路由到互联网上。因此,Tor出口节点是连接Tor网络和互联网的关键部分,也是Tor网络用户与外部世界通信的唯一接口。
在使用Tor时,如果通信需要离开Tor网络并访问互联网,则Tor流量将通过一个出口节点传递。出口节点可以看到传输数据的明文内容,因此可能会泄露用户的身份或活动轨迹信息。
Tor官方提供了一个服务TorDNSEL用来识别出口节点,使用方法如下,例如:拿到一个IP185.220.101.3,先将IP地址反转为3.101.220.185,然后和域名dnsel.torproject.org拼接,如果解析IP地址是127.0.0.2,则说明该IP是出口节点。
另外Tor官方维护了一份出口节点的IP,地址https://check.torproject.org/torbulkexitlist。通过查看和这里比对也可以识别出口节点。
03 结尾
当前Tor节点中已支持ipv6协议,但并不是所有的Tor节点都支持ipv6。判断ipv6地址是不是TorIP的方法和ipv4差别不大。
本文介绍了如何识别Tor网络的节点、代理和服务。通过这些方法结合网络空间测绘可以更加丰富IP的上下文信息,确定哪些IP是Tor节点。这对于日常安全运营和分析潜在威胁有一定的作用。文章抛砖引玉,期待各位读者能在此基础上发现网络空间测绘的更多妙用。
- END -
微步应急响应团队为企业客户提供应急响应服务。当企业遭遇突发重大安全事件(APT攻击、勒索加密、数据窃取、漏洞攻击、主机被控、钓鱼事件等),微步可提供快速事件定位取证、隔离清除、溯源分析、安全加固等专业安全服务,帮助企业信息系统在最短时间内恢复正常工作,将事件影响降到最低。
如果发生安全事件,可联系微步应急响应团队,联系方式:400-030-1051
2. 内容引用,请注明出处:以上内容引自公众号“微步在线应急响应团队”
原文始发于微信公众号(微步在线应急响应团队):空间测绘|一招教你如何分析Tor
评论