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

生きづらいエンジニアのためのコミュニティをプロト設立しました

概要

生きづらいエンジニアのためのコミュニティです
対象:生きづらいエンジニア

生きづらいとは?

メンタルが弱くて生きづらい、行動が原因で生きづらい、進捗がでない、キャリア的不安、、いろいろな要因で生きづらいのかなと思っております。 具体的に自分でも生きづらさの要因というものがわかっていない部分もあるので現在アンケートを収集中です。 よければご回答ください。

goo.gl

なぜエンジニアだけに限ったのか?

そこまで深い理由がなくて申し訳ないのですが、習性や環境的に似たもの同士の人が多いのではないかと勘ぐってみました。 (このあたりのゾーニング的なものは今後も考えていきたいです)

チャンネルについて

  • general(運営情報)
    • あたらしいチャンネルが増えたとか、そういう情報
  • 精神精進者の部屋
    • メンタルプロブレムを潰して強くなりたい人の部屋
    • 精神的に前向きに向上したい人のために
  • 相談室
    • ソフトなお悩み相談部屋
    • アドバイス等ありだが精進部屋より柔らかめ
  • お話置き場
    • 悩みを共有してリアクションするだけの部屋
    • とにかく何か話したいけれどアドバイスされるとつらい人のために
  • ライフハック
    • 忘れっぽい人がこれしたら改善したとか、時間管理難しい人の時間管理術とか
    • こういうのどうしてますか?と相談しあえると○
  • 参考文献(メンタルケア)
    • メンタルケア系でいい本・サイトがあれば紹介する
    • 相談部屋に置くと流れていってしまうので
  • 参考文献(ライフハック
    • ライフハック系でいい本・サイトがあれば紹介する
    • こちらも流れていってしまうことの対策
    • なんか書きたいけど書けない人のために
    • にゃーん
  • 雑談
    • 提案等受け付けております
    • 交流してください
  • ボイスチャット(定時)
    • 毎週何曜日何時かに定時ボイスチャットをしようと思います
    • 文字じゃ書きづらい人のために
  • ボイスチャット(突発)
    • どうしてもいま話さないとという時のために
    • 注意:一声チャットします・したいですとテキストで投げてもらえると幸いです

運営する上での注意

  • 試験運用ですすみません
  • 個人攻撃は禁止です
  • チャンネルの通知について
    • 人によってはこのチャンネルの通知がくるのはつらいな等あると思います。その際はお手数ですがチャンネルの通知を切ってもらえるとありがたいです。(デフォルトでは全チャンネルの通知がONになってます。お気をつけください)
    • 参考リンク:Discord:通知設定の変更方法 - akb410’s Diary
  • アカウント名について
    • 普段使っているハンドルネームでは相談しづらいということもあると思います。その際は別アカウントを作成することをおすすめします。
    • ニックネームを設定することもできますが、根本のユーザIDも他のユーザから見られる状態にあるため、ニックネームを変えてもどういう人物か知られてしまう可能性が高いです。

招待コード

上の運用する上での注意を読んだ上で、同意いただける場合は下記招待コードからjoinください。

discord.gg

実業系高校から関西大学総合情報学部に入学→大学院進学して

この記事は

この記事は関西大学総合情報学部 山の上アドベントカレンダーの24日目の記事です.

adventar.org

発起人?なのでそれっぽい日に登録したのですが本来はトリに入れるべきだったっぽい?(すみません)

需要あるかはわからないですが,これまでの学生生活を振り返ろうと思います.
しくじり先生的な感じで読んでもらえたらと思います.

TL;DR

実業系高校出身者は早いところ理数系の基礎知識を埋めた方が幸せになれます.ほんとに.
得意は伸ばして苦手を埋めよう

実業系高校 is 何

すみません勝手に名づけましt
文系でも理系でもなく,実業系です.
何がいいたいかというと,商業高校や工業高校など高校らしい授業以外に専門科目が入るような高校で,かつ働くために必要なことを学んでいるタイプの高校のことを実業系と呼びたい,ということです.

私は実業系高校の中でも商業高校の情報科出身です.

実業系高校あるある

普通の高校で受けられる授業が受けられない&&実業系授業

なんで入学する前にわからなかったんかーい!と言われかねない...
私の高校では普通科がやっている科目(特に数学や理科)の代わりに簿記とプログラミングをやります.
普通科でやってそうな科目で受けたのは下記のような授業です.

  • 国語総合,現代文,古文
  • 数学1,数学A,数学2(という名の三角関数とlogのみの授業)
  • 現代社会,日本史A
  • 理科総合A,生物1
  • 英語(特にリーディングやライティングなど分かれているわけではない)

(結構うろ覚えなので間違えてるかも)

普通科でやってない科目は下記のようなものです

  • 情報処理,プログラミング,開発演習(※ただし開発言語はCOBOL
  • 簿記,原価計算,会計
  • ビジネス計算,ビジネスと情報,卒業研究(経済活動について研究して卒論みたいなものを書く)
  • (このほかにもマナー講習や面接練習が特別に入ったりしていた)

(これもかなりうろ覚え...)

こんな感じで,普通科出身の人とは事前知識がかなり違います.

一般受験?なにそれ??

うちの高校の進路は進学と就職が半々の割合でした.
この進学の内訳は4年制大学と専門学校があり,4年制大学に進学する人間の殆どが指定校推薦による進学でした.
(もしくはAO受験)

例に漏れず,私も指定校推薦による進学です.
なので,当然一般受験の話をされてもわからないわけで,,
「受験勉強でこれやったでしょ??」
「受験勉強がまずわからないでs」
こんな感じの会話を何回かした思い出があります.

まとめると

普通の大学1年生と実業系高校出身の大学1年生では持っている知識に大分差があります.

  • 普通の大学1年生:実践的知識はないが基礎知識がある(実践的なものは部活でやってたりもするが)
  • 実業系高校出身の大学1年生:実践的知識はあるが基礎知識がない

結構極端に書いてしまいましたが,同じ大学1年生でも中身が全く別の何かです. これがあって,大学の講義で余裕の講義と全くわからない講義が出てくることになるとは,高校生のときは考えていませんでした...

大学に進学して

要は,上記の"基礎知識がない"がネックでした.. 基礎科目の数学は全捨てしましたが,コンピューティング系の数学入りの講義は途中から頑張って受けてました.

大学初期

「大学の講義がこんなに楽だとは思わなかった...」
というのが感想です.大いなる勘違いです.

基本的に基礎科目より発展科目の講義の方が得意でした.高校ではしりをやってるので.
大学の最初のほうの講義はほぼ高校でやったことの繰り返しでした. 最初は楽しく大学に通っていたのですが,だんだん大学に通うのが面白くなくなってきます.

大学中期

同じような話してるし面白くないなと思い始めるとどんどんサボり癖が出てくるようになります.(アアア)
そこへ,得意なはずのコンピューティング系科目で急に数学の知識が求められる課題がドンッと登場したりして,パニックになります.
(教授陣的には知ってて当然のことを出しているので特に救済措置はない)

「(あれ,これもしかして卒業できないのでは...?)」
と思い,できるところから高校で習わなかった基礎知識の部分の勉強をはじめます.無理やり数学が少し求められる講義を取ることによって...
ゲーム理論,数理言語論,統計学など...統計学3回くらい落としたような...) これで間に合った部分と間に合わなかった部分があるので,上記の大学初期から基礎知識の部分を埋めていれば... という後悔があります

大学後期

研究室生活.
この頃には特に高校で先に実践教育を受けていたメリットは無くなっています.
大学1,2年の講義でその辺りの知識はだいたいカバーできるので...(だいたい基本情報技術者くらいの知識です)
その上基礎知識が埋まってないので,他の同期より大分遅れをとっていたように思います
(なにせ数式が書いてあるので論文が読めない...)
数学が得意な同期や研究室の先生に助けられてなんとか卒業できました.

大学院

学部を卒業するのが大変だったくせに大学院に進学するという暴挙に出ます.
エスカレーター進学をしたので,大学院の筆記試験には自分の研究分野の問題しか出てこなかった.そのため大学院に合格できた)

