/var/log/Sawada.log

SAINO中毒患者の備忘録。

Violent Python Chapter 1

f:id:takuzoo3868:20180522034938p:plain

はじめに

どうも久しぶりです.最近ラボで画像処理と暗号理論の勉強に明け暮れているtakuzooです.先日,ちょっと古いですがエグいタイトルの洋書を見つけました.

Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers

Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers

当然,古い資料ですから2.x系のコードが掲載されているのですが,各章のストーリーの面白さとctfの勉強になるかなと読み始めました.どうやら邦訳されておらず,更には紹介している記事も大して見当たらないので,勉強のアウトプットとしてブログに残すことにしました.

下準備

今回はpython3環境下で頑張っていくことにしました*1
プロジェクトディレクトリでvirtualenvを使ってpythonの仮想環境を整えます.

$ virtualenv [env_name]
$ source [env_name]/bin/activate
$ pip install -r requirements.txt

パッケージリストはここにあります.

github.com

実行環境は以下のとおりです.やられサーバーはvirtualbox上に立てて,ネットワークにホストオンリーアダプタを使います.

  • ホストOS: Mac OS X 64bit 10.13.4 17E199 IP: 192.168.2.102

  • ゲストOS: Damn Vulnerable Linux(Linux 2.6.20-BT-PwnSauce-NOSMP) IP: 192.168.56.102

  • ゲストOS:OWASP BWA(Linux 2.6.32-25) IP:192.168.58.3

第1章の内容

  • Pythonの紹介と変数,型,文字列,リスト,関数の説明

  • 標準ライブラリと組み込みモジュールによるバナーチェックの実装

  • Dictionary Password Cracker for UNIX-system

  • Zipfile Brute-Force Cracker

Vulnerability Checking script

ここではpythonの基本的な仕様紹介とともに,バナーチェックを実装し,事前にまとめたバナーリストに従って調査を行っています. 攻撃者にとっては,バナーチェックはポートスキャンの次にサーバー上で利用されているアプリケーションの名称やバージョン番号を調査する段階を指します. 書籍が用意したバナーリストは以下の通りです.

$ cat banners.txt
ProFTPD 1.3.1 Server
(vsFTPd 2.3.4)
CCProxy Telnet Service Ready
ESMTP TABS Mail Server for Windows NT
FreeFloat Ftp Server (Version 1.00)
IMAP4rev1 MDaemon 9.6.4 ready
MailEnable Service, Version: 0-1.54
NetDecision-HTTP-Server 1.0
PSO Proxy 0.9
SAMBAR Sami
FTP Server 2.0.2
Spipe 1.0
TelSrv 1.5
WDaemon 6.8.5
WinGate 6.1.1
Xitami
YahooPOPs! Simple Mail Transfer Service Ready
3Com 3CDaemon FTP Server Version 2.0

エピソードの紹介も特にないのでとりあえず,書籍のソースコードを自分が扱いやすいようにoptparseを導入しただけです. 気が向いたらこのセクションの紹介もポートスキャンと共に加筆しようと思います(5/26). optparseはdeprecatedなのでargparseへ変更しました.

#!/usr/bin/env python
import socket
import argparse
from colorama import Fore, Style


def get_banner(ip, port, timeout):
    socket.setdefaulttimeout(timeout)
    s = socket.socket()
    try:
        print("[*] Grabbing banner from {}:{}".format(str(ip), port))
        s.connect((ip, port))
        ans = s.recv(1024)
        print("{}[+]{} Connection to {}:{} is succeeded!".format(Fore.GREEN, Style.RESET_ALL, str(ip), port))
        print("{}[+]{} {}".format(Fore.GREEN, Style.RESET_ALL, str(ans)))
        return ans
    except Exception as e:
        print("{}[-]{} Unable to grab any information: {}".format(Fore.RED, Style.RESET_ALL, ip, port, e))
        return None


def check_vulnerabilities(banner, filename):
    """
    Check for known vulnerable services against a pre-defined list of banners.

    :param banner: Banner being checked; type: str
    :param filename: List of vulnerability banners
    """
    with open(filename, 'r') as f:
        for line in f.readlines():
            if line.strip('\n') in banner:
                print("{}[-]{} Server is vulnerable: {}".format(Fore.RED, Style.RESET_ALL, banner.strip('\n')))
            else:
                continue


def main():
    parser = argparse.ArgumentParser(usage="%(prog)s -n <network>")

    """
    options default
    ---------------
    network     : 192.168.58.x
    subnet start: 1
    subnet end  : 5
    ports       : telnet, ssh, smtp, http, imap and https
    timeout     : 2   
    """
    parser.add_argument("-n", "--network", help="specify network to search on",
                        dest="network",
                        default="192.168.58.X")
    parser.add_argument("-start", "--start_subnet", help="specify which subnet should the scan start",
                        dest="start_subnet",
                        type=int, default=1)
    parser.add_argument("-end", "--end_subnet", help="specify which subnet should the scan stop",
                        dest="end_subnet",
                        type=int, default=5)
    parser.add_argument("-p", "--port", help="specify list of ports, separed by comma",
                        dest="ports",
                        default="21, 22, 25, 80, 110, 443")
    parser.add_argument("-f", "--file", help="default file with list of vulnerabilities to compare",
                        dest="file",
                        default="banners.txt")
    parser.add_argument("-out", "--socket_timeout", help="default socket connection timeout",
                        dest="socket_timeout",
                        type=int, default=2)
    options = parser.parse_args()

    subnet = options.network.lower()
    subnet_string = subnet.replace("x", "{}")
    ip_list = map(lambda ip: subnet_string.format(ip), range(options.start_subnet, options.end_subnet))
    port_list = map(int, filter(None, map(lambda p: p.strip(), options.ports.split(","))))

    print("[*] Testing subnet of {} for {} ports: {}".format(subnet, len(list(port_list)), options.ports))
    for ip in ip_list:
        for port in options.ports.split(","):
            port_int = int(port)
            banner = get_banner(ip, port_int, timeout=options.socket_timeout)
            if banner:
                print("[*] Checking {}:{}".format(ip, port))
                check_vulnerabilities(str(banner), filename=options.file)
                print("[*] Nothing vulnerable server :)")


if __name__ == '__main__':
    main()

Unix Password Cracker

ソースコードの紹介にあたり,著者は次のエピソードを紹介しています.

CUCKOO'S EGG

CUCKOO'S EGG

本の著者 Clifford Stoll 概要は以下の通り.

  • ローレンス・バークレー国立研究所にシステム管理者として勤務

  • 国立の研究機関や軍関係組織,学術機関に侵入していたハッカー*2を発見

  • 彼は追跡の経緯を論文や書籍で紹介

