CODE BLUE 2018 @ Tokyo に学生スタッフとして参加した話とAVTOKYO2018に参加した話

I participated CODE BLUE 2018 @ Tokyo (#codeblue_jp) international cyber security conference from 10/31 to 11/2, as a student staff.

f:id:Szarny:20181108170626j:plain

On the first day, I attended each track as an audience, and I challenged the DTRS CTF held by Deloitte Tohmatsu Risk Services. (I got second place 🥈)

On the second day, I supported Blockchain Track as a time keeper staff. Main topic is an attack method against Ethereum, but I couldn't understand what they speaking due to a lack of study ...
I feel that Blockchain is becoming an indispensable technology, so I think that I want to study more.
In Networking Party, I got a textbook of IoT hacking. So many thanks!

f:id:Szarny:20181108170547j:plain
f:id:Szarny:20181108170700j:plain

On 11/3, I participated in AvTokyo (#avtokyo) held in Shibuya. This is also a security conference.
At first, I was planning to listen to all the speakings, but almost all time I was challenging in pinja's Open xINT CTF(I got second place) 🥈

f:id:Szarny:20181108170728j:plain

It was a lot of fun throughout 4 days and I could concentrate on InfoSec. I would like to participate again next year!

...

10/31 ~ 11/2にかけて,CODE BLUE 2018 @ Tokyo(#codeblue_jp)という国際カンファレンスに学生スタッフとして参加してきました.

初日は聴講者として各Trackの聴講を行う傍ら,Deloitte Tohmatsu Risk Servicesさんが開催していたDTRS CTFに参加しました.(最終的に2位になれました🥈)

2日目はスタッフとして,Blockchain Trackのサポートを行いました.Ethereumに対する攻撃といったトピックがメインでしたが,勉強不足で何も理解できず...
Blockchainはもう必須の技術となってきている感があるので,勉強しておきたいなと感じました.
また,Networking PartyではIoTハッキングの教科書を頂いてしまいました.感謝!

11/3は渋谷で開催された,同じくセキュリティカンファレンスであるAvTokyo(#avtokyo)に参加してきました.
最初は全部のSpeakingを聞こうと思ってましたが,こちらも同じくほとんどずっとpinjaさんのOpen xINT CTFに参加していました.(こちらも2位でした🥈)

全体通してとても楽しく,InfoSecに集中できた4日間でした.来年もぜひまた参加したいです!

Open xINT CTF (AVTOKYO2018) writeup

はじめに

AVTOKYO 2018で開催されたOpen xINT CTFのwriteupです.
Open xINT CTF – 2018.11.03 14:00 – 19:30 @AVTokyo

私の結果は,1300ptsで2位でした.(怪しいエナジードリンクをたくさんいただきました)

f:id:Szarny:20181104152227p:plain

答えに直結することが書いてあるので,自力で楽しみたい方は閲覧しないでください.

No.1 Domain (100pts)

解法

f:id:Szarny:20181104142341p:plain



やるだけ


やるだけです.
whoisやるだけです.

$ whois bitcoinhacker.online | grep Name
Domain Name: BITCOINHACKER.ONLINE
Name Server: DNS01.MUUMUU-DOMAIN.COM
Name Server: DNS02.MUUMUU-DOMAIN.COM
Domain Name: bitcoinhacker.online
Registrant Name: Mikoto Yokoyama
Admin Name: Mikoto Yokoyama
Tech Name: Mikoto Yokoyama
Name Server: dns01.muumuu-domain.com
Name Server: dns02.muumuu-domain.com

FLAG

Mikoto Yokoyama

No.2 Photo1 (300pts)

解法

f:id:Szarny:20181104142803p:plain f:id:Szarny:20181104142803j:plain

うまそう(違う)

最初は「カツ丼 ソース」とか「山盛りキャベツ」とかで食べログ漁ってたんですが,結果が5000兆件くらい出てきてだめだったので方針転換.

使えるのは箸袋かメニューですが,箸袋は見切れてるので断念してメニューをよく見る.

f:id:Szarny:20181104143022p:plain

任意かつ定食がたくさんあるのはわかるが,どうせ決定的ではないので無視.

なんか赤字でいかにも怪しい 「へッド)定食」 なるものが見えます.

ここで食べログで「ヘッド定食 とんかつ」を検索したところ これ がヒットして終了.

FLAG

とんかつ まさむね

No.3 Photo2 (200pts)

解法

f:id:Szarny:20181104143726p:plain

f:id:Szarny:20181104143729p:plain

とりあえずGoogle画像検索にかけてみたがダメ.
Photoshopみたいなので画像いじいじしてもダメ.
Twitter痛車画像もたくさんあってダメ.

思い切って「東方 妖夢 幽々子 痛車」でGoogle検索したらトップに出てきて虚無になった.

f:id:Szarny:20181104144303p:plain

FLAG

afrosamuraispir

No.4 HIMA (300pts)

f:id:Szarny:20181104144610p:plain

解法

ひま部からアカウントを見つける問題.

とりあえずひま部のWebページに行ってみたが

  • アカウント作成機能がない
  • ユーザ検索機能がない(ユーザ情報閲覧画面はある)
  • 投稿できない

という状態で,ひま部アプリがなくては始まらないのでしぶしぶインストールしました.

アプリの検索窓には学年や名前を指定できるところがあったので,書いてあった通りの情報を入れると目的のアカウントが検索できました.
,肝心のログイン情報などどこにもありません.

ここでかなり苦戦.

少しした後,ターゲットの「ようすけ」が「ささき」なる人物とメッセージを送信しあっていることを発見.
なりすまししたら何か情報取れるんじゃないのか的な思考で以下のようなアカウントを作り接近するもダメ.
f:id:Szarny:20181104145330j:plain

またかなり苦戦.

少しした後でWebのひま部タイムラインを見ている時,最新の投稿ばかりが次々流れていってるのを目にしました.
そこで,「ようすけ」にメンションした投稿を行なった後すぐにWebの画面をリフレッシュすればその投稿を見つけられるのでは(名推理) と思って早速実行,そして取れました.

f:id:Szarny:20181104145659p:plain f:id:Szarny:20181104145730p:plain

レンダリングの様子を見るに,テンプレートにAjaxかなんかで受け取ったデータをバインドしてるっぽいので,デベロッパツールのNetworkを確認.

f:id:Szarny:20181104145856p:plain f:id:Szarny:20181104145911p:plain

ありました.(これ見えていいの?)

余談ですがこれすき(失礼) f:id:Szarny:20181104152720j:plain

FLAG

1539243040

No.5 Cryptocurrency (300pts)

f:id:Szarny:20181104150318p:plain

解法

解けてないです.
GitHub上でEthereum(Solidity)のパスワードが漏れてるとのことらしいですが,ググラビリティが足りずにダメでした.

No.6 Book (200pts)

f:id:Szarny:20181104150327p:plain

解法

No.5を解いてないと解けないやつだったのでダメです.

No.7 Mastodon (400pts)

f:id:Szarny:20181104150413p:plain

解法

えーまず謝罪がありますが,私はMastodonを使いこなしていないどころか,Mastodonのアカウント自体を持っておらずア状態でした(情弱)
とりあえずMastodonのアカウントを作って,@takedajoを見てみる. f:id:Szarny:20181104150747p:plain

誰だよ(哲学) と思って周りを見てみると,直近30cmくらいのところにDreamcastの黒パーカーを着たハッカー様を発見.
Flagを聞いたところ,このアカウントの人の所まで連れていってくれました(感謝)
その方のSuicaをリーダーにかざすと乗車履歴が閲覧でき,そこから駅名を割り出せました.

FLAG

あおば通

No.8 Device (400pts)

f:id:Szarny:20181104151254p:plain

解法

なんもわからん(諦め)

No.9 BUS (500pts)

f:id:Szarny:20181104151354p:plain f:id:Szarny:20181104151404j:plain

解法

ヒントがなさすぎてドン引き状態
とりあえず使えそうな情報としては

  • ナンバープレート
  • ■■バス
  • (なんかよくわからん筆記体みたいなやつ)
  • 側面のイラスト
  • カラーコーン
  • 植物(は?)

くらいです.

解像度が低すぎてなんともならなかったので waifu2x とかを使って画像を見やすくしようと思ったけどダメ.
結局そこから進めずダメでした.

終わった後でわかったのですが,何人か解いてる人がいたらしく(!),その方々はナンバープレートからバスのBlog(?)を探し当てたそうです.人間業ではない.

[追記]
tokina大先輩様が緯度経度特定したとのことです.人間業ではない.
tokina(ひみつ) on Twitter: "xINT CTF最後の問題解けました!! @Sz4rny… "

おわりに

OSINT的なCTFは初めてでしたが楽しかったです!
CODEBLUEでもOSINTの講演がありましたし,少し興味が湧いているので時間があればOSINTの勉強もしてみようと思います🤔

あとひま部は怖い

Dockerの基本的な使い方・コマンドまとめ

はじめに

Dockerを勉強中です. コマンドを忘れがちなので,主要なものに限りまとめました. 環境構築の方法等は割愛します.

バージョン

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   18A391

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

$ docker --version
Docker version 18.06.1-ce, build e68fc7a

Docker Hub / イメージ操作関連

イメージの表示(docker images)

$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
ubuntu                        latest              ea4c82dcd15a        5 days ago          85.8MB
nginx                         latest              dbfc48660aeb        8 days ago          109MB
...

イメージの詳細情報表示(docker inspect)

$ docker inspect <image id>
$ docker inspect ubuntu
[
    {
        "Id": "sha256:ea4c82dcd15a33e3e9c4c37050def20476856a08e59526fbe533cc4e98387e39",
        ...
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

イメージのタギング(docker tag)

$ docker tag <image name> <tag name>

以下は,nginx:latestsz4rny/my-nginx:1.0というタグを付与する際のコマンド.

$ docker tag nginx:latest sz4rny/my-nginx:1.0

$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
nginx                         latest              dbfc48660aeb        8 days ago          109MB
sz4rny/my-nginx               1.0                 dbfc48660aeb        8 days ago          109MB

Docker HubからイメージをPull(docker pull)

$ docker pull <image name>:<version>

以下はmysql v8をPullするときの例

$ docker pull mysql:8

全バージョンをPullすることも可能

$ docker pull -a mysql

Docker HubにイメージをPush(docker push)

$ docker push <image name>:<version>

なお,<image name><username>/<image name>というフォーマットである必要がある.

$ docker push sz4rny/hogefuga-image:1.0

イメージの削除(docker rmi)

$ docker rmi <image name>

コンテナ操作関連(概要)

コンテナ一覧の表示(docker ps)

以下は,停止中のコンテナも含めたコンテナの一覧を表示するコマンド例です.

$ docker ps -a
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                           PORTS               NAMES
0252be07dca5        ubuntu                               "/bin/sh"                34 seconds ago      Exited (2) 8 seconds ago                             ecstatic_lumiere
7c2eaee2cb3c        ubuntu                               "/bin/bash"              2 minutes ago       Exited (0) 59 seconds ago                            blissful_lamport
69bf8e697867        ubuntu                               "/bin/sh"                3 minutes ago       Exited (0) 3 minutes ago                             quirky_mirzakhan

コンテナ統計の表示(docker stats)

以下は,起動中のコンテナの統計を表示するコマンド例です.

$ docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
bcb9056e3142        jovial_hopper       0.00%               380KiB / 1.952GiB   0.02%               758B / 0B           0B / 0B             1

コンテナ操作関連(ライフサイクル)

コンテナの生成(docker create)

$ docker create <image name> <args>

コンテナの起動(docker start)

$ docker start <container id>

以下はubuntu上で/bin/lsを実行するコンテナを生成し起動するコマンド例です.

$ docker create ubuntu /bin/ls
7952e6de6a85690349c716bf5be35d099e6479e6cf6a1e46d5d9cafb126b2464

$ docker start -i 7952e6de6a85690349c716bf5be35d099e6479e6cf6a1e46d5d9cafb126b2464
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

コンテナの生成と起動(docker run)

$ docker run [option] <image name> <args>

以下は,ubuntuイメージにtest-ubuntuという名前をつけ,/bin/lsを実行する際のコマンド例です.

$ docker run -it --name="test-ubuntu" ubuntu /bin/ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

--detachオプションを利用することでバックグラウンド実行も可能です.

$ docker run --detach ubuntu /bin/ls
e7dd9bcb6a4602fd5795bba7e6bc2acc97b58f74d7508d8323eab854679e9423

$ docker logs -t e7dd9bcb6a4602fd5795bba7e6bc2acc97b58f74d7508d8323eab854679e9423
2018-10-24T16:11:58.269607900Z bin
2018-10-24T16:11:58.269784000Z boot
2018-10-24T16:11:58.269815900Z dev
2018-10-24T16:11:58.269849900Z etc
2018-10-24T16:11:58.269882700Z home
2018-10-24T16:11:58.269915100Z lib
2018-10-24T16:11:58.269944800Z lib64
2018-10-24T16:11:58.269977600Z media
2018-10-24T16:11:58.270008600Z mnt
2018-10-24T16:11:58.270041100Z opt
2018-10-24T16:11:58.270073300Z proc
2018-10-24T16:11:58.270105900Z root
2018-10-24T16:11:58.270135900Z run
2018-10-24T16:11:58.270168500Z sbin
2018-10-24T16:11:58.270199700Z srv
2018-10-24T16:11:58.270232300Z sys
2018-10-24T16:11:58.270264500Z tmp
2018-10-24T16:11:58.270296800Z usr
2018-10-24T16:11:58.270326600Z var

コンテナの停止(docker stop)

$ docker stop <container id>

以下は,稼働しているnginxのコンテナを停止する際のコマンド例です.

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
5a434a8bf3ec        nginx               "nginx -g 'daemon of…"   15 seconds ago      Up 9 seconds        80/tcp              gracious_fermi

$ docker stop 5a434a8bf3ec
5a434a8bf3ec\

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

コンテナの削除(docker rm)

$ docker rm <container id>

以下は,停止中のnginxのコンテナを削除する際のコマンド例です.

$ docker container ls -a
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                           PORTS               NAMES
5a434a8bf3ec        nginx                                "nginx -g 'daemon of…"   2 minutes ago       Exited (0) About a minute ago                        gracious_fermi

$ docker rm 5a434a8bf3ec
5a434a8bf3ec
$ docker container ls -a
CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS                           PORTS               NAMES

コンテナ操作関連(詳細設定)

コンテナのファイルコピー(docker cp)

$ docker cp <container id | name>:<path(container)> <path(host)>
$ docker cp <path(host)> <container id | name>:<path(container)>

以下は,ubuntuコンテナの/etc/passwdをホスト側の~/にコピーする際のコマンド例です.

$ docker run -it --name="my-ubuntu" ubuntu /bin/sh
# exit

$ docker cp my-ubuntu:/etc/passwd ~/

$ cat passwd 
root:x:0:0:root:/root:/bin/bash
...

コンテナとのポートマッピング(docker run -p / docker port)

-p <host port>:<container port>を指定することで,ホストの特定のポートに対するアクセスをコンテナ上の特定のポートにマッピングすることができます.
以下は,8888ポートを80ポートにマッピングした上でlocalhostでnginxを起動するコマンド例です.

$ docker run -d -p 8888:80 nginx
17d653c16fe965bca2d0d9b15dde689bbe4a2f5f600f2b0ebed87e3dc667286b

$ wget localhost:8888
--2018-10-25 01:18:31--  http://localhost:8888/
localhost (localhost) をDNSに問いあわせています... ::1, 127.0.0.1
localhost (localhost)|::1|:8888 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 612 [text/html]
`index.html.1' に保存中

index.html.1                               100%[=======================================================================================>]     612  --.-KB/s 時間 0s       

2018-10-25 01:18:31 (29.2 MB/s) - `index.html.1' へ保存完了 [612/612]

$ head index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }

なお,ポートマッピングの設定はdocker portコマンドで確認できます.

$ docker run -d -p 8080:80 --name="my-nginx" nginx
fbadd34244073dbbe72a4a7d9c061de00db266c32e29132e015049165f7a489f

$ docker port my-nginx
80/tcp -> 0.0.0.0:8080

リソース制限の指定(docker run --cpu-shares= --memory=)

$ docker run --cpu-shares=<cpu shares> --memory=<memory amount> <image name> <args>

以下は,CPU時間を規定の半分にし,メモリの最大使用量を256MBに指定した上でubuntuイメージを起動するコマンド例です.

$ docker run -it --cpu-shares=512 --memory=256m ubuntu
root@7c2eaee2cb3c:/#

環境変数の設定(docker run -e key=value)

$ docker run -e <key>=<value> <image name> <args>

以下は,環境変数MYENVDOCKERという値を設定した上でubuntuイメージを起動するコマンド例です.

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

$ docker run -it -e MYENV=DOCKER ubuntu /bin/sh
# set
HOME='/root'
HOSTNAME='0252be07dca5'
IFS='    
'
MYENV='DOCKER'
...

稼働中のコンテナ操作関連

稼働中のコンテナへのアタッチ(docker attach)

$ docker attach <container name>

以下は,バックグラウンドで稼働しているubuntu(/bin/sh)のコンテナにアタッチする際のコマンド例です.

$ docker run -d -it --name="my-ubuntu" ubuntu /bin/sh
47c02430413cf78ee1dcdf3002823dc584e7f8803df8f3749f532a4908fb3d9a
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
47c02430413c        ubuntu              "/bin/sh"           4 seconds ago       Up 2 seconds                            my-ubuntu

$ docker attach my-ubuntu
ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

稼働中のコンテナ上でのプロセスの実行(docker exec)

docker exec <container id>|<container name> <arg>

以下は,バックグラウンドで稼働しているnginxコンテナ上で/bin/shプロセスを実行する際のコマンド例です.

$ docker run -d -p 8888:80 --name="my-nginx" nginx
f6053d4806a0398790f0dd83883144b312497331e20bd9af6532a80ef10c2cc1

$ docker exec -it my-nginx /bin/sh
# head /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }

コンテナとイメージ

コンテナからイメージを作成(docker commit)

docker commit -a <author> -m <message>  <container id | name> <image name>

以下は,イメージから生成したubuntuコンテナになんらかのファイルを追加し,再度イメージ化する際のコマンド例です.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              ea4c82dcd15a        6 days ago          85.8MB
nginx               latest              dbfc48660aeb        8 days ago          109MB

$ docker run -it --name="my-nginx" nginx /bin/sh
# touch nullfile.txt
# exit

$ docker diff my-nginx
A /nullfile.txt

$ docker commit -a "sz4rny" -m "sample ubuntu" my-nginx sz4rny/my-nginx:1.0
sha256:fd22612ed858f9c4bb7bed80b3dbfb7d3a23bec8b6c507bfe8e9722fc22bd089

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sz4rny/my-nginx     1.0                 fd22612ed858        3 seconds ago       109MB
ubuntu              latest              ea4c82dcd15a        6 days ago          85.8MB
nginx               latest              dbfc48660aeb        8 days ago          109MB

参考

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化(WINGSプロジェクト阿佐志保 山田祥寛)|翔泳社の本