国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

Http指紋識別技術

2019-11-04 11:35:40
字體:
來源:轉載
供稿:網友

Http指紋識別技術
Http指紋識別現在已經成為應用程序安全中一個新興的話題,Http服務器和Http應用程序安全也已經成為網絡安全中的重要一部分.從網絡治理的立場來看,保持對各種web服務器的監視和追蹤使得Http指紋識別變的唾手可得,Http指紋識別可以使得信息系統和安全策略變的自動化,在基于已經設置了審核策略的非凡的平臺或是非凡的web服務器上,安全測試工具可以使用Http指紋識別來減少測試所需要的配置.



本文將介紹現有的Http指紋識別技術,同時也將討論所碰到的一些問題并且拿出可行的解決方案.



一.指紋識別理論



指紋的定義是這樣的:1是指任何表面上的指尖印象或者是在指尖上蘸上墨水而在紙上留下的的墨水印象;2是指可以用來識別的東西:如特色、痕跡或特性等揭露起源的東西,表示物體或物質的特色的證據.



指紋識別可以分為兩步,一是對指紋進行收集和分類;二是將未知的指紋同被儲存在數據庫中的指紋進行比較,從而找出最符合的.



當采集指紋的時候,對物體的所有主要特性的抓取是必要的.采集較多的細節,可以對第二步產生很大的幫助.當比較指紋的時候,很有可能有幾個指紋是被不合適的匹配的,因為可指紋之間微小的差別很輕易使識別產生錯誤,這也要求指紋識別需要很高的技術.



指紋識別技術現在已經是網絡安全的已知技術.操作系統指紋識別在任何的網絡評估中是一件通常的工作,現在也有很多操作系統指紋識別技術.操作系統指紋識別為什么能成功?那是因為每個操作系統實現TCP/ip協議時有微小的差別,當前比較流行的是利用TCP/IP堆棧進行后操作系統識別,相關工具比如Nmap;還有的是利用ICMP進行操作系統識別,代表工具如XPRobe.



Http指紋識別的原理大致上也是相同的:記錄不同服務器對Http協議執行中的微小差別進行識別.Http指紋識別比TCP/IP堆棧指紋識別復雜許多,理由是定制Http服務器的配置文件、增加插件或組件使得更改Http的響應信息變的很輕易,這樣使得識別變的困難;然而定制TCP/IP堆棧的行為需要對核心層進行修改,所以就輕易識別.



二.Banner獲取



查看Http應答頭信息是Http指紋識別中最簡單也是最基礎的,我們可以通過一個Tcp客戶端比如netcat來實現,一般我們用的比較多的是telnet到80端口,然后發送命令來得到響應信息,這里我們以netcat來做例子,以下是三個不同Http服務器的響應信息:



1:Apache1.3.23server:
Http/1.1200OK
Date:Mon,08Sep200317:10:49GMT
Server:Apache/1.3.23
Last-Modified:Mon,08Sep200303:48:19GMT
ETag:"32417-c4-3e5d8a83"
Accept-Ranges:bytes
Content-Length:196
Connection:close
Content-Type:text/Html




2:MicrosoftIIS5.0server:
Http/1.1200OK
Server:Microsoft-IIS/5.0
Expires:Mon,08Sep200301:41:33GMT
Date:Mon,08Sep200316:41:33GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Mon,08Sep200315:32:21GMT
ETag:"b0aac0542e25c31:89d"
Content-Length:7369



3:NetscapeEnterprise4.1server:
Http/1.1200OK
Server:Netscape-Enterprise/4.1
Date:Mon,08Sep200316:19:04GMT
Content-type:text/html
Last-modified:Mon,08Sep200215:37:56GMT
Content-length:57
Accept-ranges:bytes
Connection:close



三.模糊服務器Banner信息



在很多情況下,獲取Banner被證實是一種很好的Http指紋識別方法.但是,網絡治理員會選擇通過配置或者是增加插件來更改或者是模糊服務器的Banner信息.當然,這樣的設置確實是自動的阻止了很多對Http服務器的攻擊.



要讓服務器返回不同的Banner信息的設置是很簡單的,象Apache這樣的開放源代碼的Http服務器,用戶可以在源代碼里修改Banner信息,然后重起Http服務就生效了;對于沒有公開源代碼的Http服務器比如微軟的IIS或者是Netscape,可以在存放Banner信息的Dll文件中修改,相關的文章有討論的,這里不再贅述,當然這樣的修改的效果還是不錯的.



