IoT機器をウイルスの脅威から守りたい ー IoTウイルスのライブラリ関数を正確に特定するツールの開発と公開

神奈川工科大学(KAIT)情報ネットワーク・コミュニケーション学科のコンピュータウイルス対策研究室(岡本剛教授)に所属する学生らは、インターネットにつながる機器(IoT機器)を標的にするウイルス「IoTウイルス」が使用するライブラリ関数を特定できるツール「stelftools」を開発しました。

一般的に、IoTウイルスは作動する時にライブラリ関数(*1)を呼び出します。ライブラリ関数はウイルスの目的や機能を推測するのに役立ちますが、IoTウイルスが呼び出すライブラリ関数の特定は困難です。
そこで開発したのが、stelftoolsです。IoTウイルスが呼び出すライブラリ関数を特定できるツールは他にもありますが、他のツールがライブラリ関数の形(コードのパターン)を利用するのに対し、stelftoolsは部品同士のつながり(依存関係)や順番も考慮するため、より正確にライブラリ関数を特定することができます(図1)。


図1 ライブラリ関数の特定精度の比較

また、様々な種類のIoT機器に対応でき、IDAやGhidraなど他の解析ツールとも連携できるようにしました。2023年11月8日には、採択率10%以下という、世界トップクラスの情報セキュリティ専門家が集まる国際会議CODE BLUE 2023(https://codeblue.jp/2023/talks/?content=talks_25)にて、NTT社会情報研究所の研究グループと共同でstelftoolsの発表を行いました(図2)。


図2 国際会議CODE BLUE 2023で発表する
本学大学院情報工学専攻博士前期課程2年の赤羽 秀さん

stelftoolsは誰でも使えるようにGitHubで公開しています。
https://github.com/shuakabane/stelftools

1.本研究のポイント

  • stelftoolsは、IoTウイルスのライブラリ関数(部品)を特定する際に、プログラムの部品のコードのパターン(形)だけでなく、部品同士のつながりや順番も考慮することで、他のツールよりも正確にライブラリ関数を特定できます(図1)。
  • IoT機器は種類によってマシン語(命令セットアーキテクチャ *2)や開発ツール群(ツールチェイン *3)が異なります。stelftoolsは、17種類のマシン語や700以上の開発ツール群に対応しており、IoT機器のマシン語や開発ツール群を自動で特定できます。
  • stelftoolsは、IDAやGhidraなどの静的解析ツールと連携できます。これにより、解析者は自分が好きなツールを使ってstelftoolsの結果を活用できます。
 

2.研究背景

近年、IoT機器を狙うウイルス「IoTウイルス」が増えており、IoT機器を守るためには、IoTウイルスの仕組みや目的を解析することが重要になっています。IoTウイルスは、ウイルスが作動する時に呼び出すライブラリ関数を特定することで効率よく解析できるようになります。例えば、もしネットワーク通信で使われるsend関数やrecv関数を呼び出していれば、そのIoTウイルスはネットワークを通じて情報を送受信することが分かります。しかし、たいていの場合、ライブラリ関数の情報は消去されており、解析は困難です。

また、IoT機器は種類によってマシン語(命令セットアーキテクチャ)や開発ツール群(ツールチェイン)が異なります。これまでにも、IoTウイルスのライブラリ関数を特定するツールはいくつか開発されていますが、呼び出されるライブラリ関数を正確に特定できなかったり、様々な種類のIoT機器に対応できなかったりといった問題がありました。

3.研究内容・成果

そこで今回、KAIT情報ネットワーク・コミュニケーション学科のコンピュータウイルス対策研究室(岡本剛教授)に所属する学生らは、IoTウイルスが呼び出すライブラリ関数を特定できるツール「stelftools」を開発しました。このツールは、他のツール同様ライブラリ関数(部品)のコードのパターン(形)でライブラリ関数を特定すると共に、部品同士のつながり(依存関係)や順番(リンク順序)も考慮することで特定精度を高めています。例えば、ネットワーク通信で使われるsend関数とrecv関数は部品の形が同じなため、それだけでは見分けがつきません。しかし、send関数はsendto関数という別の部品に依存しているため、sendto関数が見つかれば、その前にある部品はsend関数であると特定できます。

stelftoolsの有効性を確かめるために、特定精度を代表的な既存ツールと比較評価しました。その結果、stelftoolsは他のツールよりも正確にライブラリ関数を特定できることがわかりました(図1)。様々な種類のIoT機器に対応できるようにするために、stelftoolsは17種類のマシン語(命令セットアーキテクチャ)と700以上の開発ツール群(ツールチェイン)に対応できるようにしました。それにより、自動的に開発ツール群や設計図を識別することもできます。さらに、stelftoolsを使いやすくするために、IDAやGhidraなどの静的解析ツールと連携できるようにしました。このツールはすでにセキュリティベンダーなどで活用されています。

4.今後の展開

今後は、stelftoolsで特定したライブラリ関数の情報を使って、IoTウイルスを解析する手法やツールの開発を進めます。例えば、ライブラリ関数が呼び出される順番を追跡するツール「xltrace」の開発を進めています。このツールを使えば、ウイルスがどんな動きをするかを調べることができます。

5.発表者

赤羽 秀  神奈川工科大学大学院 情報工学専攻
川古谷裕平 NTTセキュリティ・ジャパン
岩村 誠  NTTセキュリティ・ジャパン
岡本 剛  神奈川工科大学

<論文情報>

  • 赤羽 秀, 川古谷 裕平, 岩村 誠, 岡本 剛, “IoTマルウェアにおける関数の依存関係と結合の順序関係に基づくライブラリ関数名の特定”, コンピュータセキュリティシンポジウム2021論文集, pp. 786-793, 2021
  • Shu Akabane, Takeshi Okamoto, “Identification of toolchains used to build IoT malware with statically linked libraries”, Procedia Computer Science, Vol. 192, pp. 5130-5138, 2021, https://doi.org/10.1016/j.procs.2021.09.291
  • 赤羽 秀, 岡本 剛, “シンボル情報が消去されたIoTマルウェアに静的結合されたライブラリ関数の特定”, コンピュータセキュリティシンポジウム2020論文集, pp. 543-550, 2020
  • Shu Akabane, Takeshi Okamoto, “Identification of library functions statically linked to Linux malware without symbols”, Procedia Computer Science, Vol. 176, pp. 3436-3445, 2020, https://doi.org/10.1016/j.procs.2020.09.053

<研究助成等>

  • ARM向けリバースエンジニアリング技術の研究, NTT社会情報研究所, 2021年4月 – 2022年3月
  • 多様なアーキテクチャ環境におけるリバースエンジニアリング技術の研究, NTT社会情報研究所, 2022年6月 – 2023年3月
  • 多様なアーキテクチャ環境における高度なリバースエンジニアリング技術の研究, NTT社会情報研究所, 2023年6月 – 2024年3月

<用語説明>

(*1)ライブラリ関数:プログラム言語において、使用頻度の高い処理を関数としてまとめたプログラムコード。

(*2)マシン語(命令セットアーキテクチャ):コンピュータのマイクロプロセッサ(CPU/MPU)が理解して実行できる命令コードがマシン語であり、それらのまとまりが命令セットアーキテクチャ。

(*3)開発ツール群(ツールチェイン):プログラム開発の際に用いられる、特定の機能を持つコンピュータプログラムの集合。

※取材の際には、事前に下記までご一報くださいますようお願い申し上げます。
※本リリースは大学プレスセンタ-に送信させていただいております。

本件に関する問い合わせ先

神奈川工科大学 研究推進機構
研究広報部門
住所: 〒243-0292 神奈川県厚木市下荻野1030
TEL: 046-291-3218
E-mail: liaison@kait.jp