2016년 8월 20일 토요일

정보보안기사 정리 26 - DoS, DDoS, 포트스캐닝, 스니핑, 스푸핑, HTTP 세션하이재킹

네트워크 - DoS(TCP SYN spoofing, Smurf attack, ICMP/UDP Flood, TCP SYN Flood, Land attack, Ping of death, Teardrop attack), DDoS(대응, 공격과정, DNS 싱크홀, UDP/ICMP flooding, TCP flooding, IP flooding, HTTP flooding, HTTP Header/Option Spoofing Flooding, HashdDos, HulkDos, DRDoS), 포트스캐닝(Sweep(ICMP, TCP, UDP sweep), Open Scan(TCP Open Scan, UDP Open Scan), Stealth Scan(TCP FIN/NULL/XMAS Scan, TCP ACK Scan)), 스니핑, 스푸핑(ARP 스푸핑, IP 스푸핑, DNS 스푸핑, 웹 스푸핑, 이메일 스푸핑), HTTP 세션 하이재킹


1. DoS (Denial of Service)
- 종류: 시스템 자원 소진 공격(CPU, 메모리 등), 시스템 파괴 공격(디스크, Data), 네트워크 자원소진 공격(대역폭)
- TCP SYN spoofing attack(Flooding 공격)
  3-way handshaking 과정에서 half-open 연결 시도가 가능한 것을 이용.
  공격방법1: SYN 신호를 서버에 보내면 서버는 SYN+ACK를 공격자에게 보내고 ACK를 기다리는데, 공격자가 ACK 안보내면 서버는 일정 시간동안 기다림.
  공격방법2: 공격자가 출발지 IP를 위조(스푸핑)하여 많은 양의 SYN 패킷을 서버에 전송. 서버는 각 패킷에 대해 정보를 저장하고 SYN+ACK 패킷을 반환.
  만약 출발지 IP가 존재하면 해당 IP의 호스트는 뜬금없는 SYN+ACK 패킷이므로 RTS(reset) 패킷으로 응답하고 서버는 연결을 삭제함.
  하지만 출발지 IP가 존재하지 않는다면 응답이 오지 않고 서버는 계속 상태 정보를 유지하면서 SYN+ACK 패킷을 보내므로
  TCP 연결 테이블에 연결정보가 타임아웃이 될때까지 유지됨.
  대책: IDS, IPS, SYN_Cookie로 모든 요청에 세션을 열지말고 쿠키로 저장.
  * DoS 공격이라고 하지만 봇을 써서 다량의 SYN 패킷을 전송하면 DDoS 공격이 됨.

- SMURF Attack
  ICMP 프로드캐스트, 공격자, 증폭네트워크(다수의 시스템), 타켓 호스트(서버 등)가 있는 환경.
  공격방법: 공격자는 출발지 IP를 타켓 호스트의 IP로 위조(스푸핑)한 후 ICMP Echo request를 증폭 네트워크에 브로드캐스트 함.
  다수의 시스템은 request에 대한 응답으로 ICMP Echo reply를 request 패킷의 출발지 IP로 보내는데, 타켓 호스트 IP 주소로 공격자가 보냈으므로
  타켓 호스트로 엄청난 양의 reply 패킷이 가게되어 DoS를 유발시킴.
  대응: 브로드캐스트로 온 icmp 메시지 무시. ICMP Echo reply 패킷 무시. 라우터의 directed broadcast 기능 비활성화로 ICMP reply 못하게 함.

  * ICMP Echo request 메시지를 특정 호스트나 라우터에 보내면 이에 대한 응답으로 ICMP Echo reply를 받음.
    이것으로 타켓 호스트에 접근가능성, RTT 시간등을 측정함.

