1.5K Views
September 30, 24
スライド概要
USB キャプチャと Suricata の構築で詰んだ話で公開できるもの
 USB通信の中身を見てみようと したけど挫折した話 Raspberry PI で USB キャプチャ環境作ろうとした Raspberry PI で IPS を作ろうとした @nlog2n2 Sekiguchi Toshihiro 1
USBキャプチャ環境 2
USBキャプチャ環境 • どうやら皆んな大好き Wireshark で USB の通信の中身がみれるらしい • セキュリティ関係のツールが一通り入っている Kali Linux というディストリ ビューションがあるらしい 3
必要なツールだけインストールして隔離 • lsusb で usb の情報を見ることは可能だけど、usbview を入れた方がみやす いらしいので、念の為インストールしておく • Wireshark に sudo usermod -G wireshark で起動権限をつけたような... • Wireshark で usb のインタフェースを監視できるように modprobe usbmon という呪文をターミナル上で唱える。 4
隔離環境なので写真をパシャリ 「h」の入力らしきもの 5
隔離環境なので写真をパシャリ 6
IPS環境 7
IPS を入れるべく箱を買う • Raspberry PI 4 Model.B を買う。 • 熱の問題があってヒートシンクがつ いているケースがおすすめとのこと で勢いでついでに発注した。 8
IPS(Suricata) on Raspberry PI • Suricata is a high performance, open source network analysis and threat detection software used by most private and public organizations, and embedded by major vendors to protect their assets. • Suricata は、ほとんどの民間および公的組織で使用され、資産を保護するた めに大手ベンダーによって組み込まれている、高性能のオープンソースのネッ トワーク分析および脅威検出ソフトウェアです。(Google翻訳)https://suricata.io/ 9
IPS(Suricata) on Raspberry PI • 雑に sudo apt-get install suricata する • /etc/suricata 配下を見るが、 うん。よくわからない。 • すべて何かのコンフィグだと言うこと だけはわかる。 10
主な設定ファイル • Suricata自体の設定 /etc/suricata/suricata.yaml を利用する。 • 検知ルール(シグネチャ)の設定 デフォルトでは /etc/suricata/rules 配下の ファイルで設定される。 もし変更したい場合は suricata.yaml の default-rule-path とその下の記載を編集す る。 11
Suricataの設定 12
wlan0 を監視対象に追加する 13
シグネチャの追加準備 • シグネチャとして利用するディレクトリとファイル名を編集する。 • HOME_NETとEXTERNAL_NETにネットワークを指定する。 14
シグネチャの追加 15
シグネチャを設定する What is signature 🤔 16
シグネチャ 公式サイトの説明 2.3. Signatures Suricata uses Signatures to trigger alerts so it's necessary to install those and keep them updated. Signatures are also called rules, thus the name rule- les. With the tool suricataupdate rules can be fetched, updated and managed to be provided for Suricata. ChatGPTの翻訳 Suricataはシグネチャを使用してアラートをトリガーするため、それらをインストールし、最新 の状態に保つ必要があります。シグネチャはルールとも呼ばれ、したがってルールファイルとい う名前が付けられています。ツールsuricata-updateを使用することで、ルールを取得、更新、お よび管理し、Suricataに提供することができます。 fi 17
シグネチャ たぶん、ACLみたいなもん😇 18
とりあえず signatures update 作業 19
シグネチャの追加 作ったシグネチャのファイルに、 • 検知したい通信ルール • 検知したときに記録するメッセージ を設定する。 20
検知できた模様 21
よーし、これらを駆使して、 通信を検知する環境を構築するぞ! 22
あとは nftables を設定し、 IPSモードにして、 ルールを追加するだけ 23
そう言えば誰がこのシグネチャ作るの??? 24
ワイやん😇 俺はそこまで強くない https://docs.suricata.io/en/latest/rules/index.html 25
Suricata のシグネチャの書き方
• 公式で提示されているサンプル
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request Containing Rule in URI";
flow:established,to_server; http.method; content:"GET"; http.uri; content:"rule"; fast_pattern;
classtype:bad-unknown; sid:123; rev:1;)
注意
-> と <> のみ対応
• 意味
<処理> <プロトコル> <送信元ネットワーク> <送信元ポート> <通信方向> <宛先ネットワーク> <宛先ポート>
<オプションの記載。括弧で括られ、セミコロンで区切るスタイル。
キーワードとなる単語は、https://docs.suricata.io/en/latest/rules/meta.html に記載あり。>
26
自力で検出作業は無理と判断 orz 27