• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

darkweb

date: 2018-07-20 excerpt: darkweb

tag: darkweb


welcome to the darkweb.

Darkwebの正体

Darkwebは大変センセーショナルな言葉で、全く素人がアクセスできない普通でないインターネットがあるという表現をマスメディアでみますが、そんなに難しくありません。

Torという匿名化ネットワークで成り立っており、アクセス者はどのリレーから情報を発信したか知るすべはありません。また、リレーに参加したネットワークのユーザもは発信元を探知されることなく、情報を発信することができます。

このネットワークに参加する方法、このネットワーク越しにTor内部のサーバにアクセスする方法、サーバをTorないに立てる方法を記します。

Torネットワークへの参加

Torのインストール

すべて以下ではLinux(Ubuntu 18.04を前提としています)

$ sudo apt install tor

torrcの編集

/etc/tor/torrcを編集する

私は以下の様な設定にしてある(自分のローカルサブネットマスクを参考にして192.168.14.0/24は編集する)

SOCKSPort 9050
ControlSocket 0
SOCKSPolicy accept 192.168.14.0/24
ControlPort 9051
HiddenServiceDir /var/lib/tor/other_hidden_service/
HiddenServicePort 80 127.0.0.1:80
ORPort 9001
Nickname hogeeeeeeeeee
ContactInfo angeldust03@gmail.com
DirPort 9030 # what port to advertise for directory connections
ExitRelay 0
ExitPolicy reject *:*

再起動

$ sudo systemctl restart tor
$ sudo systemctl status tor

ネットワークの状態を確認

これだけではtorネットワークのリレーに完全に参加したことにならない。  

sockport 9050とcontrolport 9051をルータから開放し、外部からアクセスできるようにする  

ネットワークのトラフィックもよく関ししている必要があり、どの程度、torネットワークの一部として情報を伝達したか確認することができる。

$ sudo apt install nyx
$ sudo nyx

Torネットワークのリレーの状況はここから確認できる

自分のonionドメインの確認

ハードコードされるものらしく、ここに書いてある(torrcの設定で場所は変わる)

/var/lib/tor/other_hidden_service/hostname

$ sudo cat /var/lib/tor/other_hidden_service/hostname
cavthhlesdvh2sj7.onion

仮にこのマシンでhttpサーバを立てたとすると、cavthhlesdvh2sj7.onionにアクセスすると発信者を欺瞞して情報を展開できる

HTTPサーバのローンチ

好きなものを使えばいいが、kotlinのktorのシンプルなサーバを持っているので、OracleJDKが入った状態でビルドしてみる(Kotlinが必要)

わたくしのプロジェクトのクローン

$ git clone https://github.com/GINK03/kotlin-ktor-design-templates
$ cd kotlin-ktor-design-templates
$ gradle build
$ sudo gradle run # port 80を使うため

Tor Browserでアクセス

Torブラウザをインストールしてonionドメインにアクセスすることができます

pythonでアクセス

PythonでアクセスするにはこのようなDNSの名前解決がこのようにしないとできない

import requests
session = requests.session()
session.proxies = {'http':  'socks5h://localhost:9050',
                   'https': 'socks5h://localhost:9050'}
s = session.get('http://ipjy2snhdjwrnk3m.onion')
print(s.text)

>> Welcome to Underground!

用途と応用

匿名でサーバを建てられる & 匿名でアクセスできるという性質を利用して、なんらか、人権を無視した政治体制下での発信などが考えられます。   

企業が国家のような力を持っている昨今ですので、企業への素直なフィードバック、就職情報掲示板などを作成してもいいはずです。  

APIなども同様で、完全ブラックボックスかつ完全匿名である機能を提供したいなども場合、有益に働くと思われます。



darkweb Share Tweet