セキュリティキャンプ2019のチューターしてきた話

お久しぶりです

お久しぶりの投稿となります、Columbineです。

本日はこの投稿していない間にしていた、セキュリティキャンプのチューター業についてのお話をしたいと思います。

 

セキュリティキャンプとは?

まず、セキュリティキャンプを知らない方にセキュリティキャンプとは一体なんなのかという事をお話しします。

IPAの公式サイトでの説明では

学生に対して情報セキュリティに関する高度な技術教育を実施し、次代を担う情報セキュリティ人材を発掘・育成する事業です。」(by IPAの[セキュリティ・キャンプについて]より抜粋)

と、あります。要は、「セキュリティエンジニアとして強くなりそうな人たちを一気に集めて高度な教育をする事で、強いセキュリティエンジニアを生み出す!」という事業です。

詳しくはぜひ、今年の参加者の方々がブログなどにあげていると思うのでそちらをご覧になって下さい。

ちなみに、私はセキュリティキャンプ2018のCトラックの卒業生です。

 

チューターになった経緯

これはとっても簡単で、「今年もセキュリティキャンプに参加したかった」というのが大きな理由です。

しかし、セキュリティキャンプにチューターとして行くとなるとチューターの選考がありそれを通過しないといけません。そのため、なぜ私はセキュリティキャンプに行きたいのかというのを考える必要がありました。しかしこちらは、少し悩んだのですが比較的すぐに見つかりました。

まず挙げるのが、セキュリティキャンプが好きだからという理由です。私は昨年のセキュリティキャンプのおかげで大きく住む世界が変わりました。自分よりできる人、自分よりすごい人、そんな人たちばかりの世界に合格する事で突然突っ込まれたため初めは大きく戸惑い悩みましたが、そのおかげでもっと成長したいと思えるようになり努力し続けるきっかけとなりました。その恩返しとしてチューターになりたいと考えました。

次に挙げるのが、自分の経験を誰かの成長に使って欲しいという思いです。私はキャンプの卒業から一年間、色々なことに挑戦して、色々な失敗をしてきました。この失敗した経験を誰かの成長に活かしてもらいたいと言う思いがあったので、教えられるような技術もないし…といった弱気な思いもありましたが応募に踏み切りました。

応募する際に書いた内容としては、自分がどのような活動をしておりどの講義を担当できるか説明するというものでした。こちらは、私は日頃から好きなように勉強しているおかげで色々な分野を経験してきたため思った以上に書くことができました。しかし、私は1つの分野に特化している訳ではないんだなと、改めて気づかされる事にもなりました。

 

合格から当日まで

この期間が一番辛かったです…

自分の担当となるトラックの名簿を確認すると、自分より絶対に強い知り合いの方とかもいらっしゃいましたし、他のチューターの方々もとてもすごい方々ばかりで自分が行く資格なんかないんじゃないだろうかと悩みました。

しかし、自分のできる事を精一杯やろうと思えたのは、チューターの先輩の方や運営をされている方が色々とアドバイスをしてくださったおかげです。その節は本当感謝しております。

 

セキュリティキャンプ期間中のお仕事

こちらは主に、

・講師が講義されるお手伝い

・受講生のお手伝い

・グループワーク等で自分の経験などを受講生に伝える

といったものがありました。そのため、受講生の方だったらチューターは大体どのような感じの事をされていたのか大体知っていると思います。

講義の手伝いなどは難しいと思われるかもしれませんが、私は昨年もCトラックで、今年も同じトラックだったため割と講師のおっしゃっている事もすんなりと理解してアドバイスをする事ができました。昨年は同じような講義を理解するのに苦しんで頭を抱えていたのですが、今年はほとんど知っている事だったので昨年の自分からちゃんと成長しているんだと感じられて嬉しかったです。