- Flooding attack
  다양한 프로토콜을 사용하지만 목적은 목표 시스템에 연결된 네트워크 링크에 과부하를 거는 것.
  보통 ICMP, UDP, TCP SYN 등을 사용함.
  종류: ICMP Flood, UDP Flood, TCP SYN Flood
  ① ICMP Flood(SMURF attack): ICMP echo request를 사용하는 flood 공격.
  ② UDP Flood(Fraggle attack)
      UDP 패킷의 출발지 IP와 포트가 스푸핑 되기 쉽다는 것을 이용하여 대량의 트래픽을 공격 대상에게 전송하여 네트워크를 마비시킴.
      주로 UDP echo와 UDP chargen 서비스를 이용하는데, 7번포트를 사용하는 echo는 'a'를 보내면 'a'를 응답하는 서비스.  19번 포트를 사용하는 chargen은
      들어오는 UDP 패킷에 대해 0~512까지 무작위의 문자들을 패킷으로 반환함.
      echo와 chargen 서비스는 네트워크 진단을 위해 사용되는데, 대량의 트래픽을 발생시키는 공격에도 사용됨.
  ③ TCP SYN Flood
      TCP SYN spoofing과 비슷하지만 단지 특정 시스템을 겨냥한다기 보다 대량의 패킷을 생성하는 것이 목표인 것이 TCP SYN Flood.
      대량의 SYN 패킷을 서버로 전송하여 서버의 대기큐를 채워 새로운 클라이언트의 요청을 무시하도록 함.
      하나의 시스템 공격하거나 같은 패킷 생성하면 발각이 쉬우므로 변종이 생김: DDoS, Reflector 공격, amplifier 공격

      * Flooding을 이용한 DoS 공격이라고 하지만 봇을 써서 다량의 패킷을 전송하면 DDoS 공격이 됨.

- Land attack
  시스템을 나쁜 상태에 빠지게 한다는 뜻.
  공격방법: 패킷 전송시 source와 dest의 IP를 똑같이 만들어서 보냄.
  공격당한 시스템은 자기 자신에게 응답을 보내게 되므로 끝없는 루프에 빠짐.
  SYN Flooding 처럼 동시 사용자 수를 증가시키며, CPU의 부하를 유발함.
  대응: 대부분의 OS가 이미 출발지와 목적지의 IP가 같은 패킷은 버리므로 Land attack에 대처하고 있음. 방화벽에서 이를 체크하며 폐기함.

- Ping of Death
  ICMP 패킷을 정상크기(65,535바이트)보다 크게 만들어 전송.
  MTU(Ethernet의 경우 1500 바이트)를 초과하면서 다수의 IP 단편화가 발생함.
  전송과정에서 많은 fragmentation이 발생하고 많은 조각이 생성되어 수신측에서 이를 재조합하면서 부하가 발생하거나 버퍼의 오퍼플로우가 발생됨.
  대응: 보통 ICMP 패킷은 분할하지 않으므로 분할된 패킷은 공격으로 의심함. ICMP 차단

- Teardrop attack
  수신측에서 IP 패킷을 재조합하는 과정에서 잘못된 fragment offset 정보로 인해 문제가 발생하도록 하는 공격.
  공격자는 IP fragment offset 값을 서로 중첩되도록 조작하여 전송함.
  수신자는 재조합시 오류가 발생하고 시스템이 마비됨.
  헤더값 조작을 통한 유사한 공격방법: Bonk, Boink 등
  대응: OS 보안 패치

- Inconsistent Fragmentation 공격
  ① Bonk: 대량의 패킷을 보내면서 모든 패킷의 순서번호를 1로 설정.
  ② Boink: 대량의 패킷을 보내면서 패킷의 순서번호를 일정치 않게 설정하여 보냄


2. DDoS (Distributed Denial of Service)
- 구성요소: 공격자, 타켓 시스템, 마스터(C&C 서버, 공격자에게 직접 명령을 받는 시스템, 여러 에이전트를 관리),
  에이전트(좀비, 봇, 공격대상에 직접 공격을 하는 시스템, 악성코드로 감염됨)
