<!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" --> --- --- <!-- .slide: data-background="https://i.imgur.com/WOUeZBL.jpg" data-transition="zoom-in" --> <h2 style=" background-color: rgba(0,0,0,0.4); color: #000; font-weight: bolder; -webkit-text-stroke: 2.5px #FFF; "> builderscon tokyo 2019<br> へ行ってきた</h2> --- <!-- .slide: data-transition="fade" data-themes="League" --> ## 内容について - buildersconとは - 本編のご紹介 - 見本市 - 前夜祭 --- ## buildersconとは <!-- .slide: data-transition="slide-out" --> 「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭り :sparkles: <!-- .element: class="fragment fade-up" --> ---- 日時: 8/29-31 (day0, day1, day2) 場所: 東京電機大学(北千住) ![map](https://imgur.com/bLduvaV.png?1) <!-- .slide: data-transition="slide" --> ---- builderscon.io ![builderscon.io](https://i.imgur.com/psgINMh.png?2) <!-- .slide: data-transition="slide" --> ---- 運営チーム ![buildrescon: team](https://i.imgur.com/WKnhrWL.png) <!-- .slide: data-transition="slide" --> ---- ## 期待大!! <!-- .slide: data-transition="slide" --> --- <!-- .slide: data-background="https://i.imgur.com/KLTlviI.jpg" data-transition="zoom-in fade-out"--> <h1 style=" background-color: rgba(0,0,0,0.4); color: #000; font-weight: bolder; -webkit-text-stroke: 2.5px #FFF;">本編のご紹介</h1> <!-- .slide: data-transition="slide" --> <!-- .slide: data-background-transition="slide" --> --- ### 紹介するセッション * <!-- .element: class="fragment" data-fragment-index="2" -->スーパーカミオカンデの開発と運用 * <!-- .element: class="fragment" data-fragment-index="3" -->もしもハッカーの「サイバー攻撃日誌」が読めたら * <!-- .element: class="fragment"0 -->コンパイラをつくってみよう <!-- .slide: data-transition="slide" --> --- ![スーパーカミオカンデの開発と運用](https://i.imgur.com/r6rsjTd.png?1 =800x475) <!-- .slide: data-transition="slide" --> ---- ### スーパーカミオカンデ * 岐阜県 神岡鉱山(地下1000m)に設置した素粒子物理研究のための観測装置 * チェレンコフ光や陽子崩壊の兆候を観測 ![スーパーカミオカンデ](https://i.imgur.com/Hszpmvr.png?2 =468x350) <!-- .slide: data-transition="slide" --> ---- ### 青い光のリング ![チェレンコフ光](https://i.imgur.com/VVbea5q.png?1 =666x500) <!-- .slide: data-transition="slide" --> ---- ### 光電子増倍管(PMT) ![PMT](https://i.imgur.com/OfH3nHP.jpg?4) <!-- .slide: data-transition="slide" --> ---- ### 光電子増倍管の仕組み * アナログ信号に変換出力 ![PMTの仕組み](https://i.imgur.com/gkYadHv.png?1 =533x400) <!-- .slide: data-transition="slide" --> ---- ### タンクの様子 * PMT12000本 ![タンク内部](https://i.imgur.com/iqoNNBS.jpg =600x400) <!-- .slide: data-transition="slide" --> ---- ### 大気中のニュートリノ ![大気](https://i.imgur.com/84vdZf5.png?1 =670x500) <!-- .slide: data-transition="slide" --> ---- ### 太陽のニュートリノ ![太陽](https://i.imgur.com/ujGfqbO.png?1 =667x500) <!-- .slide: data-transition="slide" --> ---- ### ベテルギウスが近々爆発 ![超新星](https://i.imgur.com/ci5NBci.png?1 =667x500) <!-- .slide: data-transition="slide" --> ---- ### アナログASICとSiTCP ![アナログASICとSiTCP](https://i.imgur.com/Rvompkw.png?1 =669x500) <!-- .slide: data-transition="slide" --> ---- ### アナログASIC ![ASIC](https://i.imgur.com/P5xAnoH.png?1 =649x500) <!-- .slide: data-transition="slide" --> ---- ### SiTCP ![SiTCP](https://i.imgur.com/EqZ0qU6.jpg) <!-- .slide: data-transition="slide" --> ---- ### SiTCP ![SiTCP](https://i.imgur.com/hSrG1mi.png?1 =712x500) <!-- .slide: data-transition="slide" --> ---- ### システム構成 ![システム構成](https://i.imgur.com/olhMrd9.png?1 =668x500) <!-- .slide: data-transition="slide" --> ---- ### 収容されている様子 ![収容](https://i.imgur.com/Vmq5oBq.jpg?1 =670x500) <!-- .slide: data-transition="slide" --> ---- ### ハイパーカミオカンデ ![ハイパーカミオカンデ](https://i.imgur.com/wE3S8nB.png?1 =667x500) <!-- .slide: data-transition="slide" --> ---- スーパーカミオカンデの開発と運用 END :baseball: --- ![もしもハッカーの「サイバー攻撃日誌」が読めたら](https://i.imgur.com/AONTMbd.png) <!-- .slide: data-transition="slide-out" --> ---- <!-- .slide: data-background="https://i.imgur.com/kgEN1oB.png?1" --> <!-- .slide: data-transition="slide" --> <!-- .slide: data-background-transition="slide" --> ---- ### 業務内容 * 契約した企業に対してできるだけリアルな攻撃 * 予告なし * 御社にとって守りたいか * 最悪の事態をゴールに設定し、それを目指して攻撃 <!-- .slide: data-transition="slide" --> ---- ### 攻撃範囲 * 管理者権限の奪取 * DBから重要なデータを引っこ抜くなど * 日替わり変更されるパスコードのある部屋へ物理侵入 * 社員証の偽造、不正デバイスをLANに持ち込み <!-- .slide: data-transition="slide" --> ---- ### 実例に基づいたある攻撃手順 * 攻撃目標 * 主力サービスへの侵入 * 端末へのマルウェア感染 <!-- .slide: data-transition="slide" --> ---- ### 大学後輩を装ったメール * 諜報活動 * 添付ファイル(Excelファイル)を送りつける <!-- .slide: data-transition="slide" --> ---- ### マルウェア感染 * Windowsにダウンローダー型マルウェアを感染させる。 * HTTPで攻撃者PCと通信させ * マルウェア端末に命令(command)実行する <!-- .slide: data-transition="slide" --> ---- ### 権限昇格 * ローカルの管理者権限を奪取 * 権限昇格したら、localの管理者パスワードハッシュの取得 <!-- .slide: data-transition="slide" --> ---- ### 横断的侵害 * 取得済アカウントによるリモートコマンド実行 * 他端末へマルウェア感染 <!-- .slide: data-transition="slide" --> ---- ### ドメインコントローラーを攻撃 * ドメイン管理者アカウントの取得 * 攻撃ツールによりメモリ上の認証情報を取得 <!-- .slide: data-transition="slide" --> ---- ## まとめ * 攻撃していく過程でだいたいユーザー名、パスワードは取られている * 二要素認証は有効 * RED TEAMのミッションは、ほぼ成功しているとのこと <!-- .slide: data-transition="slide" --> ---- もしもハッカーの「サイバー攻撃日誌」が読めたら END :orange_book: --- ![コンパイラをつくってみよう](https://i.imgur.com/V8gs5fq.png =700x394) <!-- .slide: data-transition="slide-out" --> ---- ### コンパイラについて ![コンパイラについて](https://i.imgur.com/lJufLBp.png?2 =700x264) <!-- .slide: data-transition="slide" --> ---- ### ゴール ![コンパイラーゴール](https://i.imgur.com/zm6IEFf.png?1 =x400) <!-- .slide: data-transition="slide" --> ---- ### レジスタ ![レジスタ](https://i.imgur.com/QSK1uFn.png =x400) <!-- .slide: data-transition="slide" --> ---- ```bash #!/bin/bash cat > a.s echo '-------- a.s ----------------' cat a.s echo '-------- result -------------' gcc a.s ./a.out echo $? ``` <!-- .slide: data-transition="slide" --> ---- ソース言語の例 ```go package main import "fmt" func main() { fmt.Printf(" .global main\n") fmt.Printf("main:\n") fmt.Printf(" movq $42, %%rax\n") fmt.Printf(" ret\n") } ``` <!-- .slide: data-transition="slide" --> ---- ### 実行 ```source [root@39cc253c1d43 /]# go run main.go | ./asrun -------- a.s ---------------- .global main main: movq $42, %rax ret -------- result ------------- 42 ``` <!-- .slide: data-transition="slide" --> ---- ### コンパイラを作る過程 * STEP1: ByteReader ![bytereader図](https://i.imgur.com/PmNeIYJ.png?1 =602x450) <!-- .slide: data-transition="slide" --> ---- ### コンパイラを作る過程 * STEP2: Tokenizer ![Tokenizer](https://i.imgur.com/MlOlsuk.png?1 =603x450) <!-- .slide: data-transition="slide" --> ---- ### コンパイラを作る過程 * STEP3: Parser ![Imgur](https://i.imgur.com/WTY64EQ.png?2 =606x450) <!-- .slide: data-transition="slide" --> ---- <!-- .slide: data-background="https://i.imgur.com/P3bVnX0.jpg?2" --> <h2 style=" background-color: rgba(0,0,0,0.4); color: #000; font-weight: bolder; -webkit-text-stroke: 2.5px #FFF;">ライブコーディング</h2> <!-- .slide: data-transition="slide" --> <!-- .slide: data-background-transition="slide" --> ---- ライブコーディングの様子 {%youtube 1croG9gpwdw %} <!-- .slide: data-transition="slide" --> ---- ### Github DQNEO/HowToWriteACompiler <!-- .slide: data-transition="slide-in" --> ---- コンパイラをつくってみよう END :apple: --- <!-- .slide: data-background="https://i.imgur.com/w1nekCa.jpg" --> <h1 style=" background-color: rgba(0,0,0,0.4); color: #000; font-weight: bolder; -webkit-text-stroke: 2.5px #FFF;">見本市</h1> <!-- .slide: data-transition="slide" --> <!-- .slide: data-background-transition="slide" --> ---- ![ボイスチェンジャー](https://i.imgur.com/UC7zjoV.jpg =750x500) ---- ![ボイスチェジャー2](https://i.imgur.com/ccsNgAd.jpg?1 =750x500) ---- ![VR](https://i.imgur.com/g7rDI37.jpg?1 =750x500) ---- ### ロボットボール ![見本市1](https://i.imgur.com/vaESZMC.jpg =x400) <!-- .slide: data-transition="slide" --> ---- {%youtube z10MlJW0khc %} <!-- .slide: data-transition="slide" --> ---- ### 謎ガジェット ![謎ガジェット](https://i.imgur.com/WSFQnU8.jpg?1 =750x500) ---- ![謎ガジェット2](https://i.imgur.com/qRUAlA1.jpg?1 =333x499) ---- ![見本市4](https://i.imgur.com/MOgChW1.jpg) <!-- .slide: data-transition="slide" --> ---- [謎ガジェットを使う様子](https://twitter.com/i/status/1167405239726530560) <!-- .slide: data-transition="slide" --> ---- 見本市 END :camera: <!-- .slide: data-transition="slide" --> --- <!-- .slide: data-background="https://i.imgur.com/ItK3Mqt.jpg?3" --> <h1 style=" background-color: rgba(0,0,0,0.4); color: #000; font-weight: bolder; -webkit-text-stroke: 2.5px #FFF;">前夜祭</h1> <!-- .slide: data-transition="slide" --> <!-- .slide: data-background-transition="slide" --> ---- ![前夜祭1](https://i.imgur.com/o0Cnot3.jpg =x400) <!-- .slide: data-transition="slide" --> ---- ### Bug #2: Does not make Toast https://bugs.mysql.com/bug.php?id=2 ![mysqlbug](https://i.imgur.com/ZkFHZn0.png?1 =x400) <!-- .slide: data-transition="slide" --> ---- ![おまえは何を言っているんだ](https://i.imgur.com/KbtKSUl.png =x400) <!-- .slide: data-transition="slide" --> ---- ### MySQLでケーキを焼いた人 ![前夜祭](https://i.imgur.com/WPp9JW7.png =699x203) <!-- .slide: data-transition="slide" --> ---- ![Macとオーブントースター](https://i.imgur.com/aYw7YDQ.jpg =x400) <!-- .slide: data-transition="slide" --> ---- ![Arduino](https://i.imgur.com/0xKMGsI.jpg =x400) <!-- .slide: data-transition="slide" --> ---- ![オーブントースター](https://i.imgur.com/f0aWQFE.jpg =x400) <!-- .slide: data-transition="slide" --> ---- ![ケーキの生地](https://i.imgur.com/kF71v1Q.jpg =x400) <!-- .slide: data-transition="slide" --> ---- ### 焼いた ![焼けたケーキ](https://i.imgur.com/mU4dGbn.jpg =x400) <!-- .slide: data-transition="slide" --> ---- MySQLしゅごい :cake: <!-- .slide: data-transition="slide" --> ---- ... <!-- .slide: data-transition="slide" --> ---- ### MySQLでドローンを飛ばす ![Tello](https://i.imgur.com/pyclXQ0.jpg?2) <!-- .slide: data-transition="slide" --> ---- ... <!-- .slide: data-transition="slide" --> ---- ... <!-- .slide: data-transition="slide" --> ---- ### しくみの解説 * tello はUDP通信でコントロールできる * MySQLにUDP通信するUDF(ユーザー定義関数)を作成 <!-- .slide: data-transition="slide" --> ---- ### UDFサンプル ![udfサンプル](https://i.imgur.com/KGNrUJN.png?1) <!-- .slide: data-transition="slide" --> ---- ### udf_sample.cc(抜粋) ```cpp extern "C" bool takeoff_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; } extern "C" void takeoff_deinit(UDF_INIT *initid) { if (initid->ptr) free(initid->ptr); } extern "C" long long takeoff(UDF_INIT *, UDF_ARGS *args) { long long val = 0; send_udp((const char *)"takeoff"); return val; } ``` <!-- .slide: data-transition="slide" --> ---- ### send_udp(抜粋) ```cpp their_addr.sin_family = AF_INET; their_addr.sin_port = htons(PORT); their_addr.sin_addr = *((struct in_addr *)he->h_addr); bzero(&(their_addr.sin_zero), 8); if ((numbytes = sendto(sockfd, cmd, strlen(cmd), 0, \ (struct sockaddr *)&their_addr, sizeof(struct sockaddr))) == -1) { perror("sendto"); } ``` <!-- .slide: data-transition="slide" --> ---- ### ビルド ![UDFビルド](https://i.imgur.com/BG7c8RH.png) <!-- .slide: data-transition="slide" --> ---- ### create function ![createfunction](https://i.imgur.com/kuxzJBd.png) <!-- .slide: data-transition="slide" --> ---- ### 離陸 ![takeoff](https://i.imgur.com/lnZQKbQ.png) <!-- .slide: data-transition="slide" --> ---- :clap: :clap: :clap: <!-- .slide: data-transition="slide" --> ---- 前夜祭 END :coffee: --- <!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" --> 俺たちの Discover Something New はこれからだ!
{"metaMigratedAt":"2023-06-14T23:47:14.024Z","metaMigratedFrom":"YAML","title":"builderscon tokyo 2019へ行ってきた","breaks":true,"description":"builderscon tokyo 2019へ行ってきた話.","lang":"ja-jp","robots":"noindex, nofollow","slideOptions":"{\"transition\":\"fade\",\"backgroundTransition\":\"fade\",\"theme\":\"night\",\"slideNumber\":\"c/t\"}","contributors":"[{\"id\":\"2e400170-85ff-4bb7-80f0-2aa65bd476c6\",\"add\":34577,\"del\":25236}]"}
    1017 views