Powered by Zoomin Software. For more details please contactZoomin

Flowmon ADS

カスタムパターン

  • Last Updated: April 5, 2026
  • 21 minute read
    • Flowmon Products
    • Flowmon Anomaly Detection System
    • Documentation

Flowmon ADSアプリケーションでは、シンプルなカスタム振る舞いパターンを作成できます。これらのパターンは、[設定] → [処理][カスタムパターン]で定義できます。これらのパターンは、BPATTERNSメソッドによる処理を有効にできます。パターンは、バイフローレコードからのシンプルなSQLクエリとして定義されます(「バイフローエントリのフィールド」を参照してください)。

バイフローレコードは、ペアになっているフロー(リクエストと返信)によって構成されます。方向ごとに異なるフロー項目は、元の方向に従ってプレフィックス付きでバイフローレコードに保存されます。たとえば、転送されたデータの量はreq_transferredフィールドとrep_transferredフィールドに保存されます。両方の元のフローで同じフロー項目は、リクエストフローに従って1回だけ保存されます。たとえば、バイフローレコードの送信元IPアドレスは、返信では宛先として指定されますが、リクエストフローの送信元IPアドレスに相当します。ペアになっていないフローの場合は、リクエストフローに対応する項目のみがバイフローレコードに入力されます。

カスタムパターンの編集可能なパラメータには、[パターンコード][パターンの説明]、[パターン詳細]**、パターン式パラメータがあります。

  • [パターンコード]では、パターン(BPATTERNSメソッドで指定されたパターンをアクティブ化(非アクティブ化)するためのパラメータとして使用されます)を指定します。

  • [パターンの説明]パラメータでは、パターンによって検知されたイベントについて説明します。

  • [パターン詳細]は、イベント詳細の部分文字列として使用されます。

  • パターン式は、where句having句、イベントソースで表されます。

カスタム振る舞いパターン用に生成されるイベント詳細文字列には以下が含まれます。

  • パターンの短い説明([パターン詳細]パラメータから取得)

  • イベントソースからイベントターゲットへの発信フローの数

  • イベントターゲットからイベントソースへの受信フローの数

  • イベントソースがイベントターゲットに送信したデータの数

  • イベントソースがイベントターゲットから受信したデータの数

  • イベントソースがイベントターゲットに送信したパケットの数

  • イベントソースがイベントターゲットから受信したパケットの数

  • イベントターゲットの数

送信元IPアドレスと宛先IPアドレスを含むバイフローテーブルがあります。[イベントソース]オプションを使用して、イベントのイベントソースとして送信元IPアドレス(デフォルトオプション)または宛先IPアドレスを使用するかどうかを指定できます。宛先IPアドレスをイベントソースとして選択した場合、宛先IPアドレスによってグループ化されたレコードからイベントが検知され、宛先IPアドレスがイベントソースとして使用され、関連するすべてのIPアドレスがイベントターゲットになります。イベントソースに応じて、ターゲットIPと通信していたすべての宛先IPアドレスまたは送信元IPアドレスがイベントターゲットとして表示されます。たとえば、SRVNA検知メソッドでは、宛先IPアドレスによるグループ化を使用し、使用できないターゲット(サービスのIPアドレス)をイベントソースとして、すべての送信元IPアドレス(クライアントの接続試行)をイベントターゲットとしてマークします。

where句とhaving句

パターン自体は、SQL形式で記述されたwhere式とhaving式で定義されます。where式とhaving式で有効なSQLite言語のすべての構成要素がサポートされます。これには下記の演算子と関数が含まれます。文字列を囲むために一重引用符(アポストロフィ)が必要です。これは両方の式に当てはまります。論理式の要素をカッコ内に挿入できます。

where式は、定義済みの条件に基づき、論理演算子と関数を使用してレコードをフィルタリングすることを目的としています。having式では、これらの結果を使用する集計関数を使用できます。つまり、having式とwhere式の違いは、where式がテーブルの行を操作して個々の行をフィルタリングし、その後、havingが集計関数を使用してレコードのグループを操作するオプションを追加する、ということです。以下の集計関数がサポートされます。

  • SUM: 値の合計

  • AVG: 値の平均

  • COUNT: 値の数

  • MAX: 最大値

  • MIN: 最小値

  • VARIANCE: 値の分散

  • STDDEV: 標準偏差

