Slapdash Safeguards

にわか仕込みのセキュリティ

ObsidianをLoaderとして使用する攻撃事例~Obsidianを開いただけでマルウェア実行~

markdownのメモアプリとして有名なObsidian

これをLoaderとして使用する事例が確認された。

手法としては、「Obsidianの拡張機能を使ってコマンド実行を行う」という単純な話。

vaultを開くだけで、意図せずコマンドが実行されてしまう。

www.elastic.co

コマンド実行テンプレートを設定してObsidian環境を快適にするプラグイン

Obsidianの拡張機能追加画面から追加可能なコミュニティプラグインに、 任意のOSコマンドを簡単に呼び出せる設定を行える「Shell commands」というものがある。

publish.obsidian.md

プラグインを説明を見ると、OSコマンドを好きなときに簡単に呼び出してファイル操作やアプリケーション連携を簡単にするものという感じ。

・Launch external applications - with a possibility to make them use Obsidian vault's files and folders.
・Create commands for automatic creation, modification and/or deletion of files and folders in the vault.
・Use certain content related information as part of their commands, e.g. the name, title or tags of the currently open file, or currently selected text, or text present in the clipboard. (These are called {{variables}}).

拡張機能登録

まずはコミュニティプラグインを有効化

コミュニティプラグイン有効化

「コミュニティプラグインを有効化」を押すと、画面が変わる

コミュニティプラグインを有効化した後の画面

「閲覧」から、shellを入力するだけで「Shell commands」がヒット

コミュニティプラグイン検索

クリックすると説明文が出る。

Shell commandsの説明

「インストール」ボタンを押すと、「有効化」という表示になる。この「有効化」ボタンを押さないと使用できない。

有効化しないと使えない

プラグインが有効化されると、設定画面に「コミュニティプラグイン」がリストされるようになる。

「Shell commands」を確認する。

「Shell commands」の設定を確認

「New shell command」からコマンドを登録できる。

calc.exeを登録してみた

登録したコマンドの「Events」を押すと、そのコマンドをどんな時に実行するか指定できる。

「Events」はココ

コマンドの実行タイミングは色々あるようだが、特に気になるのは「Obsidian starts」と「Obsidian quits」。

つまりこれらは、Vaultを開いた際に実行->「Obsidian starts」、Vaultを閉じたときに実行->「Obsidian quits」となる。

怪しい雰囲気がしてきましたねぇ。

例えば、「Obsidian starts」を設定してみる。

「Obsidian starts」を設定

これでObsidianを実行する(拡張機能を設定したVaultを開く)とこうなった。

youtu.be

ふむふむ。そんな感じか。

Obsidian SyncによるVault同期

obsidian.md

Obsidianは基本ローカルでしかメモを使用できないが、Obsidian Syncを使用すればクラウド同期でメモを使用できる機能がある。

Vault新規登録画面

これを使用すると、何と拡張機能も共有できるらしい。

ということは?

「Shell commands」も別の場所で使用できるということ。

今回のElastic Security Labsの件はこれを悪用した事例。

便利なメモがあるだか、共有したいものがあるだかでSNSで声をかけた人に攻撃者が用意したObsidian Syncを開かせて、 マルウェアを実行させる。

一応、$5払えば試せそうだったが個人的に時間が無かったので試していない。

Obsidian Syncを使うためには課金登録必要(https://obsidian.md/ja/sync)

ちなみにElastic Security Labsの話では、HiderというプラグインがObsidianのUIを隠すために使用されたと言われているがあんまり情報が隠れている感が無かったので何を隠したかったのか分からなかった。

環境によって隠れるものはマチマチぽい。

コミュニティプラグインのHider

vscodeのtasks.json的な感じ?

vscodeでも開くだけでコマンド実行的な便利機能があったので、そのObsidianバージョンを悪用したような事例かと。

www.sdsg.moe