另一種模糊Banner信息的方法是使用插件,這些插件可以提供自定義的Http應答信息.比如ServerMask這個商業軟件就可以提供這樣的功能,它是IIS服務器的一個插件,ServerMask不僅模糊了Banner信息,而且會對Http應答頭信息里的項的序列進行重新組合,從而來模擬Apache這樣的服務器,它甚至有能力扮演成任何一個Http服務器來處理每一個請求.這個軟件可以在以下地址找到:



Http://www.port80software.com/prodUCts/servermask



下面就是一個被自定義Banner信息的Http服務器的例子,Apache服務器被自定義成了未知服務器:
Http/1.1403Forbidden
Date:Mon,08Sep200302:41:27GMT
Server:Unknown-Webserver/1.0
Connection:close
Content-Type:text/html;charset=iso-8859-1



下面是一個使用了ServerMask插件的IIS服務器的例子:
Http/1.1200OK
Server:YesweareusingServerMask
Date:Mon,08Sep200302:54:17GMT
Connection:Keep-Alive
Content-Length:18273
Content-Type:text/html
Set-Cookie:Itworksoncookiestoo=82.3S3.O12.NT2R0RE,4147ON3P,.4OO.;path=/
Cache-control:private



從上面的例子我們可以看到,僅僅從Banner信息來判定Http服務器類型是遠遠不夠的.



四.協議行為



在執行Http協議時,幾乎所有的Http服務器都具有它們獨特的方法,假如Http請求是合法并且規則的,Http服務器返回的應答信息是符合RFC里的描述的.但是假如我們發送畸形的Http請求,這些服務器的響應信息就不同了,不同服務器對Http協議行為表現的不同就是Http指紋識別技術的基本根據和原理.



大家還是喜歡看例子,那就讓我們來舉幾個不同的例子吧,我們將分析3種不同Http服務對不同請求所返回的響應信息,這些請求是這樣的:



1:HEAD/Http/1.0發送基本的Http請求
2:DELETE/Http/1.0發送那些不被答應的請求,比如Delete請求
3:GET/Http/3.0發送一個非法版本的Http協議請求
4:GET/JUNK/1.0發送一個不正確規格的Http協議請求



Exp1:基本的Http請求



我們先發送請求HEAD/Http/1.0,然后分析Http響應頭里的信息,對頭信息里項的排序進行分析.發送的請求命令如下:
C:/>ncapache.example.com80//回車,下同
HEAD/Http/1.0//輸入后回車,下同
響應信息:



1:Apache1.3.23
Http/1.1200OK
Date:Mon,08Sep17:10:49GMT
Server:Apache/1.3.23
Last-Modified:Thu,27Feb200303:48:19GMT
ETag:"32417-c4-3e5d8a83"
Accept-Ranges:bytes
Content-Length:196
Connection:close
Content-Type:text/html



2:IIS5.0
Http/1.1200OK
Server:Microsoft-IIS/5.0
Content-Location:Http://iis.example.com/Default.htm
Date:Mon,08Sep20:13:52GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Mon,08Sep200310:10:50GMT
ETag:W/"e0d362a4c335be1:ae1"
Content-Length:133



3:NetscapeEnterprise4.1
Http/1.1200OK
Server:Netscape-Enterprise/4.1
Date:Mon,08Sep200306:01:40GMT
Content-type:text/html
Last-modified:Mon,08Sep200301:37:56GMT
Content-length:57
Accept-ranges:bytes
Connection:close
比較結果:Apache頭信息里的Server和Date項的排序是不同的.



Exp2:HttpDELETE請求



這次,我們將發送DELETE/Http/1.0請求,我們將分析不同Http服務器對非法請求的應答信息的不同.發送的請求命令:



C:/>ncapache.example.com80
DELETE/Http/1.0



響應信息:
1:Apache1.3.23
Http/1.1405MethodNotAllowed
Date:Mon,08Sep200317:11:37GMT
Server:Apache/1.3.23
Allow:GET,HEAD,POST,PUT,DELETE,CONNECT,OPTIONS,PATCH,PROPFIND,PROPPATCH,
MKCOL,COPY,MOVE,LOCK,UNLOCK,TRACE
Connection:close
Content-Type:text/html;charset=iso-8859-1



2:IIS5.0
Http/1.1403Forbidden
Server:Microsoft-IIS/5.0
Date:Mon,08Sep200320:13:57GMT
Content-Type:text/html
Content-Length:3184



3:NetscapeEnterprise4.1
Http/1.1401Unauthorized
Server:Netscape-Enterprise/4.1
Date:Mon,08Sep200306:03:18GMT
WWW-authenticate:Basicrealm="WebServerServer"
Content-type:text/html
Connection:close



