際際滷

際際滷Share a Scribd company logo
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
Popular
in Asia
Preinstalled
in Ubuntu
Java
?
? ファイル
? ダウンロ`ドされるデ`タ蛤
? .torrent
? Webサ`バなどを初して塘下されるメタファイル
? ファイルの兆念?サイズやTrackerのIPアドレスなどがかれてい
る
? ノ`ド
? ネットワ`クに俊AしているBitTorrentクライアント
? Peer
? 岷俊俊AしているO俊しているノ`ド
Terminology
(only in this slides)
5
?
Classic BitTorrent
Architecture
6
Tracker
Peer
(my client)
Peer
Peer
Index server
Peer
1. .torrent の
ダウンロ`ド
2. ファイルを隔っている
Peerの函誼
3. ファイル僅頭を僕鞭佚
.torrent を塘下 ファイルを隔っている
Peerの砿尖
?
? As a Tracker (with Index Server)
? Index Serverで塘下しているファイルを
圀しがっているPeerのIP┌俊Ar震
? As a Peer
? 徭蛍がダウンロ`ドしているファイルを
圀しがっているPeerのIP┌俊Ar震
? .torrent ごとにネットワ`ク (swarm) が恬られる
? 徭蛍が岑らないファイルについてはわからない。
What we can get
7
?
? 圷?のア`キテクチャはTracker嶄伉のHybrid P2P
? Trackerに、らなくなったら峭まる
? Trackerなしでも咾ようにする
? PeergでPeer秤鵑僚Q
? Peergで .torrent のリクエスト & ダウンロ`ド
? Peergでファイルを隔っているPeerの冥沫
Trackerless download
8
?
? ハッシュテ`ブル
? キ`と、離撻△僚Mみ栽わせを鹿めたテ`ブル
? キ` = .torrent のSHA-1ハッシュ
?  = .torrent が峺すファイルを隔っているPeerの鹿栽
? ハッシュテ`ブルを}方ノ`ドに蛍柊させる
? い栽わせに基えられなければ、徭蛍の巓譴離立`ド
にい栽わせ岷すように基える
Distributed Hash Table
(DHT)
9
?
? 4Nのクエリ
? ping / find_node / get_peer / announce_peer
? get_peer
? リクエスト: .torrent のSHA-1ハッシュ (infohash)
? レスポンス: .torrent が峺すファイルを隔つノ`ド蛤
? 徭蛍が岑らない栽は、仝徭蛍が岑らないこと々と徭蛍の巓
のノ`ド蛤を基える
? リクエスト箸蓮⊇未┐討發蕕辰織立`ド蛤にい栽わせ岷す
? ファイルを隔っているノ`ドがつかるまでい栽わせAける
BitTorrent DHT Protocol
10
?
? get_peerクエリのinfohashをЪ
? 麿のユ`ザが圀しがっているファイルがわかる。
? もちろん、IPと俊Ar震も。
WE CAN COLLECT
OTHERS' DESIRES!
11
?
? infohash はただのSHA-1ハッシュ
? ファイルの坪否を岑るためには、鬉垢 .torrent を
誼る駅勣がある
? BEP 9: Extension for Peers to Send Metadata Files
? ファイルを隔っているノ`ドから
.torrent を僕ってもらうためのプロトコル
infohash ★ .torrent
12
?
g樹
13
?
? めんどくさい!!
? Deluge BitTorrent Client
? PythonuBitTorrentクライアント
? libtorrentライブラリを聞喘
? GUI (GTK+)
? クロスプラットフォ`ム (Linux, Mac OS X & Windows)
? gに個夛できる
? http://deluge-torrent.org/
Develop a BitTorrent
Client
14
?
Deluge is a good alternative
to Transmission
15
?
? https://github.com/inaz2/deluge-hack
? wんできた infohash を徭咾妊ュ`に弖紗
? .torrent が誼られたらダウンロ`ドをpause
? 慧崔するとキュ`がたまりまくって爾嶷になる
Fork & Hack
16
?
? https://github.com/inaz2/btsniff
? python-libtorrent を聞ってコア何蛍のみg廾
? One-file CLI
Hack more
17
?
? Ubuntu Serverのtorrentを聞ってネットワ`クにjoin
? Qy豚g
? 2013-10-04 02:18 ゛ 2013-10-05 00:57
Experiments
18
?
? つかったファイルの方: 3629
? 坪否の匯何
? Taylor Swift - Red (2012)
? TVアニメ仝M弔両淅法OP1&OP2テ`マ
? 埖uきらり starring 消廖弌敢(Koharu Kusumi) - バラ
ライカ(Balalaika)
? 糾L容]恬瞳 BT-98-音嬬唯峭議黙祐 胆繁曇 昜貧嗔
? Sしい!!?('ω'? )眉?('ω')?眉( ?'ω')?
Results
19
?
? BitTorrent DHT Protocolのかい碧Mみ
? 光クライアントにID (SHA-1) が尅られる
? 光 .torrent にもID (SHA-1) が尅られる
? クライアントのIDに除いIDを隔つ .torrent が鹿まるように
なっている
? 鉦xは XOR によって協x: distance(A,B) = |A xor B|
? 嫌レく .torrent をЪするには、協豚議なクライアントIDの
厚 (ID hopping) が駅勣
? 謹方のノ`ドをP2Pネットワ`クに碧zむタイプの好弔蓮
Y好 (Sybil Attack) と柵ばれる
Road to Sybil Attack
20
?
? BitTorrentでDHT嗤 = 麿繁に圀しいファイルを
隔っている繁を岑らないかい栽わせる
? get_peersクエリをЪすることで、麿繁が圀しがっ
ているファイルを岑ることができる
? Future works
? get_peersクエリ參翌のトラフィックの旋喘
? ID hoppingのg廾
Recap
21
?
? "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
?
Thank you!
@inaz2
http://inaz2.hatenablog.com/
23

