GSoC 2017にmetasploitで採択された。

GSoCとは

GSoCというのはGoogle Summer of Codeの略で、アメリカでは学校が休みである夏の3ヶ月(5/30〜8/22)の間、Googleからお金💰を貰ってOSSに貢献しようというイベントである。日本では一部の期間、学校がある期間とかぶり、一見むずかしいように見えるが、今のところ問題なく行えている。作業開始前にメンターに夏休みかどうか聞かれたので考慮してくれているかんじはあるが、この辺はOSSによると思う。参加しているOSSの組織は多く、今年は201個の組織が参加している。

Google Developers Japan: Google Summer of Code のおしらせ

Google Summer of Code 2017 statistics part 1 によると、今年は日本から13人採択された模様。インド人569人マジか…

GSoCの流れとしては、まずGoogleが学生を受け入れることができるOSSの団体を募集し、承認された団体は学生に取り組んでほしいタスクのリストを用意しておく。学生はそのリストからタスクを選ぶ、もしくは自分でやりたいテーマを提案することでテーマを決める。 学生はその内容をProposalに書いて応募する。そして採択されるとメンターの指導のもと実装に入る。

このProposalを書くのが結構大変でもちろん英語だし、OSSによっては1週間毎のスケジュールを書く必要があったりする。書いたら終わりじゃなくて、メンターとなりそうな人と連絡を取りレビューしてもらいながら完成させる。Proposalに何を書くかというと、Abstract, Vitals, Skill, Projectの詳細等である。ProposalのテンプレートがOSSによってはあるので気になる人は見てみるといい。このProposalの内容によって採択の可否が決まる。2つのOSSに応募したのでほんとに大変だった。

採択テーマ

採択されたテーマはImproving stager payloads especially on non-Windows platformsでmetasploitというOSSでやっていくこととなった。 ProposalはGistに上げたので興味のある各位はみてくれ。 最初、適当にテーマを選んでProposal書き、レビューしてもらうために送りつけてみたところ、今までの開発経験を評価してもらえたらしく、メンターにこっちのほうがいいよーというかんじで別のテーマを提案してもらえて幸運だった。たしかに面白そうだったので提案してもらったテーマで応募した。

何をやるのか

テーマを直訳すると非windows環境でのstager payloadが、貧弱なので強化していくというかんじになる。 stager payloadというのはstage payloadと連携して動作し、 攻撃者とリモートホストとの通信を確立し、リモートホスト上でstage payloadを読み込み実行するというものである。stageというのは、stagersモジュールによってダウンロードされるpayload componentである。

具体的には、以下のようなことをやる。

  • windowsと違って、linux環境には汎用的なHTTP libraryがないので、reverse_http/https stagerを作成する。

  • Windows環境でしか動かない reverse_tcp_rc4 stagerをlinux環境で動くようにする。payloadのfingerprintingを回避するためにrc4で暗号化するというstagerである。

  • posix stagerにwindowsのstagerにはあってない機能、リトライやUUID等を実装する。

完走できるようやっていくぞ!!!!