- 대응
  ① 라우터의 ACL이용
  ② 라우터의 Ingress 필터링: 지정한 ip도메인의 패킷만 통과시킴
  ③ 라우터의 egress: 위조된 패킷이 인터넷에 못나가게 함
  ④ 라우터의 접근비율 사용: CAR기능. 일정량의 패킷이 들어오면 일정량의 패킷을 수신거부
  ⑤ 방화벽: 포트 필터링
  ⑥ hot fix(시스템 패치)
  ⑦ 안정적 네트워크 설계
  ⑧ IDS
  ⑨ 로드밸런싱
  ⑩ 서비스별 대역폭 제한
  ⑪ DPI(deep packet inspection): 패킷의 내부 내용까지 검사
  ⑫ 벙커 사용: 공격을 다른쪽으로 보내 견디는 것.
  ⑬ DNS 싱크홀 서비스

- 공격방법
  ① 공격자가 C&C 서버를 구축하고, 스팸메일이나 악의적 웹 사이트로 봇넷(봇들의 네트워크) 구축
  ② 사용자가 스팸메일을 열거나 악성 웹 사이트에 접속하여 악성코드에 감염되면 봇이되고, 봇 프로그램은 C&C 서버로 접속하여 봇넷에 추가됨.
  ③ 공격자가 C&C 서버에 공격 명령을 내리면 C&C 서버가 봇넷에 명령 전달.
  ④ 봇이 명령에 따라 DDoS 공격 수행

- DNS 싱크홀 서비스
  악성코드에 감염되어 봇이된 PC는 C&C 서버로 연결을 시도하는데 이를 가로채서 막는 것.
  KISA, 주요 ISP 업체 등이 DNS 싱크홀을 운영하며, 이런 기관들이 C&C 서버 목록을 알고 있어야 할 수 있는 서비스.
  악성 봇은 DNS에 C&C 서버의 주소를 질의하는데 DNS 서버에서는 싱크홀 서버 IP 주소로 응답해주면 봇은 C&C 서버가 아닌 싱크홀 서버로 접속함.
  이를 통해 DDoS 공격 감소시킴.

- DDoS 공격 유형 정리
 
대역폭 소진 공격
서비스 마비 공격
공격방법
UDP/ICMP flooding, SYN flooding
HTTP GET flooding
공격형태

1. UDP/ICMP traffic flooding (UDP/ICMP flooding, dns query flooding)

2. TCP traffic flooding
(SYN Flooding, SYN+ACK flooding)

3. IP flooding
(land attack, tear drop, HTTP continuation)

1. http traffic flooding
(GET flooding, CC attack)

2. http header/option spoofing
(slowloris, pyloris )

3. tcp traffic flooding
(tcp session, syn flooding, tcp slow read )

4. other L7 service flooding
(Hash dos, Hulk Dos, FTP/SMTP attack)
프로토콜
3~4 계층(네트워크, 전송 계층)
7계층(HTTP, DNS, FTP, SMTP )
공격대상
네트워크 인프라
웹서버, 정보보호 장비 등
Spoofing 여부
사용/미사용
미사용
증상
회선 대역폭 고갈, 동일 네트워크의 모든 서비스 접속 장애
http 서버 과다 접속으로 장애 발생
공격대상 시스템만 피해