数学系についてはより容赦なく知識が求められるようになりました.
ニューラルネットワークの単位をとるために微分の勉強から始めたり,暗号理論の講義で死にかけたり...)
それでも高校を出たころよりは出来るようになった気はします.少なくとも数式アレルギーは少しずつ改善されています.(本当に少しずつですが)

まとめ

思い返すと要所要所に求められる数学が辛かったという感想しか出てこない...
しかし逃げれば逃げるほど追いかけられる量が増えていくので,高校でやってなかった部分は補っていくしかないです.
数学をまともに受けられない高校出身で理系の研究室に行こうとしている人は少しずつでも数学をやることをおすすめします.
私はいま数学ガールの秘密ノートをちょっとずつ読んでいこうとしてます.今期で卒業できたら大学院もあと少しですが.

あと,大学の講義が簡単というのは本当に幻想で,あれは実業系高校出身者にとっては復習しながら他の勉強を進める期間のように思います.
講義サボるくらいなら講義中にもっと別の勉強した方がいいです.ほんとに.

ソーシャルメディアの観測について

この記事は

この記事はセキュリティキャンプ 修了生進捗 #seccamp OB/OG Advent Calendar 2018の21日目の記事です.

adventar.org

が,特に進捗しているわけではなく,観測したことについての注意喚起の記事です. DDoSの研究をまとめるという話をしていたのですが,こちらの方が伝えておきたいと思いましたので書いてみようと思いました. (記事の公開が遅れてしまい申し訳ありません...)

