본문 바로가기

04번. IT 힌트얻기/▶ UNIX

Unix-Basic-04

▶ 특정 Pattern을 찾아주는 기능
multihp1:/data2/unix/unix10>who | cut -c1-11 | uniq | grep unix
unix09
unix07
unix13
unix08
unix03
unix00
unix11
unix04
unix15
unix01
unix00
unix13
unix11
unix12
unix06
unix02
unix15
unix05
unix12
unix10
unix08

▶ *.out --> '*.out'
multihp1:/data2/unix/unix10>touch a.out b.out c.out
multihp1:/data2/unix/unix10>find . -name *.out
find: 연결(conjunction)이 빠졌습니다.

multihp1:/data2/unix/unix10>find . -name '*.out'
./a.out
./b.out
./c.out


multihp1:/data2/unix/unix10>grep root /etc/passwd
root:fPyHC2zqO3F3Q:0:3::/:/sbin/sh

multihp1:/data2/unix/unix10>who | grep root
root       console      8월 23일 13:49

multihp1:/data2/unix/unix10>who | grep unix10
unix10     pts/tX       11월 22일 12:12

▶ 리모트로 연결한 원격 ip 추적하기
multihp1:/data2/unix/unix10>who -R | grep unix10
unix10     pts/tX       11월 22일 12:12  (70.12.111.145)

grep

grep [옵션] 문자열패턴 [파일명]
-i : 패턴에서 대소문자를 무시하고 출력한다.
-l : 패턴에서 일치하는 파일의 파일명만 출력한다.
-v : 패턴을 포함하고 있지 않은 라인을 출력한다.

▶ 패턴으로 찾는 것임
multihp1:/data2/unix/unix10>who | grep unix10
unix10     pts/tX       11월 22일 12:12

▶ 여기서는 pattern으로 찾는 것이 아니라 word로 찾는 것임
multihp1:/data2/unix/unix10>who | grep -w unix10
unix10     pts/tX       11월 22일 12:12

multihp1:/data2/unix/unix10>cmp suho suho1
suho와(과) suho1이(가) 다릅니다: 2 문자 1 줄
multihp1:/data2/unix/unix10>diff suho suho1
1c1
< ahnsuho
---
> adfasdfdsfahnsuho
multihp1:/data2/unix/unix10>

현재 unix 시스템에 로그인 되어 있는 사용자 중 'unix'라는 이름이 포함되어 있는 사용자들의 목록을 확인 단 목록은 순서대로 정렬되어야 한다. 이 작업을 수행할 수 있는 명령어는?
multihp1:/data2/unix/unix10>who | grep unix | sort
unix00     pts/tI       11월 22일 09:17
unix00     pts/tN       11월 22일 09:17
unix01     pts/tM       11월 22일 14:07
unix02     pts/tS       11월 22일 09:30
unix03     pts/tH       11월 22일 11:50
unix04     pts/tK       11월 22일 09:55
unix05     pts/tU       11월 22일 13:47
unix05     pts/tV       11월 22일 09:50
unix06     pts/tR       11월 22일 13:40
unix07     pts/tE       11월 22일 09:14
unix08     pts/tG       11월 22일 09:17
unix08     pts/tY       11월 22일 10:27
unix08     pts/tZ       11월 22일 11:51
unix09     pts/tc       11월 22일 08:56
unix10     pts/tX       11월 22일 12:12
unix11     pts/tJ       11월 22일 09:17
unix11     pts/tP       11월 22일 09:18
unix12     pts/tQ       11월 22일 09:18
unix12     pts/tW       11월 22일 10:08
unix13     pts/tF       11월 22일 10:57
unix13     pts/tO       11월 22일 11:48
unix15     pts/tL       11월 22일 11:45
unix15     pts/tT       11월 22일 11:49

▶ Permission : 허가
read     : r  :4
write    : w  :2
execute  : e  :1

rwx rwx rwx : (owner) (group) (others)

chmod (change mode)명령어

▶ 파일 권한 명령
multihp1:/data2/unix/unix10>touch f1
multihp1:/data2/unix/unix10>ls -l f1
-rw-rw-rw-   1 unix10     unix             0 11월 22일 14:47 f1
multihp1:/data2/unix/unix10>chmod u+x,g-w,o-rw f1

