Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
2013-10-06
すみだITセキュリティ勉強会 その1.5
@inaz2
1

 @inaz2
 Security Engineer & Python Programmer
 Girls Idol Freak
 http://inaz2.hatenablog.com/
About me
2

本題
3

 Peer-to-Peer File Sharing Protocol
 大容量データを高速に転送することに特化
 匿名性はない
 代表的なBitTorrentクライアント
BitTorrent
4
Most
popular
Pop...

 ファイル
 ダウンロードされるデータ(群)
 .torrent
 Webサーバなどを介して配布されるメタファイル
 ファイルの名前・サイズやTrackerのIPアドレスなどが書かれてい
る
 ノード
 ネットワークに接続して...

Classic BitTorrent
Architecture
6
Tracker
Peer
(my client)
Peer
Peer
Index server
Peer
1. .torrent の
ダウンロード
2. ファイルを持ってい...

 As a Tracker (with Index Server)
 Index Serverで配布しているファイルを
欲しがっているPeerのIP(+接続時刻)
 As a Peer
 自分がダウンロードしているファイルを
欲しが...

 元々のアーキテクチャはTracker中心のHybrid P2P
 Trackerに繋がらなくなったら止まる
 Trackerなしでも動くようにする
 Peer間でPeer情報の交換
 Peer間で .torrent のリクエスト...

 ハッシュテーブル
 キーと値のペアの組み合わせを集めたテーブル
 キー = .torrent のSHA-1ハッシュ値
 値 = .torrent が指すファイルを持っているPeerの集合
 ハッシュテーブルを複数ノードに分散させ...

 4種類のクエリ
 ping / find_node / get_peer / announce_peer
 get_peer
 リクエスト: .torrent のSHA-1ハッシュ値 (infohash)
 レスポンス: .to...

 get_peerクエリのinfohashを収集
 他のユーザが欲しがっているファイルがわかる。
 もちろん、IPと接続時刻も。
WE CAN COLLECT
OTHERS' DESIRES!
11

 infohash はただのSHA-1ハッシュ値
 ファイルの内容を知るためには、対応する .torrent を
得る必要がある
 BEP 9: Extension for Peers to Send Metadata Files
...

