공격/대응 Examples.

Slides:



Advertisements
Similar presentations
충북대 네트워크 보안 연구실 [ gmail.com ] 정보 보호 응용 11. 해킹기술 (3) 11. 해킹기술 (3) - hacking & security -
Advertisements

제 4 장 인터넷 창병모 네트워크 구성 2 LAN(Local Area Network) LAN  근거리 통신망으로 집, 사무실, 학교 등의 건물과 같이  가까운 지역을 한데 묶는 컴퓨터 네트워크 이더넷 (Ethernet)  제록스 PARC.
Intrusion Detection System( 침 입탐지시스템 ) Wireless/Mobile Network Lab 박준석.
차세대네트워크보안기술 영산대학교 네트워크정보공학부 이원열.
제 8장 데이터 보안.
8 스니핑.
제 20 장 TCP 대용량 데이터 흐름.
네트워크해킹 분석 및 대응 한국정보보호교육센터 서 광 석 원장.
Basic of Buffer Over Flow
Chapter 03. 네트워크 보안 : 길을 지배하려는 자에 대한 저항
Chapter 8 Authorization
1. 스푸핑 공격 - 스푸핑(Spoofing): ‘속이다’ 의 의미.
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
보안 시스템 정보 보안 개론 10장.
제목 CHAPTER 09. 정보 보안 선택이 아닌 필수_정보 보안 기술과 정보 윤리.
22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
UDP 1434 공격에 대한 방어 요령 Cisco Systems Korea 최 우 형 Network 보안과 대책
Network Security - Ethereal 실습
11. 해킹기술 (4) - hacking & security -
Network Security - Wired Sniffing 실습
Internet Control Message Protocol (ICMP)
V44408(다산네트웍스) 개량개선 내역(1.05) KT 네트워크기술지원본부 유선액세스망기술담당 1
Network 네트워크 이론 및 실습 TCP / IP 4장.
목 차 1. 기 업 현 황 회 사 개 요 2. Finger Police System 개요
제 18 장 TCP/IP 연결 확립과 종료 정보통신연구실.
소개: Unix란 무엇인가? 숙명여대 창병모 2009/09.
네트워크 보안 TCP/IP 네트워크통신 개념.
Chapter 02 네트워크에 대한 이해.
유닉스 이론과 실습 √ 원리를 알면 IT가 맛있다 컴퓨터정보계열 이광규.
버퍼 오버플로우에 대한 대책과 발전된 공격 안전한 함수 사용 버퍼 오버플로우에 취약한 함수 사용하지 않기
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
NAC Test 시나리오 내부단말 통제 보안 BMT 시나리오
Chapter 06 스니핑.
11. 해킹기술 (2) - hacking & security -
국산 Firewall 제품 비교표 SecureShield SecureWorks InterGuard Hwarang
버퍼 오버플로우 시스템보안 류기환 권재홍.
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
PART 02 프로토콜 컴퓨터 네트워크 chapter 06 트랜스포트 계층 임효택.
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Processing resulting output
Chapter 05 목록화.
Network Security Footprint & Scan.
침입탐지시스템과 정보보안 안
정보보호 실습 #2 네트워크 스캐닝 Choong Seon Hong Networking Lab.
11 세션 하이재킹.
Access Control Lists Access Control List
제 21 장 TCP 타임아웃과 재전송.
제 21 장 TCP 타임아웃과 재전송 정보통신연구실.
3부 해킹 전 정보 획득 Chapter 6. 풋프린팅과 스캔
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
DoS와 DDoS 공격 DOS와 DDOS 공격의 이해 DOS 공격의 이해 DDOS 공격의 이해 한빛미디어(주)
1. 침입탐지시스템(IDS) 침입탐지시스템의 구성 Network Base IDS Host Base IDS
Information Security - Wired Sniffing 실습
1 학습 목표 네트워크의 기초 네트워크 관련 기초 용어를 익힌다.
FireWall / VPN Solution
인터넷보안 실습 2012년 1학기.
Transmission Control Protocol (TCP)
유닉스 개요 및 기본 사용법 ㅎㅎ 유닉스 개요 유닉스 시스템 접속 방법과 명령 사용법.
발표자료는 다음링크에서 다운로드 받으실 수 있습니다.
9 스푸핑.
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
네트워크 속에서의 정보보안 전 상 대.
Computer Network(Hacking)
Part TCP / IP 1. TCP / IP 프로토콜 2. 기본 프로토콜.
해킹의 정의와 역사 해킹의 정의 해킹의 유형 해커의 분류 해킹의 역사 해킹 기술의 변천.
9 스푸핑.
Information Security - Network Scanning.
Information Security - Sniffing 실습.
한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
Data Compression 데이터 압축:음성, 비디오, 팩시밀리 전송등과 같은 경우에 중요
Presentation transcript:

