雰囲気で情報セキュリティをやってます.

アルティメットサイバーセキュリティクイズ2018に参加しました

アルティメットサイバーセキュリティクイズについて

公式Webページ

www.seckansai.com

今年から開催されています. 主催は「総関西サイバーセキュリティLT大会」,「tktkセキュリティ勉強会」の主催・スタッフの方々で, 作問等の協力をスポンサーの方々がされていました.

各クイズ,進行について

予選:○×クイズ

参加者全員→8人に絞られます.

ライフゲージが3つ与えられ,3問間違えると失格です.

この参加賞の下の部分がちぎれるようになっており, 全部(赤いところまで)ちぎられたらアウト,という視覚的にわかりやすい方式をとられていました. 赤いところにアルファベットと番号が書かれているのですが,これが参加者番号になっています. 赤いタグがちぎられたタイミング(何問目か)で運営の方が赤いタグを回収されており, これにより最終的な順位がわかるようになっています. (順位は後日公開されるそうです)

8人に絞られたタイミングで○×クイズを終了される予定だったようですが, 17問目で5人に絞られてしまったため,17問目を間違えた数名でクイズを進め, 最終的にそこからさらに3人に絞り,17問目正解者の5人と合わせて8人で準決勝となりました.

準決勝:記述クイズ

8人→3人に絞られます.

8人それぞれにフリップ程度の大きさのホワイトボードが渡され, 各問題に対して制限時間(総裁が終了とおっしゃるまで)以内に回答を書きます.

(予選で落ちられた方はここから見学という形になります)

こういう感じのものです. 実際それぞれ何問解けているかはわからなかった(数えるの途中であきらめた)のですが, 1問1ポイントで上位3人が決勝に進出しました.

決勝:早押しクイズ(という名のアタッ○25)

3人で順位を決めます.

出題画面ともう一つ画面が出てきて,これがアタッ○25...陣取りゲームのような画面でした. 25マスの数字が書かれたパネルがあり,1問正解するとこの中から誰もとっていない&&誰かがとっているパネルに関わるパネル?を1枚選択することができます. これがオセロのようになっており,自分のとったパネルで他の人のパネルを挟む(縦・横・斜めどれでもいい)ことができたら,挟んだパネルも自分のものになります.

iPhoneの画面が映されているような状態だったため,きっとこういうアプリがあるのでしょうね)

準決勝時点の順位から,

  • 1位:青色
  • 2位:白色
  • 3位:赤色

というふうにパネルの色が決まりました. 最終的にとったパネルの数が一番多かった人が優勝者となります.

パネルの写真(当日撮れなかったためまっちゃだいふくさんの写真からいただきました)
パネルの写真(当日撮れなかったためまっちゃだいふくさんの写真からいただきました)

成績,感想等

この日とても運がよかったのか,2位をいただきました.

それぞれ感想を.

予選

正直言ってほとんどわからなかt

ただ,会場にいらっしゃる方の属性みたいなのはなんとなくわかったので, 本当にわからない問題は詳しそうな人が動いたら一緒に動くという"日和見戦法"を行いました(あかん)

さくっと移動したら普通に間違えたりして厳しい気持ちになりました... (CSIRTで働きたいねって言ってた人間がCSIRTがなんの略か間違えるのは本当にだめだなと思いましたorz)

私は17問目間違え組で,最終的に6人に絞られた際に出た通天閣問題(2代目通天閣が建てられたのは1955年である,○か×か)で偶然正解(×)を引き, そのときちょうど3人になったため,17問目正解者5人とあわせて準決勝進出となりました.

準決勝

スペル間違い,漢字間違いにヒヤヒヤしながらやってました. 結果は計算間違いを晒しましたorz(10進数→16進数を焦って間違えた)

4択問題など正答率があがる(あがったのか?)問題もあり,ここで間違えたら致命傷だなと思ったのですが, 選択肢があるときは制限時間が短く,悩む時間がないためあまり考えずにすぱっと書く必要がありました...難しい

ほかの問題は「とりあえず書けば当たるかもしれないから回答思いついたら書こう」くらいの気持ちで書いてました. 意外と当たってよかった.

