vm.gowatana.jp

NEOにほんごVMware(仮)

Carbon Black で利用されている osquery の様子を見てみる。

「Japan VMUG vExpert が語る 第16回 」にて、Carbon Black の「Live Query」で利用されている OSS である osquery を紹介しました。osquery 自体がどのように利用できるのか、そして Carbon Black ではどのように活用されているのか様子を見てみます。

 

今回の内容です。

 

Carbon Black の Live Query とは

Carbon Black の主な機能として、下記のようなものが挙げられます。このうち、3つ目の「IT 環境の把握」をする機能が Live Query です。

  • 次世代アンチウイルス(NGAV)
  • エンドポイントの脅威検知と対応(EDR)
  • IT 環境の把握(IT ハイジーン / 脆弱性管理 / コンプライアンス管理)

また Live Query は、Carbon Black の以前からの説明やドキュメントにある「Audit and Remediation(監査と修正)」の、Audit(監査)にあたります。この機能の実態は、Carbon Black Cloud Console の Web UI から実行できる osquery です。

 

osquery とは

osquery は、Facebook(現 Meta)が開発した、SQL で OS の情報を取得できるようにする OSS です。Windows / Linux / macOS など、さまざまな OS で利用できます。

osquery のソフトウェアは、GitHub で公開されています。

 

たとえば、OSS osquery の Version 5.2.3 であれば、GitHub のリリース ページか、osquery.io のページから、.msi や .rpm といった各 OS むけのインストーラーをダウンロードできます。

 

osquery のダウンロード ページ(osquery.io と GitHub)は、下記のような感じです。

 

osquery のインストールと実行例(Linux)

今回のデモでは、私が使い慣れている Linux(Oracle Linux 8)を使用しました。

いわゆる Red Hat 系ディストリビューション(というか RHEL クローン)なので、下記の RPM をインストールします。

 

RPM を dnf(もしくは yum)でインストールします。

# yum install -y https://pkg.osquery.io/rpm/osquery-5.2.3-1.linux.x86_64.rpm

 

これで、osqueryi コマンドが実行できるようになります。osquery のバージョンは、下記のように確認できます。

# osqueryi --version

 

osquery のメタ コマンド(SQL ではないコマンド)には「.」がつきます。実行結果はセッション録画を参照・・・

# osqueryi .table

 

下記のように SQL を実行すると、OS の情報を確認できます。この例では、OS で実行されていているプロセス情報のテーブル(processes)から、名前が「bash」のものを取得しています。

# osqueryi "SELECT * FROM processes;"
# osqueryi "SELECT pid, name, uid, gid, start_time FROM processes WHERE name = 'bash';"

 

osqueryi のみを実行すると、「osquery>」プロンプトが起動され、SQL やメタ コマンドを、インタラクティブに実行できます。osqueryi を終了するには、「.quit」を実行します。

# osqueryi
osquery> .help
osquery> .schema sudoers
osquery> SELECT * FROM sudoers;
osquery> .quit

 

 

osquery で用意されているテーブルと、その定義(スキーマ)情報については、メタ コマンドの「.table」、または osquery のサイトなどで確認できます。

メタ コマンドであれば、「.table <文字列>」で存在するテーブル名を確認できます。そしてテーブルの定義情報は「.schema <テーブル名>」で確認できます。

 

osquery での情報収集の例

実際に processes テーブルで、プロセス名が「bash」のプロセスを探してみます。

そして users テーブルで、uid が 1000 のユーザを探してみます。

 

たとえば、oseuery によって用意された processes テーブルだけでは、実行しているユーザの uid はわかりますが、ユーザ名がわかりません。

 

そこで SQL を利用することで、複数のテーブルから情報取得できます。

例では、processes テーブルと users テーブルを組み合わせて、bash を起動したユーザ名を確認しています。このように、習得しやすい SQL による OS 情報取得ができるようになります。

 

同様に、Windows でも osquery をインストールすることで、SQL による OS 情報収集が可能になります。ただし、コマンドは osqueryi ではなく osqueryi.exe になります。

Windows ならではの、インストールされたプログラムの一覧なども取得可能です。

 

Carbon Black での osquery(Live Query)

Carbon Black で利用される Live Query の機能は、CBC Sensor に含まれています。つまり、CBC Sensor をインストールするだけで osquery もインストールされます。Carbon Black においては、osquery 単体をインストールしたり、コマンド ラインから osqueryi を直接実行したりすることはありません。
ちなみに、CBC Sensor ごとの osquery バージョンについては、下記のドキュメントから確認できます。

 

OSS の osquery との主な違いとしては、次のような点が挙げられます。

  • CBC で管理されているデバイスに、まとめて実行できる。
  • 過去のクエリ結果を確認できる。
  • プリセットのクエリが用意されている。直接 SQL を記述することも可能。

 

ちなみに、CBC Sensor から実行される osquery のプロセスを確認すると、Windowsであれば、osqueryi.exe が Live Query 実行に起動されていることがわかります。

実際に、実行対象の Windows でプロセスを直接確認したり、CBC Console の Investigation などから調査すると、BladeRanner.exe が親プロセスとなっている「C:\Program Files\Confer\Blades\LiveQuery\osqueryi.exe」が実行されることが
確認できます。BladeRanner.exe については Carbon Black Cloud Console からリモートで修復対応をする機能である「Live Response」でも利用されています。

 

Carbon Black での Live Query の活用例

下記のように、Carbon Black Community などで、Live Query むけの SQL が公開されることがあります。

 

Carbon Black Community の Code Exchange

 

VMware(Carbon Black)の TAU-TIN

 

TAU-TIN では、影響確認のための、Live Query むけの SQL が案内されることがあります。

 

OSS の osquery 自体も、下記のようにセキュリティ目的で利用されることがあります。当然ながら、これらの SQL は Live Query でも活用できます。

 

MITER ATT&CK の osquery へのマッピング

 

Test Drive での Live Query 動作確認

Live Query を VMware TestDrive でためす場合は、Intrinsic Security タブにある「VMware Carbon Black ~」という名前のコンテンツが利用できます。

ただし、TestDrive を利用するには、VMUG Advantage メンバー(もしくは VMware のパートナー、vExpert など)になる必要があります。

 

当日の録画

当日の録画はこちら。

www.youtube.com

 

イベントのプレイリストです。

 

以上、osquery と Carbon Black についての話でした。