集計関数の一覧とその説明については、SQLiteのマニュアルを参照してください(「集計関数」を参照してください)。where式とhaving式の詳細については、それぞれこちらこちらを参照してください。

カスタムパターンの例」を参照してください。

バイフローエントリのフィールド

以下のフィールドをフィルタリングに使用できます。

  • source_ip_address: 内部形式の送信元IPアドレス。「変換機能のための関数」を参照してください。

  • destination_ip_address: 内部形式の宛先IPアドレス。「変換機能のための関数」を参照してください。

  • protocol: プロトコル番号。

  • source_port: 送信元ポート番号。

  • destination_port: 宛先ポート番号。

  • req_duration: リクエストフローのミリ秒単位の時間(整数)。

  • rep_duration: レスポンスフローのミリ秒単位の時間(整数)。

  • req_transferred: リクエストフローの合計送信バイト数(整数)。

  • rep_transferred: レスポンスフローの合計送信バイト数(整数)。

  • req_packets: リクエストフローの合計パケット数(整数)。

  • rep_packets: レスポンスフローの合計パケット数(整数)。

  • req_flags: リクエストフローのTCPフラグ。適切なフィルタリング関数を使用することをお勧めします(「変換機能のための関数」を参照してください)。

  • rep_flags: レスポンスフローのTCPフラグ。

  • src_mac: 10進数の送信元MACアドレス。「変換機能のための関数」を参照してください。

  • dst_mac: 10進数の宛先MACアドレス。「変換機能のための関数」を参照してください。

  • src_as: 送信元の自律システム番号。

  • dst_as: ターゲットの自律システム番号。

  • src_country: 送信元IPアドレスに割り当てられる国番号(「国の一覧」を参照してください)。

  • dst_country: 宛先IPアドレスに割り当てられる国番号。

  • http_host: HTTPホスト名の最後の32文字。DNSクエリの場合は、クエリされたDNS名が含まれる場合があります。

  • http_url: HTTP GETリクエストで取得されたURLの最初の64文字。

  • src_user_id: 送信元IPアドレス(Flowmon OSの設定の場合は、Active Directoryから取得したもの)を使用しているユーザのID。

  • dst_user_id: 宛先IPアドレスを使用しているユーザのID。

  • tcp_ttl: TCP TTL。TCP SYNフラグが設定されている場合にのみ設定されます。

  • tcp_window: TCPウィンドウ。TCP SYNフラグが設定されている場合にのみ設定されます。

  • syn_size: リクエストフローのTCP SYNパケットのサイズ。

  • ua_os: オペレーティングシステムの番号(HTTPユーザエージェントから取得されます。「オペレーティングシステムの一覧」を参照してください)。65535はOSが不明であることを意味します。

  • ua_os_version: オペレーティングシステムのバージョン番号(HTTPユーザエージェントから取得されます)。10進数で、その整数部はメジャーバージョンを、小数部はマイナーバージョンを表します。65535以上の番号はバージョンが不明であることを意味します。

  • paired: バイフローにフローペア全体が含まれているか、単一のペアになっていないフローのみがあるかを示します。数値は0または1です。

  • ja3_fingerprint: クライアントのTLS JA3フィンガープリントの値。これは、16進数字の32文字長のストリングです。

カスタムパターン定義で使用できる変数:

  • #src_filter#: 割り当てられているフィルタ。送信元IPアドレスに適用されます。

  • #dst_filter#: 割り当てられているフィルタ。宛先IPアドレスに適用されます。

  • #neg_src_filter#: 割り当てられているフィルタのネガティブバージョン。送信元IPアドレスに適用されます(IPアドレスは指定されたフィルタの範囲外になければなりません)。

  • #neg_dst_filter#: 割り当てられているフィルタのネガティブバージョン。宛先IPアドレスに適用されます。