▶ a는 all이다. rwx 모두에 대해서 user에 상관없이 모두 permissionㅇ르 준다.
multihp1:/data2/unix/unix10>chmod a=rwx f1
multihp1:/data2/unix/unix10>ls -l f1
-rwxrwxrwx   1 unix10     unix             0 11월 22일 14:47 f1

▶ excute(x)의 permission을 모두 제거
multihp1:/data2/unix/unix10>chmod a-x f1
multihp1:/data2/unix/unix10>ls -l f1
-rw-rw-rw-   1 unix10     unix             0 11월 22일 14:47 f1
multihp1:/data2/unix/unix10>

▶ excute(x)의 permission을 다시 주기
multihp1:/data2/unix/unix10>chmod a+x f1
multihp1:/data2/unix/unix10>ls -l f1
-rwxrwxrwx   1 unix10     unix             0 11월 22일 14:47 f1

▶ excute(x)의 permission을 모두 제거
multihp1:/data2/unix/unix10>chmod -x f1
multihp1:/data2/unix/unix10>ls -l f1
-rw-rw-rw-   1 unix10     unix             0 11월 22일 14:47 f1


숫자로 주기
rwx r-- ---
(7) (4) (0)

rw-    r--   ---
(6)    (4)   (0)


multihp1:/data2/unix/unix10>chmod 740 f2
multihp1:/data2/unix/unix10>ls -l f2
-rwxr-----   1 unix10     unix             0 11월 22일 14:54 f2

multihp1:/data2/unix/unix10>chmod 644 f2
multihp1:/data2/unix/unix10>ls -l f2
-rw-r--r--   1 unix10     unix             0 11월 22일 14:54 f2
 

multihp1:/data2/unix/unix10>chmod 550 f2
multihp1:/data2/unix/unix10>ls -l f2
-r-xr-x---   1 unix10     unix             0 11월 22일 14:54 f2
 
디렉토리는 최소한 read, execute는 준다.
: cd 상호 이동이 가능해야 하므로


multihp1:/data2/unix/unix10>ls -l /data2/unix/unix10
총 2 블록입니다.
drwxrwxrwx   3 unix10     unix            96 11월 22일 11:08 a
dr-xr-xr-x   2 unix10     unix          1024 11월 21일 16:27 cron
-rw-rw-rw-   1 unix10     unix             0 11월 22일 14:47 f1
-r-xr-x---   1 unix10     unix             0 11월 22일 14:54 f2


▶ group, owner에서 write permission을 제거
multihp1:/data2/unix/unix10>ls -l readme.txt
-rw-rw-rw-   1 unix10     unix             0 11월 22일 15:06 readme.txt
multihp1:/data2/unix/unix10>chmod go-w readme.txt
multihp1:/data2/unix/unix10>ls -l readme.txt
-rw-r--r--   1 unix10     unix             0 11월 22일 15:06 readme.txt

▶ group에는 execute는 permission은 추가 , owner에서는 read permission을 제거한다.
multihp1:/data2/unix/unix10>ls -l readme.txt
-rw-r--r--   1 unix10     unix             0 11월 22일 15:06 readme.txt
multihp1:/data2/unix/unix10>chmod g+x,o-r readme.txt
multihp1:/data2/unix/unix10>ls -l readme.txt
-rw-r-x---   1 unix10     unix             0 11월 22일 15:06 readme.txt

▶ a를 사용을 할 경우는 read권한은 주고 나머지 권한은 없어지므로 a를 쓸때는 주의해야 함
multihp1:/data2/unix/unix10>chmod a=r readme.txt
multihp1:/data2/unix/unix10>ls -l readme.txt
-r--r--r--   1 unix10     unix             0 11월 22일 15:06 readme.txt

▶ chmod에서
set-uid : 프로그램 실행동안 uid 변경
set-gid : 프로그램 실행동안 gid 변경
sticky : 파일은 코드 공유, 디렉토리는 공용 디렉토리에 rwxrwxrwx로 열려 있기 때문에 하위 파일이 read only여도 삭제됨 --> 해결