- DDoS 공격 유형
  ① UDP/ICMP Traffic flooding 공격
      -1) UDP/ICMP flooding: UDP 패킷 또는 ICMP 패킷(ICMP Echo Request, Ping)을 대량으로 서버로 전송하여 다른 클라이언트의 서비스 이용을 어렵게 만듦.
           예: UDP flooding의 경우 UDP 53번 포트를 이용하여 DNS 서버에 UDP 패킷을 대량으로 보냄. (DNS 서버를 공격하므로 DNS Query flooding 이라고도 함)
      -2) 대응: 웹서버 망의 방화벽 또는 웹서버망 상단에 위치한 라우터에서 해당 프로토콜을 차단하는 ACL 설정.

  ② TCP Traffic Flooding 공격
      -1) TCP SYN flooding: SYN 패킷 전달하여 서버의 대기큐를 가득채워 다른 클라이언트의 요청 무시하게 만듦.
      -2) TCP Flag flooding: TCP 패킷 헤더의 Flag(SYN, ACK, FIN, RST 등)를 조작하여 여러 형태의 패킷 생성하여 서버로 보냄.
          서버는 패킷에 설정된 Flag를 검증하므로 서버의 자원이 소진됨
      -3) TCP Session: 3-way handshaking 과정을 과도하게 유발하여 서비스의 과부하를 유발하는 공격.
          TCP 세션 연결/해제를 반복하거나 TCP 세션 연결 후 세션을 유지하면서 조금씩 트래픽을 발송하여 유지시킴.
      -4) 대응: PPS(초당패킷수) 임계치를 설정하여 임계치 이상의 패킷 도착이나 세션 요청들을 폐기함.

  ③ IP Flooding 공격
      -1) Land attack(IP Header Option 변조): 패킷의 출발지와 목적지의 IP/PORT를 동일하게 설정하여 보내는 공격. 목적지 장비의 과부하 발생.
      -2) Teardrop(IP Fragment Packet flooding): 수신측에서 IP 패킷을 재조합하는 과정에서 잘못된 fragment offset 정보로 인해 문제가 발생하도록 하는 공격.
          서버는 순서를 중복된 패킷 처리를 못해 장애발생.
      -3) HTTP Continuation(IP Fragment Packet flooding): 서버로 전달하는 패킷에 헤더없이 데이터만 채워 보냄.
          웹 서버는 지속적으로 데이터를 수신하기 위해 TCP 자원을 사용하며, 패킷의 크리를 최대한 크게 하여 보내므로(단편화로 인한 트래픽 증가)
          네트워크 자원도 같이 고갈됨.

  ④ HTTP Traffic Flooding 공격(웹서버 자원 소모 공격)
      -1) Get flooding: 웹서버에 특정 페이지를 HTTP의 Get 메소드로 계속 요청. 시스템 과부하 발생.
      -2) Get flooding with Cache-Control(CC attack): 웹서버는 로드밸런싱을 위해 캐싱서버 운영하는데, 공격자가 HTTP 메시지의 캐시 옵션을 조작하여
           캐싱 서버가 아닌 웹서버가 응답하게 함. 캐싱서버는 아무것도 못하고 웹서버의 자원을 소진 시킴.
           캐시 옵션을 Cache-Control:no-store, must-revalidated 설정하면 됨.
      -3) 동적 HTTP Request flooding: Get flooding과 CC attack은 HTTP 요청 패턴을 분석하여 웹 방화벽에서 막을 수 있음.
           따라서 우회를 위해 요청하는 웹페이지를 지속적으로 변경하여 요청하는 공격.
      -4) 대응: IP별 PPS 임계치 설정, 패킷 헤더 검사

  ⑤ HTTP Header/Option Spoofing Flooding 공격
      -1) Slow HTTP Post DoS: HTTP POST 메소드로 서버에 큰 데이터를 조금씩 장기간에 걸쳐 분할 전송하면 서버는 계속 연결을 유지해야 하므로
          자원이 소진되고, 공격자가 봇넷을 통해 공격을 하면 DDoS가 되어 정상적인 다른 사용자에게 서비스를 못하게 됨.
      -2) Slow HTTP Header DoS(slowloris): 웹서버는 HTTP 메시지 헤더로 수신할 데이터유형을 파악하는데 헤더를 조작하여 서버가 유형을 파악할 수 없게 하면 서버는 헤더 정보가 안온거로 파악하여 연결을 계속 유지함. 많은 호스트가 할 경우 다른 서비스를 못함.
      -3) Slow HTTP Read DoS: TCP 연결시, TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후 HTTP 데이터를 전송하여
          웹서버가 정상적으로 응답못하게 하여 대기시간을 늘림으로써 DoS 상태 유발 시킴
      -4) 대응: 완료되지 않은 연결 상태에 타임아웃을 설정해 시간 다되면 삭제 처리.

  ⑥ HashDoS 공격: HTTP 메시지 매개정보(파라미터)는 웹서버에서 해시테이블로 관리됨. 조작된 매개정보를 포함하는 많은 메시지를 서버로 전송하여
      서버가 해시테이블에 저장할 때 해시테이블의 출돌을 발생시켜 충돌 안되는 곳을 찾는데 걸리는 시간을 길게하여 CPU 자원을 소진하게 하고
      정상적 서비스를 방해함.

  ⑦ HulkDoS 공격: 웹서버 가용량을 모두 사용하도록 Get flooding 공격을 함. 동일 URL을 지속적으로 요청하면 방화벽에 의해 차단되므로
      요청하는 웹 페이지 URL을 지속적으로 변경하여 차단을 우회함.

  ⑧ DRDoS(Distributed Reflection DoS)
      공격자가 출발지 IP 주소를 공격 대상의 IP 주소로 위조해 정상적인 서비스를 제공하는 서버들에게 요청을 보내고, 그 응답을 공격 대상이 받게 되는 원리.
      SYN 패킷이나 ICMP 패킷, DNS 쿼리 등 응답을 받을 수 있는 패킷이 이용됨.
      DRDoS 공격은 출발지 IP 주소를 변조하고 공격 트래픽이 수많은 반사서버를 경유하기 때문에 공격의 근원지를 파악해 역추적하는 것이 거의 불가능 함.
      또한 반사 서버는 자신이 보낸 패킷에 의한 응답이 없을 경우 패킷을 재전송할 수 있기 때문에 공격자가 전송하는 패킷보다 몇 배 더 많은 패킷이
      공격대상 서버에 전송될 수 있음.
      * 반사서버: DRDoS에 이용되는 라우터 또는 TCP 서버.