공격/대응 Examples

내 용 Spoofing 공격 및 대응 Sniffing 공격 및 대응 ARP Spoofing IP Spoofing DNS Spoofing Sniffing 공격 및 대응 DOS/DDOS(Distributed Denial Of Service) 공격 및 대응 Buffer overflow 공격 및 대응

Spoofing 공격 스푸핑(Spoofing)이란 ‘속이다’라는 의미 대상 IP 주소 호스트 이름 MAC 주소 인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하며, 정보를 얻어내는 것 외에도 시스템을 마비시키는 것도 가능

ARP Spoofing ARP 스푸핑은 로컬에서 통신하고 있는 서버와 클라이언트의 IP 주소에 대한 2계층 MAC 주소를 공격자의 MAC 주소로 속여 클라이언트에서 서버로 가는 패킷이나 서버에서 클라이언트로 가는 패킷을 중간에서 가로채는 공격 공격자는 이 패킷을 읽고 확인한 후 정상적인 목적지로 향하도록 다시 돌려보내 연결이 끊어지지 않고 연결되도록 유지

ARP Spoofing 공격 예 1. 명호는 먼저 10.0.0.2에 해당된 가짜 MAC 주소를 CC로 10.0.0.3에 해당하는 가짜 MAC 주소를 CC로 알림 2. 명호는 철수와 영희 컴퓨터로부터 패킷을 수신 3. 각자에게 받은 패킷을 읽은 후 철수가 영희에게 보내고자 하던 패킷을 정상적으로 영희에게 송신하고, 영희가 철수에게 보내고자 했던 패킷을 철수에게 송신

ARP Spoofing 공격 전후의 패킷의 흐름

IP Spoofing 공격 공격 대상 호스트가 신뢰하는 특정 호스트로 가장하여 대상 호스트로부터 인증을 받는 것 TCP 프로토콜 자체의 취약점 이용 TCP Sequence Number 추측 가능 IP 인증 메커니즘을 사용하는 RPC 기반 r계열 서비스 이용 r 계열 서비스 인증 메커니즘 : 신뢰관계에 있는 호스트들의 IP주소만을 대상으로 인증 신뢰관계 설정 파일(UNIX 또는 LINUX) /etc/hosts.equiv $HOME/.rhost 인증 최소화 해커 “케빈 미트닉”이 이용 Up till now, have been concerned with protecting message content (ie secrecy) by encrypting the message. Will now consider how to protect message integrity (ie protection from modification), as well as confirming the identity of the sender. Generically this is the problem of message authentication, and in eCommerce applications is arguably more important than secrecy.

IP Spoofing 공격 방법 구성 ~ S:대상 호스트 C:S와 신뢰관계에 있는 호스트  X:공격자

IP Spoofing 공격 방법  C 무력화  IP Spoof 대상 호스트 S 와 신뢰관계에 있는 C를 탐색 SYN Flooding 등의 서비스 거부 공격을 통해 C를 무력화 하거나 시스템 C가 동작 불능 상태에 있는 시점 탐색 시스템 점검을 위해 down 되거나 reboot되는 시점  IP Spoof C로 위장(Impersonation) X -> S : SYN(ISN X), Src = C S -> C : SYN(ISN S), ACK(ISN X) C 는 무력화되어 RST 송신 불가