ここに書いてあることは全て当たっているかもしれないし,全てハズレかもしれません. どうまとめるかを非常に悩んだので怪文書的になっていると思いますが,ご了承ください.

工夫と後悔

私は今年度三つほどTwitterリストをつくりました.

  • SecHack365 2nd
  • seccamp2018_member
  • seccamp2018_all

このようなTwitterリストをつくることについて,便利という理由がまずあります.(同期の参加者が誰かわかる,TLを分けられる,など)
私は上記のリストのどれのメンバーでもないですが,ぜひ同期間でコミュニケーションを取ってほしい・仲良くなってほしいという思惑でリストを作成しました.
そして,もう一つ(淡い期待ではありますが)リストを作成した理由がありました.それは,参加者へのなりすましの防止です.

昨年度の話

Twitter上にて,seccamp2017の修了生を名乗る人物が,イベントに来ていたダークウェブの研究者を盗撮したとツイートし,一部の界隈で話題になりました. (該当のアカウントは現在削除されています)
これがもし本当に修了生が行なったことであれば大問題です.
信じたくない気持ちが多くあったのもあり,彼のツイートを遡ってseccamp開催当時のものを確認しました.
確認後,一つ仮説を立てることにしました.
bioにseccampのことを書き, #seccampハッシュタグをつけていいタイミングでツイートをすれば,seccampの参加者になりすませるのではないか?という仮説です.

リストの作成

合格当初からアカウントのツイートを確認してリストにinしておけば,ある程度怪しいアカウントを弾ける(ハッシュタグをつけたなりすましを見極められる)のではないか?
ということや,上記のようなコミュニケーションを取ってほしいという理由で,三つのリストを全て手動でアカウントを確認してリストを作成しました.
手動であるが故に取り漏らして参加者の方にアカウント追加のお願いをいただくこともありました.(その節はありがとうございます)
結果的に,現在リストに怪しいアカウントは含まれていないように思います.私が観測できていないだけかもしれませんが...

後悔

怪しいアカウントの含まれていない,参加者のみのリストを作ることができたということは,コンタクトの取れる参加者のリストが外部からも手に入れることができる,という観点が抜けていました.
本件でご迷惑をおかけした方がいらっしゃったら大変申し訳なく思います.
リストは現在非公開にしました.今後このようなリストを作るべきかは検討したい課題です.

観測したこと

