ルーターを狙うGobRAT

ほぼこもセキュリティニュース By Terilogy Worx

日本国内にあるルーターを狙うマルウェアが観測されています。
どんなものでしょうか。

  • ターゲット
    Linuxをベースとして実装されたルーターが狙われます。

     

  • 使用言語
    Goで記述されています。
    いろいろな動作環境で使用できるというGoの利点が作用し、ARM、MIPS、x86、x86-64などのさまざまなGobRATが実際に観測されています。

     

  • 永続化手法
    GobRAT自身には永続化機構が組み込まれていません。
    代わりに、cronによる実行機構が使用されます。

     

  • C2との通信
    TLSで通信されます。
    しかもその通信の中で送信されるデータはGobでシリアライズされています。
    GobというのはGo言語のみで利用できるデータの形式です。
    シリアライズ機構としてはjsonが広く利用されていますが、jsonは平文で保持されるために型が保てませんし、シリアライズ後のデータのサイズが大きくなってしまいます。
    一方Gobは型がそのまま維持されますし、バイナリ形式ですのでサイズも小さくなります。
    バイナリ化されているので通信中にパケットを見ても内容を容易に知ることはできません。
    もっともGobの通信にはTLSが使われていますので、二重に暗号化されているようなものです。

     

  • RATの機能
    RATですので、RATによくある機能はもちろん実装されています。
    ターゲット環境の情報収集やファイルの読み書き、リバースシェルの実現などです。
    侵害環境の横展開の機能として、sshd、Telnet、Redis、MySQL、PostgreSQLのログイン試行機能も搭載しています。
    さらにルーターが侵害のターゲットであるという特徴を活かそうとしているのか、socks5の起動の機能も搭載しています。
    socksの起動ができてしまえば、socksプロキシで任意の通信が外部と可能になってしまいます。
    組織内にある通常のホストの場合外部との通信が容易ではない場合もありますが、ルーターでこれが動作してしまうと外部との通信は難しくない場合が多くなると思われます。

このGobRAT、C2との通信にGobを使っているのがポイントになりそうです。
jsonなどのデータ形式であればいろいろな環境で内容が解釈できるのですが、Gobの場合は内容の解釈に必ずGoの環境を利用することになります。
人間の研究者が内容の解釈を試みる場合はGoを使用すればよいだけとも言えるのですが、アンチウイルス機構などのようにソフトウェア機構でGobの内容を解釈しようとする場合、その機構にGo言語の機構を実装するか、相当する機能を用意する必要が出てきます。
現実的に考えて、Gobの内容を簡単にパースして何らかの処理を自動的に行うことはできそうにありません。

この意味で、GobRATは防御側の嫌がる戦略を選択しています。

参考記事(外部リンク):Linuxルーターを狙ったGo言語で書かれたマルウェア GobRAT
blogs.jpcert.or.jp/ja/2023/05/gobrat.html