IP Spoofing 공격 방법  ISN 예측 및 악성 코드 실행 공격자 X는 ISN S를 예측 악성코드 실행 공격자 X는 C로 전송된 S의 SYN패킷의 ISN S를 알지 못함 단, C가 X와 동일 LAN Segment 상에 존재한다면 Packet Dump Tool 이용 가능 X -> S : ACK(ISN S), Src=C S는 C와 정상적인 TCP 접속 완료한 것으로 여김 X는 S와 Data 송수신 가능 악성코드 실행 “echo + + >> .rhost” // any host, any named user can access 암호 없이 로그인 가능

신뢰 시스템 탐색 정보수집 단계에서 수행 Blind Spoofing Non-Blind Spoofing 원격 대상 호스트 공격 ISN의 예측 r-계열 서비스, NFS(Network File System) Non-Blind Spoofing 대상 호스트의 Packet 내용 파악이 가능한 경우(연결요청 감시->강제RST->공격자가 새로운 연결 시도:IP hijacking)

ISN ISN(Initial Sequence Number) 최초 요청 호스트가 대상 호스트로 보내는 SYN 번호 OS 마다 다른 변화 규칙 ISN 변화 규칙 설명 적용시스템 시간에 비례 최초 ISN = 1 초당 128,000씩 증가 TCP 연결 후는 64,000식 증가 IRIX 6.2와 이후 Linux 1.x와 이후 SunOS 5.5와 이후 MS Window Free BSD 패킷 수신시 증가 패킷 수신 시 64,000씩 증가 추측이 가장 용이 HP-UX AIX 3과 이전 SunOS 5.4와 이전 랜덤 ISN을 무작위로 변화 AIX 4와 이후 Linux 2.x와 이후

ISN 예측 방법 합법적인 사용자의 경우 다음 접속의 ISN S를 쉽게 계산 가능 SYN Packet 전송 및 응답 수신(1) X -> S : SYN(ISN X) S -> X : SYN(ISN S), ACK(ISN X) 다음 ISN을 생성하도록 Spoofing된 Packet을 즉시 송신(2) X -> S : SYN(ISN X), Src = C S -> C : SYN(ISN S), ACK(ISN X) 시간에 비례하여 ISN이 변하는 경우 (2)의 ISN S는 (1)의 RTT(Round Trip Time)에 의존 Tcpdump를 사용하여 packet 모니터링 Packet 수신 시 ISN 증가 되는 경우 유용

IP Spoofing 대응 방법 r-command 사용 금지 Sequence Number를 랜덤하게 생성 SN 32bit 중 일부를 randomize 적은 bit를 randomize할 경우 brute-force 공격 가능(랜덤 발생기의 seed 추측) ISN S 생성위해 암호 알고리즘(DES-ecb mode) 사용 재전송, 순서제어 등 신뢰 전송 서비스 제공을 위한 SN 고유 기능 유지 필요 암호화된 인증 방법 채택(IPSec)

필수 라이브러리 IP Spoofing 등 네트워크 해킹 공격 도구 및 방어에 필요한 필수 라이브러리 Libnet : Packet Injection http://libnet.sourceforge.net/ Libpcap : Packet Capture 윈도우즈용 : WinPcap http://winpcap.polito.it/ Libnids : Network Analisys http://www.packetfactory.net/Projects/libnids/ OpenSSL : Cryptography http://www.openssl.or.kr/news/news.html

DNS 스푸핑 DNS(Domain Name System) 스푸핑은 웹 스푸핑과 유사한의미로 이해되기도 함 인터넷을 이용하는 도중 주소 창에 가고자하는 사이트 이름을 적어놓고는 엔터 키를 눌렀더니 엉뚱한 사이트로 연결되는 경우를 경험해본 적이 있을 것이다. 예를 들면 ‘www.cwd.go.kr(우리나라 대통령이 사시는 곳이다)’란 주소를 주소 창에 넣었더니만 무슨 쇼핑몰이나 포르노 사이트가 뜨는 경우다. 이런 경우가 DNS 서버의 오류로 인해 생길 수도 있지만, DNS 스푸핑과 같은 공격으로도 이루어짐

