1 / 45

공격/ 대응 Examples

공격/ 대응 Examples. 내 용. Spoofing 공격 및 대응 ARP Spoofing IP Spoofing DNS Spoofing Sniffing 공격 및 대응 DOS/DDOS(Distributed Denial Of Service) 공격 및 대응 Buffer overflow 공격 및 대응. Spoofing 공격. 스푸핑 (Spoofing) 이란 ‘ 속이다 ’ 라는 의미 대상 IP 주소 호스트 이름 MAC 주소

Download Presentation

공격/ 대응 Examples

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 공격/대응Examples

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

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

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

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

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

  7. IP Spoofing 공격 • 공격 대상 호스트가 신뢰하는 특정 호스트로 가장하여 대상 호스트로부터 인증을 받는 것 • TCP 프로토콜 자체의 취약점 이용 • TCP Sequence Number 추측 가능 • IP 인증 메커니즘을 사용하는 RPC 기반 r계열 서비스 이용 • r 계열 서비스 인증 메커니즘 : 신뢰관계에 있는 호스트들의 IP주소만을 대상으로 인증 • 신뢰관계 설정 파일(UNIX 또는 LINUX) • /etc/hosts.equiv • $HOME/.rhost • 인증 최소화 • 해커 “케빈 미트닉”이 이용

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

  9. IP Spoofing 공격 방법 •  C 무력화 • 대상 호스트 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 송신 불가

  10. 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 • 암호 없이 로그인 가능

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

  12. ISN • ISN(Initial Sequence Number) • 최초 요청 호스트가 대상 호스트로 보내는 SYN 번호 • OS 마다 다른 변화 규칙

  13. 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 증가 되는 경우 유용

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

  15. 필수 라이브러리 • 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  31. 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 발생 가능 여부 탐색 • 루트권한으로 실행 중인 응용프로그램 선정 • 적용방법 고안 • 공격코드 수행

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

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

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

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

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

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

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

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

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

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

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

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

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

  45. 참고문헌 • 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

More Related