長くセキュリティと関わっている必要がある問題や,現場で働いてないとぱっと浮かばないであろう問題などはわからなかったです... そこを的確に答えてらっしゃる他の回答者さんを見て流石だなあと思いました...

(Happy99は存在は知ってても名前は初めて聞きました...)

回答白紙で出した問題がいくつかあったのが心残りですね.

結果3位で決勝に出ることになりました.

決勝

わかる問題に限ってボタン押せないわ,お手つきで立ってるわ,わかる問題でも「もし間違えたら次の問題答えられないな...」と思うと確実にわかるものしか答えられないわで,悔しいところが多々あり...

ただ,使っているアタッ○25風味のアプリに特徴(取れるパネルがそのときの他の人のパネル取得状態による)があったので,その特徴を使えば3位通過の私でもなんとかなるのではと思い,回答のタイミングも図ったりしました.(といっても少しだけですよ!)

四隅を取れるタイミングで答えないと,大分不利になるなと感じました.

あんまりテクニカルな問題を答えられなかったのが...orz

しかしこの前のtktkセキュリティ勉強会のNEMの可視化の会のおかげで,仮想通貨系の問題を少し答えられました.

回答者がなかなか答えられずにいると,会場の他の参加者やスタッフから圧をかけられる(手で机や足をパチパチ叩いて,「おれに答えさせろ〜!」というオーラを送られます;;)ので,計算問題はやっぱり失敗しましたorz

結果,1位になるにはあと1問分くらいパネルが足りなかったらしく,2位となりました.

全体の所感

スポンサー問題がならではな感じで,スポンサーがいるからこそできることだなと感じました.FireEyeさんの問題は,あとからレポート読みたくなりましたね. (最初はスポンサーなしでやるつもりだったという話がありましたが,これもいいなと思いました)

あと,間違えた問題が結構頭に残るので,いい勉強になりました... 復習ができればいいなと思います.

セキュリティ以外の問題もけっこうあり,初心者でもチャンスがあるぞ!というアピールを感じました. (実際サービス問題にかなり助けられt)

○×クイズも,優勝候補な人が早々に脱落していたら煽られてたりしましたが, 間違えたからといって晒しあげを食らうこともなく,要解説なものはさらっと解説があり,そんなに怖がることはないかなと個人的には思いました.

今回,結構学生が少なくて寂しい印象を受けたので,次回はもっと学生が増えると良いなと思います. 基調講演で川口さんがお話されていたことと絡めてですが,学校以外にも外にたくさんコミュニティというものがあり, 私はいろいろなコミュニティを通じて大学で受ける講義では学べないことも沢山教えていただいたと思っています. (今回少しばかり解けた問題にもそういったコミュニティで得たものが活かされています) また,学校でうまくいかなくても他のところでなんとか頑張ればいいやという気持ちがあれば, 学校でも過ごしやすくなることがあるんじゃないかとも感じています. 「社会人ばっかりだしなあ」と思ってもぜひ勇気をもって来年参加していただきたいです. (もちろん,来年のクイズに関わらず,他の勉強会等もぜひ)

そしてSlackの話は気をつけねばなと思いました...

ナイトパーティーも非常に楽しかったです!総裁クイズは1問目で脱落しましたが!w

LTも興味深く聞かせていただきました...!

いただきもの等

配布されたノベルティ

配布されたノベルティの写真 スポンサーさんの資料がたくさん.きっとこういうのの中から問題出るんだろうな〜と思ってたら本当に出ました()

2位の景品

運営スタッフさんが弁護士さんに念の為確認されたところ,景表法(景品表示法)による規制があるとのことのようです.

景品規制の概要|消費者庁

左からTRENE,MAMORIO,2nd placeの盾型のRasPiケース
左からTRENE,MAMORIO,2nd placeの盾型のRasPiケース

いただいたTRENE,MAMORIOはどちらもBluetooth技術を用いたスマートフォンでの持ち物監視ツールのようなものです.

TRENE

TRENEとRasPiケース
TRENEとRasPiケース

