12. 해킹 관련 (2) - lily.mmu.ac.krlily.mmu.ac.kr/lecture/15is/IS_lec_12.pdf · 임시 파일...

50
12. 해킹 관련 (2) - 기존 수법 정보보호 개론 목포해양대 해양컴퓨터공학과 1

Transcript of 12. 해킹 관련 (2) - lily.mmu.ac.krlily.mmu.ac.kr/lecture/15is/IS_lec_12.pdf · 임시 파일...

12. 해킹 관련 (2)

- 기존 수법

정보보호 개론

목포해양대 해양컴퓨터공학과 1

유닉스 해킹 공격

SetUID 공격

유닉스에서 프로그램의 소유자가 아닌 사용자가

프로그램을 실행했을 때 실행시간 동안에만

일시적으로 프로그램 소유자의 권한을 획득하도록

하는 SetUID 기술을 이용하는 공격 방식

공격자는 SetUID 공격을 통하여 루트 권한을

획득할 수 있음

SetUID 공격

버퍼 오버플로우(buffer overflow) 공격

임시 파일 링크 공격

IFS(Internal Field Separator) 공격

목포해양대 해양컴퓨터공학과 2

버퍼 오버플로우 공격 (1)

버퍼 오버플로우 취약점

할당된 메모리 량보다 더 많은 데이터를

메모리에 복사하는 경우 발생

버퍼 오버플로우 시의 프로그램 메모리 맵

목포해양대 해양컴퓨터공학과 3

버퍼 오버플로우 공격 (2)

버퍼오버플로우 취약점

매개변수 값의 길이가 지역 변수 값의 길이보다 클 경우 유닉스 시스템은

이를 확인하지 않고 복사를 함으로서 다른 메모리 공간을 덮어쓰게 됨

지역변수에 복사될 문자열에 특정 프로그램의 이진코드를 포함시키면

함수가 실행한 후 복귀할 때 공격자의 특정 프로그램이 실행 가능

버퍼 오버플로우 공격의 예

popd/imapd 공격

popd, imapd 서버가 사용자 인증 시에 인증 데이터의 길이에 대한 한계 값을

검사하지 않는다는 점을 이용

원격지에서 관리자의 권한으로 명령을 수행 가능

NFS_export 길이 초과 공격

/etc/exports 파일에서 디렉토리 항목의 길이가 256자를 초과할 경우 모든

호스트에 마운트를 허용하는 점을 이용

목포해양대 해양컴퓨터공학과 4

버퍼 오버플로우 공격 (3)

1990년대 이후 꾸준히 증가하고 있는 추세

이에 대한 패치를 계속 발표

보안 대책 개발자

함수를 정의 할 때 함수에 전달된 모든 입력 값의 길이를 검사하는 루틴을 함수 내에 추가

길이를 검사하지 않는 라이브러리 함수를 사용할 경우에는 주의 필요

사용자 프로그램의 setuid 비트를 제거

overflow_wrapper와 같은 프로그램을 설치

지속적으로 패치

목포해양대 해양컴퓨터공학과 5

임시 파일 링크 공격 (1)

/tmp 디렉토리

일반 사용자도 파일을 생성하거나 삭제할 수 있는 디렉토리

setuid 비트가 설정되어 관리자 권한으로 실행되는 프로그램들

중에서 /tmp 디렉토리에 임시 파일을 생성하는 프로그램이

존재함

공격자

임시 파일의 이름을 사전에 인지하여 해당 파일을 삭제

/etc/passwd와 같은 관리자 소유의 중요한 파일에 삭제한 파일과

동일한 이름으로 심볼릭 링크 설정

임시 파일을 생성했던 응용 프로그램이 데이터를 임시 파일과

동일한 이름의 심볼릭 링크 파일에 쓰게 되면 데이터는 임시

파일이 아닌 링크가 걸려 있는 파일에 써지게 됨

관리자 소유의 중요한 파일들을 손상시키거나 변경시킬 수 있음

목포해양대 해양컴퓨터공학과 6

임시 파일 링크 공격 (2)

임시 파일 링크 공격 과정

① 관리자 권한의 프로그램이 임시 파일 backup.dat을 /tmp에 생성

② 공격자는 backup.dat을 삭제

③ 공격자는 /tmp/backup.dat 이름으로 /etc/passwd 파일에 링크 설정

④ 관리자 권한의 프로그램은 backup.dat에 데이터를 씀

⑤ 데이터는 /etc/passwd에 쓰이게 되므로 패스워드 파일을 손상시킴

목포해양대 해양컴퓨터공학과 7

임시 파일 링크 공격 (3) 임시 파일 링크 공격의 예

① expreserve

저장되는 파일의 디렉토리 경로와 이름을 쉽게 유추

사용자의 주요 파일을 공격 가능

