Site cover image

🏪ofuroniku火星第3支店

🦈Docker版Wiresharkを使う

WiresharkをDockerで動かして使ってみるのが目標です。

Wireshark Docker

Dockerhubのページはここ https://hub.docker.com/r/linuxserver/wireshark ですが、githubリポジトリに推奨ビルド方法が詳しく書かれているのでそれを参考に進めていきます。

適当にディレクトリを作成したら README の docker-compose.yml を配置します。

❯❯❯ mkdir docker_wireshark_sandbox
❯❯❯ cd docker_wireshark_sandbox/
# ↓からコピペ
# https://github.com/linuxserver/docker-wireshark#docker-compose-recommended-click-here-for-more-info
❯❯❯ cat docker-compose.yml
---
version: "2.1"
services:
  wireshark:
    image: lscr.io/linuxserver/wireshark:latest
    container_name: wireshark
    cap_add:
      - NET_ADMIN
    security_opt:
      - seccomp:unconfined #optional
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /path/to/config:/config
    ports:
      - 3000:3000 #optional
      - 3001:3001 #optional
    restart: unless-stopped

❯❯❯ docker compose pull
❯❯❯ docker compose up -d

localhost:3000でGUIのWiresharkが起動しています。ログを表示させたいときは

❯❯❯ docker logs -f wireshark
[migrations] started
[migrations] no migrations found
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1000
User GID:    1000
───────────────────────────────────────
...

こんな感じでリアルタイム閲覧できます。

使ってみる

ksnctfの8問目を解いてみます。

https://ksnctf.sweetduet.info/problem/8

配布されているq8.pcapをコンテナに送ります。

❯❯❯ docker ps
# CONTAINER ID確認
❯❯❯ docker cp q8.pcap <CONTAINER ID>:/home/kasm-user/q8.pcap

これでGUIのOpenFileからq8.pcapを選択できるようになります。

Image in a image block

ここからは解法です。

パケットの中に200OKしているものがあるので、Follow>TCP streamをします。

Image in a image block
GET /~q8/ HTTP/1.1
Host: ctfq.sweetduet.info:10080
Connection: keep-alive
Authorization: Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ja,en-US;q=0.8,en;q=0.6
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Date: Sat, 26 May 2012 20:54:05 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sat, 26 May 2012 12:24:46 GMT
ETag: "422da-b8-4c0ef920b3f8e"
Accept-Ranges: bytes
Content-Length: 184
Connection: close
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Q8</title>
  </head>
  <body>
    <p>Congratulations!</p>
    <p>The flag is q8's password.</p>
  </body>
</html>

認証に成功するとThe flag is q8's passwordだと教えてくれるようです。Authorization: Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB これをBase64でデコードします。

❯❯❯ echo "cTg6RkxBR181dXg3eksyTktTSDhmU0dB" | base64 -d
q8:FLAG_5ux7zK2NKSH8fSGA

感想

CTF始めたての頃、あせってWindows版をインストールした経緯があります。でもCTFのときぐらいしか使わないため、もっとスマートに使えないかなあと思っていました。これ以外のツールもDockerを利用すれば簡単に使い捨てられて良いですね。