ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

Spoilerwallで遊ぶ

概要

TCPアクセスに対して映画のネタバレを返す次世代(?)ファイアウォールSpoilerwallなるものがTLに流れてきたので試してみた。

github.com

  • 仮想化環境: Virtualbox
  • クライアント: CentOS7.3
  • サーバー: Ubuntu 16.04

手順

ほぼReadmeの通りだが、一部Virtualbox用に変更。

# リポジトリをクローン
$ git clone git@github.com:infobyte/spoilerwall.git

# iptablesでenp0s3(Wi-Fiルータに繋がっているブリッジインタフェース)に対する全TCP通信の宛先IP/ポート番号を変換する設定を追加
$ sudo iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 1:65535 -j DNAT --to-destination 127.0.0.1:8080

# localhostにルーティングする場合は必要……?
$ sudo sysctl -w net.ipv4.conf.enp0s3.route_localnet=1

Readmeではserver-spoiler.pyを編集してspoilerwallが待ち受けるIPアドレス/ポート番号を設定することになっているが、デフォルトで127.0.0.1:8080が設定されているのでこのまま動かす。

$ cd ~/spoilerwall
$ python2 server-spoiler.py

これでサーバー側は準備OK。同じセグメントに属するクライアントからcurlしてみる。

$ curl http://192.168.100.125/
Pokmon: The Rise of Darkrai
darkrai dies
curl: (56) Recv failure: Connection reset by peer

劇場版ポケモンダークライが死ぬというネタバレを食らった後、追い打ちをかけるようにRSTされる。

dic.nicovideo.jp

Chromeでアクセスすると「このサイトにアクセスできません」になった。ネタバレは単にHTTPパケットにDataくっつけているだけ(pcapもしてみた)なので当然か。

おわりに

spoilerとは「台無しにする人」という意味があるらしい。ネタバレ情報はspoiler.jsonにまとまっているようだが、それをいじって遊ぶのはまた別のお話。

ejje.weblio.jp