高度なカスタム攻撃オブジェクト手法
パターン否定を使用して、安全であることがわかっているパターンを除外し、他のすべてのパターンに一致させることができます。
カスタム攻撃オブジェクト DFA 式
表 1 は、攻撃パターンを照合するための構文の例を示しています。
構文例 |
形容 |
一致例 |
|---|---|---|
こんにちは。。\B.0.1..00\B...世界 |
マッチングには 2 つの側面があります。 ビットマスク パターン \B.0.0.1 と一致する必要があります。00\B ビットマスク パターンの前後のバイト数 (. で表される) と一致する必要があります。 |
一致: こんにちは。。\B.0.11100\B...worldこんにちは..\B.0.10000\B...世界 一致しない: Hello.\B.0.1..00\B.worldこんにちは..\B.0.1..11\B...世界 |
\X01 86 A5 00 00\X |
指定された 5 バイトのパターンをそのまま使用します。 |
01 86 A5 00 00 |
(hello|world) |
hello または world が 1 回出現するパターン。 |
こんにちは 世界 |
(hello|world)+ |
hello または world が 1 回以上出現するパターン。 |
ハローワールド ワールドハロー こんにちはこんにちは |
\[こんにちは\] |
パターン こんにちは、大文字と小文字を区別しません。 |
こんにちは こんにちは こんにちは |
\uこんにちは\u |
パターンこんにちは、Unicodeは無神経です。 |
こんにちは 68656c6c6f |
hello\sワールド |
hello world というパターンで、2 つの単語を空白で区切ります。 |
ハローワールド |
[c-e]a(d|t) |
c、d、または e の最初の文字を持つパターン。真ん中の文字a;dまたはtで終わります。 |
猫 お父さん 食べる |
[^c-d]a(d|t) |
c、d、または e 以外の文字で始まるパターン。2 番目の文字 a があります。d または t で終わります。 |
流行 ザド |
A*B+C |
任意の数の文字 (0 を含む) のパターン。その後に 1 つ以上の B 文字が続きます。その後に C 文字が続きます。 |
紀元前 甲乙丙 aaaabbbbc |
T[株式会社] |
大文字の T で始まり、その後に大文字と小文字を区別しない k が続くパターン。 |
TKの Tkの |
([Tt])k |
大文字と小文字を区別しない t で始まり、その後に小文字の k が続くパターン。 |
Tkの Tkの |
海[で] |
Sea で始まり、その後に小文字の l、m、または n が続くパターン。 |
印章 縫い目 ショーン |
([B-D])を |
大文字の B、C、または D で始まり、その後に小文字の at が続くパターン。 |
蝙蝠 猫 ダット |
\0133\[こんにちは\]\0135 |
左角かっこで始まり、大文字と小文字を区別しない hello が続き、閉じ括弧で終わるパターン。この式では、\0 式を使用して、次の式が 8 進符号であることを示すと、左角かっこ (133) または右角かっこ (135) の 8 進符号が続きます。 |
[こんにちは] [HeLLo] |
パターン否定
たとえば、FTP サーバーへのトラフィックを検査する攻撃オブジェクトを設計しているとします。アカウントのユーザー名とパスワードは、許可されたユーザーのみが内部リソースにアクセスできるように適切に管理されていることがわかっています。しかし、ネットワークが成長し、新しいコンポーネントが追加されると、ユーザーアカウントが増加し、特定のコンポーネントへのネットワークアクセスが増加する可能性があります。この例では、内部ネットワーク上にFTPサーバーがあり、複数のユーザーアカウントが有効になっています。セキュリティを強化するには、FTP 管理者へのアクセスを制限します。
FTP サービス、ftp-username コンテキスト、およびパターン adminの攻撃オブジェクトを作成し、[ 否定(Negate )] チェックボックスをオンにします。その結果、 admin 以外のユーザーによるログイン試行にフラグを立てることができる攻撃オブジェクトが作成されます。この攻撃オブジェクトは、一致するトラフィックをログに記録またはドロップするルールで使用できます。
参照
例: ファイル拡張子の一致
この例では、拡張子 .emf (Windows 拡張メタファイル) と .wmf (Microsoft Windows メタファイル) を使用する Microsoft Windows メタファイルを検出します。
これらのファイルタイプのいずれかに一致させるには、単純な DFA 式を使用します。
.*\.\[w|emf\]
この式では、次のようになります。
ピリオドとアスタリスク (.*) の組み合わせは、1 つ以上の文字が必要であることを示します (ワイルドカード一致)。
バックスラッシュとピリオド文字(\.)の組み合わせは、ピリオド文字がエスケープされていることを示します(ピリオドはパターンに表示されます)。
式 ( ) の先頭と末尾の括弧は、グループを示します。e と w の間のパイプ文字 (e|w) は、文字間の OR 関係を示します。この式では、e または w がこの式と一致するようにパターンに出現する必要があります。存在は 1 つだけです。
左角かっこ (\[) は、右角かっこ (\]) が表示されるまで、すべての文字の大文字と小文字を区別しない一致の開始を示します。
閉じ括弧(\])は、大文字と小文字を区別しない一致の終了を示します。
参照
例:Apache Tomcat のサービス拒否攻撃
この例では、Apache Tomcat を実行している Web サーバーがあることを前提としています。セキュリティー管理者から Apache Tomcat の脆弱性が報告されたことが通知されたので、サーバーにパッチを適用するためのダウンタイムをスケジュールできるようになるまで、ネットワークを保護するためのカスタム攻撃オブジェクトを作成することにしました。
脆弱性(http://nvd.nist.gov/nvd.cfm?cvename=CAN-2002-0682)に対するCVEアドバイザリには、次の引用が含まれています。
A cross-site scripting vulnerability in Apache Tomcat 4.0.3 allows remote attackers to execute script as other web users via script in a URL with the /servlet/ mapping, which does not filter the script when an exception is thrown by the servlet.
この情報から、攻撃がHTTPを使用していることがわかります。次に、攻撃コードを見つける必要があります。このアドバイザリには、攻撃に関する詳細情報にリンクする参照も含まれています。残念ながら、参照されている Web ページには悪用コードは含まれていません。CVEアドバイザリから学習した情報を使用してWebを検索した後、 http://packetstormsecurity.nl/0210-exploits/neuter.c でいくつかの悪用コードを見つけます。スクリプトをコピーし、テスト ラボ内の攻撃者のコンピューターに移動します。
この攻撃オブジェクトを開発するには、次のようにします。
参照
特定のプロトコルの IDP テスト条件
IDP カスタム攻撃を設定する場合、特定のプロトコルのテスト条件の一覧を指定できます。ICMP のテスト条件を一覧表示するには:
ICMP でサポートされているテスト条件を一覧表示し、設定する条件を選択します。サポートされているテスト条件は、
[edit security idp custom-attack test1 attack-type anomaly]階層レベルのCLIで使用できます。user@host#set test icmp? Possible completions: <test> Protocol anomaly condition to be checked ADDRESSMASK_REQUEST DIFF_CHECKSUM_IN_RESEND DIFF_CHECKSUM_IN_RESPONSE DIFF_LENGTH_IN_RESEND
テスト条件を設定するサービスを設定します。
user@host# set service ICMP
テスト条件を設定します(プロトコル名の指定は不要です)。
user@host# set test ADDRESSMASK_REQUEST
デバイスの設定が完了したら、設定モードから
commitを入力します。
例:UNIX CDE/dtlogin の脆弱性
この例では、ネットワークにはUNIXを実行する複数のユーザーワークステーションとサーバーが含まれています。多くの UNIX オペレーティング・システムは、グラフィカル・ユーザー・インターフェースとして共通デスクトップ環境 (CDE) を使用します。セキュリティー管理者は、CDE の dtlogin プロセスに新しい脆弱性があることを通知します (dtlogin プロセスは CDE への GUI ログイン・プロセスを処理します)。
脆弱性(http://www.kb.cert.org/vuls/id/179804)に対するCERTアドバイザリには、次の情報が含まれています。
...The dtlogin program contains a "double-free" vulnerability that can be triggered by a specially crafted X Display Manager Control Protocol (XDMCP) packet... Block XDMCP traffic (177/udp) from untrusted networks such as the Internet...
この情報から、攻撃がXDMCPプロトコルパケットを使用し、UDP/177で実行されていることがわかります。次に、攻撃コードを見つける必要があります。このアドバイザリには、攻撃に関する詳細情報にリンクする参照も含まれています。http://lists.immunitysec.com/pipermail/dailydave/2004-March/000402.html の 1 つの参照は、攻撃を最初に報告した人物が攻撃を再現するスクリプトも作成していることを示しています。スクリプトを入手し、テスト ラボ内の攻撃者のコンピューターに移動します。
この攻撃オブジェクトを開発するには、次のようにします。
参照
例:ワームの検出
ワームやトロイの木馬は、ファイアウォールやその他の従来のセキュリティ対策を迂回してネットワークに侵入することがよくあります。この例では、ネットワーク上の Blaster ワームを検出するためのカスタム攻撃オブジェクトを作成します。
BlasterワームのCERTアドバイザリ(http://www.cert.org/advisories/CA-2003-20.html)には、次の情報が記載されています。
The W32/Blaster worm exploits a vulnerability in Microsoft's DCOM RPC interface...”
この情報から、この攻撃は以前に特定されたセキュリティ ホールである DCOM エクスプロイトを使用していることがわかります。次に、攻撃コードを見つける必要があります。このアドバイザリには、攻撃に関する詳細情報にリンクする参照も含まれています。残念ながら、参照されている Web ページには悪用コードは含まれていません。CERTアドバイザリから学習した情報を使用してWebを検索した後、PacketStorm(http://packetstormsecurity.com/0307-exploits/dcom.c)でエクスプロイトコードを見つけます。
この攻撃オブジェクトを開発するには、次のようにします。
参照
例:HTTP 脆弱性のエクスプロイトを検出するための複合シグネチャ
一部の攻撃は、パケット単位で見ると無害に見えるように細工されています。これらの攻撃では、複数のコンテキスト(サービス、非サービス、またはその両方)で複数のシグニチャパターンを検出する複合シグネチャを作成できます。
この例では、Microsoft FrontPage Server 拡張機能を使用する Web サーバーがあります。セキュリティ管理者は、FrontPage Server 拡張機能に新しいバッファ オーバーフローの脆弱性があることを通知します。
脆弱性 (http://www.securityfocus.com/bid/9007/discussion/) に対する BugTraq アドバイザリには、次の情報が含まれています。
Microsoft FrontPage Server Extensions are prone to a remotely exploitable buffer overrun vulnerability ... It is possible to trigger this condition with a chunked-encoded HTTP POST request...
次の概念実証の例も提供されています。
POST /_vti_bin/_vti_aut/fp30reg.dll HTTP/1.1 Transfer-Encoding: chunked PostLength PostData 0
さらに、コンパイルされたエクスプロイトへのリンクが含まれています。
この情報から、攻撃が HTTP プロトコルを使用しており、攻撃の少なくとも一部が POST メソッドを使用していることがわかります。コンパイルされたエクスプロイトへのリンクを使用してスクリプトを取得し、テストラボ内の攻撃者のコンピューターに移動します。
この攻撃オブジェクトを開発するには、次のようにします。
参照
例: タイムバインディングパラメータを使用したブルートフォース攻撃の検出
タイムバインディング制約では、トラフィックが一致しているとみなされるために、パターンが1分間に一定回数発生する必要があります。
時間バインディングパラメーターを署名と共に使用して、ブルートフォース攻撃の兆候を検出できます。ユーザーがパスワードを変更することは無害なイベントであり、通常はネットワーク上で時折見られます。しかし、1分間に何千ものパスワード変更を行うのは疑わしいものです。
ブルートフォース攻撃では、攻撃者はシステムの防御を突破しようとします。通常、宛先サーバーの容量を圧倒するか、認証資格情報の照合を試行錯誤を繰り返します。ブルートフォースログイン攻撃では、攻撃者は最初にユーザー名のリストとパスワード辞書を収集します。次に、攻撃者はツールを使用して、リスト内の最初のユーザーの辞書に最初のパスワードを入力し、一致するまですべてのユーザーのすべてのパスワードを試します。攻撃者がユーザー名とパスワードのすべての組み合わせを試みた場合、それらは常に成功します。ただし、通常、パスワード辞書は制限されており(すべての可能なパスワードが含まれているわけではありません)、攻撃ツールがパスワードの順列(文字の逆や大文字と小文字の変更など)を実行しないため、ブルートフォース攻撃はしばしば失敗します。
この例では、HTTP (Web ベースのアプリケーション) を介して認証されたユーザーの過剰な数のパスワード変更を検出する署名攻撃オブジェクトを作成します。
まず、攻撃パターンを設定します。
.*/\[changepassword\.cgi\]
この式では、次のようになります。
ドット スターの組み合わせ (.*) は、ワイルドカードの一致を示します。
文字の前のバックスラッシュは、その文字が正規表現を表しており、エスケープする必要があることを示します。この場合、文字は左括弧です。バックスラッシュは、この式では、ファイル拡張子マーカー (ドット) の前と右角かっこの前でも使用されます。
ユーザー・パスワードの変更に使用される cgi スクリプトの名前と、cgi 拡張モジュールが含まれています。
[コンテキスト] では、Web ベースのアプリケーションで発生するパスワードの変更を検出しようとしているため、一覧から [HTTP-URL-PARSED] を選択します。changepassword.cgi スクリプトを使用すると、URL の一部として表示されますが、名前を検索するには、URL を解析するように IDP シリーズ デバイスに指示する必要があります。
次に、タイムバインディングを設定します。
これらの設定では、次のようになります。
スコープは ピア に設定されているため、攻撃パターンは送信元または宛先に関係なくイベントに一致できます。
Count は、誤検知を避けるために大きな数値 (1000 まで) に設定されます。この値は、攻撃オブジェクトが一致する前に、changepassword.cgiスクリプトがURLに1000回出現する必要があることを意味します。