② admintool Solaris 2.5.x 시스템의 admintool은 사용자는 임의의 파일 생성 가능

예방하기 : 프로그램이 /tmp 디렉토리에 가능하면 임시 파일을 생성하지 않도록 해야 함, 임시 파일을 생성하는 전용 함수를 사용

filename = mktemp("/tmp/tempfileXXXXXX"); 임시 파일을 생성하기 위하여 /tmp 디렉토리 안에 추가 디렉토리를 생성

목포해양대 해양컴퓨터공학과 8

유닉스 백도어 공격 (1)

백도어(back-door)

시스템 설계자 또는 관리자에 의해 고의로 만들어진 시스템 보안상의

헛점 등

특징

침입이 쉽게 발견되기 어려움

시스템 침입 시간이 일반적으로 짧음

백도어의 종류

login 백도어

매직 패스워드와 같이 특정 패스워드 입력 시 인증 과정 없이 로그인을 허용

utmp나 wtmp 등의 로그 파일에 기록되지 않음

telnetd 백도어

login 프로그램의 구동 전에 실행

특정 터미널에서 시스템에 접속하는 경우 인증 과정 없이 쉘을 부여

목포해양대 해양컴퓨터공학과 9

유닉스 백도어 공격 (2)

백도어의 종류

Services 백도어

finger, rsh, rexec, rlogin, ftp, inetd 등과 같은 대부분의 유닉스 서비스들에 존재하는

백도어 버전

Cronjob 백도어

cron 데몬

특정 시간에 예약된 백도어 프로그램을 수행시킴

공격자는 시스템에 불법으로 침입할 수 있고 합법적인 프로그램으로 가장

라이브러리 백도어

시스템에 설치된 라이브러리를 수정하여 백도어 코드를 삽입하는 경우

커널 백도어

커널 코드가 수정되어 백도어가 만들어진 경우

이 경우 백도어와 침입을 인지하기 매우 힘들고 MD5 등과 같은 무결성 검사로도

진단이 불가능함

목포해양대 해양컴퓨터공학과 10

유닉스 백도어 공격 (3)

백도어의 종류 (계속)

파일 시스템 백도어

ls, du, fsck 등과 같은 명령어를 수정하여 특정 디렉토리나 파일을 숨기는 백도어

숨기려는 대상을 불량 섹터(bad sector)로 처리

프로세스 은닉 백도어

패스워드 크래커나 스니퍼 등과 같은 프로세스들을 숨김

숨기는 방법 라이브러리 루틴 수정을 통한 은닉

인터럽트 처리 루틴에 삽입을 통한 은닉

커널 수정에 의한 은닉

네트워크 트래픽 백도어

네트워크 트래픽을 숨겨 사용하지 않는 포트로 침입하는 것

목포해양대 해양컴퓨터공학과 11

유닉스 백도어 공격 (4) 백도어의 종류 (계속)

TCP 쉘(shell) 백도어 1024번 이상의 TCP 포트에 쉘 제공 서비스를 설치하는 것을 허용

TCP 쉘 백도어의 경우 netstat 명령 등을 통해 확인이 가능

UDP 쉘 백도어 침입차단 시스템(firewall)을 우회할 수 있음

백도어를 방지하기 위한 방법

시스템 및 네트워크에 대한 보안 취약점을 주기적으로 진단

시스템 개발사로부터 주기적으로 패치 버전을 다운로드 받아 설치

주요 백도어 대상 프로그램에 대한 백업 및 해쉬 코드 값을 유지하고 프로그램 설치 전에 MD5 등을 통해 무결성을 진단

관리자가 새로운 백도어 공격과 이에 대한 예방책에 대한 동향을 주기적으로 파악하여 시스템에 대한 관리를 철저히 하는 것이 필요

목포해양대 해양컴퓨터공학과 12

Windows 해킹 공격

Windows와 Unix의 비교

Windows Unix

Identification SID(Security ID)에 의한 구분 UID : 사용자 구분

GID : 그룹 구분

Access Control ACL을 통한 접근 제어 Permission을 통한 접근 제어

(rwxr-xr-x 등)

Auditing SRM(Security Reference Monitor)과

LSA(Local Security Authority)에서 감사를 담당

커널 및 시스템 프로세스에서 담당

Networking Server Message Block을 기반으로

동작

NFS, NIS 이용

Impersonation 토큰 기반(primary, impression token) SUID/SGID 이용

목포해양대 해양컴퓨터공학과 13

시스템 정보 수집 해킹 공격 (1) NetBIOS 테이블 정보 질의

공격자는 nbtstat 명령을 이용하여 NetBIOS 이름 테이블 정보를 질의하여 네트워크 취약점을 획득할 수 있음

nbtstat 명령의 사용법

