|
在渗透测试中,Tor(The Onion Router)是一个非常有用的工具,它可以帮助自己隐藏真实 IP 地址和位置,避免被发现或追踪。比如可以将 Nmap 的流量路由通过 Tor 网络,实现隐藏扫描的来源 IP 地址,Hydra 结合 Tor 使用可以实现匿名的密码爆破攻击,等等。
最近突发好奇心想知道如何获取 .onion 域名并把网站部署在 Tor 网络(暗网)中,于是去看了下相关文档,下面是总结的过程。
1. 安装 Tor
注意这里不是安装 Tor 浏览器。
添加软件源
# Ubuntu 20.04
sudo sh -c 'cat >> /etc/apt/sources.list.d/tor.list << EOF
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org focal main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org focal main
EOF'
# Ubuntu 22.04
sudo sh -c 'cat >> /etc/apt/sources.list.d/tor.list << EOF
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org jammy main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org jammy main
EOF'
# 添加 gpg 密钥
wget -qO- https://deb.torproject.org/torpr ... E8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
红帽系的 Linux 发行版添加 Tor 软件源的方式请参看官方说明:https://support.torproject.org/rpm/
安装 Tor
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring
2. 配置 Tor
sudo sh -c 'cat >> /etc/tor/torrc << EOF
HiddenServiceDir /var/lib/tor/my_website/ # 指定 Tor 服务的目录位置
HiddenServicePort 80 127.0.0.1:8080 # 指定 Web 服务器端口
EOF'
sudo systemctl restart tor # 重启 Tor 服务
sudo systemctl status tor # 查看 Tor 服务状态
注意:
HiddenServicePort 80 127.0.0.1:8080 中的 80 端口是 Tor 服务在 Tor 网络中对外暴露的虚拟端口,而不是本地机器的物理端口,因此无需放行此端口也无需担心端口冲突。同时,Tor 服务也不需要配置 SSL 证书,因为 Tor 网络本身就提供了端到端的加密和匿名性。
当有人访问 Tor 服务时,Tor 会将这个请求从 Tor 网络中的 80 端口转发到本地机器的 8080 端口,因此还需要另外配置 Web 服务器使其监听在 8080 端口来处理 Tor 服务转发过来的请求。
3. 配置 Nginx
# 添加 server 块
sudo sh -c 'cat >> /etc/nginx/conf.d/tor.conf << EOF
server {
listen 127.0.0.1:8080;
server_name 127.0.0.1;
location / {
root /var/www/tor;
index index.html index.htm;
}
}
EOF'
# 创建站点目录及主页文件
mkdir /var/www/tor/
echo hello world > /var/www/tor/index.html
# 重启 Nginx
nginx -t
nginx -s reload
4. 测试
服务准备就绪后,需要访问下 Tor 站点来查看服务是否生效。
在此之前还需要查看下 Tor 自动生成的随机 .onion 域名:
root@ubuntu:~# cat /var/lib/tor/my_website/hostname
rhpuou7uoy2mcul22ttu5b4jgfwb4djq6b7t4th4jdzb4dzxovsl4gid.onion
将域名复制,用 Tor 浏览器打开:
image.png
成功访问。接下来可以换掉 Tor 自动生成的随机 .onion 域名,自行生成一个带有标识的 .onion 域名。
5. 生成 .onion 域名
在生成 .onion 域名之前,需要知道一些基本概念:生成特定的 .onion 需要消耗大量的计算资源和时间,原因在于生成的过程是在尝试所有可能的公钥,直到找到一个可以生成自己想要的 .onion 域名的公钥,类似于暴力破解,因此自定义的词根越长,耗时就越久。如果只需要一个能够在 Tor 网络上提供服务的 .onion 域名,那么直接用 Tor 自动生成的 .onion 域名就已经足够了;Tor 域名有 V2 和 V3 两个版本,前者包含 16 个字符,由于安全性问题已被历史淘汰,后者包含 56 个字符,提供了更好的安全性和隐私性。下面演示使用 mkp224o 来生成 V3 版本的 .onion 域名。
git clone [email protected]:cathugger/mkp224o.git # 克隆仓库
cd mkp224o
sudo apt update && sudo apt install gcc libc6-dev libsodium-dev make autoconf -y # 安装依赖
./autogen.sh # 生成配置脚本
./configure # 生成 Makefile
make # 开始构建
# 生成域名(指定前4个字符为 mkbk)
./mkp224o -n 1 -d /var/lib/tor/ mkbk # -n 和 -d 选项分别指定生成数量和生成路径
image-1.png
可以看到生成的域名为 mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion
接下来需要修改 Tor 配置文件,使新域名生效:
sed -i 's#/var/lib/tor/my_website/#/var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion/#' /etc/tor/torrc
chown -R debian-tor:debian-tor /var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion/
上面的命令会把 HiddenServiceDir 原来的 /var/lib/tor/my_website/ 目录改成新的 /var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion 目录,同时修改目录所有者为 debian-tor。
接下来再重启 Tor 服务,即可使用新域名访问洋葱站点了:
sudo systemctl restart tor # 重启 Tor 服务
sudo systemctl status tor # 查看 Tor 服务状态
image-2.png
还有一个常见的误区,.onion 站点并不是只有 Tor 浏览器才能访问,Tor 浏览器只是捆绑了 FireFox 浏览器以及一些高隐私性的配置,核心还是 Tor,因此只要通过 Tor 核心的 9150 端口的 Socks5 代理接入 Tor 网络,任何浏览器都能访问(暗网)。比如 Chrome 浏览器可以通过 SwitchyOmega 扩展修改代理为 127.0.0.1:9150 来访问 .onion 站点:
image-4.png
image-3.png
6. 添加洋葱头
给HTTP首部添加洋葱头,使Tor浏览器优先访问.onion域名:https://community.torproject.org ... ced/onion-location/
alt text
alt text
6. 参考
How to install Tor,Tor Project
Set up Your Onion Service,Tor Project
mkp224o - vanity address generator for ed25519 onion services,cathugger
|
|