DRDoS 공격과정

      대응: ISP가 ingress filtering으로 막음. 반사서버는 ICMP 프로토콜 사용이 필요 없을 경우 해당 프로토콜 차단.
              공격대상이 될수 있는 호스트도 ICMP 프로토콜 사용이 필요 없을 경우 해당 프로토콜 차단.

- DDoS 공격 사례 및 도구
  ① Trinoo 공격: 미네소타 대학이 UDP flooding 공격을 당함.
  ② TFN(Tribed Flood Network) 공격: TFN은 DDoS 공격을 위한 도구로 UDP Flooding, TCP SYN Flooding, ICMP Echo request attack,
      SMURF attack(ICMP 브로그캐스트 공격) 을 할 수 있게 함.
  ③ Stacheldraht 공격: Trinoo과 TFN을 참고한 공격 도구로써, C&C 서버와 봇 사이의 통신을 암호화 시키는 것을 추가함.
  ④ TFN2K 공격: TFN의 확장형. 통신시 특정 포트만 사용하지 않으며 암호화기능이 추가됨. UDP, TCP, ICMP 관련 공격을 복합적으로 할수 있음.


3. 포트 스캐닝(Port Scanning)
- 공격을 위한 정보 수집 3단계 과정: 풋 프린팅 → 스캐닝 → 목록화
  풋 프린팅: 공격대상 정보 수집. 보통 사회공학 기법 사용. 대상이 스스로 공개한 정보 수집.
  스캐닝: 실제 공격하기 위해 네트워크 장비현황, 구조 등을 조사.
  스캐닝 종류: Sweep, Open Scan, Stealth Scan 등

- Sweep(쓸다)
  ① 타켓 호스트에 속한 시스템의 유무를 판단하고, 이를 통해 사용하거나 소유하고 있는 IP 주소와 네트워크 범위를 알아냄.
  ② 종류: ICMP, TCP, UDP Sweep
  ③ ICMP Sweep: 시스템 또는 라우터의 활성화 유무 검사. 대표적 방법이 ICMP Echo Request와 Echo Reply를 이용하는 것.
      옵션없이 ping을 입력해서 결과를 보고 타켓 시스템의 동작 유무를 판단함.
  ④ TCP Sweep: TCP ACK 또는 SYN을 21, 22, 23, 80포트 같은데다가 보내서 응답이 오면 동작 중인 것을 확인.
  ⑤ UDP Sweep: UDP 패킷을 타켓에 보내서 ICMP Port Unreachable 메시지가 오지 않으면 해당 포트가 열려 있는 것.