NetBIOS 테이블 정보 질의

Windows 명령 프롬프트에서 nbtstat 명령 실행

지역 또는 원격 호스트의 NetBIOS 이름 테이블 확인 가능

지역 호스트의 NetBIOS 이름 테이블을 해제하고 새로 고칠 수 있음

nbtstat 사용 예

WINS 서버로부터 현재 등록된 모든 지역 NetBIOS 이름을 해제하고 새로 고침

목포해양대 해양컴퓨터공학과 14

시스템 정보 수집 해킹 공격 (2) IPC$ share를 이용한 정보 수집

Null IPC share 세션

서버들 간에 관리목적으로 필요한 정보를 상호교환 하는 연결

공격자

인증과정 없이 null IPC share 세션에 접속하여 서버들 사이에 공유된 사용자 계정정보, 보안정책, 네트워크공유 등의 정보를 수집 가능

사용자의 배치 파일에 백도어 파일을 심어서 2차 공격을 가능케 함

시스템 운영 권한을 획득

IPC$ share를 이용한 구체적인 공격의 예

Eudora.ini : edupass.com을 이용하여 계정과 패스워드 획득 가능

Tree.dat : CuteFTP의 저장한 사이트/식별자/패스워드 정보를 FireFTP 프로그램으로 크랙 가능

PWL : windows95에서 저장한 패스워드를 glide.exe 프로그램으로 크랙 가능

목포해양대 해양컴퓨터공학과 15

시스템 정보 수집 해킹 공격 (3)

IPC$ share를 이용한 정보 수집 (계속)

IPC$ share를 이용한 구체적인 공격의 예

PWD : Frontpage, Personal Webserver에서 저장한 식별자/패스워드 정보를 John the Ripper 프로그램으로 크랙 가능

WS_FTP.ini : ws_ftp에서 저장한 패스워드를 프로그램으로 크랙 가능

IPC$ share를 이용한 공격 방지

디렉토리를 everyone group으로 공유하지 않고 공유 패스워드를 복잡하게 구성

라우터에서 137번, 138번, 139번 포트에 대한 필터링을 하도록 함

FAT(File Allocation Table) 파일 시스템보다 안전한 NTFS 파일 시스템을 사용하도록 함

목포해양대 해양컴퓨터공학과 16

패스워드 공격 (1)

패스워드를 알아내는데 사용될 수 있는 방법

패스워드를 구성하는 글자들의 가능한 모든 조합을 만들어

가능성이 높은 패스워드들을 유추하여 시도

사용자와 관련된 정보를 수집하고, 이로부터 패스워드 유추

시스템 내의 패스워드 저장 파일 검색

사용자에게 질의

소모적 공격

사전 공격(Dictionary Attack)

전자사전을 이용해서 사전에 나온 단어들을 하나씩 대입

해봄으로써 패스워드를 찾아내는 공격

자기 주변의 어떤 정보를 구성하는 요소들로 패스워드를 구성

자동차 번호, 생일, 결혼기념일, 배우자 이름, 아이들 이름 등

목포해양대 해양컴퓨터공학과 17

패스워드 공격 (2)

사전 공격(Dictionary Attack) (계속)

Morris and Thompson의 연구(Bell Lab, 1979)

연구소 내에서 사용되는 패스워드 3289개를 분석한 결과

15 (0.5%) 1자리의 ASCII 문자

72 (2%) 2자리의 ASCII 문자

464 (14%) 3자리의 ASCII 문자

477 (14%) 4자리의 알파벳

706 (21%) 5자리의 알파벳

605 (18%) 6자리의 알파벳 소문자

492 (15%) 사전에 있는 단어

2831 (86%) 사람 이름

Klein (1990), Spafford (1992)의 연구

약15,000 개의 패스워드를 분석

Klein : 2.7%가 15분 안에 해독가능, 21%가 1주일 안에 해독 가능

Spafford : 패스워드들이 평균 6.8자리의 길이를 가짐, 28.9%가 알파벳

소문자만으로 구성

목포해양대 해양컴퓨터공학과 18

패스워드 공격 (3) 사전 공격(Dictionary Attack) (계속)

패스워드 길이와 해독가능시간

ID와 패스워드의 예

목포해양대 해양컴퓨터공학과 19

패스워드 공격 (4) 사전 공격(Dictionary Attack) (계속)

암호화된 패스워드를 알아내는 방법 일반적으로 시스템들은 알려진 암호화 알고리즘을 이용

가능성이 있는 패스워드를 동일 알고리즘으로 암호화하여 암호화된 패스워드들과 비교한 후, 일치하는 것이 발견

고정 패스워드 방법

고정 패스워드 파일의 문제점

동일 패스워드를 이용하는 사용자가 여러 명 있을 수 있음