set user id bit   : 4
set group id bit  : 2
sticky bit        : 1

rwx     rwx     rwx
여기서 x필드를 빌려서 사용하기로 함
rws   rwx     rwx  (set user id bit)
rwx   rws     rwx  (set group id bit)
rwx   rwx     rwt  (stick bit)


chmod [4:setuid, 2:setgid, 1:sticky] [owner] [group] [others]
chmod 6755
-> rwxr-xr-x (1)
-> rwsr-sr-x (2)
(1)이 setuid, setgid로 인하여 (2)로 변경되는 것이다.


multihp1:/data2/unix/unix10>touch f3
multihp1:/data2/unix/unix10>ls -l f3
-rw-rw-rw-   1 unix10     unix             0 11월 22일 15:23 f3
multihp1:/data2/unix/unix10>chmod 4755 f3
multihp1:/data2/unix/unix10>ls -l f3
-rwsr-xr-x   1 unix10     unix             0 11월 22일 15:23 f3
multihp1:/data2/unix/unix10>chmod 2755 f3
multihp1:/data2/unix/unix10>ls -l f3
-rwxr-sr-x   1 unix10     unix             0 11월 22일 15:23 f3
multihp1:/data2/unix/unix10>chmod 1755 f3
multihp1:/data2/unix/unix10>ls -l f3
-rwxr-xr-x   1 unix10     unix             0 11월 22일 15:23 f3

 

multihp1:/data2/unix/unix10>mkdir lab
multihp1:/data2/unix/unix10>ls -ld lab
drwxrwxrwx   2 unix10     unix            96 11월 22일 15:24 lab
multihp1:/data2/unix/unix10>chmod 1777 lab
multihp1:/data2/unix/unix10>ls -ld lab
drwxrwxrwt   2 unix10     unix            96 11월 22일 15:24 lab


multihp1:/data2/unix/unix10>ls -l /usr/bin/passwd
-r-sr-xr-x   5 root       bin          53248 2009.04.24   /usr/bin/passwd
multihp1:/data2/unix/unix10>ls -l /usr/bin/chsh
-r-sr-xr-x   5 root       bin          53248 2009.04.24   /usr/bin/chsh
multihp1:/data2/unix/unix10>ls -l /etc/passwd
-r--r--r--   1 root       sys          12939 11월 21일 15:51 /etc/passwd

1. 처음에 unix10이 공격자가 되어 공격 그리고 백도어 설치 
unix10> su unix11
암호를 입력하시오.
unix11> cp /usr/bin/ksh /data2/unix/unix11/mkksh
unix11> chmod 6777 /data2/unix/unix11/myksh
unix11> ls -l /data2/unix/unix11/myksh
-rwsrwsrwx   unix11 unix
unix11>exit
unix10>

2. 어! 암호가 바뀌었네.. 그러면 전에 만들어두었던 백도어로 침투
해킹을 당했어.. 그래서 암호를 바꾸었어.
unix10> su unix11
암호를 입력하시오. 어~! 암호가 바뀌었네
unix10> cd ../unix11
unix10> ls        ---> myksh가 있는지 확인한다.
unix10> ./myksh
unix10> id

=============================================================================

해커 unix10

unix10> su unix11
암호를 입력해라
unix11> cp /usr/bin/vi ~/vi
unix11> chmod 6777 ~/vi
unix11> exit
unix10>id
내꺼야 (해커)

unix10>cd ../unix11
unix10>vi topsecret --> 못 연다.
(이유:난 unix10이니까 그리고 vi는 /usr/bin/vi가 실행

unix 10> ./ topsecret
 열린다. 수정 편집 ./vi가 실행중에는 나는 unix11으로 바뀌니까


피해자 unix11

unix11> vi topsecret
sdfjkldfjlsdfjsldfjksdalfjsldf
unix11> chmod 600 topsecret
unix11> ls -l topsecret


'04번. IT 힌트얻기 > ▶ UNIX' 카테고리의 다른 글

Unix-basic-08  (0) 2011.11.24
Unix-basic-05  (0) 2011.11.23
Unix-Basic-03  (0) 2011.11.22
Unix-Basic-02  (0) 2011.11.21
Unix-Basic-01  (0) 2011.11.21