- Open Scan
  ① 포트를 스캔하여 해당 시스템이 활성화 유무를 알아냄.
  ② 종류: TCP Open Scan, UDP Open Scan
  ③ TCP Open Scan
      TCP Open 스캔은 TCP 연결을 완료하여 스캔하는 방법(TCP Full Open Scan)과 반만 연결하여 스캔하는 방법(TCP Half Open Scan)이 있음.
      * 3-way handshaking: SYN 패킷 송신 → 수신측이 SYN/ACK 패킷으로 응답 → ACK로 응답 → 연결완성
      -1) TCP Full Open Scan: 공격자가 타켓 호스트에 SYN 패킷을 보내면 포트가 열려있을 경우 타켓 호스트는 SYN+ACK 패킷으로 응답하고,
           공격자는 ACK를 보냄으로써 연결을 완료함. 만약 포트가 닫혀있는 경우 타켓 호스트는 RST+ACK 패킷으로 응답함.
           단점: 완전한 연결로 인해 로그가 남아 탐지가 가능함.
      -2) TCP Half Open Scan: Full Open Scan과 모든 과정이 같지만 차이점은 공격자가 3-way handshaking 과정에서 타켓 호스트로부터
           SYN+ACK 응답 패킷을 받으면 바로 RST 패킷을 보내 연결을 끊음.
           장점: 로그가 남지 않아 추적이 불가능함.
       * 타켓 포트가 방화벽에 의해 필터링 된다면 공격자는 아무 응답을 못받거나 ICMP 메시지(Destination Unreachable)를 받을 수 있음.
          보통 보안상 방화벽은 ICMP 메시지 응답을 안줌.
  ④ UDP Open Scan: UDP 패킷을 타켓에 보내서 ICMP Port Unreachable 메시지가 오지 않으면 해당 포트가 열려 있는 것.

- Stealth Scan
  ① TCP 헤더 조작하여 특수한 패킷을 만든 후 스캔 대상 시스템에 보내 그 응답으로 포트 활성화 여부를 알아냄.
      TCP 연결을 확립하는 것이 아니기 때문에 로그가 남지 않아 공격자의 위치를 숨기고 방화벽이나 IDS 같은 보안 시스템을 통과할 수 있음.
  ② 종류: TCP FIN/NULL/XMAS Scan, TCP ACK Scan
  ③ TCP FIN/NULL/XMAS Scan
      FIN 제어비트를 설정하고 메시지 전송하면 스캔 대상의 포트가 열려있는 경우 응답이 없으며, 닫혀 있는 경우 RST 응답을 받음.
      NULL 패킷은 제어비트 설정 없이 보내는 것으로 스캔 대상의 포트가 열려있으면 응답이 없고, 닫혀있으면 RST+ACK 응답을 받음.
      XMAS 패킷 전송은 모든 제어비트를 설정하고 보내는 것으로 스캔 대상의 포트가 열려있으면 응답이 없고, 닫혀있으면 RST+ACK 응답을 받음.
      * nmap같은 스캐닝 도구로 스캔한 결과 open|filtered 결과가 보이면 방화벽에 의해 차단되거나 포트가 열려있는 것을 의미함.
  ④ TCP ACK Scan: 방화벽의 필터링 정책을 테스트하는 스캔임. 방화벽이 stateful 한 필터인지 단순한 SYN 패킷 차단 필터인지를 점검하는 것.
      모든 포트에 ACK 패킷 전송. 방화벽에 필터링 된다면 응답이 없거나 ICMP 메시지를 받고, 방화벽을 통과하면 RST+ACK를 받음.
      RST 패킷의 TTL이 64이하이고, 윈도우 크기가 0이 아니면 열린 포트, TTL이 큰 값이고 윈도우 크기가 0이면 닫힌 포트를 의미함.

