「Understanding Linux Malware[Cozzi et al., IEEE S&P(Oakland) 2018] 」を読んだ

研究活動のリハビリに字を読んで文字を書く練習を兼ねて、世界カジノ巡り以外を更新している。今日はUnderstanding Linux Malware[Cozzi et al., IEEE S&P(Oakland) 2018]を読んだ。pdfはここ。タイトルから想像するのはサーベイ論文だが、IEEE S&Pは情報セキュリティの国際会議でもtop tierでacceptance rateも低い、マジモンの論文しか通らないところである。この論文も、イントロを読むとさほど期待が高まらなかったが、内容については非常にプラクティカルかつ、重要な知見が詰まっていた。実装についてはほとんど振れられていないのだが、SystemTapで実行時のランタイムエラーをトラップして何故エラーを起こしたのか調べる、など、筋肉モリモリマッチョマンな内容がさらっと書いてあるのが恐ろしい・・・

なお、イントロダクションではMalware Must Dieがexcellentなリサーチだと参照されている。Malware Must Die以外にLinuxマルウェアをきちんとサーベイしている広義のリサーチャーはいないということがトップカンファレンスに書かれる意味というのは、非常に大きい。いわゆる学術的な見方としても、unixfreakjpさん達の貢献は貴重かつ重要であるということである。ちなみに、業界では有名なCTOであるはせがわようすけさんも、こういった学術論文に何度か登場している。スゴイ。これとか。

この論文は、ざっくりいうと、1年間で10,548検体をVirusTotalから集めて、余さず解析して諸々の傾向とかを分析し、Linux マルウェアの解析パイプラインを構築しましたよ、というものである。余さずというのがポイントで、Winなマルウェアと違いLinuxマルウェアは様々なアーキテクチャがある。なので動かないからこれは無視で、みたいなことをすると全然カバーできないということがありうるのである。この論文では、Static Analysisでアーキを分類し、適合したQEMU上で動的解析を行う。動的解析では、SystemTapでシステムコールをトラップしてinstrumentationを行っている。また、root特権が必要なケースもあるので、落ちたら次はrootで実行とか、泥臭い解析を一つ一つ自動化しているところが非常によい。

分析の中で、readelfの結果が正しく読み取れない(けど実行はできる)というような、静的解析回避のマルウェアがある、ということだった。確かにこういうのはある。Windowsでも、peinfoとかで読めない(でもカーネル内のPEローダーは読めないので、何故動くのか分からない)ということは経験がある。persistance(永続化)についても、/etc/rc.localを使うのが多いとか、感覚としては確かにそうだなというのが、定量的に分析されているので、今後Linuxマルウェアの論文を書く人は、この論文は絶対参照しなければならないと思う。

僕がここでこれ以上論文のデータについて書いても不正確に伝わると思うので、気になった人はちゃんと元の論文読んでください。



カジノ資金になります