정상적인 DNS 서비스 1. 클라이언트는 접속하고자 하는 사이트의 도메인 이름에 해당하는 IP 주소를 이미 설정된 DNS 서버에게 질의. 이때 보내는 패킷이 DNS query 패킷임 2. DNS 서버는 해당하는 도메인 이름에 대한 IP 주소를 클라이언트에게 전송 3. 클라이언트는 받은 IP 주소를 바탕으로 웹 서버에 접속

DNS 스푸핑 클라이언트가 DNS 서버로 DNS query 패킷을 보내는 것을 확인. 스위칭 환경일 경우에는 클라이언트가 DNS query 패킷을 보내면 이를 받아야 하므로 arp 스푸핑과 같은 선행 작업이 필요 만약 허브를 쓰고 있다면 모든 패킷이 자신에게도 전달되므로 자연스럽게 클라이언트가 DNS query 패킷을 보낼 경우 이를 확인할 수 있음

DNS 스푸핑 2. 공격자는 로컬에 존재하므로 DNS 서버보다 지리적으로 가까운 위치에 있음. 따라서 DNS 서버가 올바른 DNS response 패킷을 보내주기 전에 클라이언트에게 위조된 DNS response 패킷을 보낼 수 있음

DNS 스푸핑 3. 클라이언트는 공격자가 보낸 DNS response 패킷을 올바른 패킷으로 인식하고, 웹에 접속한다. 지리적으로 멀리 떨어져 있는 DNS 서버가 보낸 DNS response 패킷은 폐기

Sniffing Sniff의 사전적 의미 : 코를 킁킁거리다 Sniffing 공격은 막는 것도 어려우며, 탐지 역시 쉽지 않음. Sniffing 공격을 수동적(Passive) 공격이라고도 말하는데, 그 이유는 공격 시 툴을 설치해놓은 상태로 충분하기 때문임 LAN에서의 Sniffing은 프러미스큐어스(Promiscuous) 모드에서 작동 LAN 카드는 설정된 IP 주소 값과 고유한 MAC(Media Access Control) 주소 값을 가지고 있으며 자신의 랜 카드에 들어오는 프로토콜 형식에 따른 전기적 신호의 헤더 부분, 즉 주소 값을 인식하고 자신의 버퍼에 저장할지를 결정 Sniffing은 자신이 가지지 말아야 할 정보까지 모두 받아들이는 것으로, 자신의 주소 값을 무시하고 모든 패킷을 받아들이는 상태를 프러미스큐어스 모드라고 함

Sniffing공격도구-TCPDump 가장 일반적으로 쓰이는 스니핑 도구 관리자적인 느낌이 강한 스니퍼 네트워크 관리를 위해 개발된 툴 Snort라는 IDS의 기반 프로그램 TCP Dump는 법적 효력이 있다. 법적 효력을 발휘하려면 법원에서 인정하는 규약에 따라야 한다. 하지만 대부분의 컴퓨터로 취득한 자료는 재판 과정에서 직접적인 증거로 인정 받지 못한다는 사실을 알아둬야 한다. 그 이유는 위조나 변조는 매우 쉽고, 그 위조와 변조 여부를 알아내는 것이 너무 어렵기 때문이다.

Telnet Login 시 TCPDump 결과 계정 : wishfree의 경우

Telnet Login 시 TCPDump 결과 패스워드 : qwer1234의 경우

서비스 거부 공격(DoS) 자원 고갈을 통한 서비스 무력화 TCP SYN flooding을 이용한 DOS 공격 동시 접속 요청 처리 한계인 Backlog(N) 큐가 가득찬 경우 새로운 연결 요청은 무시하도록 하는 TCP 프로토콜의 취약점 이용

서비스 거부 공격(DoS) 공격자 해결책 대상 호스트에 N개의 매우 느리고 오래 동안 접속되는 연결을 N개 요청 Half open : Random IP 주소로 연결 요청 -> ACK를 보내지 않음 IP Address spoofing 필요 대상 호스트는 새로운 SYN Packet에 대해 처리 불가 -> 네트워크 서비스 중지 해결책 TCP 커널 코드 수정(Half open connection 폐기) Firewall에서 공격 감지 시 서버로 RST Packet 송신

