about

chromoly

github.com/n01e0/chromoly

what

chromeのCookieを守る

why

基本的にChrome以外のプロセスがCookieが触ることはないはずなので、それ以外のプロセスから触れた瞬間、ちょっと監視してアラートを出すものを作ることは、現時点ではたぶん一番有効な感じです。

ペンテスターの目線から考える、監視システムの現状

how

fanotify

ファイルシステムのイベントをユーザランドに通知する機能

あるファイルが開かれようとするときに通知が飛び, 開こうとしているプロセスの情報などをもとに, その可否を決めることができる

その機能を使って, chromeのCookieを開こうとするプロセスの フィルタリングを行う

why not

eBPFを使わなかった理由

「ファイルへのアクセスをプロセス情報をもとにフィルタリングする」

という機能で言えば,eBPFでも良い

が,eBPFでやるとするとopenにhookを作成する事になりそう

→流石に全部のopenでhookが走るのは遅くなりそう

という事で,ファイル/マウントポイント単位での監視ができるfanotifyを使った

eBPFで細かい単位の監視をする方法を知っている人がいたら教えてください

where

Q. chromeのCookieはどこに?

A. $XDG_CONFIG_HOME/google-chrome/

基本的にはProfileごとにファイルが別れている

Linux以外でも似たような感じ

configで指定する事も可能

Q. chromeの判定はどうやって?

A. 現状,バイナリを手で探してハードコードしています

例えばaptで入るgoogle-chrome-stableは,wrapperのリンクで,実際に動いているchromeのバイナリは

/opt/google/chrome/chrome

whichで探してもwrapperのリンクな上,実際にcookieを触るバイナリは別であるので面倒

ここはとりあえず†人の手†の温かみで,ハードコード+configによる指定

usage

usage

config

pid_file: /etc/chromoly/chromoly.pid
log_file: /etc/chromoly/chromoly.log
user: chromoly
workdir: /etc/chroomly
chrome_binary: # Optional
 - /opt/google/chrome/chrome
cookies: # Optional
 - /some/path/to/cookies

demo

demo

おわりに

この記事はIPFactory advent calendar 2022の20日目の記事です。風邪っぽくて体調が完全に終わっているので昔やったLTの焼き増しです。すみません。

昨日は0kqによるCOEIRONKのエンジンをUbuntuで動かす。明日はk08a1tの記事です。