블로그 이미지

my hiding place

삶이 힘들 때, 조금이라도 고개를 들고 위를 보세요. 푸른 하늘이 당신을 맞이해줄 날이 있을 테니까. by nulonge


'DNS Insufficient Socket Entropy Vulnerability'에 해당되는 글 1건

  1. 2008.07.28 [최근 이슈] DNS Insufficient Socket Entropy Vulnerability

[최근 이슈] DNS Insufficient Socket Entropy Vulnerability

요즘 한참 이슈가 되고 있는 취약성입니다. 미국에서는 metasploit 개발에 주도적으로 참여한 H. D. Moore의 BreakPoint도 이 공격의 영향을 받았다죠? Metasploit에서 DNS 공격에 사용하는 코드를 릴리즈한게 H. D. Moore인데, 본인이 본인 코드의 희생이 되었다는 웃지못할 일이... 저희 회사 취약성 DB에서 데이터를 참고해서 포스팅합니다. (누렁아~ 넌 언제쯤 독자적인 포스팅을 할꺼냐?)

관련 포트
DNS, OVER PORT 53/UDP


요약
이 취약점은 DNS 클라이언트와 DNS 서버에 모두 존재합니다. 이 취약점을 통해 원격 공격자가 인터넷을 통해 시스템에 대한 네트워크 트래픽을 공격자 자신의 시스템으로 리디렉션 할 수 있습니다.

상세정보
DNS는 호스트 이름과 IP 주소를 매핑 시켜주는 시스템이며, 호스트 이름은 알파벳으로 이루어져 있어 사람들이 기억하기 쉽습니다.

DNS caching은 네트워크 트래픽을 줄이는 방법이고 DNS 운영을 개선하는 방법이며, 일반적으로 간단한 DNS caching은 아래의 순서대로 이루어집니다.
1. caching DNS 서버가 사용자로부터 DNS 질의를 받습니다.
2. 만약 질의 결과가 없다면 DNS 서버는 그 상위 DNS 서버에게 질의를 보냅니다.
3. 상위 DNS 서버는 결과를 caching DNS 서버에게 되돌려줍니다.
4. caching DNS 서버는 상위 DNS 서버로부터 받은 결과 값으로 사용자에게 질의 결과를 보내주고, cache database에 저장합니다.

DNS 서버는 UDP 53번 포트를 통해 일반 DNS 질의 요청을 수신합니다. UDP는 무연결성(connectionless)이기 때문에 메시지 안에 16비트의 transaction ID 값을 이용하여 DNS 질의와 응답을 동기화합니다.

DNS 스푸핑은 DNS 서비스와 DNS 클라이언트의 설계 결함으로 발생합니다. DNS 질의는 나갈 때 예상할 수 있는 출발지 포트를 사용하고, DNS 서버는 랜덤하게 선택한 포트 넘버를 시스템이 재부팅 되기 전까지 나가는 모든 질의에 사용합니다. DNS 클라이언트의 포트 번호는 받은 질의에 1을 증가시킵니다. 따라서 악의적인 공격자는 DNS 질의를 보내서 DNS 서버로 부터 출발지 포트를 알 수 있고 DNS 클라이언트 서비스를 이용해서 다음 출발지 포트를 짐작할 수 있습니다. 만약 정교하게 조작된 응답이 진짜 응답 보다 먼저 옳은 transaction ID을 가지고 도착한다면  DNS 서버는 조작된 응답을 받아 들이게 됩니다. 이렇게 되면 DNS 서버는 호스트 이름에 악의적으로 조작된 IP주소를 매핑하여 사용자에게 응답을 보냅니다. DNS서버와 DNS client 서비스는 이 응답을 데이터베이스에 저장하고, 앞으로 DNS 질의에 악의적인 호스트 주소를 알려주게 됩니다.

이 취약점을 통해 원격 공격자가 인터넷을 통해 시스템에 대한 네트워크 트래픽을 공격자 자신의 시스템으로 리디렉션 할 수 있습니다.

대응방법
DNS 서버의 보안업데이트
출발지 포트 랜덤화
관련 CVE: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1447



관련 글들
Nchovy 인터넷 스톰 센터: DNS 캐시 포이즈닝 취약점 권고문
DNS Cache Poisoning 공부: http://pcaccent.oranc.co.kr/tt/1188

Comment 0 Trackback 0
Top

prev 1 next