カスタムパターン定義で使用できる演算子

  • =: 等価テスト(source_port = 80)

  • <>: 不等テスト(protocol <> 6)

  • >: より大きい(req_transferred > 102400)

  • <: より小さい(req_duration < 10)

  • >=: 以上

  • <=: 以下

  • IN: 指定されたセットに属する(destination_port IN (80, 443))

  • BETWEEN . . .AND: 指定された範囲に属する(req_duration BETWEEN 10 AND 60 (指定された境界を含みます))

  • LIKE: 指定された部分文字列を含む文字列(http_host LIKE '%facebook%' (パーセント記号は任意の文字列を表します))。

  • NOT: 指定された制約の否定(NOT (req_duration < 10 AND source_port = 80))

  • +: 加算(req_transferred + rep_transferred >= 1048576)

  • : 減算(req_duration - rep_duration > 3)

  • *: 乗算(req_transferred * paired > 0)

  • *: 除算(req_transferred / req_packets = 40)

パターンの関数

カスタムパターン定義で使用できる関数:

  • matchflags(flags, required, forbidden): TCPフラグと一致させるための関数。flagsreq_flagsまたはrep_flagsに置き換える必要があります。この関数は、flagsにすべてのrequiredフラグが含まれていて*forbiddenフラグが含まれていない場合(および含まれていない場合にのみ) 0を返します。この関数は、0との等価テストとして使用する必要があります。
注:

例:

  • matchflags('RUAPSF', 'AP', '-') = 0
  • matchflags('..APS.', 'A', 'F') = 0
  • matchflags('..APS.', 'A', 'S') <> 0
  • matchflags('..APS.', '-', 'R') = 0
  • ip_to_int(readable_ip): IPアドレスを内部形式に変換するための関数。

  • mac_to_int(readable_mac): MACアドレスを内部形式に変換するための関数。

国の一覧

LAN

ローカルエリアネットワーク

0

AF

アフガニスタン

4

AX

オーランド諸島

248

AL

アルバニア

8

DZ

アルジェリア

12

AS

米国領サモア

16

AD

アンドラ

20

AO

アンゴラ

24

AI

アンギラ

660

AQ

南極

10

AG

アンティグアバーブーダ

28

AR

アルゼンチン

32

AM

アルメニア

51

AW

アルバ

533

AU

オーストラリア

36

AT

オーストリア

40

AZ

アゼルバイジャン

31

BS

バハマ

44

BH

バーレーン

48

BD

バングラデシュ

50

BB

バルバドス

52

BY

ベラルーシ

112

BE

ベルギー

56

BZ

ベリーズ

84

BJ

ベナン

204

BM

バミューダ

60

BT

ブータン

64

BO

ボリビア多民族国

68

BQ

ボネール、シントユースタティウスおよびサバ

535

BA

ボスニアヘルツェゴビナ

70

BW

ボツワナ

72

BV

ブーヴェ島

74

BR

ブラジル

76

IO

イギリス領インド洋地域

86

BN

ブルネイダルサラーム

96

BG

ブルガリア

100

BF

ブルキナファソ

854

BI

ブルンジ

108

KH

カンボジア

116

CM

カメルーン

120

CA

カナダ

124

CV

カーボベルデ

132

KY

ケイマン諸島

136

CF

中央アフリカ共和国

140

TD

チャド

148

CL

チリ

152

CN

中国

156

CX

クリスマス島

162

CC

ココス(キーリング)諸島

166

CO

コロンビア

170

KM

コモロ

174

CG

コンゴ

178

CD

コンゴ民主共和国

180

CK

クック諸島

184

CR

コスタリカ

188

CI

コートジボワール

384

HR

クロアチア

191

CU

キューバ

192

CW

キュラソー島

531

CY

キプロス

196

CZ

チェコ共和国

203

DK

デンマーク

208

DJ

ジブチ

262

DM

ドミニカ

212

DO

ドミニカ共和国

214

EC

エクアドル

218

EG

エジプト

818

SV

エルサルバドル

222

GQ

赤道ギニア

226

ER

エリトリア

232

EE

エストニア

233

ET

エチオピア

231

FK

フォークランド諸島(マルビナス諸島)

238