많은 시스템이 ID의 중복은 체크하지만 패스워드의 중복을 허용

해결방법

각 사용자에게 고유한 12 bit number를 부여하여 패스워드를 암호화할 때 (password + password salt)를 이용

목포해양대 해양컴퓨터공학과 20

패스워드 공격 (5)

안전한 패스워드

알파벳 대소문자, 특수문자, 숫자 등을 섞어서 사용하라

apple : aPPle%5

패스워드의 길이를 충분히 길게 하라

권고: 6자리이상

사전에 나올만한 실제 단어는 피하라

자신의 신상정보와 관련된 단어, 숫자는 피하라

패스워드를 정기적으로 교체하라

가능하면 패스워드를 머릿속에 기억하고, 적어서 보관하지 말라

키보드에서 연속된 문자열을 쓰지 말라

예 : qwert, qaz

암호 안정성 확인 사이트

https://howsecureismypassword.net/

목포해양대 해양컴퓨터공학과 21

서비스 취약점 공격 (1) 획득한 사용자의 권한을 이용하여 시스템의 취약점을 공격

IIS 취약점 공격

IIS(Internet Information Server)

Windows NT에서 동작하는 웹 서버로서 파일 시스템과 서버 스크립트에 관한 취약점을 갖고 있음

Double dot bug 공격

웹루트(webroot) 상위의 디렉토리를 검색하거나 다운로드 가능

Script bug 공격 IIS가 실행하는 스크립트를 이용하여 새로운 파일을 생성하거나 생성한 파일이

실행되도록 할 수 있음

목포해양대 해양컴퓨터공학과 22

서비스 취약점 공격 (2) IIS 취약점 공격 (계속)

Dot flaw 공격

ASP(Active Server Page) 파일의 내용을 보거나 데이터베이스의 중요 데이터 획득

이러한 공격을 예방하기 위해 ASP 파일에 대한 읽기 접근 권한을 제거

Index Server 공격

Index Server는 IIS의 검색 엔진 모듈로서 잘못된 접근 권한과 검색 내용의 설정으로 중요한 정보를 유출할 수 있음

고의적으로 변형된 인수를 hit-highlight 문서에 제공함으로써, 가상 디렉토리를 벗어날 수 있음

사용자가 존재하지 않는 인터넷 데이터 질의 파일을 요구할 때 반환되는 오류 메시지 내에 웹 디렉토리의 물리적인 경로 정보가 포함될 수 있음

목포해양대 해양컴퓨터공학과 23

서비스 취약점 공격 (3)

FrontPage 취약점 공격

FrontPage Microsoft의 홈페이지 제작 및 관리 도구

안전하지 않은 기본 보안 설정으로 불법적인 접속을 허용하거나 패스워드 노출의 위험을 갖고 있음

불법적인 접속 자신의 컴퓨터에서 FrontPage를 실행한 후 검색된 사이트로

접속을 시도

검색된 사이트의 _vti 디렉토리의 접근 패스워드가 설정되어 있지 않거나 접근 허용 대상이 everyone group으로 설정되어 있는 경우 공격자는 해당 디렉토리에 접근

사용자 계정 정보를 획득하며 이를 기반으로 brute force attack과 같은 패스워드 크랙킹을 수행

목포해양대 해양컴퓨터공학과 24

서비스 취약점 공격 (4)

FrontPage 취약점 공격 (계속)

패스워드 유출

사용자의 패스워드를 일반적으로 웹 서버 루트 하위 _vti_pvt 디렉토리의 service.pwd 파일에 저장

패스워드 파일에 접근

파일 업로드 및 실행

FrontPage와 FTP 익명(anonymous) 계정의 쓰기를 지원하는 사이트에서는 공격자가 파일을 업로드하고 실행시킬 수 있음

공격자는 ftp로 대상 사이트에 접속하여 FrontPage로 제작된 홈페이지의 실행 파일을 포함하는 _vti_bin 디렉토리를 만들고 디렉토리 내에 실행할 파일을 업로드 함

목포해양대 해양컴퓨터공학과 25

서비스 취약점 공격 (5) 윈도우즈 버퍼 오버플로우(Windows Buffer overflow) 공격

RAS(Remote Access Service) 버퍼 오버플로우 공격

Microsoft의 RAS 클라이언트가 설치된 시스템 상에서 전화번호부 입력 값을 조작하여 버퍼 오버플로우를 일으켜 임의의 프로그램을 실행

RAS 클라이언트가 전화번호부 항목을 조작할 때 버퍼의 경계를 확인하지 않는 취약점에서 비롯

방지책

Microsoft에서 제공하는 핫픽스를 설치

NT 도움말 시스템 버퍼 오버플로우 공격

