うちの会社ってどんな会社? サイバーディフェンス研究所の社員を対象に、会社の魅力や入社のきっかけなど仕事に対する想いのほか、普段謎に包まれている個人の素性に迫るインタビュー企画が実現!記念すべき第一弾は、バイナリ解析グループのリーダー松隈大樹さんにご登場いただきましたッ!
こんにちは松隈さん。本日はよろしくお願いします。早速なんですが、今の役職と業務内容について教えてください。
よろしくお願いします。今は技術統括部という部署の中にあるバイナリグループのリーダーを担当しています。バイナリグループは、IDA(マルウェア解析等に使用される逆アセンブラ)を使ったプログラムの解析などのリバースエンジニアリングを主に担当していて、例えばWindowsやLinuxの実行ファイル形式を解析して脆弱性を発見したり、組み込み機器のファームウェアを読むこともありますね。他グループがやっているWeb診断に手を出してRCEしたりと、名前は「バイナリ」グループですが割と何でも屋だったりもします。
バイナリグループは現在何名で構成されているんですか?
現在は4名です。バイナリアンとして生を授かったような生粋のバイナリ解析者もいれば、CTFでエクスプロイトを書く経験を多く積んで海外の決勝にも参加する人、暗号分野に強い人(これは罠で暗号だけでなく他の分野も強くてすごい)、などそれぞれが強みを持っているメンバーで構成されたグループです。
そんな個性豊かなバイナリグループを率いる松隈さんですが、普段の仕事の中で楽しいと感じるのはどんな時ですか?
みんなでワイワイしながら案件で検出した脆弱性に対するエクスプロイトを書いてる時が一番楽しいですね。ぶっちゃけると、自分が見つけられなかった(けど、周りの強いメンバーが見つけてくれた)脆弱性の潜むファームウェアやミドルウェアを引っ張ってきてローカル環境で検証するのがほとんどです(笑)。上手くいかない時は画面共有しながらミスってるところを指摘しあって軌道修正しながら解決しますが、そういう時間もすごく楽しいです。
あとはRCE(Remote Code Execution)やLPE(Local Privilege Escalation)といった脆弱性が出てくる案件はやはり楽しいですし、そういう仕事をもっとやりたいなと思いますね。
つまり権限を奪取した時が一番テンションが上がるということでしょうか?
そうですね(笑)プログラムを解析して、筋道をたてて、エクスプロイトを書いて。それで実際に攻撃が通って権限が取れた時が個人的には気持ちいいですね。特に組み込み機器の診断はその傾向が強いんですけど。
それはなぜでしょう?
組み込み機器はC言語やC++で開発されている場合が多いんですけど、こういう言語ってメモリの扱いがかなりプログラマー任せな部分があって。そういうところでのミスに起因したメモリ破壊などの脆弱性は任意コード実行につながるので攻撃の起点にしやすいんです。
対してリッチなWebアプリケーションだと、メモリ破壊の脆弱性はあまりないですね。シンプルな例でいうと、PHPで書かれていてsystem()
(OSのコマンドを呼び出す関数)のような「危険な」関数にユーザーの渡す値が直接入るような場合だとRCEに繋がることはあります。
これまでに経験された仕事で特に印象に残っているのはどんな仕事でしたか?
これまで複合機やAndroidが乗った×××(自主規制)など様々な組み込み機器を診断してきましたけど、特に印象に残ってるのは×××(自主規制)ですね。簡単にまとめると、物理的にハードウェアへアクセス可能な攻撃者を想定して「xxx(自主規制)の基板からチップを剥がしてファイルシステムを書き換えてLinuxのrootを取る」というのが主目的でした。セキュアブートの影響で一筋縄ではいかなかったもののチップ書換えのおかげでrootは一応取れたんですが、実はこのシステムではTOMOYO Linuxというセキュリティ機構が働いていました。TOMOYOがいるとrootでも行動が制限されちゃいます。そこで、「完全なrootになるためにTOMOYOを解除したい!それならカーネル空間からならきっとなんとかなるだろ」とカーネル空間でのコード実行が欲しくなっちゃったんです。そこからは「ファイルを書き換えたらチップを付けて、起動したと思ったらなんか失敗しててまたチップを剥がして...」の繰り返しの再開です。結局カーネル空間でのコード実行を実現できたのはテストの最終日で、オンサイト作業だったのもあってちゃんと終われるか内心ヒヤヒヤしてました。チップを剥がさない方法でroot権限を取得したかったという課題は残りましたが、ハードウェアレベルからの一連の攻撃の流れに取り組めたのは個人的には貴重な経験でした。
診断の総合格闘技というか...サイバーディフェンスの診断を象徴するような内容ですね。ちなみにどのようにセキュリティ機構を攻略したのか詳しく教えていただけませんか?
なんでもそうなんですけどセキュアに作ろうとするとファームウェアをちゃんと検証して、改ざんされてないことを担保する必要がありますよね。でも数十GBのファームウェアを起動時に検証するってなると、すごく時間がかかって使い物にならないので、多くは最低限必要な部分だけ検証するようになってます。この件に関してはその「最低限ここを検証すれば大丈夫だろう」ってとこに漏れがあったんです。例えばバイナリはちゃんと検証してるけどライブラリは検証してなかったっていう場合、そのライブラリを改ざんしてしまえば、システム起動時にそのライブラリをロードした瞬間に攻撃者の好きなコードをrootとして実行できます。TOMOYOをバイパスしてのカーネル空間でのコード実行は拒否リストなポリシーの漏れが原因でした。init
プロセスは役割上use_kernel_module
ケーパビリティが有効なので、ポリシーをうまく抜けてinit
プロセスを奪ってカーネルモジュールをロードしました。このときはお客さんと「やったー!」ってなったと記憶してます(笑)
なるほど、勉強になります。このような口外できないような案件も含めて豊富な診断経験をお持ちの松隈さんですが、そもそもセキュリティエンジニアを目指すきっかけは何だったんでしょうか?
僕は「ハッキング、カッコいい!」っていうところから入ったんですけど、そのきっかけになったのが『電脳コイル』っていうアニメでした。そのアニメが面白くて中学3年生の時に「ちゃんとプログラミングを勉強しよう」って気持ちになったのを覚えています。あと当時『ブラッディマンデイ』 ってドラマが放送されてて、厨二心に刺さりましたね(笑)
(注:なが〜〜〜〜〜い昔話が続きます。飛ばして採用周りの事情を知りたい方はコチラ)
アニメとドラマがきっかけなんですね!それ以前からPCに関する知識なんかはあったんですか?
そんなにはなかったですよ。初めてPCに触れたのは4、5歳の時で、当時親のMacintoshが家にあって、その中に「キッドピクス」っていうお絵描きアプリが入っててそれで遊んでました。中学生になったあたりでHSPというゲーム開発とかで使われる言語に入門しようとしたんですけど、「Hello, World!」を書いたくらいですぐに挫折しましたね(笑)
松隈さんが中学生の頃ってWinnyとかが流行った頃だと思うんですがそういうアングラ感のある行為はやってなかった?
実は意外とやってないんです。それこそ中学時代前半まではWinny問題がニュースで取り沙汰されていた影響で、「全てのダウンロード=違法」だと思ってて。もちろんウェブブラウザの裏側でもたくさんダウンロードは発生してますが、当時はそういう誤解もあって、「ハッキングツール」のダウンロードなんて警察が怖くて全然やれなかったです。でもこの誤解が解けてからは、(パスワードクラックツールの)『Cain & Abel』とか、名前すら忘れましたがDoS攻撃ができるツールとかをコレクションして一人でニヤニヤしたりするんですけど(笑)
「オレ、強いぜ」みたいな?(笑)
そうです、使い方もわからず集めて満足するだけなんでスクリプトキディにもなれてないですね(笑)
それから本格的にハッキングに向き合い始めたのはいつ頃ですか?
高専入学後ですかね。中学3年生の時には(アニメやドラマをきっかけに)C言語を勉強しはじめてたんですけど、その頃Twitterでセキュリティキャンプのことも知ったんです。それで高専2年の時に受けてみたんですが落ちてしまって...それから(ソフトウェアセキュリティクラスを受けるなら)「アセンブリもちゃんと勉強しないとダメだな」ってなって、ちゃんと勉強して翌年再チャレンジしたら受かりました。
独学でアセンブリを読めるようになったとのことですが、当時はどのように勉強されたんですか?
僕の通ってた高校が東京工業高等専門学校という工業系の学校だったんですが、図書室にあった組込み系の書籍で勉強してました。だいぶ忘れましたが、「このプログラムを動かしたら、このレジスタに入ってるのは何でしょう?」みたいな問題を解いてたと思います。
本をベースに勉強されたと?
そうですね。特に中学時代にC言語を勉強してた時は、当時はコンパイラをインストールするスキルもなかったですし、学校にPCを持っていくこともなかったので基本は本を読んだり紙にコードを書いたりしてフムフムしてました。高専に入ってからはさすがにパソコンでやっていた気はします。
少し読めるようになってからは『Crackme』で問題を解き続けてましたね。
『Crackme』ってCTFの先駆けみたいなやつですよね?
そうですね、まだCTFが流行る前だと思います。バイナリわかる人が小さなバイナリを作ってくれてて、解析してパスワードを入手するみたいなやつですね。
当時『Crackme』なんて普通の高校生は誰も知らないと思うんですが、どうやってそういう情報を入手してたんですか?
主にはTwitterですね。ハッカーなアカウントをたくさんフォローしてそこから情報を入手してました。あとは『Ruffnex』にリンクされてるサイトとかですかね。今はもう亡き『Wizard Bible』も読んでました。こういうソースが失われるのは惜しいですよね。
当時の松隈少年はTwitterで情報収集しつつ、『Crackme』にのめり込んでいき、ハッカーの素質を磨いていったということでしょうか?
なんとなくですが目は肥えていたと思います。ただ、当初はハッカーになりたかったわけではないんですよ。
え、そうなんですか!?
最初はハッカーの知り合いが欲しかったんです。「ぼくのともだちハッカーなんだぜ!」みたいな(笑)最初セキュリティキャンプに行ったのも、そこに行けばそういう人達とお近づきになってお話ができるかなっていう理由でした。
では何がきっかけで自分もハッキングをしようと思ったんでしょうか?
書類落ちした回は『セキュリティ&プログラミングキャンプ』の最後の年で、「ネットワークセキュリティクラス」を受けたんですが、別クラスの講師であの愛甲健二さんがいらっしゃったんです。『ハッカー・プログラミング大全 攻撃編』を持っていたので愛甲さんにめちゃくちゃ憧れてましたし、受かれば愛甲さんとお近づきになれると思ったんです。でもやっぱりネットワークセキュリティクラスは落ちちゃって、来年こそは愛甲さんのクラスで受けたいと思ってからアセンブリや低レイヤーのことを必死に勉強しましたね。
きっかけは愛甲さんへの憧れなんですね。
はい、ゲームのチートをしたいからバイナリの勉強を始めるっていうパターンをよく聞いてましたが(最近はどうなんだろう)、僕の場合は「愛甲さんカッケー!」みたいなファン精神からですね。
あと小学生の頃によくGB版のポケモンでバグ技をやってたんですけど、しっかり手順を踏んでバグ技を検証していたことを考えると、これも脆弱性の解析とかに興味をもったきっかけの一つかもしれません。
松隈さんはこれまでCTFで数々の好成績をおさめてますが、CTFに参加し始めたのもこの頃からですか?
いろいろな大会に参加できていたのは過去の話ですし、正直なところチームメイトがすごかったのが大きいですねえ。
参加し始めたのは高専3年の時です。セキュリティに興味を持ってた後輩やクラスメイトと一緒に筑波大学で開催されたSECCON CTFに参加したのが初めてだった気がします。成績は下から2番目とかでしたけど。その前にも、毎年ドイツで開催されているCCCAC(Chaos Computer Club Aachen)のCTFにも参加していたような気がしますが、ポイントは取れていなかった気がするのでノーカンです。
その頃は『sutegoma2』とか『urandom』がめちゃくちゃ活躍してましたね。日本のサイバーセキュリティの黎明期を支えた方々が潜むチームと筑波大学のクソ強いチームです。
懐かしい!(笑)その頃から松隈さんはCTFにどっぷりハマっていったと?
僕が20歳の頃、当時CureSecureっていう東京高専のチームにいたんですけど、周りのCTFプレイヤーと一緒に「海外のCTFに参加しようぜ」みたいな企画があがって。HITCON CTF 2014に「fuzzi3」っていうチームで参加して優勝できました。それから、高専のプログラミング同好会のつながりでMCC(東京農工大学のサークル)とMMA(電気通信大学のサークル)と一緒に合同の勉強会をする機会があったんです。そこで知り合ったメンバーと一緒に「『Attack & Defense』のCTFにでてみよう」という流れで結成したのが「TokyoWesterns」でした。それからは毎年色んなCTFに出てましたね。
CTFと共にあった青春時代だったんですね。それから東京高専を卒業されているんですが、何がきっかけでサイバーディフェンスに入社しようと思ったんですか?
東京高専を卒業してからは大学3年に編入してキャンパスライフを謳歌したかったんですけど(高専は5年制のため)、勉強不足で普通に編入試験に落ちちゃいました。なので、それから半年は浪人生として大学入学を目指して勉強してたんですよ。そんなある日、「CHO(Chief Hacking Officer)を名乗る怪しい人物」からWantedly経由でDMが届いたのがきっかけですね。蓋を開けてみると「サイバーディフェンス研究所の正社員の面接を受けてみないか」っていう内容でした。
Wantedlyに登録はしてたんですね。
東京高専の4年生は夏にインターンがあって、よさげな企業とつながるためにWantedlyに登録してました。それからしばらくして「バイナリとかセキュリティやってみたいです」みたいなことを追記してたら、林さんのお目にかかったという感じです。
面接を受けた時どうでしたか?
ドラマの『ブラッディマンデイ』の技術監修をしていたことでサイバーディフェンスのことは知っていましたし、なにより「"あの"勇士Qが働いてる会社」ってことも知っていたんで凄く働きたいとは思いました。でも当時の僕には実力が足りてなかったですし、まだどこかで大学進学のことも諦めきれてなかったこともあって「アルバイトでもいいですか?」ってお聞きしたんです。だけど「アルバイトはないよ。入るか、入らないかのどっちか」って言われて、心を決めました。
松隈さんが入社された2015年はハッカーやセキュリティエンジニアの重要性が社会課題として認識され始めた時代でもありますが、実際に社会人としてそういう業務に携わってみてどうでしたか?
ぶっちゃけていいんですか?(笑)
もちろんです(笑)
まず「サイバーディフェンス研究所」っていう社名なので最先端の技術とかをゴリゴリ研究してるのかな、と思ってたんですが、入社してしばらくはWebのペンテストを担当してました。「あ、研究するんじゃないんだ」みたいな(笑)あと技術的な発見や面白さという意味では、業務としてのペンテストはCTFほどではないなと思いましたね。一番ギャップを感じたのは、ネットワークのペンテストをやった時にパスワードを使って侵入することが基本だって知った時ですね。CTFではとにかく脆弱性を攻撃してシェルを取るっていうことをやってたのでペンテストでもそのつもりでいたんですけど、パスワードを奪取して侵入って方法は安定してますし、何も壊す心配がないですからね。「仕事なんだなぁ」って思った瞬間でした(笑)
システムに影響出すとお客さんに怒られますからね。入社当初は競技としてのハッキングと仕事としてのハッキングのギャップに悩んでいたとのことですが、それでもこれまで仕事を続けてこれた理由は何でしょうか?
やっぱり最初にお話ししたような面白い案件に携われたことですね。サイバーディフェンスは官公庁にも強いので、なかなか普段触ることのできないシステムのペンテストができるっていうのはやっぱり楽しいです。
あとは自分がやっていることの価値がわかる仲間が身近にいるってことも大きいですね。技術を追求している人ばかりなので、その楽しさを共有できる人達と一緒に働ける環境っていうのは貴重だと思います。自分の好きな技術を突き詰めたり、新しい技術を発見したり、行き詰まったら相談できる仲間がいる。そこはサイバーディフェンスへの入社を考えている人にもゼヒ伝えたいポイントですね。
セキュリティエンジニアにとってサイバーディフェンスの環境は恵まれていると捉えて良いでしょうか?(笑)
はい。CTFにも業務として参加できますし、その分の代休も取りやすいと思います。ただ、労働基準法には勝てないので開催されるCTFにすべて業務で参加するというのはできないです。もちろん、CTFとは別の面白い案件はやり甲斐があって楽しいですよ!
ありがとうございます(笑)ちなみにサイバーディフェンスに入社してなかったら何をしてたと思いますか?
う〜ん...「たられば」なら、大学に行ってキャンパスライフを楽しんでたと願いたいですね(笑)英語とコンピュータサイエンスをしっかり勉強して、それから当時気になってた企業に就職して開発を経験してたかな。ちゃんとシステムの構造とかを理解しておかないと、その仕様にあった叩きどころを見つけるのってなかなか難しいんですよね。でも最終的にはサイバーディフェンスに行きついてたと思いますね。
では最後にこれからサイバーディフェンスに入社を考えている人に向けてアドバイスをお願いします。
そうですね、個人的には知的好奇心が強く「技術力こそ正義」な方に来てほしいなと思います。"社会レイヤー"のアレコレはかなり巻き取ってもらえます。そして、CDIは一心に技術を突き詰めたい人が多いので、そこに興味を持てる方はとても向いていると思います。逆によそ見をする、例えば自分のスキルと他人のスキルをいちいち比較すると萎縮しちゃったり疲れちゃったりするので、そういう方は気にせずポジティブになってから応募するといいと思います。あと仕様書や論文等のなが〜いドキュメントを日本語や英語を問わず読む耐性はつけておいたほうがいいかもしれません。
バイナリグループとしては、0-dayやN-dayのエクスプロイトを書いてメシを食べていきたい方も絶賛募集中です。ほかにも、ファジングが得意だったり実案件で使えるようなファザー開発に興味がある方の活躍の舞台もあります。
松隈さん、本日はありがとうございました!
ありがとうございました!
松隈 大樹(Hiroki Matsukuma)
セキュリティキャンプ2012 ソフトウェアセキュリティクラス卒業。Trend Micro CTF Asia Pacific & Japan 2015第3位、台湾の世界有数のCTF、HITCON CTF 2015Finals(決勝)出場、中国最大規模のCTF、0CTF 2016で全世界10位。国際的なCTFでの実績を多数有する。サイバーディフェンス研究所では、ネットワーク、Webアプリケーションのペネトレーションテストに従事しているほか、外資系有名サイトや、Linux標準のプロトコルスタックの脆弱性の発見などバグバウンティの実績も有する。高専時代には電子工学を専攻しており、ITだけではなく電気分野にも精通している。CODEBLUE2016 U24スピーカー。