FO

フェロー諸島

234

FJ

フィジー

242

FI

フィンランド

246

FR

フランス

250

GF

フランス領ギアナ

254

PF

フランス領ポリネシア

258

TF

フランス領南方・南極地域

260

GA

ガボン

266

GM

ガンビア

270

GE

ジョージア

268

DE

ドイツ

276

GH

ガーナ

288

GI

ジブラルタル

292

GR

ギリシャ

300

GL

グリーンランド

304

GD

グレナダ

308

GP

グアドループ島

312

GU

グアム島

316

GT

グアテマラ

320

GG

ガーンジー島

831

GN

ギニア

324

GW

ギニアビサウ

624

GY

ガイアナ

328

HT

ハイチ

332

HM

ハード島およびマクドナルド諸島

334

VA

教皇庁(バチカン市国)

336

HN

ホンジュラス

340

HK

香港

344

HU

ハンガリー

348

IS

アイスランド

352

IN

インド

356

ID

インドネシア

360

IR

イランイスラム共和国

364

IQ

イラク

368

IE

アイルランド

372

IM

マン島

833

IL

イスラエル

376

IT

イタリア

380

JM

ジャマイカ

388

JP

日本

392

JE

ジャージー島

832

JO

ヨルダン

400

KZ

カザフスタン

398

KE

ケニア

404

KI

キリバス

296

KP

朝鮮民主主義人民共和国

408

KR

大韓民国

410

KW

クウェート

414

KG

キルギスタン

417

LA

ラオス人民民主共和国

418

LV

ラトビア

428

LB

レバノン

422

LS

レソト

426

LR

リベリア

430

LY

リビア

434

LI

リヒテンシュタイン

438

LT

リトアニア

440

LU

ルクセンブルグ

442

MO

マカオ

446

MK

北マケドニア共和国

807

MG

マダガスカル

450

MW

マラウイ

454

MY

マレーシア

458

MV

モルディブ

462

ML

マリ

466

MT

マルタ

470

MH

マーシャル諸島

584

MQ

マルティニーク島

474

MR

モーリタニア

478

MU

モーリシャス

480

YT

マヨット島

175

MX

メキシコ

484

FM

ミクロネシア連邦

583

MD

モルドバ共和国

498

MC

モナコ

492

MN

モンゴル

496

ME

モンテネグロ

499

MS

モントセラト島

500

MA

モロッコ

504

MZ

モザンビーク

508

MM

ミャンマー

104

NA

ナミビア

516

NR

ナウル

520

NP

ネパール

524

NL

オランダ

528

NC

ニューカレドニア

540

NZ

ニュージーランド

554

NI

ニカラグア

558

NE

ニジェール

562

NG

ナイジェリア

566

NU

ニウエ

570

NF

ノーフォーク島

574

MP

北マリアナ諸島

580

NO

ノルウェー

578

OM

オマーン

512

PK

パキスタン

586

PW

パラオ

585

PS

パレスチナ国

275

PA

パナマ

591

PG

パプアニューギニア

598

PY

パラグアイ

600

PE

ペルー

604

PH

フィリピン

608

PN

ピトケアン島

612

PL

ポーランド

616

PT

ポルトガル

620

PR

プエルトリコ

630

QA

カタール

634

RE

レユニオン

638

RO

ルーマニア

642

RU

ロシア連邦

643

RW

ルワンダ

646

BL

サンバルテルミー島

652

SH

セントヘレナ・アセンションおよびトリスタンダクーニャ

654

KN

セントクリストファーネービス

659

LC

セントルシア

662

MF

サンマルタン(フランス領)

663

PM

サンピエール島およびミクロン島

666

VC

セントビンセントおよびグレナディーン諸島

670

WS

サモア

882

SM

サンマリノ

674

ST

サントメプリンシペ

678

SA

サウジアラビア

682

SN

セネガル

686

RS

セルビア

688

SC

セーシェル

690

SL

シエラレオネ

694

SG

シンガポール

702

SX

シントマールテン(オランダ領)

534

SK

スロバキア

703

SI

スロベニア

705

SB

ソロモン諸島

90

SO