グループワークでは、今年は同じ事をしたい人を集めてグループにすると言うものでかなり専門性が高いグループが出来上がっていました。例として、OS自作グループや、Julia大好きグループなど中々に濃い話が行われており、初めのうちは自分では話に入れないと感じてグループのメンバーを探している人たちがより自分に適したグループと出会えるように話しかけるといった事を行なっていました。これの成果は実際にどうだったかわからないですが、願わくば何かの縁を結ぶ事ができていたらいいなと思います。

 

チューターの経験を通して

今年はチューターとしてキャンプに参加させていただきましたが、昨年とは異なる方向で今年も成長するきっかけをいただけたと思います。昨年は自分が何をしたいのかと言う事がまだ明確ではなく色々とふわふわしていたのですが、その中で自分の進むべき道というのをある程度見つけるきっかけとなりました。今年は、自分がより成長するにはどうしたらいいのかというのを考えさせられるきっかけになったと思います。

チューターは受講生の方々とはまた違う形で講師の方々と接する機会となります。そのため、その講師の方の技術に対しての接し方や仕事の仕方など講義だけでは得られないものを手に入れる機会になったと思います。

 

今後する事

今後は、キャンプ期間中に色々と聞いた面白そうな技術などの話についてもっと深掘りをしていくとともに、関西にセキュリティコミュニティを立ち上げていければと思います。

講師の方と話したおかげで、情報がうまく集まらずやる気が減っていた分野の情報をうまく集める方法などもお聞きする事ができました。そのおかげで、私は今から何をするべきなのかというのが具体化されました。

また、セキュリティコミュニティについては、今年の受講生の私の後輩がセキュリティ初級者のためのコミュニティを作りたいとの事だったので、ぜひ自分も協力させてもらいたいという事で立ち上げをする手筈となりました。とりあえず、今はコアメンバー探しをしてからとゆっくりではありますが、長く続けることのできるコミュニティというものを作れたらいいなと思っております。

 

最後に

セキュキャンはいいぞぉ〜
受講生としていくだけでも、人生を変えるほどのとても大きな価値がありますので今年応募した人はぜひ来年も、今年応募していない人はぜひ来年こそは参加できるように応募していただけたらと思います。

私は、来年もぜひ何かしらの形でセキュリティキャンプに参加できるよう努力を続けていくつもりです。(いつの日か講師として呼ばれる事を夢見て!)

Google CTF BNV解いてみた

先日開催されたGoogle CTFに参加しました。そこで、一問でも解きたいと思って、解けないか粘っていたWeb問のBNVをWriteupみながら解いてみたのでその履歴を記事にします。人に見られるようとよりか、自分用のまとめなので悪しからず。

今回参考にさせていただいたWriteupはこちらです。[GoogleCTF2019] - Web:BNV - Writeup

CTF終了時点からこの問題のWriteup探してたのですが、中々公開されなくて数日たちようやくこのブログが公開されました…待ってましたw

さて、作業履歴を書いていきましょう。

今回のBNVという問題は都市の名前を選択すると、それに対応する説明が返ってくるという単純なWebサイトです。入力する値はリストとして用意されている都市だけなのでテキストボックスとかもありません。

初めはSQLiとかの単純な攻撃かと思ったのですが、開発者ツールで書き換えて送信するとアルファベット以外は正常に通信が出来ませんでした。 パケットを確認すると、通信する際に都市の名前をそのまま送るのではなくJSで暗号化みたいな事をしているのでそこをいじるのかなと思い暗号化のコードを見たりしたのですが、怪しい部分は特に見当たりませんでした。そのためWebサーバ側の実装が問題なのではないかと考え色々とやってみると、暗号化した後の値を復号する際とかに全部がそのまま検索とかに使われるのではなさそうなのでそこかと思ったのですが全く違いましたね…悲し…(/ _ ; )
まぁ、こんな感じで色々と迷走しながらやっていたのですがこの辺りで色々と試してもこの先に進みそうに無かったのでこの辺りで諦めました。

