基本的にはHTTPSのサイト、またフリーWifiを使用しなければ傍受されないため、悪用するといっても今やそんなシーンが滅多にないが、定型メッセージである「悪用厳禁」と一応書いておく。
環境設定
MacOSにWiresharkをインストール(XQuartzも必要)。
今回手元にフリーWifiのような暗号化しないWifiが用意できなかったため、ローカルでの通信で代用(それならChromeだけでいいのだが、Wiresharkを使ってみたかった)。
Wiresharkの設定
メニューの「Capture」→「Options…」からWi-Fi: enXXX(任意の数字)を見つけ、
Promiscuous:プロミスキャスモード(自分以外の通信も受信するモード)
Monitor:すべての無線通信を受信するモード
にチェックがつける。

が、暗号化するWifiを使っている場合、Monitorにチェックを入れると内容が確認できないようになるため、ローカルで確認する場合はやめる。
いろいろ調べていると、暗号化にWPA(無線LANにおける暗号化規格)を利用している場合は、テンポラリーキーを生成しており、パスフレーズを知っているだけでは暗号化を復元できない(復元する場合は、アクセスポイントに接続する最初の通信あるいはテンポラリーキーの更新のタイミングでMacアドレスと使用される乱数を抜き出すことで復元できるらしい)。
その後、Capture画面で対象のWifiをクリックすることでキャプチャーが開始される。
今回の対象はWebサイトでHTTPSでは中身が見えないため、HTTPでフィルターをかける。

傍受開始
適当なHTTPサイトにアクセスする。
今回は下記のようなページでテストした。
アクセスするたびに画面上の数値が増えていく。
<?php
session_name('target-session-name');
session_start();
?>
<html><head><meta charset="utf-8" /></head>
<body>
<?php
if (!isset($_SESSION['count'])){
$_SESSION['count'] = 1;
} else {
$_SESSION['count']++;
}
echo $_SESSION['count'];
?>
</body>
</html>
初回アクセスすると「1」と表示される。
10回アクセスしてみて、このセッションを奪い取ってみる。
Wireshark上でターゲットの列を選択すると英語がいろいろ出てくるが、このうちの「Hypertext Transfer Protocol」を開き、Cookieの項目を開いてみるとCookieのキーとバリューのペアが出てくるため、それをメモする。

ChromeのDevToolsを開き、ApplicationのCookiesで該当のドメインのCookieを探し、Valueをメモした値に書き換える。
すると次にリロードしたときに11回目のアクセスとなり、セッションハイジャックに成功、となる。

所感
httpだと本当に簡単に盗まれてしまうため、マジで危険意識が高まる。
まあhttpでもそれなりに実装すれば、これほど簡単には盗まれなくなるが、httpsにすることがより手っ取り早く、(きちんと実装すれば)より安全である。