- Decoy Scan (nmap 스캐닝 툴 지원 기능)
  스캔 당하는 대상 호스트에서 스캐너 주소를 식별하기 어렵도록 다양한 위조된 주소로 스캔하는 방식. 즉, 누가 스캔하는지 알아차리지 못하게 하는 것.


4. 스니핑
- 패킷을 도청하는 과정을 스니핑이라고 함.
- TCP/IP 프로토콜을 이용한 통신에서는 패킷들이 암호화되지 않은 상태이므로 스니핑 패킷안의 메시지 내용을 볼수 있음.
- 스니핑 종류: 허브환경에서의 스니핑, 스위치 환경에서의 스니핑


5. 허브 환경에서의 스니핑
- 허브는 기본적으로 수신한 패킷을 들어온 포트 외에 다른  모든 포트(인터페이스)로 전송하므로 스니핑을 하기 쉬움.
- NIC에서 promiscuous mode를 해야 자신의 패킷이 아니어도 볼수 있음.


6. 스위치 환경에서의 스니핑
- 스니핑 종류: 스위치 재밍, ARP 스푸핑, ARP 리다이렉트, ICMP Redirect 등
  "정보보안기사 정리 24 - L2 Switch에서의 스니핑 공격"에서 정리함.
- 스니핑 대응: 스니퍼 탐지, 암호화, SSL, VPN 등
  "정보보안기사 정리 24 - L2 Switch에서의 스니핑 공격 대응"에서 정리함.


7. 스푸핑

- IP 주소, 이메일 주소 등을 바꿔서 공격하는 것.
- 종류
  ARP 스푸핑
  IP 스푸핑: 3계층 공격, 공격자가 다른 호스트의 IP주소를 공격에 사용.
  DNS 스푸핑: 7계층 공격, DNS를 사칭해서 사용자가 관련 없는 웹 페이지로 연결되게 함.
  웹 스푸핑: 7계층 공격, 공격자가 중간에서 웹 페이지 내용을 가로채 원래 웹 페이지 내용을 변경하여 보내는 방법.
  이메일 스푸핑: 7계층 공격, 이메일 발신자를 위장하여 메일을 보냄.

- ARP 스푸핑
  "정보보안기사 정리 24 - L2 Switch에서의 스니핑 공격"에서 정리함.

- IP 스푸핑
  ① 공격자가 자신의 IP가 아닌 신뢰(trust)관계를 가진 시스템의 주소로 위장하여 공격 대상 서버를 공격하는 방식.
      신뢰관계: 서버에 특정 클라이언트가 신뢰관계로 설정되어 있다면 특정 클라이언트는 서버에 접속할 때 자신의 IP 주소로 인증 하고,
                     별도의 패스워드 없이 로그인이 가능함.
  신뢰관계에 있는 IP로 위장하여 rlogin 등으로 서버에 접속하여 백도어 등을 설치할 수 있음.
  공격 과정: 두 호스트가 통신할 때 한쪽은 DoS 공격(TCP SYN flooding 등)을 하여 마비시키고, 마비시킨 호스트의 IP로 위장하여 다른쪽과 통신함.
  대응: 신뢰관계 사용하지 않기, 부득이하게 신뢰 관계를 사용할 경우 신뢰관계의 클라이언트 MAC 주소를 Static으로 설정한다.
           TCP Wrapper, SSH 등을 사용하고, rlogin 같은 패스워드 인증 과정이 없는 서비스는 사용하지 않는다.