さて、Writeup見ながらやっていきましょう。今回しようするWriteupははじめにあげたこちらです。[GoogleCTF2019] - Web:BNV - Writeup

要約すると今回の攻撃手法はdtdファイルを使ってのXXEらしいです。僕は今回初めてちゃんとXXEを勉強したのでググりながらWriteup見ていきました。 勉強に使ったサイトはこちらのサイトです。PORTSWIGGER XXEinjection

今回はXXEでもblind XXEの手法を使うようなのでPORTSWIGGERの中のこちらでまた勉強しましたPORTSWIGGER Blind XXEinjection 今回は、dtdを使うとの事なので主に「Locating an existing DTD file to repurpose」が勉強になりました。

「Locating an existing DTD file to repurpose」のコードを利用して攻撃をするとそれだけではうまくいかずWriteupを確認するとContent-type:application/jsonで送られているが、これをxmlにするとxmlに強制できるという脆弱性があるらしくこちらを変えてやると攻撃が成功した。この後、アクセスする先を/flagにしてやるとflagが出力された。

大体この流れでとりあえずこの問題は試せました、この記事を参考にするより本記事のWriteupを参考にした方がはるかにいいのでそちらを見てくださいww

第15回総関西サイバーセキュリティLT大会でLTしてきた

総サイLTでLTしてきた

先日、6月12日に開催されました恒例の第15回総関西サイバーセキュリティLT大会でLTをしてきました。
今までで大体10回くらい参加してて、3回目のLTです。関西のセキュリティ業界狭いので、何回もイベントに参加しているおかげで知り合いがどんどん増えてきて毎回楽しく参加させて頂いております!
顔覚えるの苦手なせいで中々名前が思い出せなくて困ったりしてますが…それでもいつも親しくしていただいている皆様に感謝です。

さて、今回は先日運用を始めたハニーポットについてLTしてきました。内容としてはハニーポットの建て方からログの見方や勉強の仕方といった事を話してきました。
ターゲットとしては数ヶ月前の私のような、そろそろハニーポットを運用してみたいがどうしたらいいかわからなくて踏み出せないという人向けに話してきました。
下にスライドを載せておくのでぜひハニーポットに興味がある人はぜひみてみてください。5分間のLTなので数分あれば読めてしまいますw

今回はちょっと忙しいため参加レポートを書く余裕はないのですが、基調講演にきてくださったNECサイバーセキュリティ戦略本部セキュリティ技術センター長の渕上真一さんのこの言葉だけは広めたいと思ったのでそれだけは書かせて頂きたいと思います。
情報セキュリティはITを最大限に活用するための最小限の安全確保
ITが広まるにつれて、サイバー攻撃の影響度や可能性といったリスクが高まっているといった話しの際に仰られた言葉なのですがこれは本当に正論で広めるべき言葉であると感じました。セキュリティ対策というのはITが広まるにつれてどんどん影響範囲も広がっていきます。そのITを守るためのに防御をするというのは別にすごい事や特別な事ではなく最低限であるというのはセキュリティというのを広めていく、私たちセキュリティエンジニアが前提として覚えておくべきだと思います。

www.slideshare.net

とりあえずの最近の活動報告

バグバンティ

HackerOneでバグバウンティを初めました。しばらくは学校の方の課題のプログラミングが忙しくなりそうですが合間をみながら勉強しながら進めていけたらと思ってます。

あと、バグバウンティのグループであるBugBountyBeginnerという新しくできたグループに入りました。これはNickさんという方が主催して始まったバグバウンティの初心者が勉強するためのグループとなってます。こちらで情報を集めながら、時にはわたしの持っている情報を他の人に共有したりと持ちつ持たれつでやっていけたらと思っております。

ハニーポット観察

これは攻撃待ちです。