ある時, 以前アカウントを消去された方のID でその方とは思われないツイートをするアカウントを見つけました.
フォローリストを見ると上記で作成したリストのアカウントが大半でした.
ツイート内容をよく見ていると,怪しいアカウントと同じようなツイートがされているように思いました.

その方のことをよく知らないだけで,実際は違うのかもしれないとしばらく観察していたのですが,本人に聞いてみないと真実はわからないと思い,そのIDを本来持っていた方に連絡をとることにしました.
連絡をとった結果,そのアカウントはなりすましであることが判明しました.
こちらのアカウントも現在は凍結の末に削除されています.

怪しいアカウントと同じような,とは

これを具体的に書けないのが悩ましいところで...
書ける範囲だと下記のような特徴があると思います.

  • フォローフォロワー外からもDMを送ることができる
  • 日本語が不自由
  • セキュリティ

しかし,これを共有させていただいたところで今度はこれに合致しないアカウントが作成されると思います.
結局のところ目で見極めるのは難しく,自己防衛をとるのが得策です.

確認してほしいこと

会ったこともない(実体が確認できない)アカウントとDM上で機密性の高いやりとりをしていませんか?
会ったことのある人のアカウントであるとしても,それは本当に本人であると確認できますか?

また,外部公開された場所に特徴量のとられやすい投稿(名前,住所,性別,最寄りの路線,勤務先・学校,過去行った場所,性癖,etc)を多数行なっていませんか?
なりすますにはある程度情報量が必要です.ご自身のアカウントが現在なりすましを生みやすい状態かどうか確認してみていただきたいです.

逆に,ご自身にしかできない投稿を定期的に行なう(技術的な投稿など)のはなりすましを生みにくくする一種の手段として有効だと思います.
根本的な解決方法はなかなかない.もしなりすましが現れたときに,なりすまされたメディアとは別のメディアで証明をとることは僅かながらに有効かと思われます.
投稿内容に嘘を混ぜておくなどもやっておくと良いのかもしれません.

ご協力お願いします

ソーシャルメディアをお辞めになる際はIDを温存した状態にしていただけると有難いです.
また以前活発に活動されていたアカウントIDで現在消去されているものが復活するようなことがあれば,もしよければご一報ください.

考察

昨年の記事ですが,下記のような記事があります.

wired.jp

ニートラップ,とまではいかないですが,今後このようなセキュリティ系のアカウントを狙った情報収集活動が広まるかもしれないと感じました.
また,なりすましと言えど現段階ではまだ,なりすまされている本人を知っていれば見破ることができますが,今後はどうなるかわからないです.
杞憂に終わると良いのですが,皆様どうかお気をつけください.

関西大学総合情報学部山の上アドベントカレンダーをつくりました

アドベントカレンダーをつくりました

(本当はこういうのって1日目に書くようなもののはずなのですが,絶賛研究が炎上しており今の投稿となりました.すみません🙇)

関西大学総合情報学部 山の上アドベントカレンダーというものをつくってみました.

adventar.org

つくった当初はノリで,だれも登録しないだろうな〜と思っていたら,現時点(私を含め)9人もの方に登録いただけました! ありがとうございます🙇

以前より,「大学1年生,大学入りたての頃って卒業するころになるとどんな風になれるのかや,卒業するまでにどんなステップを踏んでいくのかあまり分かってなかったなあ」と思っており,こういった在学生や卒業生の活動の紹介や山での過ごし方についての情報があると良いなと考えていました. このアドベントカレンダーに限らず,この学部や学部生についての情報がもっと増え,大学入りたての方の今後のビジョンが増えることを祈念しております.

(何かオンサイトでできるとよいですね〜修士論文次第ですが,気が向いたら何か企画を考えてみます.)

あと,まだ枠が空いているので,ちょっと書いてみようかなという方はぜひぜひ登録をお願いします〜! 登録自体にそんなに時間はかからないので,お気軽に登録くださいませ. 技術だけでなく,大学での過ごし方などの記事も大歓迎です!!🙌

よろしくお願いします!

追記 12/8をご担当いただいたのは@bwbwさんでした!

note.mu

アルティメットサイバーセキュリティクイズ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

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

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