比較結果:Apache響應的是"405MethodNotAllowed",IIS響應的是"403Forbidden",Netscape響應的是"401Unauthorized",發現對Delete請求,響應的信息是完全不同的.



Exp3:非法Http協議版本請求



這次我們將發送非法的Http協議版本請求,比如GET/Http/3.0請求,事實上Http3.0是不存在的,發送請求命令:
C:/>ncapache.example.com80
GET/Http/3.0
響應信息:
1:Apache1.3.23
Http/1.1400BadRequest
Date:Mon,08Sep200317:12:37GMT
Server:Apache/1.3.23
Connection:close
Transfer-Encoding:chunked
Content-Type:text/html;charset=iso-8859-1



2:IIS5.0
Http/1.1200OK
Server:Microsoft-IIS/5.0
Content-Location:Http://iis.example.com/Default.htm
Date:Mon,08Sep200320:14:02GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Mon,08Sep200320:14:02GMT
ETag:W/"e0d362a4c335be1:ae1"
Content-Length:133



3:NetscapeEnterprise4.1
Http/1.1505HttpVersionNotSupported
Server:Netscape-Enterprise/4.1
Date:Mon,08Sep200306:04:04GMT
Content-length:140
Content-type:text/html
Connection:close



比較結果:Apache響應的是"400BadRequest",IIS忽略了這個請求,響應信息是OK,還返回了網站根目錄的HTML數據信息,Netscape響應的是"505HttpVersionNotSupported".



Exp4:不正確規則協議請求



這次測試主要是對GET/JUNK/1.0.請求的響應,發送請求命令:
C:/>ncapache.example.com80
GET/JUNK/1.0
響應信息:
1:Apache1.3.23
Http/1.1200OK
Date:Sun,15Jun200317:17:47GMT
Server:Apache/1.3.23
Last-Modified:Thu,27Feb200303:48:19GMT
ETag:"32417-c4-3e5d8a83"
Accept-Ranges:bytes
Content-Length:196
Connection:close
Content-Type:text/html



2:IIS5.0
Http/1.1400BadRequest
Server:Microsoft-IIS/5.0
Date:Fri,01Jan199920:14:34GMT
Content-Type:text/html
Content-Length:87



3:NetscapeEnterprise4.1





Badrequest



Yourbrowsersentaquerythisservercouldnotunderstand.







比較結果:在這里,Apache忽視了不規則的協議"JUNK",還返回了200"OK"和根目錄的一些信息,IIS響應的是"400BadRequest",Netscape幾乎沒有返回Http頭信息,相反的卻返回了HTML格式的信息來表明這是個錯誤請求.



測試小結:我們下面列了一個表,我們可以很簡單的辨別不同的Http服務器.



服務器頭信息項排序Delete請求非法版本不規則協議
Apache/1.3.23Date,Server405400200
MS-IIS/5.0Server,Date403200400
Netscape4.1Server,Date401505noheader



五.指紋識別工具



這里我們將介紹一個Http指紋識別工具Httprint,它通過運用統計學原理,組合模糊的邏輯學技術,能很有效的確定Http服務器的類型.它可以被用來收集和分析不同Http服務器產生的簽名,什么是Http簽名呢?Http簽名通過16進制轉為ASCII碼如下:



Microsoft-IIS/5.0
CD2698FD6ED3C295E4B1653082C10D64811C9DC594DF1BD04276E4BB811C9DC5
0D7645B5811C9DC52A200B4C9D69031D6014C217811C9DC5811C9DC52655F350
FCCC535BE2CE6923E2CE6923F2454256E2CE69272576B769E2CE6926CD2698FD
6ED3C295E2CE692009DB9B3E6ED3C2956ED3C2956ED3C2956ED3C295E2CE6923
6ED3C295



Apache/1.3.x
9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BB630A04DB
0D7645B5970EE6BB811C9DC5CD37187C11DDC7D78398721EB06FE5D78A91CF57
FCCC535B6ED3C295FCCC535B811C9DC5E2CE69272576B769E2CE69269E431BC8
6ED3C295E2CE69262A200B4C811C9DC5811C9DC5811C9DC5811C9DC5811C9DC5
811C9DC5



Httprint先把一些Http簽名信息保存在一個文檔里,然后分析那些由Http服務器產生的結果.
當我們發現那些沒有例在數據庫中的簽名信息時,我們可以利用Httprint產生的報告來擴展這個簽名數據庫,而當Httprint下一次運行時,這些新加的簽名信息也就可以使用了.



Httprint可以圖形界面運行和命令行下運行,可以運行在Windows、linux和MacOSX平臺上.