Windows NT 시스템의 도움말(help) 프로그램의 버퍼 오버플로우 취약성으로 인하여 일반 사용자가 임의의 코드를 실행할 수 있는 취약점이 존재

방지책

Microsoft에서 제공하는 핫픽스 설치

목포해양대 해양컴퓨터공학과 26

백도어/트로이 목마 공격 (1) 백 오리피스-BO2K / NetBus 공격

백 오리피스(back orifice)-BO2K

도어 공격의 한 예

공격자가 UDP 31337번 포트에서 대기하고 있는 BO 서버에 불법 접속하여 Windows NT의 정규 인증 절차 없이 임의의 작업을 수행하는 공격

공격자가 수행할 수 있는 공격 패스워드 수집, 파일 시스템 제어, 프로세스 제어, 패킷 전송 전환(redirection) 등

NetBus

공격자가 TCP 12345번 포트에서 대기하고 있는 NetBus 서버에 접속하여 불법적인 행위를 하는 공격

백도어 공격에서 가장 중요한 것 백도어 서버를 원하는 컴퓨터에 설치하는 것

최근에는 다른 프로그램과 백도어 서버 프로그램을 합쳐서 설치하게 하는 플러그인 방식이 주류를 이룸

목포해양대 해양컴퓨터공학과 27

백도어/트로이 목마 공격 (2)

백도어 / 트로이 목마 방지 대책

Netstat 명령 이용

현재 컴퓨터와 다른 컴퓨터간의 연결을 검색하여 출력하는 기능을 제공

백도어 프로그램의 동작 여부를 감지할 수 있음

netstat 명령의 사용법과 사용 예

[-a] 옵션 : 현재 다른 PC와 연결(established)되어 있거나,

대기(listening)중인 모든 포트 번호를 출력

[-e] 옵션 : 랜카드에서 송·수신한 패킷의 용량 및 종류 출력

[-n] 옵션 : 현재 다른 PC와 연결되어 있는 포트 번호 (IP 주소)출력

[-s] 옵션 : IP, ICMP, TCP, UDP 프로토콜의 상태 출력

[-r] 옵션 : 라우팅 테이블 및 연결되어 있는 포트 번호 출력

목포해양대 해양컴퓨터공학과 28

백도어/트로이 목마 공격 (3) 백도어 탐지 및 제거 도구 사용

백도어 전용 탐지 프로그램

Toilet Paper, BoDetect, The cleaner 등

BoDetect

CBSoftSolutions사가 백 오리피스의 차단을 위해 개발한 유틸리티

다운로드 후 설치하고 실행

BO 서버가 동작하고 있는지를 확인해 주고 제거도 가능

Windows NT 레지스트리에서 직접 백도어 검색

시작메뉴에서 실행버튼을 클릭하고 regedit를 실행

HKEY_LOCAL_MACHINE/ SOFTWARE/Microsoft/Windows/ CurrentVersion/RunServices로 이동

오른쪽 창에 데이터가 ".exe"로 설정된 항목이 있으면 백도어인 경우 임

목포해양대 해양컴퓨터공학과 29

각종 취약점 공격 (1) Dvwssr.dll 취약점 공격

Dvwssr.dll 파일

Microsoft의 Visual Interdev1.0에서 링크 뷰(link view) 기능을 제공하기 위해 사용되는 서버 측의 구성요소

취약점

다수의 웹 사이트를 호스팅 하는 서버의 경우와 웹 제작 권한을 가진 사용자만이 파일을 요청할 수 있는 경우

파일이 특정 사용자에게 읽기 권한으로 설정되어 있거나 대부분의 경우

everyone group에게 읽기 권한이 설정된 경우

Dvwssr.dll 파일의 취약점 보완

Windows 2000, Office 2000 Server Extensions 또는 FrontPage 2000 Server Extensions을 설치

시스템상의 모든 Dvwssr.dll 파일을 제거

목포해양대 해양컴퓨터공학과 30

각종 취약점 공격 (2)

Microsoft System Management Server의 "Remote Agent“

접근 허가(Permission) 취약점

디렉토리 내에 포함된 코드를 악성 코드로 변조할 수 있음

코드는 시스템이 재부팅될 때 자동으로 실행 가능

취약점 보완

microsoft.com에서 해당 패치 프로그램을 설치

목포해양대 해양컴퓨터공학과 31

네트워크 해킹 공격

Network 통신 취약점 공격

TCP/IP의 개방성과 효율을 위한 단순함에 기인한 문제들 Spoofing, Hijacking, Sniffing

System 관리 잘못을 이용한 공격 Account 도용, Password Cracking, File/Directory

Permission Error 등

Software 구현상의 오류를 이용한 공격 운영체제 또는Application을 개발한 개발사의

프로그래머 잘못에 의한 문제점

버그(bug)혹은 취약점(Vulnerability)을 이용한 공격

