Skip to main content

検知ルールの例

subprocessパッケージによる新規プロセスの作成

マルウェアの実行・バックドアの実行・外部コマンドによる悪用などに使用されることがあります。

- name: Arbitrary Code Execution using subprocess package
func: _execute_child
file: subprocess.py
value:
cmd: "$func_args[args]"
level: alert

推奨条件記述

外部コマンド(例 : imagemagick)での処理を行う場合、呼び出し関数名を指定します。

  condition:
func: # 呼び出し元関数
allow: # 呼び出し元関数に以下の関数が含まれる場合、検知しない
- imagemagick_convert

Flaskで開発サーバーで動作させる場合、自身のプログラムファイルの実行を指定します。

  condition:
arg: # 引数
allow: # 引数に以下が含まれる場合、検知しない
- "['/usr/local/bin/python', '/app/main.py']"

osパッケージのpopenによる新規プロセスの作成

マルウェアの実行・バックドアの実行・外部コマンドによる悪用などに使用されることがあります。

- name: Arbitrary Code Execution using os.popen
func: popen
file: os.py
value:
cmd: "$func_args[cmd]"
level: alert

urllibによる外部サーバーへのhttp接続

外部サーバーへの情報流出などに使用されることがあります。

- name: External Server Connections using urllib package
func: create_connection
file: socket.py
value:
address: "$func_args[address]"
level: warn

requestによる外部サーバーへのHTTP接続

外部サーバーへの情報流出などに使用されることがあります。

- name: External Server Connections using requests package
func: create_connection
file: connection.py
value:
address: "$func_args[address]"
level: warn

requestsによる外部サーバーへのHTTP接続時のIPアドレスの記録

ip2num関数を検知することで、requestsによる外部サーバーへのHTTP接続時のIPアドレスを記録できます。

- name: IP Address Logging for External Server Connections using requests package
func: ip2num
file: request.py
value:
ip: "$func_args[ipAddr]"
level: info

DNSの名前解決の記録

getaddrinfo関数を検知することで、外部サーバーへの接続時のDNSの名前解決を記録できます。

- name: DNS Query Logging for External Server Connections
func: getaddrinfo
file: socket.py
value:
host: "$func_args[host]"
level: info

推奨条件記述

Flaskを起動する際に、自身のIPアドレス0.0.0.0への名前解決が実行されることがあります。

  condition:
arg: # 引数
allow: # 引数に以下が含まれる場合、検知しない
- 0.0.0.0

環境変数の取得

環境変数に格納された鍵情報や機密パラメーターの流出などに使用されることがあります。

- name: Access to Environment Variable
func: getenv
file: os.py
value:
key: "$func_args[key]"
level: info