とある京大生の作業ログと日々の雑記

コンピュータサイエンスについて学んだことを可視化したり日々の雑記をまとめてます。

マルウェア解析の本を読み終わったので書評

こんにちは、コミさん(@komi_edtr_1230 )です。




今回はPractical Malware Analysisという本を読みましたのでレビューしていきます。



全体の感想






f:id:komi1230:20181109054030p:plain




.....ちょっと表紙怖くない?




多分小さい子供とか見たら泣くよ....




まあそんな禍々しい表紙のマルウェア解析本ですが、読んでみての感想としては




実践に重きを置いたものすごく丁寧なマルウェア




という感じです。




読み進めててかなり面白かったし、色々クスッとくるような感じもありました。




読んでて特に良かったと思った点として

アセンブリ言語の基礎やWindows OSの基礎から始まる丁寧な導入

・超具体的とも言える攻撃手法の紹介

・実際にあるツールを使っての解析方法の紹介




というような点が挙げられます。




この本は少し古くて攻撃対象がWindows XPとかWindows 7なんですけど、マルウェアというものがどんな形でホストOSに攻撃を仕掛けるのかという基礎的な部分に関してはめちゃくちゃ勉強になりました。




やはりセキュリティを学ぶには攻撃手法を知るのが手っ取り早いだろうということで、パスワードクラッキングなどのマルウェアを想定しながら様々な解析手法が登場します。




登場するツールとして、マルウェア解析では静的解析(=逆アセンブルする)と動的解析(=デバッガを利用)に大別できるんですが、IDA ProやWiindbgなどが主なツールです。




これらはUnix系列で言えばobjdumpとかgdbに相当するんですけど、まあやってること自体はホントに逆アセンブルデバッグなので本質的には問題ないな、という印象でした。



マルウェアの攻防






セキュリティを学ぶ上での面白さは「攻防」にあると思ってるんですよね。




で、今回の場合はマルウェア作者が攻撃側、マルウェア解析する方が防御側という感じなんですけど、本書でもしっかり攻防戦をうかがわせるような箇所がたくさんあります。




例えば、この本での動的解析の章にて「マルウェアを実際に走らせるときは非常に危険なので絶対に仮想環境を使いましょう」って書いてるくせにPart 5にある第17章のアンチ仮想環境の解説部分では仮想環境を飛び越えてどうスタックやカーネルに攻撃を仕掛けるかということが解説してあり、もう完全にカオスですw




本書はPart 1からPart 3までは解析手法を解説していってPart 4ではマルウェアが実際にどう攻撃を仕掛けるか、Part 5はアンチ逆アセンブルとかアンチデバッグ、アンチ仮想環境など、いかに解析を失敗させるかということを書いてあります。




Part 1からPart 3で築いた解析方法をPart 4とPart 5で崩しにいってるし、もうこれマルウェア解析の本っていうかマルウェアでの攻撃の仕方の本じゃん....w




そんな感じで「なんだこの本....w」ってツッコミを入れたくなるんですけど、マルウェアについてはかなり勉強になるんでマルウェアに興味ある人には是非とも読んで欲しいです。




あとアセンブリ言語についての解説が割と優秀なのでそれの勉強を兼ねるというのも悪くないかもしれません。




ただ、前提知識としてカーネルとかC言語(特にポインタとか構造体)の知識があるとないとでは読みやすさがだいぶ変わってくると思うのでそこらへんは注意かもです。




無料だし450ページちょっとで1週間もあればすぐ読めると思うので興味ある人はチャレンジしてみてください!



今後の勉強






結構今までたくさんPDFを読んできて、徐々に読もうと思ってたPDFがなくなりつつあるんですよね....




現状↓ f:id:komi1230:20181109061532p:plain




絶対に勉強しようと思ってたものもだんだんと片付いていって、この積んでるPDFの中でもちゃんと読もうと思ってるのもパタヘネとGoodfellowのDeep Learning、あとはALifeくらいですかね.....




今までずっと低レイヤに潜ってきたんで次はDeep Learningに行こうかなって思ってるけど、あんまり気乗りがしない.....w




明日から勉強どうしよう....




もうPDFでの勉強も一旦終わりにしてKaggleとかCTFにガチってみるのも悪くないかなぁって思ったり....




ちょっと今はまだ悩み中ですけど、このブログが書き終わり次第決めようと思います。




では、今回は書評はここらへんで。



近況報告






そういえば最近ただ勉強記録的な書評ばっかりだったのでたまには勉強的なこと以外でしっかり近況報告をしますね。




気がついたら11月になっていて、スイスではすでに最低気温が3℃とかになったりしてるんで外に出るときはマフラーと手袋は必須アイテムです。




もうスイスに来てから2ヶ月と20日くらいなんですよね。




そして日本に帰国するのは12月14日なので、実質的にスイスにいるのは残り1ヶ月ちょっとというわけです。




早かったなぁ....としみじみ。




2ヶ月も経つと流石に生活も慣れてきて結構余裕も出てくるわけですよ。




で、生活コストを削ることもできたり割と日々もある程度ルーティーン化してきたりといった感じになるわけです。




最近の生活はというと、ぼくの場合だいたい朝9時とかに起床してスーパーに行ってバナナとかリンゴとか簡単な朝食を買い、そのあとは19時くらいまで図書館で勉強してます(授業がある時間以外もずっと図書館)。




19時くらいになるとちょっとおなかがへるのでスーパーに行って簡単にバナナとパン、エナジードリンクを買いに行き、そのあと23時半くらいまで図書館で勉強続行です(この記事を書いてるのは今この時間)