목포해양대 해양컴퓨터공학과 32

네트워크 스캐닝 공격 (1) 대상 시스템의 네트워크 취약성을 분석하여 취약한 부분을 공격

Mscan 공격

Mscan 1998년에 공개

jsbach라는 해커가 만든 취약점 스캐닝 도구

네트워크의 블록 전체를 스캐닝하여 블록내에 있는 시스템들의 취약점을 한번에 스캐닝할 수 있는 프로그램

Mscan이 주로 스캐닝하는 보안 취약점 wingate, phf, handler, test-cgi, NFS exports, statd, named, X server, ipopd,

imapd 등

Mscan에 의해 스캐닝되는 웹 서버의 취약점을 보완 cgi-bin 디렉토리내에 phf, handler, test-cgi과 같은 프로그램의 존재 유무를

확인하여 삭제하거나 패치

ipopd와 imapd 프로그램을 최신 버전으로 패치하거나 TCP래퍼(tcpwrapper)와 라우터를 이용하여 접근통제

목포해양대 해양컴퓨터공학과 33

네트워크 스캐닝 공격 (2) SAINT 공격

SAINT(Security Administrators’s Integrated Network Tool)

1998년에 공개된 관리자용 네트워크 진단 도구

SATAN(System Administrator’s Tool for Analyzing Networks)과 유사한 프로그램 구조를 가지고 있음

시스템 또는 네트워크 내의 호스트들의 finger, NFS, NIS, ftp, tftp, rexd, statd 등의 프로그램들의 취약성을 진단 가능

SAINT가 SATAN과 함께 관리자가 아닌 해커에 의해 실행될 경우 네트워크 취약성이 노출되어 해당 시스템을 공격

IP 주소 공격 zOne

특정 도메인의 다수 IP 주소를 검색하는 프로그램

imapvun, imapd_scan.sh

imap 서비스의 취약점을 스캐닝하는 도구

phfscan

phf.cgi 프로그램의 취약점을 검색하는 도구

목포해양대 해양컴퓨터공학과 34

TCP

Connection setup

Data exchange

Connection shutdown

Retransmission

Persistent timer

Quiet timer

(SEQ=100) (Flags=SYN)

(SEQ=300) (ACK=101) (Flags=SYN,ACK)

(SEQ=101) (ACK=301) (Flags=ACK)

A B

(SEQ=101) (ACK=301) (Flags=ACK) (DATA=5)

(SEQ=301) (ACK=106) (Flags=ACK) (DATA=10)

(SEQ=106) (Flags=FIN,ACK)

(SEQ=311) (ACK=107) (Flags=ACK)

(SEQ=107) (ACK=316) (Flags=ACK)

(SEQ=311) (ACK=107) (Flags=ACK) (DATA=5)

(SEQ=316) (ACK=107) (Flags=FIN, ACK)

(SEQ=107) (ACK=317) (Flags=ACK)

목포해양대 해양컴퓨터공학과 35

스니핑(Sniffing) 공격 (1) 스니프(Sniff)

“냄새를 맡다. 코로 킁킁거리다”라는 의미

“컴퓨터 네트워크 상의 트래픽을 엿보는 행위”

스니퍼

네트워크상의 패킷들을 엿보는 프로그램

계정과 패스워드를 알아내기 위해 침입자들에 의해 자주 사용되는 방법

스니퍼의 해킹 동작

네트워크 디바이스를 열어서 “promiscuous mode”로 만들어 놓고 지나가는 모든 패킷을 읽음

패킷을 필터링 하여 발신, 수신주소, 서비스(telnet, rlogin, ftp, smtp 등), 계정과 패스워드가 포함된 데이터를 구분해서 출력하는 동작을 실행하여 호스트를 공격

목포해양대 해양컴퓨터공학과 36

스니핑(Sniffing) 공격 (2) TCP/IP 스니핑

스니핑의 원리

LAN 상에서 개별 호스트를 구별하기 위한 방법

이더넷(Ethernet) 인터페이스

MAC(Media Access Control) 주소를 갖고 있음

모든 이더넷 인터페이스는 서로 다른 MAC 주소를 갖고 있음

“promiscuous mode” 이더넷 인터페이스 카드 즉 LAN 카드는 자신의 MAC 주소를 갖지 않는

트래픽은 무시해 버리는 필터링 기능을 갖고 있어서 자신의 MAC 주소를 가진 트래픽만 보도록 하기 위한 기능을 설정

스니퍼는 이더넷 인터페이스로 이러한 “promiscuous mode”로 설정하여 로컬 네트워크로 지나는 모든 트래픽을 도청할 수 있음

목포해양대 해양컴퓨터공학과 37

스니핑(Sniffing) 공격 (3)

TCP/IP 스니핑 (계속)