ソマリア

706

ZA

南アフリカ

710

GS

サウスジョージアおよびサウスサンドウィッチ諸島

239

SS

南スーダン

728

ES

スペイン

724

LK

スリランカ

144

SD

スーダン

729

SR

スリナム

740

SJ

スヴァールバル諸島およびヤンマイエン島

744

SZ

スワジランド

748

SE

スウェーデン

752

CH

スイス

756

SY

シリアアラブ共和国

760

TW

中国台湾省

158

TJ

タジキスタン

762

TZ

タンザニア連合共和国

834

TH

タイ

764

TL

東ティモール

626

TG

トーゴ

768

TK

トケラウ

772

TO

トンガ

776

TT

トリニダードトバゴ

780

TN

チュニジア

788

TR

トルコ

792

TM

トルクメニスタン

795

TC

タークスカイコス諸島

796

TV

ツバル

798

UG

ウガンダ

800

UA

ウクライナ

804

AE

アラブ首長国連邦

784

GB

イギリス

826

US

アメリカ合衆国

840

UM

合衆国領有小離島

581

UY

ウルグアイ

858

UZ

ウズベキスタン

860

VU

バヌアツ

548

VE

ベネズエラボリバル共和国

862

VN

ベトナム

704

VG

英領バージン諸島

92

VI

米領バージン諸島

850

WF

ウォリスフトゥーナ

876

EH

西サハラ

732

YE

イエメン

887

ZM

ザンビア

894

ZW

ジンバブエ

716

オペレーティングシステムの一覧

ID

OS名

ID

OS名

ID

OS名

1

AIX

26

Arch Linux

51

Nintendo Wii U

2

Amiga OS

27

CentOS

52

OpenBSD

3

Android

28

Debian

53

OpenVMS

4

iOS

29

Fedora

54

OS/2

5

Mac OS

30

Gentoo

55

OS/2 Warp

6

Mac OS X

31

Knoppix

56

Palm OS

7

AROS

32

Kanotix

57

OPClinuxOS

8

Bada

33

Linspire

58

QNX

9

BeOS

34

Mageia

59

RISC OS

10

BlackBerry

35

Mandriva

60

Sailfish

11

BlackBerry Tablet

36

Mint

61

SkyOS

12

Brew

37

Red Hat

62

Solaris

13

Chrome OS

38

Slackware

63

Syllable

14

Danger Hiptop

39

SUSE

64

Symbian

15

Darwin

40

Ubuntu

65

Tizen

16

DragonFly BSD

41

VectorLinux

66

Ubuntu Touch

17

Firefox OS

42

LiveArea

67

webOS

18

FreeBSD

43

MeeGo

68

Windows

19

GNU OS

44

MINIX

69

Windows 3.x

20

Haiku OS

45

MorphOS

70

Windows CE

21

HP-UX

46

MSN TV (WebTV)

71

Windows Phone

22

Inferno

47

NetBSD

72

Windows Xbox

23

IRIX

48

Nintendo 3DS

73

XrossMediaBar

24

Joli OS

49

Nintendo DS

25

Linux

50

Nintendo Wii

カスタムパターンの例

注:

192.168.1.10で実行されているSSHハニーポットでの通信を検知する例(5つを超えるパケットを含むフローのみが対象):

where式:

#neg_src_filter# AND destination_ip_address = ip_to_int('192.168.1.10') AND destination_port = 22

AND protocol = 6 AND matchflags(req_flags, 'S', '-') = 0 AND req_packets > 5

注:

sambaプロトコル経由で合計1GBを超えるデータを伝送しているステーションを検知する例:

where式:

#src_filter# AND destination_port = 445 AND protocol = 6

having式:

SUM(req_transferred) + SUM(rep_transferred) > 1048576000

注:

ポートスキャン検知の例。この場合、having式によってスキャン試行の最小回数が制限されています。

where式:

#src_filter# AND destination_port < 1024 AND protocol = 6 AND req_flags IN ('....S.', '......', '.....F', 'U.P..F')

having式:

COUNT(*) >= 100

TitleResults for “How to create a CRG?”Also Available inAlert