論文については下の参考文献に挙げておきました.システムに侵入した攻撃者がどうやってログインしたのかについて,書籍では以下のように語っています.

  1. UNIX crypt algorithmを利用したパスワードファイルをDL

  2. 英単語のリストを作成しUnix Crypt()で暗号化

  3. パスワードファイルと照会し一致する単語を総当たりで検索

  4. 該当した英単語でシステムにログイン

なぜ,辞書攻撃が成立したのかは以下の通りです.

Confronting some of the victim users, he learned they had used common words from the dictionary as passwords (Stoll, 1989).

ここからは攻撃者の視点で当時のパスワードクラッキングを再現し紹介していきます.再現にあたり用意したpasswd ファイルは以下のとおりです.

$ cat /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
victim:MIO4AzhnF78Q.:503:100:Victim:/home/victim:/bin/sh
root:DFNFxgW7C05fo:504:100:System Administrator:/root:/bin/bash
daemon:*:1:1:System Services:/var/root:/usr/bin/false
bob:HX9LLTdc/jiDE:503:100:User:/home/bob:/bin/sh
alice:HXEboeNSbpTUE:503:100:User:/home/alice:/bin/sh

まずは,UNIX/etc/passwd構造を少し解説します.

f:id:takuzoo3868:20180524231308p:plain
the typical format of a user’s account entry in the /etc/passwd file

1990年以前のほとんどのUNIXシステムでは,/etc/passwdに暗号化された形式でパスワードを格納するのが一般的でした. 格納データの内容は図の通りですが,特に言及する点があるとすれば,

  • パスワードは改良されたDESアルゴリズムと2文字のsalt*3によって暗号化される

  • パスワードの欄がもしxとなっている場合,データはetc/shadowに格納されている(読み取り専用)

  • UIDの0番はroot専用であり,一般ユーザには1から99が割当される.100から999はシステム管理者やシステムユーザ向けに予約されている

  • GECOSには氏名,建物,電話番号や連絡先などを格納していた

となります.etc/shadowについては補足で説明しますが,これから紹介するソースコードの様に 簡単にパスワードをクラックできてしまうので,その対策として導入されたものだと考えてよいと思います. では,pythonのcryptモジュールを使って暗号化されたUNIXパスワードハッシュを計算してみます.

$ python
>>> import crypt
>>> crypt.crypt("egg","HX")
'HX9LLTdc/jiDE'

crypt.crypt()はハッシュされたパスワードを文字列として返してくれます.よってこれを利用し,辞書リストと任意のsaltを渡してpasswdの単語を推測するスクリプトを書いてみました.

#!/usr/bin/env python
"""
Execute a standard dictionary attack.
Usage: python passwd_Crack.py <Hash Algorithm> <dictionary_file> <pass_file>
"""

import crypt
import hashlib
import argparse
from tqdm import tqdm


def test_passwd(crypt_pass, dictionary_filename, algo):
    """
    Test passwords depending on hashing algorithm.

    DES:
    strips out the salt from the first two characters of the encrypted password
    hash and returns either after finding the password or exhausting the words
    in the dictionary.

    SHA512:
    ID (A value of 1 denotes MD5; 2 or 2a is Blowfish; 3 is NT Hash; 5 is
    SHA-256; and 6 is SHA-512.), salt and hash separated by $ This function
    currently only supports SHA512.
    """
    if algo == ("des" or "DES"):
        salt = crypt_pass[:2]
        with open(dictionary_filename, "r") as f:
            for word in tqdm(f.readlines()):
                word = word.strip()
                crypt_test = crypt.crypt(word, salt)

                if crypt_pass == crypt_test:
                    print("[+] Found password: {}".format(word))
                    return word
        print("[-] Password not found.")
        return

    elif algo == ("sha512" or "SHA512"):
        salt = str.encode(crypt_pass.split("$")[2])
        with open(dictionary_filename, "r") as f:
            for word in f.readlines():
                word = str.encode(word.strip("\n"))
                crypt_word = hashlib.sha512(salt + word)
                if crypt_word.hexdigest() == crypt_pass.split("$")[3]:
                    print("[+] Found Password: {}".format(word.decode()))
                    return
    else:
        print("Supported hashing algorithms: des / sha512")
        exit(1)


def main():
    parser = argparse.ArgumentParser(
        usage="%(prog)s --algo <des/sha512> --unknown_passwords <file list of hashed passwords> --test_passwords <file list of possible passwords>",
        description="Execute a standard dictionary attack.")

    parser.add_argument("--algo", help="specify algorithm DES or SHA512",
                        dest="algo",
                        default="des")
    parser.add_argument("--unknown_passwords", help="specify file that contains list of unknown hashed passwords",
                        dest="unknown_passwords",
                        default="password.txt")
    parser.add_argument("--test_passwords", help="specify file that contains list of possible passwords",
                        dest="test_passwords",
                        default="dictionary.txt")
    options = parser.parse_args()

    with open(options.unknown_passwords) as unknown_passwords:
        for line in unknown_passwords.readlines():
            if ":" in line:
                user = line.split(":")[0]
                crypt_pass = line.split(":")[1].strip(" ")
                print("[*] Cracking Password For: {}".format(user))
                test_passwd(crypt_pass, options.test_passwords, options.algo)


if __name__ == "__main__":
    main()

書籍の内容から改良を加えていますが基本構造はmain()test_passwd()になります.

  • main()でパスワードファイルの入力,解析,データの分割を行いtest_passwd()の呼び出し

  • test_passwd()では暗号化されたデータからsaltを保存し,辞書リストとsaltを用いてcrypt.crypt()でパスワードハッシュを生成

  • 生成したパスワードハッシュとパスワードファイルのデータが一致した場合,クラックできたとして単語を出力

/etc/passwdpassword.txtとして,ソースコードを実行した結果は以下の様になります.

$ ./passwdCrack.py
[*] Cracking Password For: nobody
100%|██████████████████████████████████████████| 16/16 [00:00<00:00, 32109.50it/s]
[-] Password not found.
[*] Cracking Password For: victim
  0%|                                                                                                                                                      | 0/16 [00:00<?, ?it/s]
[+] Found password: 12345
[*] Cracking Password For: root
  0%|                                                                                                                                                      | 0/16 [00:00<?, ?it/s]
[+] Found password: youwin
[*] Cracking Password For: daemon
100%|██████████████████████████████████████████| 16/16 [00:00<00:00, 61965.71it/s]
[-] Password not found.
[*] Cracking Password For: bob
  0%|                                                                                                                                                      | 0/16 [00:00<?, ?it/s]
[+] Found password: egg
[*] Cracking Password For: alice
  0%|                                                                                                                                                      | 0/16 [00:00<?, ?it/s]
[+] Found password: parcel