스니핑을 방지하는 방법

스위칭 허브를 사용

스위칭 허브 : 로컬 네트워크를 여러 개의 세그먼트로 나누어 쓸 수

있으며, 각 세그먼트 내의 트래픽은 다른 세그먼트로 도청이 안 됨

스니핑 공격 보안대책

s/key

스니핑에 대한 보안대책

원격 호스트로의 접속에 있어서 일회용 패스워드를 생성

rlogin이나 rsh 대신에 secure shell, secure login 그리고

secure telnet, secure ftp 등의 암호화 통신을 사용

일회용 패스워드 시스템 사용

목포해양대 해양컴퓨터공학과 38

스푸핑(Spoofing) (1) IP 스푸핑 공격

스푸핑(Spoofing)

“속이다, 사기치다”라는 뜻

방법

IP 주소를 속임

로그인(login) 화면을 속임

MAC 주소를 속임 등

네트워크의 성능을 저하시키거나 계정 및 비밀번호 등을 알아냄

ARP 스푸핑 공격 ARP(Address Resolution Protocol)

호스트가 통신하기 위한 상대방의 MAC 주소를 broadcast로 질의

해당 호스트가 응답

해커가 자신의 MAC 주소를 두 호스트의 MAC 주소로 위장하는 ARP reply 패킷을 만들어 호스트 A와 B 사이의 ARP 요청 응답이 이루어지기 전에 먼저 전송

두 호스트 A와 B 사이의 연결은 해커(즉, 공격자)호스트의 MAC 주소를 사용하게 되고, 결국 두 호스트간의 모든 트래픽은 공격자가 위치한 세그먼트로 들어오게 됨

목포해양대 해양컴퓨터공학과 39

스푸핑(Spoofing) (2) TCP/IP 윈도우즈 스푸핑 공격

TCP/IP 윈도우 크기(window size) 를 속이는 공격

TCP/IP 프로토콜의 약점을 이용

window size를 0으로 바꾸어 ACK 패킷을 전송함으로써 네트워크의 성능을 저하시키는 방법

TCP/IP 순서번호 스푸핑 공격

중간에 존재하지 않는 순서번호로 응답

응답을 받은 송신자는 재전송을 시도하는데, 정상적인 재전송이 불가능하므로 성능 저하 발생

login Spoofing

대상 호스트의 화면을 로그인 화면처럼 보여서 사용자를 속이는 방법

목포해양대 해양컴퓨터공학과 40

플러딩(Flooding) 공격 (1)

TCP SYN 플러딩 서비스 거부(DOS: Denial of

Service) 공격의 한 가지

TCP/IP 프로토콜의 구현상에 있어서 문제점을 이용한 공격

플러딩(flooding)

“범람하다, 넘치다”

대상 호스트에 대하여 지속적인 거짓 패킷을 보냄으로써 시스템이 마비되는 상태가 되도록 하는 방법

시스템의 종류에 관계없이 TCP 연결을 허용하는 모든 시스템에 사용 가능

SYN 플러딩 공격의 예

목포해양대 해양컴퓨터공학과 41

플러딩(Flooding) 공격 (2) 플러딩 공격 대응책

타임아웃 시간을 줄이는 방법

지속적으로 공격을 반복하는 경우에는 방어의 효과가 없음

TCP의 SYN 공격이 IP 위장공격을 위한 전 단계 공격에 이용되는 경우에는 어느 정도의 효과를 발휘

네트워크의 특성상 약간의 시간이 소요되는 정상적인 연결에 대해서도 연결이 완결되지 않는 부작용을 야기할 수 있음

라우터에서의 위장된 소스 어드레스를 가진 패킷을 차단하는 방법

소스 어드레스를 갖는 패킷이 유출되는 것을 차단

공격대상 네트워크에서 자신의 내부 주소범위를 소스 어드레스로 갖는 패킷의 유입을 차단 한다면 공격의 상당부분을 감소시킬 수 있음

TCP의 SYN 공격이 IP 위장 공격과 함께 사용되는 경우는 더욱 효과적임

목포해양대 해양컴퓨터공학과 42

서비스 거부 (DOS) 공격 (1)

시스템 또는 서비스의 정상적인 운영을 방해하는 모든 행위

시스템 또는 네트워크의 자원을 고갈시키자는 목적으로 시스템, 네트워크 혹은 응용프로그램 등의 근본적인 결함을 이용한 공격방법

주요 서비스 거부 공격 Smulf 공격, Land 공격, Ping of

Death 공격, SYN flooding 공격, UDP flooding 공격, TCP-FIN 공격 등

서비스 거부 공격의 특징 공격의 원인 및 원천지를 찾기가

힘들고, 명확한 예방 대책이 없음

목포해양대 해양컴퓨터공학과 43

