現場(環境):CentOS 7
專案套件: tomcat
測試工具: curl
原因:
現在市面上提供的攻擊或是偵測的opensource越來越多,
只要對一個網站隨意進行偵測,
就可以知道他所屬的作業系統及Service版本(而且連該版本有甚麼漏洞都會一併提示出來)。
在這種狀況之下,為了避免自己的Service直接就被他人找到破解方法;就要進行簡單的偽裝手段。
當然偽裝只是簡單的延緩惡意人士的攻擊,它並非是個完全解決他人惡意偵測及攻擊的手段。
處理:
本專題準備將linux系統簡單偽裝成Windows服務。
在市面上Windows是最大使用者使用的平台,也是多數人隱蔽的避風港(讓我們感謝微軟的貢獻)。
#echo 128 > /proc/sys/net/ipv4/ip_default_ttl
$CATALINA_HOME --> 表示為Tomcat的預設家目錄,
一般在使用tomcat Serivce的時候都會先定義在環境變數當中。
我們首先要先來修改jar檔內的資料;我們可以把它簡單當成一個壓縮檔來處理。
#cd $CATALINA_HOME/lib
將jar檔解壓縮
#jar xvf catalina.jar
解壓縮後,會出現org、META-INF 資料夾,我們要修改的東西就在那包(org)裡面。
編輯服務器顯示內容:
#vim org/apache/catalina/util/ServerInfo.properties
這邊我們想將tomcat 8.0.30 簡單偽裝成 Microsoft-IIS/8.5 的版本。
這也是為了呼應我們前面提到的,我們將Linux系統偽裝成Windows版本。
替換服務內容為下列:
############################################
server.info=Apache Tomcat/8.0.30
修改成
server.info=Microsoft-IIS/8.5
############################################
接著為了避免自己修改錯誤,我們要先將原始檔進行備份
#mv catalina.jar catalina.jar.bak
再來我們要將我們剛剛重新設定好的檔案,重新打包回jar檔
#jar cvf catalina.jar org
刪除掉解壓縮出來的資料
#rm -rf org
#rm -rf META-INF
修改權限內容(配合原設定的權限修改):
#chmod 644 catalina.jar
#chown tomcat:tomcat catalina.jar
當然這邊如果你為了追求真實性,
應當將這個檔案的修改時間調整的跟其他檔案時間一樣。
修改完jar檔,我們依然要去tomcat的server.xml內修改服務顯示:
#vim $CATALINA_HOME/conf/server.xml
找到以下內容,然後添加 server="Microsoft-IIS/8.5"
這部分會依工程師的設定而有所不同。
#################################################
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000" reloadable="true"
redirectPort="443" URIEncoding="big5"
server="Microsoft-IIS/8.5"/>
################################################
設定完這些資料猴要進行服務重啟:
#CATALINA_HOME/bin/shutdown.sh
#CATALINA_HOME/bin/startup.sh
最後進行檢測。
檢查是否修改正確:
curl -Isk 網址
-k 允許用不安全方式連接。
我們可以簡單測試用工具偵測我們剛剛修改的網站服務。
因為這邊我們使用的是測試主機,
所以它沒有綁上它應該有的Domain Name。
如果修改的是一個有網址的Service,
那後面的網址部分,請自行修改成網址。
下方的測試我們可以看到,
偵測出來這台主機的Service已經由原本我們運作的tomcat被更改為IIS了。
#curl -Isk https://10.10.10.111
HTTP/1.1 200 OK
...................
Server: Microsoft-IIS/8.5
後記:
Tomcat Service是最容易修改及偽裝的Service,
它在進行偽裝時不需要將服務器進行重新編譯及安裝的動作。
目前查到的文件當中,Apahce 、 Nginx這些服務在偽裝的時候,
都必須是在一開始安裝的時候就先進行編譯及修改。
如果未來有人有接觸到這類服務器,
而你又想進行偽裝,建議你一開始就先執行。
(服務運作的當下,要將它重新編譯及修改不是件簡單的事情)
或者可以考慮在你的系統上運作兩種 Web服務器 ,
以 tomcat service為例,
可以在同一台主機上再建立Apahce或者 Nginx服務器,
使用它們的反向代理(proxy)功能,如此也能有效的混淆部分攻擊者的偵測。
(本篇完)
引用自我的BLOG: http://it001.pixnet.net/blog/post/324910738-it%e5%b0%88%e9%a1%8c--tomcat-service-%e5%81%bd%e8%a3%9d