実践
13

 めんどくさい!!
 Deluge BitTorrent Client
 Python製BitTorrentクライアント
 libtorrentライブラリを使用
 GUI (GTK+)
 クロスプラットフォーム (Linux, ...

Deluge is a good alternative
to Transmission
15

 https://github.com/inaz2/deluge-hack
 飛んできた infohash を自動でキューに追加
 .torrent が得られたらダウンロードをpause
 放置するとキューがたまりまくって激重になる...

 https://github.com/inaz2/btsniff
 python-libtorrent を使ってコア部分のみ実装
 One-file CLI
Hack more
17

 Ubuntu Serverのtorrentを使ってネットワークにjoin
 観測期間
 2013-10-04 02:18 ~ 2013-10-05 00:57
Experiments
18

 見つかったファイルの数: 3629
 内容の一部
 Taylor Swift - Red (2012)
 TVアニメ「進撃の巨人」OP1&OP2テーマ
 月島きらり starring 久住小春(Koharu Kusumi) - ...

 BitTorrent DHT Protocolの細かい仕組み
 各クライアントにID (SHA-1値) が振られる
 各 .torrent にもID (SHA-1値) が振られる
 クライアントのIDに近いIDを持つ .torre...

 BitTorrentでDHT有効 = 他人に欲しいファイルを
持っている人を知らないか問い合わせる
 get_peersクエリを収集することで、他人が欲しがっ
ているファイルを知ることができる
 Future works
 get...

 "Crawling BitTorrent DHTs for Fun and Profit"
by Scott Wolchok (DEF CON 18)
 https://www.defcon.org/images/defcon-18/...

Thank you!
@inaz2
http://inaz2.hatenablog.com/
23
Upcoming SlideShare
Loading in …5
×

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

3,390 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. 2013-10-06 すみだITセキュリティ勉強会 その1.5 @inaz2 1
  2. 2.   @inaz2  Security Engineer & Python Programmer  Girls Idol Freak  http://inaz2.hatenablog.com/ About me 2
  3. 3.  本題 3
  4. 4.   Peer-to-Peer File Sharing Protocol  大容量データを高速に転送することに特化  匿名性はない  代表的なBitTorrentクライアント BitTorrent 4 Most popular Popular in Asia Preinstalled in Ubuntu Java
  5. 5.   ファイル  ダウンロードされるデータ(群)  .torrent  Webサーバなどを介して配布されるメタファイル  ファイルの名前・サイズやTrackerのIPアドレスなどが書かれてい る  ノード  ネットワークに接続しているBitTorrentクライアント  Peer  直接接続している(隣接している)ノード Terminology (only in this slides) 5
  6. 6.  Classic BitTorrent Architecture 6 Tracker Peer (my client) Peer Peer Index server Peer 1. .torrent の ダウンロード 2. ファイルを持っている Peerの取得 3. ファイル断片を送受信 .torrent を配布 ファイルを持っている Peerの管理
  7. 7.   As a Tracker (with Index Server)  Index Serverで配布しているファイルを 欲しがっているPeerのIP(+接続時刻)  As a Peer  自分がダウンロードしているファイルを 欲しがっているPeerのIP(+接続時刻)  .torrent ごとにネットワーク (swarm) が作られる  自分が知らないファイルについてはわからない。 What we can get 7
  8. 8.   元々のアーキテクチャはTracker中心のHybrid P2P  Trackerに繋がらなくなったら止まる  Trackerなしでも動くようにする  Peer間でPeer情報の交換  Peer間で .torrent のリクエスト & ダウンロード  Peer間でファイルを持っているPeerの探索 Trackerless download 8
  9. 9.   ハッシュテーブル  キーと値のペアの組み合わせを集めたテーブル  キー = .torrent のSHA-1ハッシュ値  値 = .torrent が指すファイルを持っているPeerの集合  ハッシュテーブルを複数ノードに分散させる  問い合わせに答えられなければ、自分の周囲のノード に問い合わせ直すように答える Distributed Hash Table (DHT) 9
  10. 10.   4種類のクエリ  ping / find_node / get_peer / announce_peer  get_peer  リクエスト: .torrent のSHA-1ハッシュ値 (infohash)  レスポンス: .torrent が指すファイルを持つノード群  自分が知らない場合は、「自分が知らないこと」と自分の周囲 のノード群を答える  リクエスト側は、教えてもらったノード群に問い合わせ直す  ファイルを持っているノードが見つかるまで問い合わせ続ける BitTorrent DHT Protocol 10
  11. 11.   get_peerクエリのinfohashを収集  他のユーザが欲しがっているファイルがわかる。  もちろん、IPと接続時刻も。 WE CAN COLLECT OTHERS' DESIRES! 11
  12. 12.   infohash はただのSHA-1ハッシュ値  ファイルの内容を知るためには、対応する .torrent を 得る必要がある  BEP 9: Extension for Peers to Send Metadata Files  ファイルを持っているノードから .torrent を送ってもらうためのプロトコル拡張 infohash → .torrent 12
  13. 13.  実践 13
  14. 14.   めんどくさい!!  Deluge BitTorrent Client  Python製BitTorrentクライアント  libtorrentライブラリを使用  GUI (GTK+)  クロスプラットフォーム (Linux, Mac OS X & Windows)  簡単に改造できる  http://deluge-torrent.org/ Develop a BitTorrent Client 14
  15. 15.  Deluge is a good alternative to Transmission 15
  16. 16.   https://github.com/inaz2/deluge-hack  飛んできた infohash を自動でキューに追加  .torrent が得られたらダウンロードをpause  放置するとキューがたまりまくって激重になる Fork & Hack 16
  17. 17.   https://github.com/inaz2/btsniff  python-libtorrent を使ってコア部分のみ実装  One-file CLI Hack more 17
  18. 18.   Ubuntu Serverのtorrentを使ってネットワークにjoin  観測期間  2013-10-04 02:18 ~ 2013-10-05 00:57 Experiments 18
  19. 19.   見つかったファイルの数: 3629  内容の一部  Taylor Swift - Red (2012)  TVアニメ「進撃の巨人」OP1&OP2テーマ  月島きらり starring 久住小春(Koharu Kusumi) - バラ ライカ(Balalaika)  店長推薦作品 BT-98-不能停止的疼痛 美人妻 阪上友香  楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌ Results 19
  20. 20.   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
  21. 21.   BitTorrentでDHT有効 = 他人に欲しいファイルを 持っている人を知らないか問い合わせる  get_peersクエリを収集することで、他人が欲しがっ ているファイルを知ることができる  Future works  get_peersクエリ以外のトラフィックの利用  ID hoppingの実装 Recap 21
  22. 22.   "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
  23. 23.  Thank you! @inaz2 http://inaz2.hatenablog.com/ 23

×