서비스 거부 (DOS) 공격 (2) 서비스 거부 공격 수법의 분류

공격 근원 프로토콜 공격대상자원 공격수법

내부사용자 해당없음 시스템 자원 CPU 서비스 거부 공격 메모리 서비스 거부 공격 프로세스 서비스 거부 공격 디스크 서비스 거부 공격

외부사용자 응용프로그램, 서비스

talk를 이용한 화면 서비스 거부 공격 finger redirect 공격 netcat을 이용한 공격 DNS에 대한 공격 syslog에 대한 공격 linx를 이용한 httpd 공격

네트워크, 시스템 inetd killing 공격 inetd loop 공격 socket open/close flooding

socket descriptor 과소비 공격

목포해양대 해양컴퓨터공학과 44

서비스 거부 (DOS) 공격 (3) 서비스 거부 공격 수법의 분류 (계속)

공격 근원 프로토콜 공격대상자원 공격수법

외부사용자 TCP 시스템, 네트워크

TCP FIN 공격 TCP windows 스푸핑 공격 TCP SYN Flooding 공격

UDP 시스템, 네트워크 UDP Bomb

UDP Flooding

ICMP 시스템, 네트워크

ICMP redirect 공격 ICMP echo bomb 공격 ICMP bomb 공격

SMTP 시스템 mail Bomb 공격 mail Spam 공격

목포해양대 해양컴퓨터공학과 45

서비스 거부 (DOS) 공격 (4)

ICMP 스머프(Smulf) 공격

ICMP 프로토콜의 echo 패킷에 대한 응답인 reply 패킷의 폭주를 통해 시스템을 마비시키는 공격

브로드캐스트 된 echo를 받은 모든 호스트가 타겟에 응답을 전송

목포해양대 해양컴퓨터공학과 46

서비스 거부 (DOS) 공격 (5) Land 공격

TCP 연결 요청 패킷인 SYN의 발신지 주소를 공격 대상 호스트의 IP 주소와 포트 번호로 설정한 후 공격 대상 호스트로 패킷을 전송

패킷을 수신한 공격 대상 호스트는 동일한 패킷의 송/수신을 반복하는 루프 상태에 빠지며 IP 스택에 심각한 장애를 갖게 됨

증상

시스템 중단

Land 공격 예방

네트워크 내의 라우터가 내부 IP 주소를 발신지로 갖는 외부 패킷을 차단

Ping of Death 공격 패킷의 분할(fragmentation)과 재조립(reassembly) 취약점을 이용

공격자는 공격 대상 시스템으로 매우 큰 ping 서비스의 ICMP 패킷을 전송하여 시스템의 IP 스택에 장애를 발생시킴

증상

• Land 공격의 경우와 동일

Ping of Death 공격 방지

• 큰 패킷 전송을 제한하도록 설정된 ping 프로그램의 패치를 설치

목포해양대 해양컴퓨터공학과 47

서비스 거부 (DOS) 공격 (6) SYN flooding 공격

TCP 연결에 사용되는 SYN 패킷을 공격 대상 시스템으로 단시간에 다수 전송하여 대상 시스템의 수신 큐(listen queue)를 가득 채워서 TCP 연결이 거부되도록 함

공격 대상 시스템은 SYN에 대한 응답으로 SYN/ACK를 전송하고 이에 대한 응답인 ACK 패킷을 기다리게 되는데 공격자는 ACK 패킷을 전송하지 않으므로 공격 대상 시스템은 대기 상태에 빠지게 됨

목포해양대 해양컴퓨터공학과 48

서비스 거부 (DOS) 공격 (7) UDP flooding 공격

송신자의 주소를 속인 UDP 패킷을 공격 대상 시스템에게 다수 전송하여 대상 시스템의 네트워크를 마비시키는 공격 방식

공격자는 루프를 생성시키거나 마스터와 클라이언트로 구분되는 여러 호스트를 연합하여 동시에 다수의 UDP 패킷을 전송 함

Trinoo 분산 UDP flooding 공격 도구로서 몇

개의 마스터들과 다수의 클라이언트들로 구성

공격자는 Trinoo 마스터 서버에 접속하여 1개 이상의 IP 주소에 해당하는 시스템을 대상으로 UDP flooding 공격을 지시

목포해양대 해양컴퓨터공학과 49

서비스 거부 (DOS) 공격 (8)

TCP FIN 공격

공격자는 일반 TCP 패킷에 연결 종료를 의미하는 FIN 플래그를 설정하여 공격 대상 호스트에게 전송

패킷을 수신한 공격 대상 호스트는 기존에 수립되어 있던 TCP 연결을 종료시키므로 공격자는 대상 호스트의 통신을 계속 방해할 수 있음

목포해양대 해양컴퓨터공학과 50