辞書リストのデータを用いて,30年ほど前に侵入者がパスワードを解析した状況を再現する事ができました.先程も述べた通り,簡単にクラッキングが成立してしまうため,今現在etc/passwdへ暗号化パスワードが記載されているシステムは稀です.その点を補足したいと思います.

補足

1992年ごろから,UNIXのシステムに/etc/shadowが実装されました./etc/passwdがリモートアクセスのユーザを含めユーザ全員が閲覧可能で,片方向のハッシュ関数で暗号化されてるとはいえ,上記のように辞書攻撃で解析される問題が浮上したからです.古いシステムとの互換性を保つ,特に別のプログラムがUIDやGIDを読み取るために/etc/passwdを残したままパスワードデータを移行した形になります.また,/etc/shadowはroot権限のみ閲覧可能でDESからSHA-512へハッシュアルゴリズムが変更されました.上のソースコードではSHA-512でも対応できるように改良を加えています.

cookuop.co.uk

Zip-File Password Cracker

このセクションでもソースコードの紹介にあたり,著者は次の事件について述べていました.

news.cnet.com

事件の概要を説明すると,

  • 2007年テキサス州ブラウンズビル消防署へ社内での児童ポルノ閲覧の匿名通報があった

  • 捜査に協力したプログラマの Albert Castillo は仕事用PCのHDDを調査した所,パスワード付きのzip "Cindy 5" を発見した

  • 同氏は古典的手法である辞書攻撃を用いてzipファイルを解読した

  • 復号したところ児童ポルノ数点が見つかったので容疑者は起訴された

という内容になっています.そこで実際に Castillo 氏と同じようにzipファイルをBrute Force attackでクラックしてみようというのがこのセクションの趣旨らしい.作ってみたソースコードは以下の通り.

#!/usr/bin/env python
"""
Run a dictionary attack for cracking zip file passwords.
Usage: python zip_Crack.py <zip_filename> <dictionary_filename>
"""
import sys
import os
import zipfile
import argparse
from tqdm import tqdm
from threading import Thread


def extract_file(file, password):
    """
    Try to extract files from secured zip file. Print password if that works
    """
    try:
        zipf = zipfile.ZipFile(file)
        zipf.extractall(path=os.path.join(file[:-4]), pwd=str.encode(password))
        print("[+] Found password {}".format(password))
    except:
        pass


def main():
    parser = argparse.ArgumentParser(
        usage="%(prog)s --zipfile <secure zipfile> --test_passwords <file list of possible passwords>",
        description="Run a dictionary attack for cracking zip file passwords.")

    parser.add_argument("--zipfile", help="specify zip filename to crack",
                        dest="zipfile",
                        default="evil.zip")
    parser.add_argument("--test_passwords", help="specify file that contains list of possible passwords",
                        dest="test_passwords",
                        default="dictionary.txt")
    options = parser.parse_args()

    with open(options.test_passwords) as dictionary_file:
        for possible_password in tqdm(dictionary_file.readlines()):
            password = possible_password.strip()
            t = Thread(target=extract_file, args=(options.zipfile, password))
            t.start()


if __name__ == "__main__":
    main()

書籍の内容に準じて,zipfileモジュールを使用します.extractall() に辞書ファイルの単語リストをパスワードの候補として渡し, 誤ったパスワードの場合でもBad password for fileと表示せずに,続けて解析をするよう例外処理を行っています. 解読に成功した場合は,そのパスワードを表示してzipファイルを展開する,という手順です.

また,関数を利用してソースコードをモジュール化する利点として,

  • パフォーマンスの向上

  • 複数の候補を同時に試行できる実行スレッドを扱える

といった点を挙げています.次に解凍するzipや辞書ファイルの指定ですが,argparseモジュールを活用しています. 書籍のコードは引数のフラグを設定していますが,個人的に入力が面倒なので,オプションにデフォルト値を設定しました. 更に,このモジュールの利点はhelpを追加できますので,以下のようにスクリプトに使用方法を記述することができます.

$ ./zip_Crack.py -h
usage: zip_Crack.py --zipfile <secure zipfile> --test_passwords <file list of possible passwords>

Run a dictionary attack for cracking zip file passwords.

optional arguments:
  -h, --help            show this help message and exit
  --zipfile ZIPFILE     specify zip filename to crack
  --test_passwords TEST_PASSWORDS
                        specify file that contains list of possible passwords

では,先程使用したdictionary.txtを利用して,配布されているevil.zipを解凍してみます.

$ file evil.zip
evil.zip: Zip archive data, at least v2.0 to extract
$ ./zipCrack.py
100%|██████████████████████████████████████████| 15/15 [00:00<00:00, 212.22it/s]
[+] Found password secret
$ tree evil
evil
└── evil
    ├── evil.jpg
    └── note_to_adam.txt

