2019はじめに本記事では、私の頭の中に断片的に蓄積されているLinuxマルウェアに関する知見を年末の大掃除がてら整理してみる。一般的なことが多いと思う。浅く広くという感じで紹介していく。Analysisにはこの手のことが纏まっていたので学びたい人は読むと良い。感染経路ここでは、Linuxマルウェアに感染する主な経路について紹介する。典型的なのは、admin:adminやroot:rootなどだ。その他、プロトコルスタック周りの脆弱性を突かれることによるケースも多く存在する。これによりいったんLinuxシステムに侵入されるとLinuxマルウェアは、次の永続化機構などで足場を固める行動に移る。永続化機構ここではLinuxマルウェアが利用する代表的な永続化機構について紹介する。WindowsのCurrenVersion\Runキー等への書き込みと同様に永続化するための機構を備えている場合が多い。Linuxマルウェアに感染している際は以下に記載したようなファイルやディレクトリ群を調査するのが良い。cron/etc/crontab/etc/cron.d/etc/cron.dailyなどシェルのprofile系.bash_profile.profileなどサービス/etc/inittab/etc/rc?.d//etc/system/正規ファイルの置き換え多くの場合は、これらのファイルにまた新たなマルウェアをダウンロードしたり、あるいはプロセスを複数起動するような処理が書き込まれていることが多い。権限昇格ここでは、Linuxマルウェアによる一般権限から管理者権限への権限昇格などに使われる手法を紹介する。Linuxにおける権限昇格の多くは、SUID/SGIDなバイナリの脆弱性を突いたものである。SUID/SGIDは、実行したユーザに関わらずバイナリの所有者や所有グループで実行されることになる。パスワード設定を行うpasswdコマンドなどはSUIDの設定がされている。そのため一般権限で実行しても所有者のrootユーザで実行された扱いになる。/usr/bin/passwd*このようなバイナリに脆弱性があるとすぐに管理者権限などを持っていかれる可能性が高いため、SUID/SGIDの設定をする際には十分に注意してほしい。実際にLinuxマルウェアに感染すると多くの場合、C&Cサーバとの通信が行われる。LinuxマルウェアがC&Cサーバと通信を行う際には、wgetやcurlといった代表的なHTTPリクエストが可能なコマンドが多く利用される。バイナリ中で、これらのコマンドを呼び出して実行する場合も存在する。この他、正規の通信にまぎれさせるような形で行うものもある。オプションでデータを送信したり、送信データを暗号化して分割した値をサブドメインとして名前解決することで送ったりなどだ。表層解析Linuxマルウェアの表層解析をする際には、fileコマンドとstringsコマンドが役に立つ。これらのコマンドは言及するまでもないだろう。ちなみにstringsコマンドを使う際は、文字列として認識する最低文字列長を設定する-nオプションを利用することをおすすめする。