분산 서비스거부 공격 서비스 거부 공격을 수행하기 위해 여러대의 호스트 사용 DDoS공격 가능한 도구 : Smurf Trinoo Trible Flood Network (TFN, TFN2K) Stacherldraht Shaft Mstream …

Smurf 위장된 송신 IP를 갖는 ICMP 패킷을 보냄 라우터나 방화벽이 그러한 패킷을 막도록 구성되어질 수 있음 패킷을 수신한 모든 기기들은 대상 기기에 응답을 보냄 라우터나 방화벽이 그러한 패킷을 막도록 구성되어질 수 있음

Tribal Flood Network (TFN2K) 계층적으로 조직화된 분산 공격 검출 및 방어가 훨씬 어려움

방어 확실한 예방법 부재 로컬 시스템이 DDoS 에이전트로 작동 중인 지를 지속적으로 검사하여 예방 (예. TFN 에이전트-> 실행 프로그램의 무결성 검사) 공격의 근원지를 알아내는 것은 더 많은 작업이 필요함 : Savage 등 : 패킷 내에 라우터에서 포함된 정보 이용. 희생자가 공격근원지를 짜맞출 수 있음 Bellovin: 라우터들이 패킷의 임의 특정 부분에 대해 서명

Buffer overflow 공격 가장 일반적인 bug CERT 보안 권고문의 50% 이상 차지 : 1997: 16 out of 28 CERT advisories. 1998: 9 out of 13 1999: 6 out of 12 종종 HOST 붕괴로 확산됨 다행스러운 점 : 전문성과 인내 요구 2 단계 구성 : 응용프로그램 중 buffer overflow 발생 가능 여부 탐색 루트권한으로 실행 중인 응용프로그램 선정 적용방법 고안 공격코드 수행 Up till now, have been concerned with protecting message content (ie secrecy) by encrypting the message. Will now consider how to protect message integrity (ie protection from modification), as well as confirming the identity of the sender. Generically this is the problem of message authentication, and in eCommerce applications is arguably more important than secrecy.

Buffer overflow 란? Stack Overflow Heap Overflow LIPO(Last In First Out) PUSH/POP 연산 Stack Pointer : esp 레지스터 프로세스 영역 중 함수의 인자, 지역변수, 리턴 주소를 저장 리턴 주소를 쉘 코드 주소로 Overriding Heap Overflow 동적 메모리 할당 영역 Malloc 함수에 의해 할당->Overriding 가능

Buffer overflow 란? 웹 서버가 다음 함수를 포함한다고 가정 : 함수가 호출될 경우 스택 상황 : void func(char *str) { char buf[128]; strcpy(buf, str); } 함수가 호출될 경우 스택 상황 : 만약 *str가 136바이트 보다 길다면? strcpy 후 스택 상황 :

스택 활용 문제점 : strcpy()에 범위 체크 없음 strcpy 후 *str이 다음과 같다고 가정한 경우 스택 상황 : func()가 종료된 경우, 사용자는 shell 획득!! 주의 : 공격코드가 스택 내에서 수행됨 ret를 결정하기 위해 func()가 호출된 후의 스택의 위치를 추측

Buffer overflows 이용 웹 서버가 주어진 URL을 가지고 func()을 호출한다고 가정 이 경우 고려사항 : 프로그램 P는 ‘\0’ 문자를 포함할 수 없음 Overflow가 func()이 종료되기 전에 프로그램을 붕괴해서는 안됨 이런 유형의 buffer overflows : 메일 프로그램의 MIME name field 처리 시 MS Outlook Express 4.0x

일반적인 overflow 이용 방법 기본 스택 이용은 스택 세그먼트를 non-executable로 표시하여 방지할 수 있음 Linux 또는 Solaris용 패치 존재 그러나, 일반적인 overflow 이용을 막을 수는 없음 일반적 buffer overflow 이용의 2 단계 : 공격 코드를 프로그램 영역에 위치시킴 프로그램 P로 하여금 공격코드를 실행 하도록 함