1 directory, 2 files
$ cat evil/evil/note_to_adam.txt
Sorry, you are too late - she ate the apple.
--------
[Image downloaded from http://farm3.staticflickr.com/2422/4424308439_7bd9e833d3_z.jpg under Creative Commons License]

zipのパスワードが secret であることはチュートリアルなので,スクリプトを実行するとすぐに解析できます.実際のzip形式ファイルの場合には,github上に有名なパスワードをまとめた辞書ファイル*4が転がっていますので,そうした辞書ファイルを使って解析することになるのだろうと思われます.他に挙げるならOpenWallなどが良いと思います*5.OpenWallは John the Ripper の開発元で,いい感じの辞書ファイルをサンプル提供しています.書籍では対象がzipでしたが,辞書攻撃で有名なツールにはTHC-HydoraやAircrack-ngなどがあります.

解凍後 evil の中身はイヴが禁断の果実に手を出してしまったよ...という設定ですね.とりあえずアダムは手遅れだったようです.

f:id:takuzoo3868:20180523014719j:plain

終わりに

研究の息抜きに読んだ資料だったのですが,思いの外面白かったのでこの調子で次の章も頑張っていきます.

参考文献

*1:書籍の内容を追うだけなら,dockerなりで2.x系の環境構築をする方が賢明かと思われます

*2:実際にはソ連国家保安委員会に雇われていた人物

*3:パスワードを暗号化する際に付与されるデータ

*4:GitHub - duyetdev/bruteforce-database: Bruteforce database

*5:当然,Brute Force attack なので時間はそれなりに掛かります

SecHack365 0x05 沖縄,東京(成果発表会)

はじめに

かなり月日が経ってしまいました.SecHack365沖縄回と成果発表会の事です.えっ?雑だ?気にしちゃいけません.書いておくのが大事なの.

目次です。

めんそ〜れ沖縄

ソーキそばを食べるぞ!と12月は意気込んでいましたが,日本を縦断する訳ですから集合時間をちょっと遅れての到着でした.

f:id:takuzoo3868:20180408170732j:plainf:id:takuzoo3868:20180408170710j:plain
サザンビーチホテル&リゾート沖縄

宿泊地はとてもきれいなリゾートホテルでした.天気がちょっと悪かったのが残念.でも綺麗な海.内輪の成果報告がメインなので今まで程書くことが沢山ある訳じゃないです.軽いオリエンテーションの後は発表の準備をしていました.夜にとても背の高いトレーナーの方からいい感じにアドバイスを貰い,発表の方向性から修正する事になりました.やっぱり複数のトレーナーから意見を聞いておくのは重要です.発表はデモ動画と説明の構成でメンバーが交代しながら説明.ちょっとグダつきましたが,トレーナーからの評価まとめを見てみるとそれなりに伝わっていたのでホッとしました.

f:id:takuzoo3868:20180408222014j:plainf:id:takuzoo3868:20180408222105j:plain

最終日にはKBC学園の淵上先生から「これからの時代をどういきるのか ~ セキュリティイノベーターというキャリア ~」と題して講演がありました.Slackが非常に盛り上がっていました😯

f:id:takuzoo3868:20180408224951j:plain

ちゃんとソーキそばを食べて北へ帰りました.

\(^o^)/アキハバラー

続いて,3/24にあった秋葉原での成果報告会の話. f:id:takuzoo3868:20180408212418j:plain もともと実機でデータを取得したいねと再三お願いしていた事もあり,実機をチームで支給して貰った*1訳ですが,思うようにAPIを叩けていない問題が発生して一週間ほど精神を消費していました.もっとプロジェクトメンバーに相談してアドバイスなり,手伝ってもらうべきだったと素直に反省しています.デモ環境構築していたanco氏本当にごめんね...

github.com

展示では事前に準備していたイメージを伝えるデモになりました*2.と言っても,SXSWと掛け持ちもあり,かなり他のメンバーへ負担をかけたと思います.なんとか終える事が出来たのはチームメンバーのお陰です🙏🙏🙏

f:id:takuzoo3868:20180408233121j:plain

おわりに

個人的には圧倒的に知見の増えた一年でした.が,プロジェクトメンバーには最後まで迷惑をかけてしまいました...この点は大いに反省しなければいけないです.SecHack365 1期としての活動は終わりになるけど,このままプロジェクトの開発は続けたいし,実装面でまだまだだと思うので精進します.

takuzoo3868.hatenablog.com

年間を通して色んな場所へ行き,色んな人に出会った一年だったなぁと思います.これだけ経験できたので,やっぱり応募して良かったです.来年度は次のトレーニーを応援しつつ、自分も刺激を受ける立場になれたらいいなぁ.一緒に活動したトレーニー,トレーナーの方々,毎回帰宅困難な自分を「しょうがないなぁ」と支えてくれた事務局の方.関わった全ての方々に感謝です.ありがとうございました!

追記

帰宅に向けて遅れが生じないよう後泊地で八百万の神々にお祈りするのが恒例となりました.

*1:この時は大阪の頃からずっと申請していたので,ようやくか...といった気持ちでした

*2:この辺りも可視化のメンバーでより一つのプロダクトへ仕上げる必要があったかなと感じています

SecHack365 0xFF SXSW Part.2

行ってみようアメリカ

前回の続きです. takuzoo3868.hatenablog.com

目次です。

Day3 3/12

この日,ホテルの換気扇に喉をやられ,咽頭炎が発症.室内の湿度を上げるべくKanahamaさんがライフハックを教えてくれました.感謝です😌🙏

SparkCognition 訪問

f:id:takuzoo3868:20180401185026j:plain SXSWの会場を離れ,午前中は郊外にあるSparkCognition™を訪問しました.社名にある通り人工知能システムを活用した「認知」に力を入れている会社です.説明を聞いてみると様々な業種において業務改善の為にAIを活用したソリューションを提供しているとの事でした.勿論その中にはセキュリティも含まれます.主に説明を受けた製品は以下の通り.

  • DEEPARMOR®
    開発者であるLares氏からお話を伺う事ができました.シグネチャフリーの機械学習によるマルウェア検索エンジンであり,従来のセキュリティ製品より検知率が高いのがポイント*1.事前に数十万の悪性良性ファイルで学習を行ったシステムを活用して,新しいファイルを受信した時,善悪を判断するという仕組み.採用している認識アルゴリズムがかなり気になりますが,勿論社外秘😞説明を聞きながらSecHack365で作ってみたかった一番最初のアイディアに近いものを感じました.この製品で大切なのは,社員が継続的に新しい脅威を取得し,適応学習させるために訓練データを更新する事.Ransomwareが流行った時も,検体を入手して訓練データの更新を行ったそうです.

  • SPARKPREDICT®
    センサデータから学習し,発生する前に差し迫った障害を特定し,認知するプロダクト.既にアメリカ国内の発電施設ではかなり導入されており,風力発電のタービン監視,ガスタービンの障害予測・警告,航空宇宙業界ではエラーコード分類や仕事の割当など,様々な仕事をこなし経費削減に役立っている模様.

  • SPARKSECURE®
    IBM Watosonのデータ処理能力を活用した,データ駆動型の分析プラットフォームらしい.傾向,脅威,異常を予測し警告するのだとか.どの程度の応答速度なのか気になりました.しかし,このプロダクトは既にサイトから消えている!?

  • DARWIN®
    データサイエンス向けに自動で学習モデルを構築してくれるツール.データ整形からパラメータ調整まで自動でやってくれるらしい.凄い...と思うけど,モデルがブラックボックスになると色々不味い気がします,その辺が説明を聞いている限りではちょっとわかりませんでした.

  • DEEPNLP®
    企業の中で埋もれている電子データを深層学習を活用して,自然言語処理を通じ構造化し機械が読み込める形式へ変換してくれるツール.

Augmenting Our World with AI 3.0

また,今後産業界に対してSparkCognition™はどのようなプロダクトを展開したいか等の説明もありました.社内にある産業機械のマニュアルなどを統合管理し,対話型ソフトウェアで故障などに素早く対応できるAIの開発を目指すそうです.実現性は兎も角,好きなアイディアでした.更に,日本進出も考えているそう*2ですが,小規模な町工場などでも導入できる様な体制がないと日本では広まらないかもしれないと感じました🤔

僕ら学生に向けては,AIを学ぼうと考えているなら熱意をもって取り組む事.他者との違いを大切にして何かしらの専門分野を確保しておく事とのお言葉を頂きました.うん,頑張ろう.

その後,再び会場へ戻り自分はセッションを聞いたり,TradeShowを覗いたりしました.そして夜はハッカソンの会議.この辺の詳細はtake氏のレポートが詳しいと思います.

takeio.hatenablog.com

Day4 3/13

SXSW Hackathon

f:id:takuzoo3868:20180403202846j:plain
Hackathon
午前中はホテルでずっとアイディアを模索.何か良いプロダクトにできないかなぁとメンバーで議論.結局,音楽関連で何か作りましょうという事で会場へ.24時間耐久ハッカソンのスタートです.

Female Beatbox 2015 世界ChampionのKaila Mulladyと,North American Beatbox 2016 ChampionのMark MartinによるSweet Dreams cover.HBB*3からスタート.豪華すぎる...

f:id:takuzoo3868:20180404161130j:plain ハッカソン中,食事の提供は勿論のこと,胃薬や頭痛薬に歯ブラシ,深夜にはマッサージ師なんかも居ました.流石ですね.自分はアイディアを基に審査員が見るドキュメント周りを整理して,発表用のスライドを作っていました.そのまま次の日へ...

Day5 3/14

SXSW Hackathon

4時頃には精神が少し狂い始めます.こんな感じでチームメンバーに晒されます.悪い人達だ!そのまま昼過ぎまで開発は続きます.途中Travis氏へのピッチが行われますが,厳しい指摘もあってお通夜ムードだったのは覚えています.この辺から自分の中で,take氏もたき氏もこの旅程で一切壇上で英語喋ってないじゃんと...なり個人的に非常にモヤモヤしたのは覚えています.まぁ終わった今としては別にいいのですが🙄Kanaさんに発表の英語を手直ししてもらい,午後2時くらいには審査員の目の前で3分間のプレゼン.上手く英語を喋れない事,これが非常に悔しかった.より上手く伝える方法があったんじゃないかって終了後はずっと考えています.今も....一方でアメリカのエンジニア(?)の人たちのプレゼンは皆ユーモアがあって,同じようなプロダクトでも見せ方が上手だなと感じました.

そして結果発表なのですが...

Cloudinaryさんからそのアイディアいいね!という事で企業賞を勝ち取ることが出来ました.頑張って良かったと思った瞬間です,ちょっと泣きました😭 😭 😭

f:id:takuzoo3868:20180404113614j:plainf:id:takuzoo3868:20180404113539j:plain
Manuel's Downtown Mexican Restaurant
この日の夜はハッカソンのお祝いという事でちょっと高めのメキシコ料理のお店へ連れて行って貰いました.テキサス州はメキシコと隣接している事もあり,相互の食文化が混ざり合ったテクス・メクス料理が味わえる土地でもあります.サボテンのサラダは粘り気があって面白い食感でした.ワカモーレはかなり辛めだけど美味しかったです.ご馳走様でした🙏

Travis氏にお勧めされたPreservation Hall Jazz Bandの生演奏を聴けたり,俳優のAlec Raymeを紹介してもらったり,6th Streetを見て回ったり存分にSXSWを楽しんだ一日でした.

Day6 3/15

SXSW視察最終日です.自分はVR関連の展示やセッションを見て,この日から始まったGame Expoをぐるぐる見て回りました.ネットゲームの類はあまりやらないので,スマホや据置ゲームのブースを覗いて面白そうなゲームを見つけては開発者にコンタクトしてみました.個人的に気になったのは以下のタイトル.

store.steampowered.com

開発者に話を聞いたら,グラフィックデザインを細部に拘る前に一時保存していた所,牧歌的なテーマに沿った世界観を表現できたとの事.そしてやっぱりUnityは3Dグラフィックの勉強にいいよとおススメしてくれました.リリースでは日本語にも対応してるけど翻訳に難があるのでもし良かったらレビューしてねと言われました.時間とれたらやってみよう...😵

The Austion technology Incubator 訪問

f:id:takuzoo3868:20180404173832j:plain

午後はThe Austion technology Incubatorを訪問.既に70年以上の歴史があるインキュベータですが,スタートアップを何でも受け入れる訳では無いそうです.受け入れたからには必ず成功に導くという強い志があると社長が語っていたので,ちょっと調べてみたら入居できるのは申込に対して2割程度.インキュベータに受け入れてもらうこと自体がスタートアップにとっては一つのブランドイメージとなるらしい.金銭面や事業面で厳しいと感じやすい創業から2,3年を補助する事を目的としています.また,優秀な人材を地域に留めるべくインキュベータ側が条件としているのが,会社はオースティンに置くことでした.シリコンヒルズとして地域の歯車が良く回っているなぁと感じました.

どうやって採用を見極めるのか,りねあ氏が聞いてましたが「勘」だそうです.多分,インキュベータの施策と合致している事と,事業の具体性をしっかり説明できる事が大事なんだと思います.日曜の訪問だったのでセンター内は静かでした.入居している企業も全て休み(当たり前ですね,でも日本の感覚とやっぱり違うなと思ったり).

f:id:takuzoo3868:20180404180020j:plainf:id:takuzoo3868:20180404180102j:plain
Terry Black's Barbecue

オースティン最後の晩餐も勿論BBQ.精神的な負担がない分,がっつり味わって食べる事が出来ました.スモーク感がやっぱり独特.ターキーはサイズが大きいため日本の家庭では浸透しにくいのかな?美味しいのに...当然僕はビールで優勝した🍻

Day7 3/16,17 CDT --> JST

移動日です.ダラスの空港内免税店でお土産を買い,機内はぐっすり寝ていました.写真はダラスの滑走路から立ち上る黒煙.一時騒然としましたが,何事もなくて良かったです.気づいたら成田に着いてるし,日付は17日になってるし,知らないニュースで溢れてるしウラシマ気分で帰国です.当然自宅に直接帰る手段がないため,実家へ一度帰省してから戻りました🙏

おわりに

f:id:takuzoo3868:20180401110235j:plain 振り返ってみると非常に充実したSXSWでした.そして...色んな人に助けてもらった7日間でした.トレーナーの皆さま,コーディネーターのKanaさん,私の我儘できついスケジュールを合わせてくれた佐藤さんへ...心から感謝します!また海外へ行きたいぞ!自分なりに今回のSecHack365 海外派遣で得た諸々の気づきを纏めて締めたいと思います.

  • 事前の下調べが最重要.

  • 英語は拙くても何とかなる*4

  • SXSWはチャレンジする人々を応援する空気が漂ってる.が,未成年者が夜に外を出歩くことは日本以上に厳しい.

  • 日本の治安は本当に良い*5

  • 日本でよくある陰湿な批判は少ない.ちゃんとしたアドバイスを皆くれる.

  • 固定的な職に囚われず,路上アーティト兼プログラマなど幅広くアンテナを張っている人が多かった.

  • Uber🚙はかなり便利

追記

ハッカソンの事がHackernoonに掲載されていました.emSareの事も取り上げていただき感謝です. hackernoon.com

日程の都合上,聞けなかったセッションもいくつか公開されており帰国後は大体眺めてました.下の動画はVRの母であるde la Peñaのキーノート.ハッカソン中で聞きに行けなかったので,動画公開は有り難いです.この他にも,オライリー氏の逃したセッションを聞きたいとSXSWのライセンス管理部門に問い合わせたら,セッションの録音データを貰えました.感謝です.

www.houdoukyoku.jp

*1:業務パートナーであるGoogleさんのGoogle's Cloud Machine Learning Engineを採用しているとメールで回答頂きました

*2:リプサービスかもしれない...がウェブサイトが日本語に対応し始めたので期待しています.

*3:Human Beat Box

*4:英語圏の方は皆真摯に聞き,何を言おうとしているか待ってくれる.

*5:期間中オースティンでは誘拐や爆発テロが相次いだ

SecHack365 0xFF SXSW Part.1

はじめに

事の発端は1月末.沖縄回に向けて準備したり,大学の試験勉強をしているときでした.SecHack365のプロジェクト管理ツール上で海外派遣参加者募集の案内がアナウンスされました.SXSWに参加できるとの事でとりあえず応募.2月にはSlack上で派遣メンバーになったことが伝えられました.今回はそんな形で参加したSXSWのレポートです.

目次です。

行ってみようアメリカ

そも,応募の動機ですが第一の目的は視野を広げてみるためでした.どちらかというと興味がセキュリティに傾倒しがちな自分だったので,SXSWのような多分野に跨ったイベントは様々なジャンルのセッションを聞くことのできる絶好の機会でした.第二の目的として,学生が気軽に参加できるようなイベントではない為が挙げられます.飛行機代,参加登録,宿泊,食費...合わせてみると年間の学費を超えるんですよね*1.食費とESTA申請は各自でしたが,それ以外は全てNICTさんが負担してくれるという...有難いお誘いだったのです.

あとは,同じプロジェクトメンバーの1kwykさんがSXSWで出展すると聞いていて気になっていたからというのもあります.

ところで,SXSWとは何ぞや?と思いの方もいらっしゃると思います.英語版のwikiを参照してください.日本語版は情報に欠けている節がありますので... South by Southwest - Wikipedia

f:id:takuzoo3868:20180330173922j:plain

自分も昨年の12月に1kwykさんから詳細を聞いた程度の知識ですが,複合型のカンファレンスと言えばいいのでしょうか.テクノロジーによる未来の在り方を政治,社会,経済,文化...様々な観点から議論する場に近いと思います.それに付随するようにして技術のショーケースやミートアップ等のイベントが続く様な形です.TwitterAirbnbが広まったきっかけとしても有名なイベント*2です.確か歌手のノラ・ジョーンズが有名になったのもSXSWだったような気がします*3

と,情報系学徒からみるとこの様な説明になりますが,SXSWの興りは3月に大学生が帰省し寂しくなった街を盛り上げようと始まった音楽の勉強会です.地元の音楽関係者が「どうしたらもっと売れるようになるのか?」というテーマで始めた小さな勉強会でした.よって街中(特に6th street)は様々なジャンルの音楽で溢れています.外にいてもガンガン聞こえてくるんですよ.EDM,POP,Reggae,Folk... 日本だったら騒音じゃ~何だかんだと煩い方々がいらっしゃるので多分できないだろうなぁと感じました.

f:id:takuzoo3868:20180330181430j:plain

Day0 3/9

この日は北海道を出立し成田へ.空港内のホテルに泊まりました.飛行機が目の前を売りにしたホテルだそうですが僕の部屋からは何も見えず.残念😫

Day1 3/10 UTC-6

国際線に乗り,シカゴ経由でオースティン・バーグストロム国際空港へ.機内ではしこたま🍺を飲んでました.入国審査は簡単な質問が2,3個続いた後すんなり終わりました(とても緊張しましたけど!).審査官が「良い旅を」って日本語で返してきて...日本語話せるのかよぉ...とちょっと驚き.日本とオースティンの時差は15時間程度*4.なので,体感としては深夜なのに昼過ぎの景色なので変な感じに.時差ボケというやつです.

f:id:takuzoo3868:20180329191526j:plain 有名なTexas longhornを眺めて,ホテルへ向かいました.泊ったのはAT&T Hotel and Conference Centerテキサス大学の敷地内です.メイン会場からはちょっと遠いのですが中々綺麗な場所.その後は途中テキサス州会議事堂を経由してAustin Convention Centerへ.州会議事堂はピンクを帯びた花崗岩が綺麗でした.政府関係の建物はこの材質で統一されているらしい.

f:id:takuzoo3868:20180330181905j:plain Austin Convention CenterでCODEBLUEでお世話になったkanaさんと再度合流.今回のコーディネーター*5です.僕らの行きたい場所や飲食はどこが良いかなど様々な面でサポートして頂きました🙏受け取ったのはPLATINUM BADGE.すべてのイベント,カンファレンス等に入場が可能なBADGEでした.つまり,行きたい場所には大概行けるという訳です.贅沢だ....

f:id:takuzoo3868:20180330182650j:plain その後は機内食から何も食べてないという事で軽食を済ませ*6SONYのブース「WOW Studio」を見て回りました.入口付近では話題の「aibo」と「Xperia Hello!」がお出迎え.つい先日JAWSの資料で見かけたんですがaiboAWSを活用したサーバレスな犬なんですよね.かわいい!

SONYは体験型のブースで10個ほど展示があったと思います.その中で個人的に面白いと思ったものを3つ紹介.

  • Ghostly Whisper
    世界中でテーマパークのアトラクションの設計を行っているUP&Rのとのコラボ.未来のホラーハウスをコンセンプトにした展示というよりアトラクション.6人一組で中に入ると中には役者の家主がいます.家主からタロットカードを貰うと自分にだけ突然誰かの囁き声が耳元で聞こえてきたり,誰もいないのに座ってる椅子に誰かが触れたり...久々に怖いと感じました.「ささやき声」は波面合成技術を活用した音響施設「Sonic Surf VR」によるもの.「何かが触れる感覚」は複数の振動子を複雑に制御する事により実現した触覚技術「Haptics」によるもの.確かに怖かったけれど,興奮したのも事実で,興奮のあまり写真を撮り忘れてしまった...😑

  • Superception www.facebook.com ヘッドフォンとプロジェクタが一体型のヘッドギアを用いて投影映像をあたかも自分の体験の様に知覚する技術の提案.実際に体験したのはコウモリやX線など.自分の知覚が拡張される感覚に近かったです.水族館や動物園にあると面白いかなと思いました.スタッフが言っていた「プロジェクタをウェアラブル化してみました」が強烈でした.

  • A(i)R Hockey youtu.be やってみて楽しかったのはコレ.移動するパックとマレットをリアルタイムでトラッキングし,動作に合わせて盤上へプロジェクションを行う形のエアーホッケーゲーム.ゲームセンターにあったら絶対楽しいけど,使用機材が1000frames/sでトラッキングを行うSONY高速ビジョンセンサーIMX382なのでもう少し先の話かも.この展示の何が凄いかというと,個人的には仮想のパックも混在する中でちゃんと打った感覚も実現している事.しかも盤面には複数のパックが入り乱れている中で,正確な計算処理が出来ているあたりに感心してしまった.

f:id:takuzoo3868:20180330235217j:plainf:id:takuzoo3868:20180330235300j:plain
County Line
夕飯はダウンタウンから少し離れた場所にあるCounty Line.Eyes, JAPANの山寺さんをはじめ多くの日本人参加者とご一緒させて頂きました.名刺を忘れてきたのが勿体ない.BBQは流石本場のテキサスといった感じ.低温でじっくりスモークされた肉塊🍖と甘めのこってりしたBBQソースがとても合います.左の写真はコロナ×フローズンマルガリータのコロナリータというSAKE.見た目のインパクトは強いけどとても美味しかったです.また飲みたい😋.ハッカソン頑張れよ!という事でご馳走になりました.感謝です.

Day2 3/11 UTC-5

www.sxsw.com

この日はサマータイムの開始でした.時差ボケを直そうと寝ますが,睡眠時間が1時間足りなくなる訳です.Uberの運ちゃん曰く,寝坊が続出する日だとか.しかし,眠気を吹き飛ばしてくれるセッションの告知がありました.「Elon Musk Answers Your Questions!」.Falcon Heavyプロジェクトで世界中を驚かせたSpace X社.そのCEOであるElon Muskがシークレットゲスト*7で登壇するよとの事.本当に急な告知で💦Convention Centerへ向かうも既に会場を半周するほどの長蛇の整理券待ち列が...凄い人気でした.

SXSW Accelerator: Security and Privacy Technologies

f:id:takuzoo3868:20180331140626j:plain セキュリティ分野のスタートアップ企業のピッチコンテストファイナリストによるピッチ.消費者や企業のデータセキュリティやプライバシーに革命を起こすような技術がテーマ.これはどういうアイディア何だろう?と集中して聞いているとやっぱり疲れます.が,プレゼンの仕方は参考になる部分が多かったです.この辺りからハッカソンのプレゼンどうしようかと考えていた気がします😱

  • PolyPort
    元々はD3CRYPT3Dと呼ばれていたスタートアップだそうで,3Dデザイナー作成したデータを独自の暗号技術で保護し,ファイルの共有相手,対象,時期,場所,使用理由などをリアルタイムで追跡制御してくれる製品らしい.この会社がWinnerだった模様.このアイディアを日本の電子書籍産業に落とし込むとどうかなと考えながら聞いていました.違法なファイルの流通を防ぐ仕組みとして追跡は面白いと思うんですよね.

  • SecureCodeWarrior
    エンジニアがセキュアなコードを書くための教育コンテンツの提供.開発者のセキュリティ理解の向上を目的として設立されたそう.コードのリアルタイム診断を行うIDEプラグインやセキュアなコードが実装できているかどうかの大会なども主催しているそうでCFTやHardeningとは違った趣旨があり面白そう.この会社が個人的には一番好きでした.名刺を頂いたので色々コンタクトを取ってみようと思います.

  • 14bis Supply Tracking
    航空宇宙産業における機体部品の電子保証システム.現在でも部品の管理は紙媒体らしく,そのムダなコストをブロックチェーン技術と特許申請中の追跡技術により解決しようという事だそう.既に米空軍での運用に向けて契約が締結されたらしい*8

  • Storro B.V.
    クラウドと違ったファイル共有をしようという提案をした会社.ファイル変更やメンバー管理にブロックチェーンベースの監視台帳へ記録し,履歴などはメンバーが分散して保持するため第三者による改竄を防ぐと謳っていました.ファイルの暗号化はどうしているの?と聞いてみたところ鍵はローカルで保持するそう.暗号化アルゴリズムとしてはCurve25519Keccakを使用していた.

  • Bandura
    Threat Intelligence Gateway (TIG)プラットフォームを提供している会社.プレゼンは製品であるPoliWall®TIG™についてだった.既知の脅威がファイヤーウォールへ到達する前段階で,計測による監視から防御の自動化を行ってくれるらしい.具体的にどんな形で脅威を判断するのかについては,IPアドレスドメインを脅威情報として蓄積するとの事だった.既にかなりの特許を出願中あるいは取得済みらしく勢いがあるなと感じたのはこの会社でした.

Elon Musk Answers Your Questions!

f:id:takuzoo3868:20180331142005j:plain 会場で募集した質問にElon Muskが答えてくれるセッション.SXSW期間中でも1,2位を争う人気で,会場に入る為のセキュリティチェックも一番厳しかった😥当日の動画はSXSWのYoutube公式アカウントにアップロードされています*9.時差ボケで眠かったけど頑張って聞いた範囲では...

Q:尊敬する人は誰?
A:カニエ・ウェスト
Q:1日の睡眠時間はどのくらい?
A:約5時間

こんな感じで緩い質問から,

Q:火星での行政は?
A:Direct Democracy.あらゆる問題に個人が直接意見する.柔軟に法律は変化し,6割の合意で法律が作成され,4割の合意で古い法律が無効になるといいね.
Q:大きなビジョンを描きながら詳細部にもこだわる,そのズームインやズームアウトをどのように行っているの?
A:詳細を知っているから大きなビジョンが描ける.正しく判断するためにはデティールをしっかりと知っておく事.

真面目な質問まで真摯に答えていた.中でも印象的だったのは,(以前から知っていたけど)Elon MuskがAIに警鐘を鳴らしたこと.彼が「AI is far more dangerous than nukes.」と語ると会場が静かに.個人的に何であれ規制論者の話は大嫌いな立場なんですが,彼が言いたいのはもっと慎重になるべきだよとそんなニュアンスかなと.つい先日もUberの自動運転で死亡事故が起きた事もあり,帰国後に彼の言葉には考えさせられました.

www.bbc.com

f:id:takuzoo3868:20180331151951j:plain 最後には何やらカウボーイみたいな恰好をした男性が登場.後から知ったのですがElon氏の弟さんだった模様.愉快に歌いながら一緒にステージを去っていきました.SXSWらしいね👍

f:id:takuzoo3868:20180331011942j:plainf:id:takuzoo3868:20180331011817j:plain
Cooper's Old Time Pit Bar-B-Que Austin
この日も夕飯はBBQ.WIRED REAL WORLD TOURのメンバーの方とご一緒させて頂きました.僕は隣でずっと廣田さんの話を聞いていました.ハッカソンの事で色々と叱咤激励してもらいました.詳しくは書きませんがやはりハッカソンは情報戦だなぁと,同時に心から開発を楽しめる環境に身を置きたいとしみじみ感じました.終わった今だからこそ言えますが,廣田さんにアドバイスを貰っていなかったら,3/13,14に参加したSXSW Hackathonは別の形で終了していたと思います.多分,個人的に後悔しか残らない形で...一言一言を重圧に感じたけれど,体調も崩しちゃったけど,それで良かったと今は素直に受け止める事が出来ます.廣田さん本当にありがとう...

続きます. takuzoo3868.hatenablog.com

*1:他に参加されている日本の学生や企業の方も多くは私費ではなく何かしらの援助を何かしらの団体から頂いている様でした.

*2:https://mashable.com/2011/03/05/sxsw-launches/#zpY5daBG95qw

*3:http://veemob.jp/2016/03/09/sxsw2/

*4:現在はUTC-5なので14時間です.

*5:大変お世話になりました...!

*6:流石アメリカだと思ったのは,買った🌭のフードトラックが当然のようにクレジット決済でチップも指定できたこと.

*7:過去にはオバマ大統領やレディガガなどのセッション発表があった.今年はElon MuskとSteven Allan Spielberg監督だった.

*8:http://www.aviationpros.com/press_release/12400632/14bis-supply-tracking-selected-for-the-first-techstars-autonomous-technology-accelerator-with-the-us-air-force

*9:https://youtu.be/kzlUyrccbos

SecHack365 0x04 大阪

はじめに

12/22(金)~12/24(日)にSecHack365 第4回目の集まりがありました。今回は大阪。次回の発表に向けてハッカソンするとともに2月までの計画を練る、そんな感じの回でした。世間的には🎄ムードなのがちょっと辛かったです(´_ゝ`)

f:id:takuzoo3868:20171227163721j:plain

目次です。

食い倒れ as a Service

大阪の会場はコスモスクウェア。テクノポート計画*1のあの場所です。最近は再開発に向けて頑張っている模様、梅田の階段で見かけた万博の誘致会場もここだったんですね。なるほど。

www.nikkei.com

Day0 12/22

f:id:takuzoo3868:20171231153158j:plain 今回は大学で卒研着手に関わる大事な試験があったので遅刻での参加です。新千歳空港から🎄一色でした。煽ってくれるぜ全く...。交通経路として伊丹空港から地下鉄などを経由する形で申請したのですが、やっぱり都会の交通網は眺めていて楽しいです。初めての梅田ダンジョンもGoogle先生のおかげで難なく通過。無事に会場までたどり着きましたが、ytel先生の話を聞けなかったのが悲しいね...。

Day0は発表に向けての準備ということで、前回からの進捗としては可視化への着手でしたが、別件*2HTML5+CSS3に触れる機会があったのでwebの雛型を作って進捗としました。その点についてアピールするしかない()。enPiTと研究が思いの外忙しくて開発どころではなかったの...。isekatusiさんがAVTOKYOのバッヂを持ってきてくれたのでちょっとだけ弄りました。なんだこれ滅茶苦茶楽しそうじゃん...。時間がもっとあればなぁ😢

f:id:takuzoo3868:20171229224421j:plain

セキュリティの研究者として

阪大の柏崎先生からの講演でした。ちょっと疲れで意識が飛んでいたと思います。前列だったのに本当にごめんなさい。backlog上で戦車道なるスライドの進捗が晒されていたのでワクワクしていたのに、全くもう自分ったら...記憶がない😇思い出せる範囲では、AWSでのアクセスキーをGitHubで公開(後悔)して多額の請求がきたしくじり先生としての話や、研究職はいいぞ、ぷよぷよ論文*3と萌因子特徴評価の論文*4でしょうか。とりあえず楽しい論文は読むぞ、そう思った初日でした。

Day1 12/23

大阪回は開発と発表がメインでした。よって、トレーナーによるハンズオンは皆無。仕方ないね。もう終盤に向かって進んでいるんだと実感しました。他のハッカソンがどういったものなのかあまり知らないのですが、発表準備にかなり時間を削られた気がします。開発に集中していたのは2~3時間くらいかな。短時間で進捗を生み出したいですが、修正が精一杯でこの日も夜までPCカタカタマンでした。カールおじさんがお誕生日だったようで会場には非常に美味しそうな🎂が!夜にはサンタ&トナカイが会場に出現し(?)更に🍰が!!

製品セキュリティの取り組み

大阪に拠点のあるPanasonicから製品セキュリティセンターの大澤さんによる講演でした。僕も名前を聞いたことがるCTFのプロの方ですね。 製品寿命の長い家電や車はいつまで責任を持ち、どの程度のコストでアップデートなどの対策をとるかなど、普段聞く様なふわふわしたIoTの話より業界の生々しさもあり参考になりました。損失とクビ切りなど企業説明会じゃ突っ込んで聞けない話ですし面白かったです。コストは資本主義のさだめなんでしょうか...。大きな企業が動きにくいならベンチャーの形で解決できないのかな。

モチベーション維持についても、CTFやコンテストに無理なく参加できるよう納期に縛られた仕事より、 自由時間を確保できたり会社側がサポートしてくれると動きやすいですよねぇ...。いいなぁ。 製造セキュリティに関連した資料も各所で発表されていらっしゃる企業なので色々調べてみます。貴重なお話ありがとうございました!!!

Day2 12/24

巷はイヴだけど開発です。発表です😵二日目のテーマは最終の成果発表がある次回に向けた開発計画の立案でした。 今後の自分がやるべきことは、アプリ開発という事になります。高レイヤなんだけど、 バックグラウンドで動かしているシステムは低レイヤなので色々学べて知見が広がります。 自分のチームは大所帯なので結合テストが上手くいけばきっと素晴らしいものになるはず!

おわりに

SecHack365は解散の度に寂しさが募ります。そういえば、今まで何やってるの?と聞かれることがあっても中々具体的な内容を喋る訳にはいかず、ふんわりした説明で済ませていたのですが、いい感じの記事が公開されました。来年の参加を考えている方は是非ご一読下さい! 次回は初めての沖縄!ソーキそばを食べたいんじゃ。では。Enjoy making your things!

japan.cnet.com

追記

f:id:takuzoo3868:20171231154324j:plain f:id:takuzoo3868:20171231154355j:plain f:id:takuzoo3868:20171231154422j:plain アフターは少しだけ観光できました。串カツ、土手焼き、ネギ焼き...それと一緒に🍺が飲める幸せ。またいつか観光で来たいなぁ。

毎回、帰路でアクシデントに遭遇する問題児だったので、今回は事務局にお願いして後泊させていただきました。北日本に接近した低気圧の影響で道内の特急がひん死だったのですが、昼間に北海道へ帰ることが出来たので購入していた旅券の払い戻しや新しい乗車券の購入を窓口で行うことが出来ました。本当に感謝です。事務局さん、次回の沖縄は遠隔でどうぞとか言わないで!!!お願い!!!