もうちょっと大きさ感がわかる写真が撮れればよかったのですが,手のひらサイズの富士山型のデバイスです. TRENEからスマートフォンが一定距離離れたら「見守りモード」になります.この見守りモードの際にTRENEに振動が加わったり,位置を移動させられたりすると,TRENEがアラート(上部が光り,アラーム音が鳴る)を出してくれます.TRENEの様子や設定はスマートフォンから手軽にできます.

カフェ等で席取り等していて,荷物だけ置いて席を離れる際などに,荷物が大丈夫かどうかを見ていてくれます.

MAMORIO

MAMORIOとRasPiケース
MAMORIOとRasPiケース

最近では結構家電量販店で見かけるようになった気がするMAMORIOです. 写真の右下のものがそれですが,かなりちっちゃいです.

なくし物がかなり多い人間なので,実は買おうかどうか迷っていたところで.... しかし,こんなにつけるもののジャンルがあると悩みますね...

MAMORIOの守れるもののジャンル
MAMORIOの守れるもののジャンル

どちらも大事に使わせていただきます!ありがとうございます!

当日の様子等をチェックするには

Twitterで「#ultimate_sec_quiz」を検索!

(まっちゃだいふくさんの投稿が様子をつかみやすいと思います)

さいごに

今回は楽しい会に参加させていただきありがとうございました!

来年も参加できましたらぜひ参加したいです!:)

2018.07.17

景表法について訂正を加えました.

第8回tktkセキュリティ勉強会に参加しました


第8回tktkセキュリティ勉強会にブロガー枠で参加しました.

私はもう5回ほど参加させていただいておりますが,毎度楽しい勉強会をありがとうございます〜! イベントページは下記になります.

tktksec.connpass.com

多少の自己解釈や後から調べた事項などを含みます(すみません)が, 以下講演メモになります.

当日マシントラブルでできなかった方向けに書いてみようと思ったのですが, わかりにくいところがあればお申し付けください...!

Maltego TransformでNEMを可視化してみよう!

講師はトレンドマイクロの新井悠さんです. アナライジング・マルウェア第二版出さんかいと言われていらっしゃるそうな... 新井さんの関わられている本の写真

新井さんの関わられている本の数々.

今回のアジェンダ

  • Maltegoの基本
  • Pythonで通信プログラムの作成
  • PythonでMaltego Local Transformサンプルの作成
  • NEMのMaltego Local Transformの作成

Maltegoというツールについてハンズオンが行われました

Maltegoって

もともとはアメリカの国防総省のRed Teamで使われていたりしたツールのようです.

Red Teamとは

組織内でのセキュリティについて,Red TeamとBlue Teamに分かれて運用されているところがあります.

日本だとRed Teamはあまりないそうですが,最近はリクルートなどの活動が有名だとか.

www.japandesign.ne.jp

OSINT

Red Teamの手法の一つです.一般的な定義は以下のサイトが参考になると思います.

securityblog.jp

ターゲットに関する公的な情報を収集し,収集した情報を端緒に攻撃を実施すること,と説明がありました.

私個人のイメージは,公開されている情報全てを集めて,情報を繋げていき, 相手の信用範囲に滑り込む等の用途で情報を活用したり,単に詳細な情報を保持したりするような感じです. 一番単純でやりやすく,かつ恐ろしい手法だなと思ってます.(人間のミスがとても出るところだと思うので...)

OSINTの例

  • 人材採用のページがあったら?
    • どんな人が募集されているのか調査し,「わたしWebエンジニア希望です,この添付ファイルをみてね」などメールを送り,人事に開けさせる
  • whoisデータベース
    • ドメイン名から組織情報を抜き出す.Maltegoならこういう情報を図式化してくれる.

試しにwhoisで適当なドメインの情報など調べてみると(Googlewhoisと調べると何件かwhois情報の検索サービスが出てきますので,どこかのサイトでドメインを入力して調査してみましょう),情報が縦にずらっと並べられますが,ちょっと見辛いですね.

Maltego

Paterva社の図式化ソフトウェアです. 情報(エンティティ)を別の情報に変換(トランスフォーム)することができます.(ここがMaltego独特の言い回しなので,注意です)

