はじめに
こんにちは.morimolymolyです. 絶賛セキュリティを軸に就活しています. セキュリティ就活の軸は,事業会社でのセキュリティ,専門会社でのセキュリティの2つあります. 今回は事業会社のセキュリティとして就活する中で,DeNAのセキュリティチームでインターンをさせていただきました. この記事ではそんなインターンを振り返ります.(技術的なところはかなりぼかしています.ゴメンね)
DeNAのセキュリティチームってどんな感じ?
一瞬,セキュリティベンダーかな?と疑ってしまうような幅広い守備範囲を兼ね備え,CSIRT,SOC,脆弱性診断,ネットワーク診断,中にはマルウェア解析を行っている方もいらっしゃるみたいです. では,何故ここまで強いチームができあがったのか.それは内製化によるところが大きいようです. これに関しては本も出版されており,どれだけ力を入れてチームを作っていったのかが伺えます.
DeNAといえば膨大な数のゲームやWebサービス. 相当な数の攻撃を受けるので内製チームだけで回すにはとんでもない練度が必要なのは間違いないでしょう.その一端を一ヶ月間垣間見ることができました.
インターン内容
インターンでは主にスマートフォンアプリの診断トレーニングを行いました. セキュリティチーム(内部ではセキュリティ技術グループとよばれています)では,配属された人に様々なトレーニングを提供し,スキルアップしてもらうようです. 今回はスマホアプリのみですが,Webアプリなどのコンテンツも揃っているようでした.
課題は大きく2つ,
- ネイティブライブラリを使ったCocos2d-x製アプリをチートすること
- Unity製アプリをチートすること
でした.
課題1
1つ目の課題は暗号化された通信をときつつ,メモリ改ざんも含めチートをしようという課題でした.
Burp Suiteで通信を傍受し,暗号化がかんたんなため通信内容のみから暗号を解くように指示されました.
実際,やってみると勘があたりすぐ解くことができました.
答え合わせでGhidraとIDA Proで確認すると,なるほど!となりました(ちなみにGhidraで解析できないが,IDA Proでは解析できるケースに遭遇し興奮したのはこのとき)
暗号化の中身がわかったあとは,Burp SuiteのExtenderをPythonで書きました.
簡単に言うと暗号化を解いて通信改ざんができるようになるチートツールです.
Pythonで書くと死ぬほど辛いので書かんといてくださいよ!!
メモリ改ざんは子供の頃にやったことがあり,難なくクリア. メモリに含む内容は暗号化しないとダメですね.
課題2
2つ目の課題はSSL Pinningを解き,アプリ改ざん,通信改ざん,メモリ改ざんを全部やれというようなトレーニングでした.
ちなみにroot化なしです.
ここらへんは詳しいことは言えないですが,SSL Pinningを外すために動的と静的な手法で試し,通信改ざんをするためにリバースエンジニアリングして暗号化手法を特定し,Burp Suite用のExtenderを書き,メモリ改ざんをしてランキング1位を取ったりしました.
IDA Proをガシガシ使えて,GhidraとIDA Proのデコンパイラの精度を比較できて楽しかったです. また触ったことのない技術を使えたので学びもすごかったです.
課題総括
ここを直したらもう少しセキュアになるよね?とかこういう攻撃をするなら守り方はこれだ!みたいな気付きがかなり多かったです.それを誘導する課題を作った誰かに感謝です.素直に凄すぎです.
やはり攻撃してみないと見えてこない視点はあるので,トレーニングの機会があれば何でも挑戦したいですね.
内製ツールの話
今回はメモリ改ざんツールとOSSになっているPacket Proxyを触りました. 特にPacket Proxyの出来がよくて,UIが見やすいし,gRPCなどの通信にも対応していて,Burpのように拡張もできます. 拡張に関しては迷うことのない簡潔なインターフェイスが用意されていて,間違いないツールだなと思いました.
DeNAはその他にも難読化ツールDeClangもOSSで公開しています. チーム自体がものづくりに関して積極的で,プログラミングが好きなセキュリティエンジニアが集まっているなと思いました.
単純に無いからつくるっていう精神は最高ですね.
まとめ
今回はDeNAのセキュリティチームでのインターンを軽く振り返りました. 一ヶ月間,迎えてくれたチームの皆様,人事の皆様,労務の皆様,ありがとうございました!!!!!!!!!!
これで報告を終わりたいと思います.ありがとうございました.