23
2013 - 10 - 06 すみだ IT セキュリティ勉強会 その 1.5 @inaz2 1

Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

  • Upload
    inaz2

  • View
    1.559

  • Download
    2

Embed Size (px)

DESCRIPTION

2013-10-06 すみだITセキュリティ勉強会 その1.5

Citation preview

Page 1: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

2013-10-06

すみだITセキュリティ勉強会その1.5

@inaz2

1

Page 2: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

@inaz2

Security Engineer & Python Programmer

Girls Idol Freak

http://inaz2.hatenablog.com/

About me

2

Page 3: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

本題

3

Page 4: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

Peer-to-Peer File Sharing Protocol

大容量データを高速に転送することに特化

匿名性はない

代表的なBitTorrentクライアント

BitTorrent

4

Most popular

Popular in Asia

Preinstalled in Ubuntu

Java

Page 5: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

ファイル

ダウンロードされるデータ(群)

.torrent

Webサーバなどを介して配布されるメタファイル

ファイルの名前・サイズやTrackerのIPアドレスなどが書かれている

ノード

ネットワークに接続しているBitTorrentクライアント

Peer

直接接続している(隣接している)ノード

Terminology (only in this slides)

5

Page 6: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

Classic BitTorrent Architecture

6

Tracker

Peer(my client)

Peer

Peer

Index server

Peer

1. .torrent のダウンロード

2. ファイルを持っているPeerの取得

3. ファイル断片を送受信

.torrent を配布 ファイルを持っているPeerの管理

Page 7: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

As a Tracker (with Index Server)

Index Serverで配布しているファイルを欲しがっているPeerのIP(+接続時刻)

As a Peer

自分がダウンロードしているファイルを欲しがっているPeerのIP(+接続時刻)

.torrent ごとにネットワーク (swarm) が作られる

自分が知らないファイルについてはわからない。

What we can get

7

Page 8: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

元々のアーキテクチャはTracker中心のHybrid P2P

Trackerに繋がらなくなったら止まる

Trackerなしでも動くようにする

Peer間でPeer情報の交換

Peer間で .torrent のリクエスト & ダウンロード

Peer間でファイルを持っているPeerの探索

Trackerless download

8

Page 9: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

ハッシュテーブル

キーと値のペアの組み合わせを集めたテーブル

キー = .torrent のSHA-1ハッシュ値

値 = .torrentが指すファイルを持っているPeerの集合

ハッシュテーブルを複数ノードに分散させる

問い合わせに答えられなければ、自分の周囲のノードに問い合わせ直すように答える

Distributed Hash Table (DHT)

9

Page 10: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

4種類のクエリ

ping / find_node / get_peer / announce_peer

get_peer

リクエスト: .torrent のSHA-1ハッシュ値 (infohash)

レスポンス: .torrent が指すファイルを持つノード群

自分が知らない場合は、「自分が知らないこと」と自分の周囲のノード群を答える

リクエスト側は、教えてもらったノード群に問い合わせ直す

ファイルを持っているノードが見つかるまで問い合わせ続ける

BitTorrent DHT Protocol

10

Page 11: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

get_peerクエリのinfohashを収集

他のユーザが欲しがっているファイルがわかる。

もちろん、IPと接続時刻も。

WE CAN COLLECT OTHERS' DESIRES!

11

Page 12: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

infohashはただのSHA-1ハッシュ値

ファイルの内容を知るためには、対応する .torrent を得る必要がある

BEP 9: Extension for Peers to Send Metadata Files

ファイルを持っているノードから.torrent を送ってもらうためのプロトコル拡張

infohash → .torrent

12

Page 13: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

実践

13

Page 14: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

めんどくさい!!

Deluge BitTorrent Client

Python製BitTorrentクライアント

libtorrentライブラリを使用

GUI (GTK+)

クロスプラットフォーム (Linux, Mac OS X & Windows)

簡単に改造できる

http://deluge-torrent.org/

Develop a BitTorrent Client

14

Page 15: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

Deluge is a good alternative to Transmission

15

Page 16: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

https://github.com/inaz2/deluge-hack

飛んできた infohashを自動でキューに追加

.torrent が得られたらダウンロードをpause

放置するとキューがたまりまくって激重になる

Fork & Hack

16

Page 17: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

https://github.com/inaz2/btsniff

python-libtorrentを使ってコア部分のみ実装

One-file CLI

Hack more

17

Page 18: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

Ubuntu Serverのtorrentを使ってネットワークにjoin

観測期間

2013-10-04 02:18~ 2013-10-05 00:57

Experiments

18

Page 19: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

見つかったファイルの数: 3629

内容の一部

Taylor Swift - Red (2012)

TVアニメ「進撃の巨人」OP1&OP2テーマ

月島きらり starring 久住小春(Koharu Kusumi) -バラライカ(Balalaika)

店長推薦作品 BT-98-不能停止的疼痛美人妻阪上友香

楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

Results

19

Page 20: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

BitTorrent DHT Protocolの細かい仕組み

各クライアントにID (SHA-1値) が振られる

各 .torrent にもID (SHA-1値) が振られる

クライアントのIDに近いIDを持つ .torrent が集まるようになっている

距離は XOR によって定義: distance(A,B) = |A xor B|

幅広く .torrent を収集するには、定期的なクライアントIDの変更 (ID hopping)が必要

多数のノードをP2Pネットワークに仕込むタイプの攻撃は、結託攻撃 (Sybil Attack) と呼ばれる

Road to Sybil Attack

20

Page 21: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

BitTorrentでDHT有効 = 他人に欲しいファイルを持っている人を知らないか問い合わせる

get_peersクエリを収集することで、他人が欲しがっているファイルを知ることができる

Future works

get_peersクエリ以外のトラフィックの利用

ID hoppingの実装

Recap

21

Page 22: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

"Crawling BitTorrent DHTs for Fun and Profit"

by Scott Wolchok (DEF CON 18)

https://www.defcon.org/images/defcon-18/dc-18-presentations/Wolchok/DEFCON-18-Wolchok-Crawling-Bittorrent-DHTS.pdf

"Defeating Vanish with Low-Cost Sybil Attacks Against Large DHTs"by Scott Wolchok et al. (NDSS 2010)

http://z.cs.utexas.edu/users/osa/unvanish/papers/vanish-broken.pdf

http://www.cs.utexas.edu/users/witchel/pubs/unvanish10ndss.pptx

"Large-scale monitoring of DHT traffic" by Ghulam Memon et al. (IPTPS 2009)

http://www.usenix.org/event/iptps09/tech/full_papers/memon/memon.pdf

"The Sybil Attack" by John R. Douceur (IPTPS 2001)

http://research.microsoft.com/apps/pubs/default.aspx?id=74220

References

22

Page 23: Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

Thank you!

@inaz2

http://inaz2.hatenablog.com/

23