很多入侵者在攻破一個linux系統後,都會在系統中留下後門,用openssh留後門是入侵者的慣用方式之一。openssh後門比較難檢測,本文選自《黑客攻防:實戰加密與解密》将與您一起探讨如何添加及防範openssh後門。
openssh是ssh(secure shell)協定的免費開源實作。很多人誤認為openssh與openssl有關聯,但實際上這兩個計劃有不同的目的和不同的發展團隊,名稱相近隻是因為兩者有同樣的發展目标──提供開放源代碼的加密通信軟體。
ssh協定族可以用來進行遠端控制,或者在計算機之間傳送檔案。而實作此功能的傳統方式,如telnet(終端仿真協定)、rcp、ftp、rlogin、rsh,都是極不安全的,并且會使用明文傳送密碼。openssh提供了服務端背景程式和用戶端工具,用來加密遠端控件和檔案傳輸過程中的資料,并由此來代替原來的類似服務。openssh是通過計算機網絡使用ssh加密通信的實作,是取代由ssh communications security提供的商用版本的開放源代碼方案。在openssh服務中,sshd是一個典型的獨立守護程序,openssh服務可以通過“/etc/ssh/sshd_config”檔案進行配置。openssh支援ssh協定的1.3、1.5和2版本。自openssh 2.9釋出以來,預設的協定是版本2。
準備linux虛拟機centos 6.4。
目前網上支援的ssh後門版本為5.9以下。如下圖,使用“ssh -v”指令擷取的openssh版本資訊為“openssh_5.3p1, openssl 1.0.0-fips 29 mar 2010”。
筆者未對高于5.9版本的ssh進行測試,但因為在patch中可以直接修改banner的值,是以這在理論上是可行的。
注意:一定要将這裡的版本号記錄下來,以便在編譯時将該資訊進行僞裝。
如圖,将ssh_config和sshd_config分别備份為ssh_config.old和sshd_config.old。在linux終端分别執行如下檔案備份指令。
将sshbd.tgz下載下傳到本地并解壓
執行以下指令。
如果使用官方安裝包openssh-5.9p1進行安裝,可以執行以下指令。
在openssh目錄中找到includes.h檔案,運作“vi includes.h”指令修改“define _secret_passwd”為我們的登入密碼,如圖。
預設密碼記錄日志檔案儲存在“/usr/local/share/0wn”目錄下的slog和clog檔案中。假設密碼為“995430aaa”,代碼如下。
運作如下代碼。
openssh-5.9p1需要使用下面的指令進行配置。
在編譯過程中可能會出現“configure: error: * zlib.h missing – please install first or check config.log”錯誤。此時,執行“yum install zlib-devel”和“yum install openssl openssl-devel”指令,安裝後再次進行編譯即可。
執行“/etc/init.d/sshd restart”指令,重新開機sshd服務。
執行以下指令,使ssh_config和sshd_config檔案的修改時間與ssh_config.old和sshd_config.old檔案一緻。
mtime(modify time):最後一次修改檔案或目錄的時間。
ctime(chang time):最後一次改變檔案或目錄(改變的是原資料,即屬性)的時間,如該檔案的inode節點被修改的時間。touch指令除了“-d”和“-t”選項外,都會改變該時間。chmod、chown等指令也能改變該值。
atime(access time):最後一次通路檔案或目錄的時間。
ls -l file:檢視檔案修改時間。
ls -lc file:檢視檔案狀态改動時間。
ls -lu file:檢視檔案通路時間。
stat file:檔案時間的3個屬性。
使用“ssh -l root ip”指令登入伺服器,如“ssh -l root 192.168.52.175”。可以使用root的密碼,也可以使用後門設定的密碼“995430aaa”進行登入。然後,通路“/usr/local/ share/0wn”目錄,檢視其記錄的密碼日志檔案clog和slog,如下圖可以看到ssh登入和本地root賬号登入的密碼。
在實際測試過程中,還需要清除apache日志。可供參考的日志清除指令如下。
前面記錄的密碼隻能在linux伺服器上面看,也就是說,使用者必須擁有讀取檔案的權限,如果沒有權限則無法登入伺服器。在這裡,最好的方法是記錄的使用者、密碼和端口可以通過郵件或者http直接發送到接收端(與黑産收信類似)。下面介紹具體實作方法。
openssh後門的防範方法如下。
重裝openssh軟體,更新至最新版本7.2。
将ssh預設登入端口22更改為其他端口。
在iptable中添加ssh通路政策。
檢視指令曆史記錄,對可疑檔案進行清理。在有條件的情況下,可重做系統。
修改伺服器所有使用者的密碼為新的強健密碼。
運作“ps aux | grep sshd”指令擷取可疑程序的pid,運作“strace -o aa -ff -p pid”指令進行跟蹤,成功登入ssh後,在目前目錄下就生成了strace指令的輸出。使用“grep open aa* | grep -v -e no -e null -e denied| grep wr”指令檢視記錄檔案。在上面的指令中,過濾錯誤資訊、/dev/null資訊和拒絕(denied)資訊,找出打開了讀寫模式(wr)的檔案(因為要把記錄的密碼寫入檔案)。可以找到以讀寫方式記錄在檔案中的ssh後門密碼檔案的位置,并通過該方法判斷是否存在ssh後門。當然,也有不記錄密碼,而僅僅留下一個萬能ssh後門的情況。
擷取linux的版本及其資訊,指令如下。
擷取ssh版本的資訊并記錄,指令如下。
下載下傳openssh用戶端及後門程式,指令如下。網上還有一個版本sshd.tar.gz。
備份ssh配置檔案,指令如下。
安裝必備軟體,指令如下。
解壓并安裝更新檔,指令如下。
修改includes.h檔案中記錄使用者名和密碼的檔案位置及其密碼,指令如下。
修改version.h檔案,使其修改後的版本資訊為原始版本,指令如下。
安裝并編譯,指令如下。
恢複新配置檔案的日期,使其與舊檔案的日期一緻。對ssh_config和sshd_config檔案的内容進行對比,使其配置檔案一緻,然後修改檔案日期。
清除記錄檔,代碼如下。
想及時獲得更多精彩文章,可在微信中搜尋“博文視點”或者掃描下方二維碼并關注。