【W(wǎng)EB開發(fā)】webshell攻擊入侵檢測方式
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
簡介 攻擊者在入侵企業(yè)網(wǎng)站時,通常要通過各種方式獲取webshell從而獲得企業(yè)網(wǎng)站的控制權(quán),然后方便進(jìn)行之后的入侵行為。常見攻擊方式有:直接上傳獲取webshell、SQL注入、遠(yuǎn)程文件包含(RFI)、FTP,甚至使用跨站點(diǎn)腳本(XSS)作為攻擊的一部分,甚至一些比較老舊的方法利用后臺數(shù)據(jù)庫備份及恢復(fù)獲取webshell、數(shù)據(jù)庫壓縮等。通用功能包括但不限于shell命令執(zhí)行、代碼執(zhí)行、數(shù)據(jù)庫枚舉和文件管理。 webshell分類 webshell從協(xié)議上來看,最開始基于 TCP、UDP 的 Shell,到后來基于ICMP 的 Shell和基于DNS 的shell 。從依托工具上看,有 nc 反彈、telnet 反彈、SSH 端口轉(zhuǎn)發(fā)等手段,極度猥瑣的甚至還有利用 awk 的反彈 Shell。從語言上看,各種流行的語言都能用來寫后門,從bash 到 3P(Perl Python PHP)再到 Ruby 和 Java。 webshell功能 1)站長工具:被站長常常用于網(wǎng)站管理,服務(wù)器管理等,根據(jù)FSO權(quán)限的不同,作用有在線編輯網(wǎng)頁腳本、上傳下載文件、查看數(shù)據(jù)庫、執(zhí)行任意程序命令等。 2)持續(xù)遠(yuǎn)程訪問:入侵者可以利用從而達(dá)到長期控制網(wǎng)站服務(wù)器的目的,若攻擊者自行修復(fù)了漏洞,以確保沒有其他人會利用該漏洞,攻擊者可以低調(diào)的隨時控制服務(wù)器。一些流行的webshell使用密碼驗(yàn)證和其他技術(shù)來確保只有上傳webshell的攻擊者才能訪問它。(webshell密碼爆破工具表示不服) 3)權(quán)限提升:在服務(wù)器沒有配置錯誤的情況下,webshell將在web服務(wù)器的用戶權(quán)限下運(yùn)行,該用戶權(quán)限是有限的。通過使用webshell,攻擊者可以嘗試通過利用系統(tǒng)上的本地漏洞來執(zhí)行權(quán)限提升,常見的有查找敏感配置文件、通過內(nèi)核漏洞提權(quán)、利用低權(quán)限用戶目錄下可被Root權(quán)限用戶調(diào)用的腳本提權(quán)、任務(wù)計(jì)劃等(從入門到放棄) 4)極強(qiáng)的隱蔽性:有些惡意網(wǎng)頁腳本可以嵌套在正常網(wǎng)頁中運(yùn)行,且不容易被查殺。webshell還可以穿越服務(wù)器防火墻,由于與被控制的服務(wù)器或遠(yuǎn)程主機(jī)交互的數(shù)據(jù)都是通過80端口傳遞,因此不會被防火墻攔截,在沒有記錄流量的情況下,webshell使用post包發(fā)送,也不會被記錄在系統(tǒng)日志中,只會在web日志中記錄一些數(shù)據(jù)提交的記錄。 websehll檢測方式 webshell檢測主要可以從websehll的特征,流量,webshell的操作等方法進(jìn)行檢測。 1.基于webshell特征檢測 常見webshell特征: 1)存在系統(tǒng)調(diào)用的命令函數(shù),如eval,system,cmd_shell,assert等 2)存在系統(tǒng)調(diào)用的文件操作函數(shù),如fopen,fwrite,readdir等 3)存在數(shù)據(jù)庫操作函數(shù),調(diào)用系統(tǒng)自身的存儲過程來連接數(shù)據(jù)庫操作。 4)具備很深的自身隱藏性,可偽裝性,可長期潛伏到web源碼中 5)衍生變種多,可通過自定義加解密函數(shù),利用xor,字符串反轉(zhuǎn),壓縮,截斷重組等方式來繞過檢測。例如通過base64編碼,進(jìn)制運(yùn)算 以上對于webshell本身的行為分析,它帶有對于系統(tǒng)調(diào)用,系統(tǒng)配置,數(shù)據(jù)庫,文件的操作動作,可以通過關(guān)鍵詞匹配文件找出webshell;再如一些壓縮后的數(shù)據(jù),有可能一些WAF并不會檢測到內(nèi)容存在危險。變性后的數(shù)據(jù),WAF也檢測不出存在的危險,但是腳本文件帶有這些特殊的函數(shù),本身就是危險文件。 這些檢測可以通過grep去查找webshell,D盾之類的webshell查殺工具也是利用這種原理,對源碼進(jìn)行查殺。但是遇到一些變形過的webshell后門,關(guān)鍵字搜索不到,這種方式就不適用了 例子: 1)查找存在eval函數(shù)的php文件。
2)如果木馬做了免殺處理,可以查看是否使用加密函數(shù):
3)查看是否做了拼接處理
2.基于webshell流量特征檢測 1)基于流量行為特征的webshell檢測 webshell帶有常見寫的系統(tǒng)調(diào)用、系統(tǒng)配置、數(shù)據(jù)庫、文件的操作動作等,它的行為方式?jīng)Q定了它的數(shù)據(jù)流量中多帶參數(shù)具有一些明顯的特征,通過匹配行為的流量特征做檢測,這也是基于webshell入侵后行為特征進(jìn)行檢測,當(dāng)然也可以從系統(tǒng)層面webshell入侵行為進(jìn)行檢測。 例如:ifconfig system whoami inetstat eval 常見的可以從data數(shù)據(jù)中去檢索攻擊者常用的命令和payload等,當(dāng)然大部分的webshell不會這么直接,可能會經(jīng)過編碼,如最經(jīng)典的webshell中國菜刀采用的是先url編碼再base64編碼,對應(yīng)的采取解碼的方式去發(fā)現(xiàn)敏感的行為特征。這也是抓取流量的好處,因?yàn)樵趙eb訪問日志中,是無法抓取POST方式的包,也就沒法分析webshell入侵后的行為,而流量很好的做到了這一點(diǎn)。 2)經(jīng)過webshell工具特征的檢測 分析常見的webshell工具,然后抓包看其流量特征。 最常見的中國菜刀流量特征為:通過wireshark等抓包工具進(jìn)行分析,可以發(fā)現(xiàn)編碼通信內(nèi)容通過cookie頭傳輸,其中有三個cm、cn和cp變量,這是webacoo webshell管理工具的特征。 3.基于webshell系統(tǒng)行為特征的檢測 這個思路和基于webshell的流量行為特征進(jìn)行檢測的想法大概一致,攻擊者上傳webshell總會做些什么,那么可以去監(jiān)測系統(tǒng)的變化以及敏感的操作,盡可能的去收集服務(wù)器的信息,通過和之前的配置以及文件的變化對比監(jiān)測系統(tǒng)達(dá)到盡可能發(fā)現(xiàn)webshell的成果。 1)文件分析 查看/tmp,/init.d,/usr/bin,/usr/sbin等敏感目錄有無可疑的文件,針對可疑的文件可使用stat進(jìn)行創(chuàng)建修改時間,訪問時間的詳細(xì)查看,若修改時間距離事件日期接近,有線性關(guān)聯(lián),說明可能被篡改或者其他。 例如; 查找24小時內(nèi)被修改的PHP文件:
根據(jù)時間去反推變更的文件:
查找777權(quán)限以及隱藏文件:
2)進(jìn)程分析(可以做)webshell執(zhí)行命令的進(jìn)程是一個實(shí)時的,其它時間就是一個合法的TCP連接,只能實(shí)時監(jiān)控進(jìn)程的狀態(tài)。 使用netstat 網(wǎng)絡(luò)連接命令,分析可疑端口、可疑IP、可疑PID及程序進(jìn)程(top可以實(shí)時動態(tài)的查看系統(tǒng)的整體運(yùn)行情況,主要分析cpu和內(nèi)存多的進(jìn)程,是一個不錯的綜合了多方面信息監(jiān)測系統(tǒng)性能和運(yùn)行信息的實(shí)用工具),最好可以去區(qū)分對外的監(jiān)聽端口和對內(nèi)的監(jiān)聽端口,一般可以有效的查找出后門。 通過以下命令查找隱藏進(jìn)程:
3)系統(tǒng)信息分析:
4)配置文件 如最普通的將pam.d下的ssh的驗(yàn)證模塊改成su的驗(yàn)證模塊,那么再次登錄,驗(yàn)證uid為0,那么root就免密登錄,而一般情況下,不仔細(xì)也是無法觀察出的,還有更多的后門,再入php.ini后門,所以需要去監(jiān)控一些培訓(xùn)文件,與之前的配置文件比較,以便于發(fā)現(xiàn)問題所在。 4.基于web日志webshell行為特征的檢測 webshell的訪問特征(如果你非要告訴我攻擊者把webshell插入了其他的動態(tài)頁面中2333): 1)少量的IP對其發(fā)起訪問 2)總的訪問次數(shù)少 3)該頁面屬于孤立頁面 那么接下來就可以使用awk、uniq、sort或者腳本對url每天的總訪問數(shù)量、url獨(dú)立訪問的頁面等進(jìn)行統(tǒng)計(jì)分析。
在日志提權(quán)的時候盡可能的去除掉一些靜態(tài)的頁面和錯誤請求信息,常見的可以通過grep -v去排除,排除項(xiàng)有:
5.動態(tài)檢測 上面介紹了靜態(tài)檢測,通過對指定腳本的關(guān)鍵詞、高危函數(shù)、文件修改時間、權(quán)限等以及和其他文件的關(guān)聯(lián)性等多個緯度的特征進(jìn)行檢測。速度快,且能快速定位;動態(tài)特征檢測通過Webshell運(yùn)行時使用的系統(tǒng)命令或者網(wǎng)絡(luò)流量及狀態(tài)的異常來判斷動作的威脅程度,Webshell通常會被加密從而避免靜態(tài) 特征的檢測,當(dāng)Webshell運(yùn)行時就必須向系統(tǒng)發(fā)送系統(tǒng)命令來達(dá)到控制系統(tǒng)或者操作數(shù)據(jù)庫的目的,通過檢測系統(tǒng)調(diào)用來監(jiān)測甚至攔截系統(tǒng)命令被執(zhí)行,從行為模式上深度檢測腳本文件的安全性。 這種首先就需要能夠獲取系統(tǒng)執(zhí)行命令的進(jìn)程鏈,然后在根據(jù)配置的規(guī)則進(jìn)行檢測,例如在進(jìn)程鏈中執(zhí)行了nc反彈 6.統(tǒng)計(jì)學(xué) 在日志分析中,基于webshell特征去發(fā)現(xiàn)webshell也范屬于統(tǒng)計(jì)學(xué)。NeoPiS 國外流行的一個基于統(tǒng)計(jì)學(xué)的webshell后門檢測工具,它使用五種計(jì)學(xué)方法在腳本文件中搜索潛在的被混淆或被編碼的惡意代碼。 NeoPi使用以下五種檢測方法: 1)信息熵(Entropy):通過使用ASCII碼表來衡量文件的不確定性; 2)最長單詞(LongestWord):最長的字符串也許潛在的被編碼或被混淆; 3)重合指數(shù)(Indexof Coincidence):低重合指數(shù)預(yù)示文件代碼潛在的被加密或被混效過; 4)特征(Signature):在文件中搜索已知的惡意代碼字符串片段; 5)壓縮(Compression):對比文件的壓縮比。 閱讀原文:原文鏈接 該文章在 2025/5/14 10:02:23 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |