WAF指紋探知及び識別技術
25382 ワード
Webアプリケーション防護システム(ウェブアプリケーション級侵入防御システムとも呼ばれる.英語:Web Appliation Firewall、略称:WAF).Webアプリケーションファイアウォールは、HTTP/HTTPSに対する一連のセキュリティポリシーを実行することによって、Webアプリケーションの保護を専門に提供する製品であると国際的に認められています.本論文では一般的なWAF指紋識別のいくつかの技術を紹介します.詳細は以下の通りです.
WAF指紋
Cookie値
Ctrix Netscaler
「Ctrix Netscalerは、HTTPが先頭Cookieに戻る位置に「nsuaft」の値を加えることでCtrixと判断することができます. NetscalerのWAFは国内ではこのようなWAFが少ないです.(この商品はsearch securityが認定した2013最高のファイアウォールです.).
悪意のある要求例:
F 5 BIG IP ASM
HTTP応答
Mod_Security
Mod_SecurityはApacheのために設計されたオープンソースWeb防護モジュールであり、悪意のある依頼Mod_Securityはレスポンスヘッドで“406”に戻ります. Not acceptable」の情報です.
WebKnight
WebKnightはIISの下で使用するWAFデバイスを設計するために使われるもので、一般的です.WebKnightは悪意のリクエストに対して「999」に戻ります. No. Hacking」のメッセージです.
F 5 BIG IPは悪意の要求に対して“419”に戻ります. Unknown」の情報は以下の通りです.
dotDefenderで保護します.netのプログラムも有名です.悪意に対して「dotDefender」に戻ります. Blocked Your Request」の情報です.
要求:
一部の特定WAFは、返信された警告ページに特定のCSSまたはJSファイルを含み、判断の根拠として、WAFクラスでは比較的少ないが、実際にHTTP応答にまとめることもできる.
2つの例を見てください
WAF識別ツール
いくつかのWAFは、自分で返信したメッセージコンテンツをカスタマイズしたり、ユーザー定義の404ページまたは200ページに全部返したりすることができ、WAFデバイスとしての識別を支援するツールがある.
Wafw 00 f
pythonで作成したツールで、オープンソースアドレス:
http://code.google.com/p/waffit/source/browse/trunk/wafw00f.py
Wafw 00 fを用いてWAF装置の関数を判断すると以下のようになる.
Wafw 00 fの検出のほとんどはCookieによる検出である.
F 5 asmの検出ルールは以下の通りです.
Profenseはレスポンスヘッダに'server'と'profense'の情報を含んでいます.
sqlmap
SqlmapはSQLiの脆弱性を検出して利用するツールで、pythonに基づいて編纂するので、業界の認める率はわりに高くて、sqlmapはWAFタイプを探査するのに用いてWafw 00 fを比較したいですにとってまだ少し多いです.
参考:
Mod_でSecurityを例に
自分で修正したような動的パラメータが必要です.
xenoff tx
XSSホールを検出して利用する神器、WAF検出もその機能の一つです.
[via@freebuf」
転載は明記してください.404'sブログ http://www.cnblogs.com/im404/p/3506186.html
WAF指紋
Cookie値
Ctrix Netscaler
「Ctrix Netscalerは、HTTPが先頭Cookieに戻る位置に「nsuaft」の値を加えることでCtrixと判断することができます. NetscalerのWAFは国内ではこのようなWAFが少ないです.(この商品はsearch securityが認定した2013最高のファイアウォールです.).
悪意のある要求例:
1 GET / HTTP/1.1
2 Host: target.com
3 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
4 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
5 Accept-Language: en-US,en;q=0.5
6 Accept-Encoding: gzip, deflate
7 Cookie: ASPSESSIONIDAQQSDCSC=HGJHINLDNMNFHABGPPBNGFKC; ns_af=31+LrS3EeEOBbxBV7AWDFIEhrn8A000;ns_af_.target.br_%2F_wat=QVNQU0VTU0lPTklEQVFRU0RDU0Nf?6IgJizHRbTRNuNoOpbBOiKRET2gA&
8 Connection: keep-alive
9 Cache-Control: max-age=0
F 5 BIG IP ASM
1 F5 BiG IP ASM Cookie “TS+ ” Cookie , :
2 GET / HTTP/1.1
3 Host: www.target.com
4 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
6 Accept-Language: en-US,en;q=0.5
7 Accept-Encoding: gzip, deflate
8 Cookie: target_cem_tl=40FC2190D3B2D4E60AB22C0F9EF155D5; s_fid=77F8544DA30373AC-31AE8C79E13D7394; s_vnum=1388516400627%26vn%3D1; s_nr=1385938565978-New; s_nr2=1385938565979-New; s_lv=1385938565980; s_vi=[CS]v1|294DCEC0051D2761-40000143E003E9DC[CE]; fe_typo_user=7a64cc46ca253f9889675f9b9b79eb66; TSe3b54b=36f2896d9de8a61cf27aea24f35f8ee1abd1a43de557a25c529fe828; TS65374d=041365b3e678cba0e338668580430c26abd1a43de557a25c529fe8285a5ab5a8e5d0f299
9 Connection: keep-alive
10 Cache-Control: max-age=0
HTTP応答
Mod_Security
Mod_SecurityはApacheのために設計されたオープンソースWeb防護モジュールであり、悪意のある依頼Mod_Securityはレスポンスヘッドで“406”に戻ります. Not acceptable」の情報です.
1 :
2 GET /<script>alert(1);</script>HTTP/1.1
3 Host: www.target.com
4 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
6 Accept-Language: en-US,en;q=0.5
7 Accept-Encoding: gzip, deflate
8 Connection: keep-alive
9 :
10 HTTP/1.1 406 Not Acceptable
11 Date: Thu, 05 Dec 2013 03:33:03 GMT
12 Server: Apache
13 Content-Length: 226
14 Keep-Alive: timeout=10, max=30
15 Connection: Keep-Alive
16 Content-Type: text/html; charset=iso-8859-1
17 <head><title>Not Acceptable!</title></head><body><h1>Not Acceptable!</h1><p>An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.</p></body></html>
WebKnight
WebKnightはIISの下で使用するWAFデバイスを設計するために使われるもので、一般的です.WebKnightは悪意のリクエストに対して「999」に戻ります. No. Hacking」のメッセージです.
1 :
2 GET /?PageID=99<script>alert(1);</script>HTTP/1.1
3 Host: www.aqtronix.com
4 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
6 Accept-Language: en-US,en;q=0.5
7 Accept-Encoding: gzip, deflate
8 Connection: keep-alive
9 :
10 HTTP/1.1 999 No Hacking
11 Server: WWW Server/1.1
12 Date: Thu, 05 Dec 2013 03:14:23 GMT
13 Content-Type: text/html; charset=windows-1252
14 Content-Length: 1160
15 Pragma: no-cache
16 Cache-control: no-cache
17 Expires: Thu, 05 Dec 2013 03:14:23 GMT
F 5 BIG IPF 5 BIG IPは悪意の要求に対して“419”に戻ります. Unknown」の情報は以下の通りです.
1 GET /<script> HTTP/1.0
2 HTTP/1.1 419 Unknown
3 Cache-Control: no-cache
4 Content-Type: text/html; charset=iso-8859-15
5 Pragma: no-cache
6 Content-Length: 8140
7 Date: Mon, 25 Nov 2013 15:22:44 GMT
8 Connection: keep-alive
9 Vary: Accept-Encoding
dot DefenderdotDefenderで保護します.netのプログラムも有名です.悪意に対して「dotDefender」に戻ります. Blocked Your Request」の情報です.
要求:
1 GET /---HTTP/1.1
2 Host: www.acc.com
3 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
4 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
5 Accept-Language: en-US,en;q=0.5
6 Accept-Encoding: gzip, deflate
7 Connection: keep-alive
8 Cache-Control: max-age=0
応答: 1 HTTP/1.1 200 OK
2 Cache-Control: no-cache
3 Content-Type: text/html
4 Vary: Accept-Encoding
5 Server: Microsoft-IIS/7.5
6 X-Powered-By: ASP.NET
7 Date: Thu, 05 Dec 2013 03:40:14 GMT
8 Content-Length: 2616
9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
10 <html xmlns="http://www.w3.org/1999/xhtml">
11 <head>
12 <title>dotDefender Blocked Your Request</title>
13 ……
特定のリソースファイル一部の特定WAFは、返信された警告ページに特定のCSSまたはJSファイルを含み、判断の根拠として、WAFクラスでは比較的少ないが、実際にHTTP応答にまとめることもできる.
2つの例を見てください
1 <html><center><iframe width="100%" align="center" height="870" frameborder="0" scrolling="no" src="http://safe.webscan.360.cn/stopattack.html"></iframe></center> </body> </html>
2 HTTP/1.1 405 Not Allowed
3 Server: ASERVER/1.2.9-3
4 Date: Fri, 27 Dec 2013 14:15:14 GMT
5 Content-Type: text/html
6 Connection: keep-alive
7 X-Powered-By-Anquanbao: MISS from uni-tj-ky-sb3
8 Content-Length: 7188
9 <div class="wrapper">
10 <div class="titlelogo"></div>
11 <div class="err_tips"> URL , 。</div>
12 <div class="feedback">
13 <form action="http://report.anquanbao.com/api.php" method="post">
14 <input type="hidden" name="black_code" value="" class="hidden_rule_id" />
15 <input type="hidden" name="deny_time" value="" class="hidden_intercept_time" />
16 <input type="hidden" name="server_id" value="" class="hidden_server_title" />
17 <input type="hidden" name="deny_url" value="" class="deny_url" />
18 <input type="submit" class="submit_img" value="" />
19 </form>
20 </div>
21 <a href="javascript:;"> </a>
22 <a href="javascript:;"> </a>
23 ID:10384
24 :2013/12/27 22:15:14
25 ServerName:uni-tj-ky-sb3/1.2.9-3
WAF識別ツール
いくつかのWAFは、自分で返信したメッセージコンテンツをカスタマイズしたり、ユーザー定義の404ページまたは200ページに全部返したりすることができ、WAFデバイスとしての識別を支援するツールがある.
Wafw 00 f
pythonで作成したツールで、オープンソースアドレス:
http://code.google.com/p/waffit/source/browse/trunk/wafw00f.py
Wafw 00 fを用いてWAF装置の関数を判断すると以下のようになる.
AdminFolder = '/Admin_Files/'
xssstring = '<script>alert(1)</script>'
dirtravstring = '../../../../etc/passwd'
cleanhtmlstring = '<invalid>hello'
isaservermatch = 'Forbidden ( The server denied the specified Uniform Resource Locator (URL). Contact the server administrator. )'
“python wafw00f.py -h” , :
python wafw00f.py http://www.91ri.org/
Cookieによる検出Wafw 00 fの検出のほとんどはCookieによる検出である.
F 5 asmの検出ルールは以下の通りです.
1 def isf5asm(self):
2 # credit goes to W3AF
3 return self.matchcookie('^TS[a-zA-Z0-9]{3,6}=')
応答ヘッダによる検出Profenseはレスポンスヘッダに'server'と'profense'の情報を含んでいます.
1 def isprofense(self):
2 """
3 Checks for server headers containing "profense"
4 """
5 return self.matchheader(('server','profense'))
sqlmap
SqlmapはSQLiの脆弱性を検出して利用するツールで、pythonに基づいて編纂するので、業界の認める率はわりに高くて、sqlmapはWAFタイプを探査するのに用いてWafw 00 fを比較したいですにとってまだ少し多いです.
参考:
https://github.com/sqlmapproject/sqlmap/tree/master/waf
Sqlmapは、WAFデバイスの各々がpythonファイルであることを検出するために使用され、同様にクッキー情報またはヘッダ情報から判断される.Mod_でSecurityを例に
1 #!/usr/bin/env python
2
3 """
4 Copyright (c) 2006-2013 sqlmap developers (http://sqlmap.org/)
5 See the file 'doc/COPYING' for copying permission
6 """
7
8 import re
9
10 from lib.core.enums import HTTP_HEADER
11 from lib.core.settings import WAF_ATTACK_VECTORS
12
13 __product__ = "ModSecurity: Open Source Web Application Firewall (Trustwave)"
14
15 def detect(get_page):
16 retval = False
17
18 for vector in WAF_ATTACK_VECTORS:
19 page, headers, code = get_page(get=vector)
20 retval = code == 501 and re.search(r"Reference #[0-9A-Fa-f.]+", page, re.I) is None
21 retval |= re.search(r"Mod_Security|NOYB", headers.get(HTTP_HEADER.SERVER, ""), re.I) is not None
22 if retval:
23 break
24 return retval
SqlmapがWAFを検出するためのコマンドは以下の通りです.python sqlmap.py -u “http://www.victim.org/ex.php?id=1” --identify-waf
自分で修正したような動的パラメータが必要です.
xenoff tx
XSSホールを検出して利用する神器、WAF検出もその機能の一つです.
[via@freebuf」
転載は明記してください.404'sブログ http://www.cnblogs.com/im404/p/3506186.html