- DNS 스푸핑
  DNS 스푸핑은 공격 대상에게 전달되는 DNS 응답(요청한 도메인에 대한 IP 주소)을 위조하거나 DNS 서버에 위조된 IP 주소가 저장되게 하여
  공격 대상이 의도하지 않은 주소로 접속하게 하는 공격 방법임.
  공격 방법: 스니핑을 이용한 DNS 스푸핑, DNS Cache Poisoning
  ① DNS 스푸핑: DNS 질의/응답은 UDP 통신을 하며, UDP는 비연결지향형이므로 질의할 때 설정한 Transaction ID와 목적지 IP만 응답 패킷의 것과 비교하여
      일치하면 최초에 들어온 응답의 결과를 사용하는 취약점을 이요한 것.
      공격 과정: 공격자는 타겟 호스트를 스니핑하면서 타겟 호스트에서 DNS 질의를 하면 정상적인 DNS 응답보다 빠르게 위조된 DNS 응답 패킷을 보내
                      타켓 호스트의 사용자가 위조된 주소로 접속하게 함.
      대응: 스니핑을 이용하므로 스니핑에 대한 대응책과 같음. 또한 중요한 사이트의 IP 주소는 hosts 파일에 등록하여 참조하도록 함.

  ② DNS Cache Poisoning 공격: DNS 서버의 캐시 메모리에 위조된 데이터를 저장하여 사용하도록 만듦.
      DNS 서버의 캐시 정보가 유지되는 시간동안 다수의 사용자들이 위조된 정보를 응답받으므로 위험함.
      공격 과정: 
      -1) 공격자는 DNS 서버(Recursive DNS 서버를 의미함)에 위조할 주소의 DNS 질의를 대량으로 보냄.
      -2) Recursive DNS 서버는 자신의 캐시를 검색해보고 없으면 Iterative 질의 방식으로 다른 서버에 질의하여 최종적으로 도메인에 대한 IP주소를 알아냄.
      -3) 공격자는 Recursive DNS 서버가 위의 -2)와 같은 질의를 수행하는 동안 위조된 DNS 응답을 대량으로 보냄. (Recursive DNS 서버에게 DNS 스푸핑 하는 것)
           대량으로 보내는 이유: Recursive DNS 서버는 다른 DNS 서버에 질의할 때 출발지 PORT와 Transaction ID를 설정하는데,
                                            스니핑이 안된다면 이를 알수가 없음. 따라서 대량으로 랜덤하게 위조된 DNS 응답을 하여 속이는 것임.
      -4) Recursive DNS 서버는 정상적인 DNS 응답 보다 먼저온 위조된 DNS 응답들의 Transaction ID를 보고 일치하는 것을
           자신의 캐시에 저장하고 다른 DNS 요청에 대한 응답으로 사용함.
  * 약간 운을 바라보고 하는 공격 같지만 암호학적 해시함수를 공격하는 "생일 공격"의 원리를 생각하면 일치하는 Transaction ID를 생성할 확률은 높음.
    (Transaction ID는 2byte이므로 총 65536개의 값을 갖음)
      대응: DNS에 공개키 암호화 방식의 보안 기능을 부여한 DNSSEC 기술 활용. 네임 서버의 SW를 최신 버전으로 유지하여 알려진 취약점 공격을 방어 함.
       
- 이메일 스푸핑
  공격자 신분을 위장해 이메일 발송 -> 사회공학 기법
  악성코드를 메일에 첨부하여 보내는 방법. 예: 베이글 웜
  대응: 안티바이러스, 전자 서명 등.


8. HTTP Session 하이재킹 (Session ID Hijacking)
- "정보보안기사 정리 24 - TCP 세션 하이재킹(Session Hijacking) 공격"과 헷갈리지 말것.
- 웹 서버는 다수의 웹 페이지 요청자를 구별하기 위하여 각각의 사용자의 세션에 대해서 임의의 긴 문자열 값인 Session ID를 부여함.
  보통 사용자가 홈페이지 방문시 혹은 인증 로그인시에 생성됨.
  웹 서버는 Session ID를 통해 각 사용자에 대한 인증과 인가(authentication
& authorization)라는 세션 관리를 수행함.
- 보통 Session ID는 Cookie 또는 URL, HTML 페이지 폼의 소스상의 Hidden 필드에 저장됨.
- Session ID가 매번 동일하게 부여되거나, Session 타임아웃이 너무 길거나, 길이가 짧은 등의 취약점을 갖는 Session ID는 공격자가 이를 스니핑하여
  재사용함으로써 사용자의 권한을 탈취할 수 있음.

댓글 없음:

댓글 쓰기