基本的にはスパイダーグラフ(網目状に情報が広がります)を使用して脅威の可視化を行います. 使用者が自分自身でなにか集める情報を指定しないと動いてくれないことに注意です. 文字だけの情報を図式化してくれることで,どんな人にもわかりやすく情報が伝わります.

Kali Linuxに入っているのはコミュニティエディション(CE)で,登録していれば誰でもつかえるものです.

Maltegoのまえに...

日本語キーボード化(US配列の方は不要)

日本語(JIS)キーボードを使われている方は ,Kali Linuxのキーマップを日本語キーボードにしましょう. ターミナルを開いて,

$setxkbmap jp

と入力してEnterです.

今回の講演のリポジトリを落としてくる

github.com

zipでダウンロードしても良いですし, ターミナル上で

$ git clone https://github.com/nenaiko-dareda/maltego_training.git

などでもダウンロードできます.Forkしても良いですね.

Tips

(単に私が困ったので書いておきます)

私はKali Linuxの環境をMacの上にVirtual BoxでVMを立てたのですが,Macでウィンドウ切り替えしてたらVM内のカーソルがなくなった!ということが頻発しました;;

VMの画面を一旦閉じて(警告ウィンドウが出てきますが,またすぐ開くのであればサスペンド(一番上部の項目)でOKだと思います) そのあと再度VMを起動すればカーソルが復活します.

KaliにMaltego CEのインストール

  1. まず検索ができるメニューを開きます(左端のアプリ欄の一番下の9つ四角が集まってるボタンを押すと開けます)
  2. Maltegoで検索するとリボルバーみたいなアイコンのソフトが見つかるので,それをクリックで開きます(これでMaltegoが開けます)
  3. 初めて開く場合,Maltegoのインストール画面が出てきます.CEバージョンをクリックして,
  4. ログイン(アカウント持ってなかったらregister hereをクリックしてブラウザを開き,アカウントをつくってから)
  5. あとのウィンドウはNextでOK

新しいグラフをつくる

Maltegoアイコンのとなりの Create new graph アイコンをクリックします.

Create new graph
Create new graph

クリックすると,以下のような画面になります.

New Graph
New Graphの画面
一番使うのは左側のエンティティパレットですね.

エンティティパレットの,Infrastructureという項目からDomainをドラッグし,キャンバス(真ん中の白い部分)にドロップします.

デフォルトでは paterva.com が入力されています.Paterva社のドメインですね. この部分を書き換えると,他のドメインについても調査できます.

先ほどドロップしたドメインのマークをクリックし,右クリックでメニューを開きます. メニューの中から All Transforms をクリックしてこのドメイン情報に用意されている全てのトランスフォームを見てみます.

その中から,To DNS Name - interested - [using DB] をクリックします.(興味深そうなサブドメインをDBから探すということ?)

一つのドメイン情報から他のドメインが出てくる様子
一つのドメイン情報から他のドメインがにょきにょき...
見た目上はアイコンをクリックしているだけですが,バックグラウンドではちゃんと通信が発生しています(Maltego画面下部のOutputをみるとわかりやすいかもしれません)

通信してること自体ばれたらまずい場合(そんなことあるんだろうか?)にMaltegoを使う際は注意しないといけなさそうですね.

次に,出てきた三つのドメインをすべて選択して(範囲指定をする感じですべて選択できます),右クリックし,All Transform 内の To IP Address [DNS] をクリックします.

三つのドメインと対応するIPアドレス
三つのドメインと対応するIPアドレスが表示された
どのドメインも同じIPアドレスと対応づけられていることがわかります.NICのアイコンなんですね〜

新井さんがどういう場合にMaltegoを使われるか

マルウェア解析時にIPアドレスドメインの情報などが出てきた際に,他のドメインがあるか?IPアドレスは?などを調査する際に使われるとか.

(私的には新井さん=アナライジング・マルウェアのイメージがあり,なぜMaltego?と思っていたのですが,腑に落ちました..)