それで日付が変わるか変わらないかくらいの時間に帰宅し、たまに少し簡単な食事を作って(最近はほとんど作ってないけど)、シャワーを浴びてそのまま就寝です。




味気ない生活だなぁ...




ただまぁ8月9月を試行錯誤しながら勉強時間の最大化と生活コストとストレスの最小化を図ったところこの生活に解が収束したので、多分これがベストなんだろうと思ったり(ただの局所解で大域解ではないかもだけど)




そんなこんなでたまにジムに行ったりしてますけど基本的に図書館での滞在時間は13時間以上だったりします。




まあ今回のスイス留学は「自分がやりたいことを徹底的にやる」ということで、やりたかった勉強はこれでもかというくらいにできてるのでかなり満足度は高いですよ?




語学力に関しては、こんな感じで人とほとんど会話しない生活を送ってるのでまああまり成長なしです。




ただ英語では言いたいことはある程度言えるのでSpeakingはそこそこ、毎日教科書の原著を読んでるのでReadingもオッケー、洋楽とか寝る前にラジオ聴いてるからListeningも多分大丈夫、EPFLの事務や色んな会社とインターンのメールのやり取りしてるのでWritingも多分いけてる、といった感じで意外と英語の4技能を伸ばしていると言えるでしょう(?)




....語学がんばります。




4回生の研究室配属について、先日に希望研究室にいる先輩からアドバイスというか助言をもらいまして、無事になんとかなりそう感があります。




理学部に入ってからずっと情報系のことばっかりやってて生物系という肩書きがホントに形骸化してた感があったんですけど、希望してる研究室が数値解析系のことをやってるとこなので情報系ばっかりやってた自分もいい感じに生物系のところに着地できそうで最近少し安心してます。




あとその研究室の教授が割と柔軟に色々対応してくれる方らしく、せっかくトビタテで2020年3月まで有効な奨学金を持ってるので来月に帰国した際は卒業研究を海外で研究していいか聞いてみようかと最近画策しています。




研究先としては今はシンガポールで研究したいなぁって思ってて、なのでこの企みが成功すれば2019年はほとんど日本にいないということになりそうでちょっとワクワクしてます。




大学院について、前までは東大の研究室を考えてたんですけど最近いろんな勉強をしてるうちに京大で気になってた研究室でぼくのことを熱烈に勧誘してくれたところもいいなぁと思い始めて、とにかくめちゃくちゃ迷いまくりです。




院試は来年の夏だし、出願とかも考えたらさっさと決めておかないとなぁと焦るばかり....




とまぁ最近の活動に関してはだいたいこんな感じです。




今のところはそんなに忙しくなくて随分と平和な生活を送ってますね。




ただ、最近1つ謎めいた案件がありまして、Amazonインターンがよくわからないまま書類選考を通りました。




8月中旬にスイスに来て、ぶっちゃけ9月の時点でスイスの生活に退屈してて、それでスイス留学は1セメスターで切り上げて来年以降は海外インターンをしようってことで9月10月はインターン探しをしまくってました。




その中でGoogleとかAppleとかの名だたる企業にも出したりしてて、もちろんAmazonにも出したんですよね。




で、Amazonの中で出したのはアメリカとカナダとドイツで、アメリカとカナダは不合格だったんですけど、そんな中こんなメールが。




f:id:komi1230:20181109050340p:plain




「このメールを受け取ったあなたはAmazon Student Programに紹介(推薦?)された人です。以下のフォームを埋めてください」と。




このメールを見たときは朝で、寝ぼけてて「なんか記入ミスだったんかな」って思ってメール本文をよく見ずにさっさとフォームだけ埋めて終わらせたんです。




だけど数日後にそういやインターン関係どうなってたっけってメールを見返してみて、このStudent Programの配属先がAmazon UKのBristolで「そういや俺イギリスに出してなくね?」ってのと「てか俺のこと推薦したの誰だ...?」という二重によくわからない状況。




予想としてはインターン申請したドイツが受け入れ先としてぼくをイギリスに回した説(確かにこれなら納得がいく)を考えてたんですけど、今カナダに留学している京大の後輩も同じメールをもらってたとの報告が。




ちなみにその後輩は推薦先はAmazon Canadaだったそう。




うーん、一体何が起きているのだろう....




まあAmazonインターンが通れば毎月60万円以上お給料がもらえるらしいしぼく自身もかなりスキルアップになるので最高のチャンスなんですけど、どうも腑に落ちない感が.....w




とまぁホントによくわからない状況ですけど、今はオンラインのCoding Testが来るのを待つだけですね。




こんな感じでもう11月なのに来年自分がどこにいるかわかってないという状況ですw




一応、来年1月からはすでにインターン内定をもらってるインドのスタートアップで機械学習エンジニアをやることになりそうなんですけど、このインドでの生活がどのくらい続くのか、Amazonインターンが通ったらいつからイギリスで働くことになるのか、イギリスのビザはどうするのか、卒業研究はどの国でやるのか、大学院の院試はどうするのか。




まだ先のことだけど全く予定が立ってなくてホントにこれでいいのか感.....w




ま、別に留年しようがそこまで気にしないし人生楽しければいいので、なんかもうこのフワフワなのも悪くないかなって。




ということでこれからもがんばりますね(?)




スイスでの生活も残り1ヶ月ちょっとだけど、さっさと日本帰ってラーメン食べたいなぁって思いつつ全力で勉強しようと思います。




また書評とかあったらブログも更新しますので。




ではお疲れ様でした!