攻撃が来たらまた記事を書こうと思っているのですが、現在のハニーポットの設定だと定期的にログのファイルが新しく作られるのですがそれが週なのか、ログの数なのかというのがわかってないのでそれをまた調べて、適時よりみやすい形にログをまとめられるプログラムを書いて分析の効率を上げていきたいと思っております。

 

以上、短いですが最近やっている事まとめでした。

ハニーポット観察(その1)

WOWHoneypot観察

先日建てたWoWHoneypotを運用してから数日経ちました。

その間攻撃とみられる通信も色々と観測されていたので実際にいくつか解析と、解析環境の整備の進捗を書いて見ようと思います。

(環境の話とか前回ブログに書いた所とダブっていますが気にしないでください)

 

解析環境

ハニーポットに対してSSHでの接続がうまく行かなかったため(今度また原因を探るつもりですが)、初めはlessコマンドなどを駆使してアクセスログを確認していました。しかし、これではどうしても全てログを読まないといけないのでどのような攻撃がきているのかというのがぱっと見では分かりません。そのため、アクセスログを解析して、どこに対してのアクセスかやWOWHoneypotで定義されている不審な通信があった場合にはその統計をまとめる簡単なプログラムを作成しました。

github(https://github.com/teatime13/DecorateHoneypotLog)

このプログラムを簡単に説明すると、アクセスログのファイルを取ってきてそれをログごとに区切り表示する部分と、base64エンコードされている部分をデコードして表示する部分、統計情報をまとめて表示する部分からできています。とりあえず自分用に作ったものなのでパスとかは固定されていますが、これをもう少し再利用性が高いプログラムにするためにもこの辺りもいつか書き直せたらとは思っています。

f:id:yukizakura4832:20190606120426p:plain

プログラム実行例

 

また、最近オブジェクト指向を勉強していたので綺麗な書き方したかったのですが…あんまり上手い事行ってないですね(笑)。テンプレートメソッドの書き方個人的にすごい綺麗で好きなのでこの書き方できたらとは思ったのですが実際に書こうとすると難しかったです。

とりあえず、このプログラムを拡張しながら使用していってしばらくはやっていこうと思います。kibanaなども導入しようかなとは思っているのですがそのためのサーバをとかなるとまた金銭的なコストがかかるので、現在運用しているハニーポットは一台だけですししばらくはこのままいこうかと思っております。(最低でもSlackとの連携はしたいですが)

 

観測された攻撃ログ

ログには不審な通信が何件もありましたのでせっかくなので紹介しようと思います。

WOWHoneypot側で不審な通信と検知された件数は以下のようになってます。

f:id:yukizakura4832:20190606120706p:plain

不審な通信の件数

この数字がそれぞれ定義されている不審な通信の番号を表しています。(Falseは未定義)それぞれの番号と通信の対応が以下のようになってます。

  • 1001:Login request sample(GET) /loginへのアクセス
  • 1003:HEAD method HEADリクエストメソッドによる通信
  • 1004:OPTIONS method OPTIONSリクエストメソッドによる通信
  • 1006:access to robots.txt /robots.txtに対するアクセス

参考(https://github.com/morihisa/WOWHoneypot/blob/master/art/mrrules.xml)

定義されている不審な通信としてはtomcatに対するリクエストやapacheに対するリクエストなどもあるのですが、この統計をみるとそれらの通信が行われていないことが分かります。

では統計情報にないからそれらの通信が行われていないのかというとそうではありません。定義されている不審な通信はデフォルトのまま使っているため基本的な不審な通信は定義されているのですが、脆弱性に対する攻撃というのはあまり定義されていないため捉えることができません。そのため、次はアクセス先の情報より不審な通信を探します。

アクセス先を確認していくと「/TP/public/index.php?s=capcha」といった不審な通信があることが確認できました。

f:id:yukizakura4832:20190606121934p:plain

この通信が一体何なのかというのを軽く調べてみると、このTPというのはThinkPHPという中国で開発されているフレームワークであり、コマンド実行の脆弱性があるということが分かります。
ExploitDBを確認するとすでにPoCが出ていました。

https://www.exploit-db.com/exploits/46150

このPoCを確認すると、上の二つ目の通信と似た通信が流れているのでこの脆弱性を攻撃する通信だというのが分かりました。

 

まとめ

こんな感じでしばらくは数日に一回くらいはのぞいてハニーポット観察を続けていけたらと思います。それと並行して長く続けられるように解析環境の整備というのも行なって行きたいと思います。

ハニーポット入門記録

ハニーポッターになりました

ハニーポット作成

ハニーポットをやりたいと言って早一年。ようやくハニーポットをたてました。

今回は、ハニーポットを建てるのは初めてという事なのでWOWHoneypotを使用させていただきました。これを選んだ理由としては、ちょうどTwitterでWOWHoneypotを建てた方がいたのですが、その方が良さそうなQiitaの記事を共有してくれていたのでいい機会だと思いデビューしました。

参考にした記事:https://qiita.com/hogehogehugahuga/items/cad931485f58ae487d53

 

今回はこの記事と同じくIDCFクラウド上にハニーポットを作成しました。

しかし、作成するところまではよかったのですがなぜかSSHが使えずフィルタリングなどの設定は正しいと思われるのに繋がらない…

もう少し余裕のある時にSSHの作業はすることにして、とりあえず正常にログを収集はできるようなので大丈夫そう。

ログの確認

初めは、lessコマンドやtailfコマンドを使用してログを見ていたのですがこれだけだとどうしても統計情報などがなくて見辛い…。ということで簡単に統計をもとめるPythonプログラムを作成しました。

https://github.com/teatime13/DecorateHoneypotLog

現在(6/4)ある機能はアクセス先のURLと、WOWHoneypotによって攻撃と判断された通信があった場合にはその番号をまとめて表示する機能があります。とりあえずで作ったプログラムだがこれが思った以上に便利で、不審な通信があるかというのがすぐに見られるので全部ログを解析していくよりも遥かにわかりやすいです。

まだとりあえずのプログラムでしかないのでこれを対話型にするなどしてより簡単に情報を見られるように拡張していけたらと思っています。多分kibanaなどを導入するまでのつなぎになるかと思いますがせっかくなので色々とコード書いてみるつもりです。

脆弱性診断の勉強(WebGoat編)

みなさんお久しぶりです。

最近は授業でインタプリンタ系の言語のコード読んだりとか色々としていたため、ブログ書いたりしていなかったのですがせっかく終わったのだからやったことの紹介だけでもしようかと思います。

 

OWASP BrokenWebApplicationをご存知か?

最近わたしは、BrokenWebApplication Projectという脆弱なWebアプリケーションを使用して脆弱性に対して実際に攻撃を行う練習というのをしていました。https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

これをやり始めた理由としては、将来ペンテスターや脆弱性診断士といった事を目指す上でこれまで知識として脆弱性の勉強はしていました。けど実際に攻撃をするとなると技術が全く追いついていないという問題があったため技術力をつける特訓としてはじめました。

今回やってみたのは、OWASP BWAの中に収録されているWebGoatというサイトを使用しました。難易度的にtrainingなので自分にぴったしというのと、他の収録サイトよりも解説がちゃんとされているため進めやすいため選びました。

全部やった感想としては、正直言ってやや難しかったです。知識的には知っている事がほとんどではありましたが、どこに脆弱性があるのか、どうやって攻撃するのかと言った部分でどこに注目すれば良いのかというのがわからず解説を少しでも見ると分かるのに解けない…という感じでした。

解説はWebGoat自体にFlash形式で答えがあるのですが、解説が少ないためこちらのサイトを参考にしながら進めていきました。

https://tuonilabs.wordpress.com/tag/silent-transactions-attack/

 

WebGoat終わったので、次はOWASP Juice Shopをやっていきます!