공격코드 실행 Stack smashing 공격 : 함수 pointers : (Linux superprobe 공격) 지역 buffer 변수에 overflow를 발생시켜 리턴 주소를 Overriding 함수 pointers : (Linux superprobe 공격) 일반적으로 buffer overflow가 함수pointer를 overriding longjmp buffers : longjmp(pos) (Perl 5.003 공격) pos 다음에 나오는 buffer에 Overflow를 발생시켜 pos를 overriding

공격코드의 위치 공격코드의 주입 : 기존 코드 이용 : libc exec 함수 스택 변수에 위치 (local vars) 힙 변수에 위치 (malloc’ ed vars) 정적자료영역(data segment)에 위치 (static vars) 기존 코드 이용 : libc exec 함수 FP나 ret-addr를 libc의 exec 함수를 가리키도록 하고 동시에 첫번째 인수를 \bin\sh이 되도록 함

Buffer overflows 발견 해커의 buffer overflows 발견 방법 예: 로컬 시스템에 웹 서버 기동 긴 특정 태그를 갖는 요청을 발생시킴 모든 긴 태그들은 “$$$$$”로 종료 웹 서버 붕괴 시, overflow위치를 발견하기 위해 core dump에서 “$$$$$”를 탐색 자동화된 도구 존재 (eEye Retina, ISIC) 검증 안된 Open Source 이용 시 소스 레벨 탐색 가능

Buffer overflow 공격 방지 문제점 : 방어 : strcpy(), strcat(), sprintf() 함수들은 범위 체크 기능 없음 다소 안전하다고 할 수 있는 strncpy(), strncat()는 종종 오용 가능 strncpy()의 경우 버퍼를 종료되지 않은 상태로 남겨 둘 수 있음 strncpy( dest, src, strlen(src)+1 ) 방어 : 정적 소스코드 분석법 실행시간 검사법

정적 소스코드 분석법 buffer overflows를 검사하기 위해 소스코드를 점검 소스코드 리뷰를 자동화 할 수 있는 방법? 컨설팅회사 존재 소스코드 리뷰를 자동화 할 수 있는 방법? 도구들 : @stake.com (l0pht.com) : SLINT (UNIX용) rstcorp: its4. (함수호출 검사) Berkeley: Wagner, et al. (제약 위반 검사)

실행시간 검사 : StackGuard 방법 1: 실행 시 buffer 범위 검사 방법 2: StackGuard (OGI) 수행 성능 저하 심각 C 나 C++의 경우 적용 어려움 방법 2: StackGuard (OGI) 스택의 무결성을 실행 시 검사 스택 프레임에 “canary”를 심어 두고 함수 리턴 전에 그들의 무결성을 검사

Canary 유형 Random canary: Terminator canary: 프로그램 수행 시작 시 임의의 스트링 선택 canary 스트링을 모든 스택 프레임에 삽입 함수 리턴 전에 canary 검사 random canary를 붕괴하기 위해서 공격자는 현재의 임의의 스트링을 알아야 함 Terminator canary: Canary = 0, newline, linefeed, EOF C 표준입출력 함수 중 스트링 함수들이 종료 구분자를 넘어서는 복사하지 않는 특성 이용 결국 공격자는 스택 붕괴를 위해 스트링 함수를 사용할 수 없음

StackGuard (계속) StackGuard는 GCC의 패치로 구현 성능 저하 최소화 새 버전 : PointGuard. Canary를 이용 function pointers와 setjmp buffers를 보호 성능 개선 주의 : Canary들이 완전한 해결책은 아님 일부 stack smashing 공격들은 canaries를 건드리지 않고 공격 가능

참고문헌 Buffer overflows: attacks and defenses for the vulnerability of the decade. http://www.immunix.org/StackGuard/discex00.pdf A first step towards automated detection of buffer overrun vulnerabilities. http://www.cs.berkeley.edu/~daw/papers/overruns-ndss00.ps Smashing the stack for fun and profit. http://www.phrack.com Article p49-14. By Aleph1 Bypassing StackGuard and StackShield. http://ww.phrack.com Article p56-6. By Bulba and Kil3r Distributed denial of service attacks/tools. http://staff.washington.edu/dittrich/misc/ddos