また,KasperskyやShodan,Passive Total,Bitcoinなどデフォルトでは入っていないTransformもある(一部要課金)そうです. おまけとしてBitcoinのTransformについても触れられていました.(BitcoinのTransformについては,後で製作するNEMのTransformとほぼ使い方が同じであるため,割愛させていただきます)

NEMブロックチェーンにアクセスする

NEMにはRESTfulなAPIがあり,これを使うことでNEMに関する情報をJSON形式で手に入れることができます.

https://nemproject.github.io/

NEMAPIが持っている情報

下記のようなものがAPIを利用することで簡単に入手できます.

  • 死活管理
  • アドレスに関する情報
    • 入金情報
    • 出金情報
    • ネームスペース・モザイク
  • ブロックチェーンノードの情報

たのしい写経タイム!

Python3を利用してNEM APIを叩きます.

github.com

のなかのtest[1-4].pdfを書き写して, /home(任意の名前).py として保存します. (1ができたらコピーして2をつくり...とするとスムーズかもしれない)

各プログラムの実行方法

ターミナル上で $python3 test1.pyというふうに,Python3で実行しましょう(Kaliのデフォルトは2)

プログラムの流れ
  1. 単純にWebページにリクエストを送って結果をテキスト表示するスクリプト
  2. NEMの出金情報のURLにリクエストを送って結果を表示(jsonがばーっとでてくる)
  3. NEMの出金情報のURLにある情報をjson形式としてきれいに表示
  4. 3から,transaction->recipientの情報を抜き出す(つまりログの送金先の部分だけ抜き出している)

という感じ?

注意点

APIにはDoS対策がかかっており,同じドメインにリクエストを送り続けると接続制限がかかります. 下記負荷分散用のドメインがあるので,プログラムの一部(url変数のドメイン部分)を適宜書き換えてください.

http://62.75.171.41:7890
http://san.nem.ninja:7890
http://go.nem.ninja:7890
http://hachi.nem.ninja:7890
http://jusan.nem.ninja:7890
http://nijuichi.nem.ninja:7890
http://alice2.nem.ninja:7890
http://alice3.nem.ninja:7890
http://alice4.nem.ninja:7890
http://alice5.nem.ninja:7890
http://alice6.nem.ninja:7890
http://alice7.nem.ninja:7890
URLの意味について

http://(domain)/accounts/transfer/outgoing/hoge というURLがあったとすると,これはhogeの出金情報を意味します.

JSON形式で出てくるNEMの情報について

test3.py を実行すると,そのアドレスが持っている出金情報についてJSON形式でみることができます.取引(トランザクション?)の個数分だけ入れ子構造になっている状態です. ここで注意として, timestamp という項目ですが,UNIXTIMEではなく,NEM独自のフォーマットになっています.(NEMブロックチェーンが最初につくられてから何秒たったか?ということのようです)

https://nemproject.github.io/#account-related-requests

図版をエンティティに登録する

NEMの図版のダウンロードはこちら↓

www.iconfinder.com

  1. 上部メニューから Entities をクリック
  2. Entities の項目内にある New Entitie type をクリック
  3. アイコン登録(プラスマークおさないとディスク上のファイルを選択できないので注意)
  4. あとはNextをクリック
  5. 最後のウィンドウのカテゴリ選択は Personal を選択

これで図版を登録できました

Transformをつくってみよう

MaltegoにはPython, Ruby, Goにバインディングがあるため,拡張機能をつくることが可能です.今回はPython3で拡張機能をつくります. しかし,MaltegoのバインディングはPython2にしか対応してないため,新井さんがPython3にむりやり対応させたものを書かれたそうですw

  1. 上部メニューバーからTransformをクリックします.
  2. New Local Transformをクリックします. メニューバーからTransform->New Local Transform
  3. Configure details
    • Displayname: test
    • Input entity type: Domain
    • (IDのとこが勝手に生成されるけどきにしない) Configure details
  4. Commandline
    • command: /usr/bin/python3
    • Parameter: test-maltego.py
    • Working directory: (test-maltego.pyが置いてあるディレクトリ:例では /root/maltego_training )

※注意:test-maltego.pyが置いてあるディレクトリにgithubリポジトリ内のMaltegoTransform.pyを入れること

