はちゅにっき

こっちのブログはまったり更新

Shibuya.pm #11 にいってまいりました

「僕スピーカーなんだけど」
うわぉ、弾さんだ。(18:15 頃 2Fロビー にて)


から始まった、Shibuya.pm #11 に参加してまいりました。
勇気を出して弾さんに話しかければよかったよ。ちょっと後悔。


今回は "no Perl; use x86;" というタイトルを裏切らず、”まとめ” を書くにはちょっとマニアックすぎる内容でした。
とゆーか、x86 のコードなんて大学の時に少しさわったくらいで、わかったようなわからないような部分が多く、まとめる力が圧倒的に不足してますね。。。


あ、あとアレですね、自分が1週間で使うバックスラッシュを今日1日で見た気がします。


というわけで、以下殴り書きです。ゆっくり整形していこうかな。

バイナリ畑で捕まえて - inside lleval (dankogai)

http://colabv6.dan.co.jp/lleval.html
のお話し。
というか、システムコールをどこで止めるんだってゆーお話でした。

1 while 1;

とか

fork while 1;

とかゆーのを実行されるのは困る。
そんなのを崖っぷちで捕まえてあげたい。
そんなサービスを提供するために、FreeBSD::i386::Ptrace をつくった。
FreeBSD だとシステムコールした後でもスタックの値を書き換えられるのでそれを利用して、止めたいコードを止めてしまおうといったお話。

任意のコードを安全に eval する方法の実装方法と、突破方法について (tokuhirom)

こっち(壇上)の方が目立つじゃないですか。


Perl で SandBox をつくりたい。
lleval (dan さんの) はいいんだけど Linux でも動かしたい。
そんなときは Sys::Protect。
が、非常にアンセキュア。
じゃ、どうすればいいか?
とりあえず危険なシステムコールをつぶしまくればいい。segv が出るのはしかたない。
SandBox では新しいプロセスを作ってその中で eval して実行していき、ある程度時間がたったら Kill する。
じゃあそれをどうやって制限(マスク)しようか?
それは、PL_op_mask、PL_ppaddr をマスクしてあげればいい。
op_mask にフックする関数を追加すれば任意のコードを防げる。
以下で確認できる。(未確認)

$ perl -M-ops=system

これで system 関数を止めれる。しかもこれは標準の機能としてある。

DynaLoader (DLLやらXSを読むためのモジュール) は非常に危険。
XSは完璧にVMの外で動作するため防ぐのは難しい。
JSON::XS や autobox は許可してあげたい。
まとめると PurePerl は危ないので XS で書きましょう。
Perl じゃなくて x86 で書きましょう。


# あれ?途中のメモが抜けてる。。。

How about Kindle hacking? (obra)

アマゾン・キンドル (Amazon Kindle) を Hack してしまおうというお話。
# メモとりながら、英語を聞けるほどではなかったので集中して聞いてました
# が、半分くらいしか分かりませんでした。。。

世界のセキュリティコンテスト(Capture the Flag)ってどんなもの?(kenji)

ハッキングして隠されたパスワードを入手せよ!
みたいなことをやっているらしい。
ある程度王道みたいな解析 & それを複雑怪奇にする方法があるようだけれど、経験とひらめきみたいなのが大切そうな気もしました。

Native Client Hacks (Fukumori Daiki)

ActiveX はなんでもありだった。
脆弱性を利用して電卓が起動できちゃう。
バックドアをしかけられちゃう。
ブラウザ上での SandBox はこれで崩壊した。
そこへ、Google Native Client が登場した。
x86バイナリを安全に実行する枠組み。
なのでいろんな脆弱性とか仕様をついてみた。
SandBox は破られるほど強くなるから、みんなで破りましょう。

Perl で学ぶ Win32/FreeBSD/Linux/x86_64 アセンブラ入門 (takesako)

オレオレPerlVM (gfx)

CPUの気持ちは大事だけど、VMの気持ちも考えよう (Yappo)

Devel::BindPP をつかって簡単に C++Perl の拡張モジュールをつくろう! (tokuhirom)

XS を書きたいのに、XS のお作法を覚えるのはばかばかしい。
しかも難しいし、汎用性がないし。。。
そんなわけで C++ で XS を書けるラッパを作ったよ!
使ってね!

Devel::NYTProf (clkao)

Devel::NYTProf はみやすくて便利!
今は HTML で表示しているけど、GUI で表示する機能が追加されたよ!
# みたいなお話しだったと思う

マルウェアの検出 (sonodam)

最近のマルウェアは必要な機能は後から DL してくるタイプが多く、他の setup.exe との違いが分からなくなってきた。
ヒューリスティックに対処するには限度がある。
なんか、いい案ない?

ブラマンのブラックな話 (isidai)

5分で danbot server を立ち上げる方法 (Yappo)

Windowsユーザのための初めてのPerlプログラミング (HASEGAWA Yosuke)

      • -

最後に

21時頃終了し、21時半の新幹線にのって帰るというせわしない日程で、ゆっくり余韻に浸る暇もありませんでしたが、今回もとてもおもしろかったです。
あ、あと会場がすごかった!
スピーカーの皆様、会場の手配、提供をしていただいた皆様、その他関係者皆様、本当にありがとうございました。
次回も是非参加したいです。


あ、あと今回初挑戦で IRC に挑戦したんですが、なんかちょっと意味がわからなかったデス。
Yappo さんの発表のときに IRC っぽい画面が見えたけど、自分のつないでみたチャンネルと違ったのかな?
うーん?

LimeChat で検索したら #shibuya-pm が出たんですが、そっちじゃなくて #shibuya.pm のほうに JOIN すればよかったみたいです。
なるほど!
わーい。