以下是命令行下的幫助文件:
D:/>Httprint
Usage:Httprint{-h-i}-s[...options]
-h可以是ip地址ip范圍,或者是url地址
-i一個包含測試地址的文件,默認文件是input.txt
-s一個包含Http簽名的文件,默認是signatures.txt
Options:
-o默認的報告文件是"Httprintoutput.html".可以自己定義
-tpPing超時時間,默認是1000ms.最大是30000ms.
-t連接和讀取超時時間,默認是10000ms.最大是100000ms.
-r時間.默認是3次.最大是30次.
-P0不Ping主機.
-?幫助信息.



例子:
Httprint-hwww.target.com-ssignatures.txt
Httprint-hHttps://www.target.com-ssignatures.txt
Httprint-hHttp://www.target.com:8080/-ssignatures.txt
Httprint-h10.0.1.1-10.0.1.254-ssignatures.txt-o10_0_1_x.html
Httprint-iinput.txt-ssignatures.txt-ooutput.html



使用方法是很簡單的,下面是Httprint的一次輸出結果:



D:/>Httprint-hHttp://www.target.com-ssignatures.txt
Host:www.target.comisalive...
FingerPrintingonHttp://www.target.com:80/
DerivedSignature:
Apache/1.3.26(Unix)
9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BBC184CB92
0D7645B5811C9DC52A200B4C811C9DC511DDC7D78398721E811C9DC5811C9DC5
E2CE6923E2CE6923E2CE6923811C9DC568D17AAE2576B769E2CE6926811C9DC5
E2CE6923E1CE67B1811C9DC5E2CE6920E2CE69206ED3C2956ED3C295E2CE6920
E2CE69206ED3C295811C9DC568D17AAEE2CE6923



BannerReported:Apache/1.3.26(Unix)
BannerDeduced:Apache/1.3.26
Scores:
Microsoft-IIS/4.0:47
Microsoft-IIS/5.0:57
Microsoft-IIS/5.0asp.net:57
Microsoft-IIS/5.1:57
Microsoft-IIS/6.0:75
...........................//略去一些
Apache/2.0.x:70
Apache/1.3.27:79
Apache/1.3.26:80
Apache/1.3.[4-24]:78
............................//略去一些
Com21CableModem:49



在上面的例子中,Httprint顯示了被測服務器的簽名信息,然后將這些信息同數據庫中已有的簽名進行比較,然后對每一個指紋進行評分,分數最高的也就是最符合的.在這個例子里,"Apache/1.3.26"是最適合的.
以下是圖形界面的抓圖:

Httprint會產生一個HTML格式的報告,這個報告將對以后的分析產生很大的作用,下面是一個例子的報告:



Httprint的功能是強大的,盡管大家可以用ServerMask這樣的軟件來模糊指紋,但是仍然可以被Httprint這樣利用統計學原理進行識別的的軟件打敗,下面是一個例子:



D:/>Httprintunknown.example.com
Reportedsignature:
ProtectedbyServerMask
CD2698FD6ED3C295811C9DC5811C9DC5811C9DC594DF1BD04276E4BB811C9DC5
0D7645B5811C9DC5811C9DC59D69031D6014C217811C9DC5811C9DC580FF2CD2
FCCC535BE2CE6923E2CE6923811C9DC5E2CE69272576B769E2CE69262CEAB43E
6ED3C295FCCC535B811C9DC56ED3C2956ED3C2956ED3C2956ED3C295E2CE6923
6ED3C295
BestMatch:Microsoft-IIS/5.0,Microsoft-IIS/5.1
Scores:
Microsoft-IIS/4.0:86
Microsoft-IIS/5.0:101
Microsoft-IIS/5.1:101
Microsoft-IIS/6.0:56
.............................
Apache/1.3.27:35
Apache/1.3.26:36
Apache/1.3.x:34
..............................
MiniServ/0.01:15
盡管服務器使用ServerMask迷惑了響應信息,但是Httprint仍然精確的判定出它是Microsoft-IIS/5.0或5.1




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古浪县| 平泉县| 南陵县| 余姚市| 浏阳市| 库车县| 浠水县| 镇安县| 邹城市| 岑溪市| 繁昌县| 临夏市| 闽清县| 贡嘎县| 皮山县| 赤壁市| 晴隆县| 吴川市| 远安县| 平邑县| 红桥区| 隆安县| 瑞金市| 明光市| 宁武县| 合川市| 建阳市| 万安县| 柘荣县| 仙桃市| 宜昌市| 万安县| 德清县| 新乐市| 绥德县| 元阳县| 林西县| 南阳市| 陕西省| 义乌市| 高唐县|