あとは,test-maltego.pyを書きます.(test-maltego.pyは同名のpdfファイルに記載) 書けたら,Maltego上に戻ります.先ほどのドメインの情報(地球儀のようなマーク)の上で右クリックして,All Transformからtestをクリックしてみましょう.

ドメイン情報から"Hello world"が出る
Hello world!

ここまでできたら送金先調査のプログラムである nem-test1.py を書いてみましょう. 書けたら,左側のエンティティパレットから先ほど追加したNEMのエンティティをキャンバス(真ん中)に追加して,アドレスを入力します. 次に,NEMのエンティティを右クリックして,All Transform から NEM をクリックします.

あるアドレスの出金のトランザクションが可視化される様子
あるアドレスの出金のトランザクションが可視化される様子
送金先が可視化されました!

上級者向け課題

これができると,今度は矢印にタイムスタンプが,広がったNEMのエンティティのうち任意のアドレスのNEMをクリックすると送金額がわかるようになります. つくるには MaltegoTransform.py の中にある関数を使います.

  1. addAdditionalFields()を使って送金量を追加しなさい
  2. setLinkLabel()を使って送金日時を設定し,可視化しなさい

私はしばらく自分で考えてみてやってみたのですがうまくいかなかったので,一度他の方のソースコードを見てからやってみました...

NEMのエンティティにtimeStampと送金量が加わった様子
上級者向け課題を実装すると...
より情報量が多くなりますね.

もともとこれをやろうと思った理由

ご存知の方も多いと思いますが,Coincheck社に預けられていたNEMの不正送金事件がありました.

corporate.coincheck.com

このとき,世間でよく取り沙汰されたのが盗難NEMの行方を追いかけるホワイトハッカーの存在でして...

ホワイトハッカーになりたい様子
ホワイトハッカーに俺はなる()

ということのようです(?) (テレビで取り上げらえていた方も上記Maltegoの画面みたいに可視化を行われていたんですね)

※注意:"ホワイトハッカー"という言葉について突っ込まれそうですが,メディアで"ホワイトハッカー"と取り上げられていたために"ホワイトハッカー"という言葉を用いられているだけで,本来なら"ホワイトハットハッカー"と書くべきなのはあの会場にいた人間ならだいたい知っていると思いますので,これについての突っ込みは受けつけません...

新井さんの宣伝!

新井さんは大阪大学の非常勤講師で,今年からenpit ProSecというものをやってらっしゃるそうです.(社会人向けになります)

www.seccap.pro

実践CTFを新井さんが担当されてます!土日2日にわたってやる予定なので興味があれば参加してくださいとのことです.(単位認定もあるとか!)

感想

Maltego,実は使ったことないわけではなく,だいぶ前に少し使ったことがありまして(TrendMicroCTFの問題でMaltegoを使うものがあり,)

そのときはわりと闇雲に使っていたので「わからんな〜」となっていたところが大半でした.

今回具体的な使い方についていろいろお聞きしてみて,有用なツールだと感じました.可視化できると嬉しい.今後使っていきたい.

ちなみにMaltegoはWindowsMacでも使えます.(今回は環境を合わせるためにKaliにされたのかもですね)

https://www.paterva.com/web7/downloads.php

Transformをつくるコードは癖?を覚えれば書けるかもしれないので,新しくいろいろ追加できると良いですね〜あとなにを追加すれば楽しいだろうか?

ご講演ありがとうございました!

遊心さんのプリンの画像
tktkセキュリティ勉強会おなじみのおやつ.プリンですね〜

大阪北部地震について

この勉強会の翌日に高槻市震源とする最大震度6弱地震がありました.tktkセキュリティ勉強会には高槻市民の方や近隣にお住いの方が多数ご参加されていたと存じます.皆さまの今後の安全を祈念しております.

リンク

(もしここにまとめるのがまずい等ありましたらご連絡ください)

  • 主催のseraphさんのTogetterまとめ

togetter.com

  • 他の参加者の方の上級者向け課題のご回答

このブログは気の迷いで成り立つ予定です:)