More Related Content

Sniffing BitTorrent DHT ゛繁はBTで採を鯛とすのか゛

  • 2. ? ? @inaz2 ? Security Engineer & Python Programmer ? Girls Idol Freak ? http://inaz2.hatenablog.com/ About me 2
  • 4. ? ? Peer-to-Peer File Sharing Protocol ? 寄否楚デ`タを互堀に僕することに蒙晒 ? 停兆來はない ? 旗燕議なBitTorrentクライアント BitTorrent 4 Most popular Popular in Asia Preinstalled in Ubuntu Java
  • 5. ? ? ファイル ? ダウンロ`ドされるデ`タ蛤 ? .torrent ? Webサ`バなどを初して塘下されるメタファイル ? ファイルの兆念?サイズやTrackerのIPアドレスなどがかれてい る ? ノ`ド ? ネットワ`クに俊AしているBitTorrentクライアント ? Peer ? 岷俊俊AしているO俊しているノ`ド Terminology (only in this slides) 5
  • 6. ? Classic BitTorrent Architecture 6 Tracker Peer (my client) Peer Peer Index server Peer 1. .torrent の ダウンロ`ド 2. ファイルを隔っている Peerの函誼 3. ファイル僅頭を僕鞭佚 .torrent を塘下 ファイルを隔っている Peerの砿尖
  • 7. ? ? As a Tracker (with Index Server) ? Index Serverで塘下しているファイルを 圀しがっているPeerのIP┌俊Ar震 ? As a Peer ? 徭蛍がダウンロ`ドしているファイルを 圀しがっているPeerのIP┌俊Ar震 ? .torrent ごとにネットワ`ク (swarm) が恬られる ? 徭蛍が岑らないファイルについてはわからない。 What we can get 7
  • 8. ? ? 圷?のア`キテクチャはTracker嶄伉のHybrid P2P ? Trackerに、らなくなったら峭まる ? Trackerなしでも咾ようにする ? PeergでPeer秤鵑僚Q ? Peergで .torrent のリクエスト & ダウンロ`ド ? Peergでファイルを隔っているPeerの冥沫 Trackerless download 8
  • 9. ? ? ハッシュテ`ブル ? キ`と、離撻△僚Mみ栽わせを鹿めたテ`ブル ? キ` = .torrent のSHA-1ハッシュ ? = .torrent が峺すファイルを隔っているPeerの鹿栽 ? ハッシュテ`ブルを}方ノ`ドに蛍柊させる ? い栽わせに基えられなければ、徭蛍の巓譴離立`ド にい栽わせ岷すように基える Distributed Hash Table (DHT) 9
  • 10. ? ? 4Nのクエリ ? ping / find_node / get_peer / announce_peer ? get_peer ? リクエスト: .torrent のSHA-1ハッシュ (infohash) ? レスポンス: .torrent が峺すファイルを隔つノ`ド蛤 ? 徭蛍が岑らない栽は、仝徭蛍が岑らないこと々と徭蛍の巓 のノ`ド蛤を基える ? リクエスト箸蓮⊇未┐討發蕕辰織立`ド蛤にい栽わせ岷す ? ファイルを隔っているノ`ドがつかるまでい栽わせAける BitTorrent DHT Protocol 10
  • 11. ? ? get_peerクエリのinfohashをЪ ? 麿のユ`ザが圀しがっているファイルがわかる。 ? もちろん、IPと俊Ar震も。 WE CAN COLLECT OTHERS' DESIRES! 11
  • 12. ? ? infohash はただのSHA-1ハッシュ ? ファイルの坪否を岑るためには、鬉垢 .torrent を 誼る駅勣がある ? BEP 9: Extension for Peers to Send Metadata Files ? ファイルを隔っているノ`ドから .torrent を僕ってもらうためのプロトコル infohash ★ .torrent 12
  • 14. ? ? めんどくさい!! ? Deluge BitTorrent Client ? PythonuBitTorrentクライアント ? libtorrentライブラリを聞喘 ? GUI (GTK+) ? クロスプラットフォ`ム (Linux, Mac OS X & Windows) ? gに個夛できる ? http://deluge-torrent.org/ Develop a BitTorrent Client 14
  • 15. ? Deluge is a good alternative to Transmission 15
  • 16. ? ? https://github.com/inaz2/deluge-hack ? wんできた infohash を徭咾妊ュ`に弖紗 ? .torrent が誼られたらダウンロ`ドをpause ? 慧崔するとキュ`がたまりまくって爾嶷になる Fork & Hack 16
  • 17. ? ? https://github.com/inaz2/btsniff ? python-libtorrent を聞ってコア何蛍のみg廾 ? One-file CLI Hack more 17
  • 18. ? ? Ubuntu Serverのtorrentを聞ってネットワ`クにjoin ? Qy豚g ? 2013-10-04 02:18 ゛ 2013-10-05 00:57 Experiments 18
  • 19. ? ? つかったファイルの方: 3629 ? 坪否の匯何 ? Taylor Swift - Red (2012) ? TVアニメ仝M弔両淅法OP1&OP2テ`マ ? 埖uきらり starring 消廖弌敢(Koharu Kusumi) - バラ ライカ(Balalaika) ? 糾L容]恬瞳 BT-98-音嬬唯峭議黙祐 胆繁曇 昜貧嗔 ? Sしい!!?('ω'? )眉?('ω')?眉( ?'ω')? Results 19
  • 20. ? ? BitTorrent DHT Protocolのかい碧Mみ ? 光クライアントにID (SHA-1) が尅られる ? 光 .torrent にもID (SHA-1) が尅られる ? クライアントのIDに除いIDを隔つ .torrent が鹿まるように なっている ? 鉦xは XOR によって協x: distance(A,B) = |A xor B| ? 嫌レく .torrent をЪするには、協豚議なクライアントIDの 厚 (ID hopping) が駅勣 ? 謹方のノ`ドをP2Pネットワ`クに碧zむタイプの好弔蓮 Y好 (Sybil Attack) と柵ばれる Road to Sybil Attack 20
  • 21. ? ? BitTorrentでDHT嗤 = 麿繁に圀しいファイルを 隔っている繁を岑らないかい栽わせる ? get_peersクエリをЪすることで、麿繁が圀しがっ ているファイルを岑ることができる ? Future works ? get_peersクエリ參翌のトラフィックの旋喘 ? ID hoppingのg廾 Recap 21
  • 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