외로운 Nova의 작업실

정보보안기사 필기 - 26(네트워크 기반 공격의 이해) 본문

Certification/정보보안기사

정보보안기사 필기 - 26(네트워크 기반 공격의 이해)

Nova_ 2022. 12. 12. 15:30

- 네트워크 위협의 유형

  • 수동적 공격 : 통신회선상의 정보를 무단으로 취득하는 행위로 데이터를 암호화하여 기밀성을 보장하는 방법으로 방어할 수 있습니다.
  • 능동적 공격 : 통신회선상의 정보를 변조,위조 하는 행위로 데이터의 무결성을 확인하는 방법으로 방어할 수 있습니다.

- 네트워크 기반 보안위협 및 대응책

<DOS>

DOS(denial of service) 공격은 공격자가 단일 컴퓨터를 통해 목표 시슽템에 과도한 부하를 일으켜 정보 시스템의 사용을 방해하는 공격방식으로  D-DOS는 다수의 컴퓨터를 사용하는 것과 대비됩니다.

 

<TCP SYN Flooding Attack>

취약점 :

3-way handshaking 과정에서 공격자가 다수의 syn 신호를 공격대상자에게 전송하면 공격대상자는 syn/ack 신호를 공격자에게 전달하게되는데 이때 공격자가 ack 신호를 반송하지않으면 공격대상자의 시스템은 일정 시간동안 신호를 기다리게되어 TCP기반의 서비스(웹서버, FTP, 메일서버) 시스템에 피해를 주게됩니다. 

공격 방법 :

공격자는 송신 주소를 위조합니다. 만약 SYN 패킷을 송신하지 않은 TCP가 SYN+ACK 패킷을 수신하면 RST 패킷을 전송하여 연결설정을 중단하기때문에 사용하지 않는 IP주소로 위조합니다. 주소를 위조한 대량의 SYN 메시지를 목적지에 보냅니다. 이에 패킷을 받은 서버는 정보를 저장하고 조작된 주소로 SYN+ACK를 보내게되고 TCP 연결 테이블이 꽉차게되어 이후에 들어오는 연결 요청은 거부됩니다.

대응책 :

1. 방화벽 또는 DDos 대응장비를 이용하여 동일 IP에서의 연결요청에대해 임계치 설정을 통해 과도한 연결요청이 발생하는 것을 차단합니다.

2. SYN+ACK 패킷을 전송하지 말고 Syn_Cooike를 생성하여 보내놓고 세션을 닫는 방법이 있습니다.

3. TCP 연결 테이블이 오버플로우가 될때 일부 엔트리를 삭제하여 새로운 SYN패킷을 처리할 수 있게 할 수 있습니다. 하지만 정상적인 연결을 삭제할 수 있어 근본적인 솔류션이 될 수 없습니다.


<SMULF Attack>

취약점 :

Ping(ICMP) 메시지를 수신한 시스템은 Ping(ICMP) 응답 메시지를 출발지 주소로 전송합니다. 이때, 출발지 주소를 위조할 수 있으며 도착 주소를 직접 브로드캐스트 주소로 위조할 수 있습니다.

공격방법 : 

공격자는 Ping(ICMP) 메시지의 출발지주소를 공격할 시스템의 주소로 위조합니다. 또한 Ping 메시지의 도착지 주소를 직접 브로드캐스트 주소로 설정합니다. 이후 Ping(ICMP) 메시지를 보내게되면 브로드캐스트 네트워크 이내의 모든 시스템이 Ping 응답 메시지(ICMP Echo)를 출발지 주소인 공격할 시스템의 주소로 보내게되어 시스템을 마비시킵니다.

대응책:

1. 다른 네트워크로 부터 자신의 네트워크로 들어오는 IP direct broadcast 패킷을 막도록 설정합니다.

2.호스트는 IP broadcast address로 전송된 ICMP 패킷에대해 응답하지 않도록 시스템을 설정합니다.

3. ICMP Echo Reply 패킷이 다량으로 발생하면 해당 패킷들을 침입차단시스템을 통해 모두 차단합니다.

 

<Flooing Attack>

취약점 : 사람들이 자주 사용하는 프로토콜을 통해 공격 네트워크에 대량의 패킷을 보내 링크에 과부하를걸 수 있습니다. 공격대상은 자주 사람들이 자주 사용하는 프로토콜이기때문에 제어당하지 않을 확률이 높습니다.

공격방법 : 

1. ICMP Flood : ICMP echo request를 사용하여 표적에 대량의 패킷을 보냅니다.

2. UDP Flood : UDP 7번 포트의 Echo 서비스와 19번 포트의 chargen(0부터 512까지 무작위로 선택된 문자를 가진 패킷을 돌려주는 서비스) 서비스에 대량의 패킷을 보내 시스템에 과부하를 발생시킵니다.

3. DNS query Flood : 공격자가 DNS에대해 쿼리데이터를 대량으로 서버에 전송하여 DNS의 정상적인 서비스를 방해합니다.

4. GET Flood : 특정한 페이지를 HTTP의 GET Method를 통해 무한대로 실행하는 것입니다.

대응책 : 

동일한 IP에서 동일한 서비스를 여러번 요청한다면 임계치를 설정하여 과부하를 줄일 수 있습니다.

 

<Land Attack>

취약점 :

패킷의 출발지 주소와 목적지 주소를 똑같이 위조할 수 있습니다.

공격 방법 : 

패킷을 전송할때 출발지 IP와 도착지 IP 주소값을 표적 IP로 똑같이 맞춰서 패킷을 보내는 것입니다. 동시 사용자 수를 증가시키며 CPU에도 부하를 줄 수 있습니다.

대응책 : 

1. TCP 패킷의 소스 IP와 목적지 IP가 동일한지 확인합니다.

2. 공격자가 보내는 횟수를 카운트하여 공격 인정 시간내에 공격인정 횟수가 많으면 탐지하고 차단합니다.

 

<Ping of Death>

취약점 :

ping을 이용한 ICMP 패킷을 정상 크기보다 아주 크게 만들 수 있습니다. 이는 네트워크를 통해 작은 조각(fragment)로 나누어지기때문에 공격대상은 조각화된 패킷을 모두 처리해야하므로 부하가 많이 걸립니다.

공격 방법 :

공격 툴을 사용하여 ping의 패킷을 크게 만들고 패킷을 보냅니다.

대응책 :

보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 차단합니다. 

 

<Teardrop Attack>

취약점 :

IP가 정상적으로 패킷을 전송할때 IP 단편화가 발생하게되는데 수신자는 재조립을 통해 데이터를 복구하게됩니다. 이때 재조립시에 정확한 조립을 위해 오프셋이라는 값을 사용하게되는데, 이 오프셋 값을 단편화 간에 중복되도록 고의적으로 수정하거나 정상적인 오프셋 값보다 더 크게 하여 오버플로우를 일으킬 수 있습니다.

공격 방법 :

공격 툴을 이용하여 패킷의 오프셋값을 중복되게 변조하거나 매우 큰값으로 변조하여 표적에게 보냅니다. 그러면 표적은 네트워크 연결이 끊어지거나 블루스크린을 띄우며 중단됩니다.

대응책 :

Teardrop은 보안 탐지를 우회할 수 있고 변종을 가지므로 완전한 차단에 어려움이 있습니다. 블루스크린이나 네트워크 연결이 끊어지지않도록 운영체제를 패치하는 것이 좋습니다.

같은 취약점을 이용한 다른 공격 방법 : 

Bonk : 처음 패킷을 1번으로 보낸후 다음 패킷을 보낼때 오프셋을 모두 1번으로 조작하여 보냅니다.

Boink : 처음 패킷을 1번으로 보낸후 다음 패킷을 100번 200번 정상적으로 보내다가 20번째 패킷을 2002, 21번째 패킷을 100, 22번째 패킷을 2002등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내는 공격 기술입니다.

 

<DDOS 공격>

취약점 :

여러대의 컴퓨터를 좀비PC로 만든후 일제히 동작시켜 특정 사이트/시스템을 공격하여 엄청난 분량의 패킷을 동시에 범람시켜 네트워크 성능 저하나 시스템 마비를 가져오게할 수 있습니다.

공격 방법 : 

공격자는 마스터 컴퓨터에 핸들러 프로그램을 설치하고 이를 이용해 Agent라 불리는 좀비 PC를 관리합니다. Agent에는 데몬 프로그램이 있으며 데몬 프로그램은 마스터 컴퓨터의 명령을 처리하게됩니다.  아래는 구성요소입니다.

  • 공격자 : 공격을 주도하는 해커의 컴퓨터
  • 마스터, C&C 서버 : 공격자에게 직접 명령을 받은 시스템으로 여러대의 에이전트를 관리
  • 핸들러 프로그램 : 마스터 시스템의 역할을 수행하는 프로그램
  • 에이전트 : 공격대상에 직접적인 공격을 가하는 시스템
  • 데몬 프로그램 : 에이전트 시스템 역할을 수행하는 프로그램
  • 표적 : 공격 대상이 되는 시스템

대응책 : 

1. 공격의 인지 : 트래픽의 BPS(bit per second)나 PPS(packet per second) 규모를 평시와 비교하고 서버의 접속 로그를 확인하여 비정상적인 접속 증가 여부를 확인합니다.

2. DDOS 공격 유형 파악 : tcpdump와 같은 트래픽 캡쳐툴로 PCAP(packet capture)형태로 저장하고 분석합니다.

3. 공격 유형에 따른 차단 정책 정의 및 대응 : 취약점에 따라 PPS 임계치, ACL 설정, 차단 등을 보안합니다.

4. 사후조치 : 공격 트래픽을 분석해 좀비 PC IP를 확보하고 DNS 서버관리자에게 전달합니다.

5. DNS 서버관리자 : DNS 싱크홀을 사용합니다. 이는 DDOS 공격 차단 방법의 하나로 감염된 PC에서 특정 주소로 연결을 원할때 DNS 서버는 출발지 IP주소가 악성 목록에 있다면 아무것도 하지않는 DNS싱크홀 서버의 IP주소를 반환하여 감염된 PC가 DNS 싱크홀로 패킷을 보내게 합니다.

 

<TCP flag Attack>

취약점 : TCP의 flag값을 ACK, SYN, FIN, RST등과 같이 변조할 수 있습니다. 이에따라 서버는 패킷을 수신한경우 해당 패킷을 검증하기때문에 서버의 자원을 소진 시킵니다.

공격 방법 : 공격 툴을 이용해 TCP flag 값을 변조하여 표적에게 보냅니다. 그러면 표적은 패킷의 검증을 위해 자원이 할당되어 자원을 소진시킵니다.

대응책 : 정상적이지 않은 flag 값은 차단합니다.

 

<CC Attack>

취약점 : 일반적으로 웹서버의 부하를 감소시키기위해 캐싱 서버를 운영하여 많이 요청되는 데이터를 웹서버가 아닌 캐싱서버를 통해응답하도록 구축합니다. 하지만 공격자는 HHTP 메시지의 캐시옵션을 조작하여 캐싱서버가 아닌 웹서버가 직접 처리하도록 유도하여 웹서버의 자원을 소진시킬 수 있습니다.

공격 방법 : HTTP 헤더 Cache-Control 옵션을 no-store, must-revalidate로 조작하여 패킷을 보냅니다.

대응책 : 패킷 필터링

 

<Slow HTTP Post Dos Attack>

취약점 : HTTP POST 지시자를 사용하여 서버로 전달할 대량의 데이터를 장시간에 걸쳐 분할 전송하면 서버는 POST 데이터가 모두 수신되지 않았다고 판단하여 연결을 장시간 유지합니다.

공격 방법 : POST 지시자를 사용하여 데이터를 장시간에 걸쳐 분할 전송합니다.

대응책 : 임계값을 설정하여 시간이 넘으면 연결을 끊습니다.

 

<Slow HTTP Header Dos Attack>

취약점 : 웹서는 HTTP 메시지의 헤더부분을 먼저 수신하여 데이터의 종류를 파악하게되는데, 헤더부분을 비정상적으로 조작하여 웹서버가 헤더 정보를 구분할 수 없도록 하면 웹서버는 HTTP 헤더정보가 모두 전달되지 않은 것으로 판단하여 연결을 장시간 유지합니다.

공격 방법 : 헤더부분을 비정상적으로 조작하여 패킷 전송합니다.

대응책 : 임계 시간값을 설정하여 시간이 넘으면 연결을 끊습니다.

 

<HashDoS Attack>

취약점 : 웹서버는 HTTP 메시지의 매개정보를 해시테이블에 저장하게됩니다. 조작된 매개정보를 포함한 다량의 메시지를 받게된다면 해시테이블 검색을 위한 인덱스로 사용되는 해시값에 충돌을 발생시켜 정확한 해시테이블을 검사하게되는데 이때 웹서버는 CPU자원을 소진될 수 있습니다.

공격 방법 : 조작한 매개정보를 대량으로 전송합니다.

대응책 : 해시테이블검사 시간에대해 임계 시간값을 설정합니다.

 

<DRDos Attack>

취약점 : DRDos(distribue reflection dos)는 정상적인 서비스를 운영하는 시스템을 분산 반사 서비스 거부 공격의 에이전트로 활용하여 공격합니다. 위조된 주소의 syn 요청을 반사서버로 전달하여 syn+ack응답이 공격대상을 향하도록 합니다.

공격 방법:

1. TCP DRDos 공격 : 3way-handshake의 취약점을 이용하여 위조된 주소의 syn 요청을 반사서버로 전달하여 syn+ack 응답이 공격대상으로 향하도록 합니다.

2. ICMP DRDos 공격 : Echo Request 와 Echo Reply를 이용하여 위조된 주소의 Echo Request를 반사서버로 전달합니다.

3. DNS 증폭 DRDos 공격 : DNS서버에 많은 양의 레코드 정보를 요구하는 DNS 질의 타입(ANY, TXT)를 요청하여 공격대상에게 대량의 트래픽을 유발시킵니다.

4. NTP 증폭 DRDos 공격 : NTP(반사서버)서버에 최근 접속한 클라이언트 목록(monlist명령)을 요청하여 대량의 응답 트래픽을 유발시킵니다.

5.SNMP DRDos 공격 : SNMP agent에게 대량 요청(GetBulkRequest)하여 공격대상자에게 대량 트래픽을 유발시킵니다.

6. CHARGEN DRDos 공격 : CHARGEN 서버에 대량의 문자열을 전송하여 공격대상자에게 대량 트래픽을 유발시킵니다.

이러한 공격들은 공격 경로를 끊임없이 변경하여 역추적을 어렵게합니다.

대응책 : 

1. 위조된 패킷이 인터넷망으로 들오지않도록 ISP가 직접 차단합니다.

2. ICMP 프로토콜을 사용할 필요가 없는 시스템의 경우 스위치 또는 서버에서 해당 프로토콜을 차단합니다.

3. DNS서버의경우 내부 사용자만이 Recursive Query가 가능하도록 제한하고 특정 byte 이상의 응답에대해서 차단하거나 초당 요청 개수를 제한합니다.

 

- 네트워크 스캐닝

사이버 공격을 위한 정보 수집은 풋프린팅, 스캐닝, 목록화의 3단계 과정을 거칩니다. 풋프린팅은 네트워크 검색, 포털 검색 등의 방법을 통해 공격 대상의 IP, DNS/Mail 서버 등의 정보를 수집하는 초기과정을 말합니다. 스캐닝은 핑, 포트 스캔, 운영체제 확인 등의 방법으로 시스템 종류, IP 주소, 서비스 등을 알아내어 보다 세부적인 정보를 수집하는 과정을 말합니다. 마지막으로 목록화는 풋프린팅, 스캐닝 방법을 통해서 수집된 정보를 토대로 라우팅 테이블, SNMP 정보등 좀 더 실용적인 정보를 수집하여 시스템 취약점 분석 및 공격방법 결정을 위한 지표를 작성하는 과정을 말합니다.

 

<풋프린팅>

풋 프린팅은 일반적을 사회공학 기법이 사용되는데, 비밀번호를 수첩이나 메모지에 적어두면 이를 가로채어 정보를 수집합니다. 공격자는 공격대상이 스스로 공개한 여러가지 정보를 풋 프린팅하여 IP, 이름, 계정, 전화번호 등과 같은 정보들을 수집합니다.

 

<스캐닝>

스캐닝은 실제 공격방법을 결정하거나 공격에 이용될 수 있는 네트워크 구조(IP), 시스템이 제공하는 서비스(포트)등의 정보를 얻기위해 수행되는 방법입니다. 공격자는 스캐닝 방법을 통해 보안장비 사용 현황, 우회 가능 네트워크 구조, 운영체제 커널 버전의 종류 등에대한 정보를 알아냅니다.

 

<ip 스캔>

Sweep : 요청에 의한 응답을 수행하는 클라이언트/서버구조에대해 임의의 ip나 포트에대해 요청을 보내고 응답이 오는지 안오는지 확인합니다. 

 

<port 스캔>

  • Open 스캔 : 스캔하는 포트에 해당되는 서비스의 활성화 여부를 조사하는 방법으로 포트가 열려있다면 포트가 제공하는 서비스를 예측할 수 있습니다.
  • TCP - Full Scan : 스캔하고자 하는 포트에 접속을 시도해 완전한 TCP 연결을 맺어 신뢰성 있는 결과를 얻을 수 있으나 속도가 느리고 로그를 남기므로 탐지가 가능합니다.
  • TCP - Half Scan : 스캔하고자 하는 포트에 SYN패킷을 보내면 서버로부터 SYN/ACK 응답이 오거나 안올 수 있습니다. 응답이 만약 온다면 RST 패킷을 보내 연결을 끊음으로서 로그를 남기지않지만 공격자의 SYN에대한 응답 기록은 남게됩니다.
  • UDP Scan : 포트를 대상으로 UDP 연결을 시도할때 ICMP Port Unreachable 에러메시지가 수신되면 해당 포트의 비활성화를 의미하며 아무런 응답이 없다면 해당 포트의 활성화를 의미합니다. UDP 포트스캔은 라우터나 방화벽에 의해 손실될 수 있어서 신뢰가 힘듭니다.

 

<Stealth 스캔>

Stealth 스캔 기법은 공격대상에게 로그를 남기지 않고 자신의 위치를 숨기는 스캔을 통칭합니다. 아래는 Stealth 스캔의 종류입니다.

  • TCP FIN Scan : FIN 플래그를 설정하여 공격대상 시스템에 메시지를 전송하면 포트가 열려있는경우에는 응답이없고 닫혀있다면 RST 패킷이 되돌아옵니다.
  • NULL,Xmass Scan : 헤더내에 플래그값을 설정하지 않고 전송하면 NULL scan 방식, 헤더내에 모든 플래그를 설정하고 보내면 Xmass scan 방식이라하며 경과는 FIN scan 방식과 같습니다.
  • TCP ACK Scan : 방화벽의 필터링 정책을 테스트하는 스캔으로 ACK 플래그만 설정해서 보냅니다. 방화벽에서 필터링이 된다면 응답이 없고, 통과했다면 RST+ACK 를 받습니다.
  • Decoy Scan : 위조된 주소로 스캔하는 방식을 말합니다.

 

<대표적인 스캔 도구>

NMAP : 모든 운영체제에서 사용할 수 있으며 서버의 취약점을 이용한 bounce 공격을 수행할 수 있는 스캔도구입니다. 최근에는 윈도우용 GUI 형태도 지원하여 많이 사용됩니다. 아래는 NAMP 사용법입니다.

문법 : nmap [scan type] [options] <target>

[scan type] :

  • -sS : TCP SYN(half-open) scan
  • -sT : TCP open scan
  • -sU : UDP scan
  • -sF : TCP FIN SCAN
  • -sX : TCP Xmas scan
  • -sN : TCP Null scan
  • -sA : TCP Ack scan
  • -sP- : Ping scan
  • D : Decoy scan

[Port option]

  • -p 22 : 22번 포트 스캔
  • -p 1-1023 : 1-1023 포트 스캔

[기타 options]

  • -O : 대상 호스트의 운영체제 정보를 출력

예시 : nmap 203.xxx.50.0/24 - 203.xxx.50.0 네트워크 전체를 스캔합니다.

 

<목록화>

목록화는 스캐닝 작업을 통해서 수집한 정보를 바탕으로 좀 더 실용적인 정보를 얻는 과정으로 실제 공격에 사용할 수 있도록 목록화합니다.

 

<포트 스캔에대한 대응책>

  • 불필요한 패킷을 차단하도록 방화벽 설정
  • 사용하지 안흔ㄴ 포트는 열어놓지 않습니다.
  • 침입탐지시스템을 사용해 포트 스캔을 탐지합니다.
  • 시스템 로그를 감사합니다.

- 스니핑

스니핑은 네트워크 트래픽을 도청하는 과정을 말합니다. TCP/IP 프로토콜을 이용한 통신에서는 패킷이 암호화가 되지 않는 상태이므로 이 패킷을 도청하여 메시지를 볼 수 있습니다.

 

<허브 환경에서의 스니핑 기법>

허브는 기본적으로 들어오는 패킷에대해 패킷이들어온 포트를 제외하고 모든 포트로 패킷을 보냅니다. 만약 허브를 사용하고 있다면 원하든 원치않든 간에 다른사람의 패킷을 받아보고 있지만 커널 수준에서 자신의 것이 아니면 버려지기 때문에 느낄 수 없습니다. 하지만 시스템의 NIC를 promiscuous 모드로 작동하면 다른 이들의 패킷또한 버리지 않고 받아볼 수 있습니다.

 

<스위치 환경에서의 스니핑 기법>

  • 스위치 재밍 : 스위치가 Fail Open(장애 발생시 모든 트래픽을 통과시키는 정책) 정책이라면 스위치의 MAC Address Table의 버퍼를 오버플로우(MACOF) 시키거나 MAC Address Table을 꽉 채워서(MAC 주소를 변경하며 ARP Reply 패킷을 반복적으로 전송하여 꽉채움, MAC Address Flooding 공격) 장애를 유발시켜 모든 트래픽을 통과시키는 공격입니다.
  • ARP 스푸핑 : 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply 패킷을 만들어 희생자에게 지속적으로 전송하면 희생자의 ARP Cache에 특정호스트의 MAC 정보가 공격자의 MAC 정보로 변경되어 희생자에게서 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격입니다.
  • ARP 리다이렉트 : 공격자가 자신이 라우터인것 처럼 MAC주소를 위조하여 ARP Reply 패킷을 해당 네트워크에 broadcast 합니다. 이를통해 모든 호스트와 라우터 사이의 트래픽을 스니핑하고 IP Foward 기능을 통해 사용자들이 눈치채지 못하게합니다.
  • ICMP 리다이렉트 : 공격자가 라우터가 되어서 로드밸런싱 네트워크에서 표적에게 다른 라우터가 모든 패킷을 공격자(라우터)에게 보내라고 ICMP 리다이렉트 패킷을 보내면 표적은 모든 패킷을 공격자(라우터)에게 보냅니다.
  • 스위치의 SPAN/Port Mirroring 기능 이용 : 스위치의 SPAN/Port Mirroring 기능은 스위치를 통과흐는 모든 트래픽을 볼 수 있는 기능으로 특정 포트에 분석 장비를 접속하고 다른 포트의 트래픽을 분석 장비로 자동 복사해줍니다. 관리목적으로 사용하지만 공격자가 물리적으로 해당 포트에 접근할 수 있다면 손쉽게 패킷을 스니핑할 수 있습니다.

<스니핑 공격의 보안대책>

  • 능동적인 대응책 : 스니퍼가 네트워크에 존재하는지 알아보는 대응책입니다.
  • 수동적인 대응책 : 스니핑을 수행하더라도 해당 내용이 노출되지 않도록 통신 내용을 암호화하는 대응책입니다.

 

<스니핑 탐지>

스니퍼의 탐지는 기본적으로 프러미스큐어스 모드에서 스니퍼가 작동한다는 사실에서 시작합니다. 

ping을 이용한 방법 : 대부분의 스니퍼는 일반 TCP/IP에서 작동하기 때문에 Request를 받으면 Response를 전달합니다. 이때 의심이 드는 호스트에게 네트워크에 존재하지않는 MAC주소로 위장하여 ping을 보내고, 만약 그 호스트로부터 ICMP Echo Reply를 받으면 해당 호스트가 스니핑을 하는 것입니다.

ARP를 이용한 방법 : Ping과 유사한 방법으로 ARP Request를 보냈을때 ARP Reply가 오면 프러미스큐어스 모드로 설정되어있는 것입니다.

DNS로서의 방법 : 일반적으로 스니핑 프로그램은 inverse-DNS lookup(RARP)을 수행합니다. 따라서 들어오는 Inverse-DNS lookup을 감시하여 스니퍼를 탐지할 수 있습니다. 

유인 방법 : 스니핑 공격을 하는 공격자의 주요 목적은 계정과 패스워드 획득에 있으므로 이점을 이용하여 가짜 계정과 패스워드를 네트워크에 계속 뿌립니다. 공격자는 이를 이용해 접속을 시도하고, 접속을 시도하는 시스템을 탐지함으로써 스니퍼를 탐지합니다.

ARP watch : 초기에 MAC주소와 IP 주소의 매칭값을 저장하고 ARP 트래픽을 모니터링하여 이를 변하게하는 패킷이 탐지되면 관리자에게 메일로 알려주는 툴입니다. 대부분의 공격 기법이 위존된 ARP를 사용하기때문에 이를 이용하여 쉽게 탐지할 수 있습니다.

암호화 : SSL, SSH, VPN, PGP, PEM, S/MIME등을 사용합니다.

 

<네트워크 스니퍼>

스니퍼는 패킷 또는 LAN 세그먼상을 지나는 트래픽을 분석할 수 있는 프로그램 혹은 장비를 가리키는 용어입니다. 패킷 스니핑 공격은 패킷 분석기(wireshark) 및 도구(Dsniff)등을 이용합니다.

 

- 스푸핑(Spoofing)

스푸핑은 골탕먹이다, 속여먹이다 라는 뜻을 지닌 Spoof에서 나온 말로, 공격자가 자신을 표적에게 노출시키지 않고 제 3의 사용자인것처럼 MAC주소, IP주소를 속이는 작업입니다. 중간자 공격이나 Dos 공격에 많이 사용됩니다.

 

<ARP 스푸핑>

취약점 : 사용자 시스템이 ARP Reply 메시지를 수신할 때마다 자신의 ARP Request 메시지 송신 여부와 상고나없이 그리고 ARP Reply 메시지의 송신자에대한 인증과정없이 자신의 ARP 테이블을 갱신합니다.

공격 방법 : 공격자는 ARP 스푸핑 공격을 하여 다른 사람의 IP주소에 자신의 MAC번호를 매칭시킵니다. 이후 주기적으로 ARP 스푸핑 공격을 하여 ARP 캐시 테이블의 공격 정보를 계속 유지합니다. 이와 같이 ARP 캐시 테이블의 내용을 몰래 변경하는 작업을 ARP 캐시 포이즈닝이라 합니다.

대응책 :

1.ARP 스푸핑 공격은 DMZ를 관리하는 내부자 소행이라면 치명적입니다. 따라서 중요 시스템이 ARP 스푸핑 되는 것을 막아야합니다. 

2. 가장 기본적인 대응은 관리자가 ARP 테이블을 직접 정적으로 작성함으로써 ARP 스푸핑 공격이 성립하지 않게 만드는 것입니다. 즉, 정적 ARP 테이블을 사용하는 시스템은 ARP reply 메시지를 무시합니다.

3. 그리고 리부팅하면 static 옵션이 사라지므로 계속 사용하려면 배치 파일 형태로 만들어두고 리부팅 시마다 자동으로 수행되도록 해야합니다.

 

<IP 스푸핑>

취약점 : 트러스트 관계 설정은 IP주소로 인증하고 로그인 없이 접속하도록 하는 방식입니다. 이러한 트러스트 관계에 IP를 위조하여 접속할 수 있습니다.

공격 방법 : 서버와 표적이 통신하고 있을때 표적에게 TCP Syn flooding 공격을 하면서 서버와 자신을 표적으로 위장하여 통신합니다.

대응책 : 

1. 출발지 IP주소에 내부망 IP주소를 가지고 있는 패킷을 라우터등에서 패킷필터링을 사용하여 막아냅니다.

2. 트러스트를 사용하지않는 것이 가장 좋습니다. 만약 사용해야한다면 트러스트 MAC주소를 static으로 지정합니다.

3. IP주소 인증 기능이 보안된 IPSec을 사용합니다.

4. TCP와 같은 상위 프로토콜에서 비정상적인 IP주소시스템 간 통신을 방지하는 기능을 추가합니다.

 

<DNS 스푸핑>

취약점 : 호스트는 DNS request 요청을 보낸후 DNS Reply 메시지가 2개오면 먼저 온 메시지를 가져가고 나중에 온 메시지는 버립니다. 이를 이용해 DNS 서버보다 해커는 호스트에게 DNS Reply 메시지를 빨리 보내서 원하는 목적을 이룰 수 있습니다.

공격 방법 :

1. 클라이온트가 DNS Query 패킷을 보내는 것을 확인해야합니다. 이를 위해 ARP 스푸핑과 같은 선행작업이 필요합니다. 만약 허브를 쓰고 있다면 이를 확인할 수 있습니다.

2. 공격자는 로컬에 존재하므로 DNS 서버보다 지리적으로 가깝기때문에 DNS 서버가 올바른 DNS Response 패킷을 보내주기전에 위조된 DNS Response 패킷을 보냅니다.

3. 하지만 꼭 기다렸다가 공격을 수행하는 것은 아닙니다. 네트워크의 특정 URL에 거짓 IP 정보를 계속 브로드캐스팅하면 해당 패킷을 받은 클라이언트는 잘못된 IP주소로 찾아갑니다.

대응책 :

1. URL 접속시마다 DNS Query를 생성하지 않고 캐시에 도메인이름에 대한 IP주소를 저장했다가 캐시에서 읽어드립니다.

2. 따라서 hosts파일에 중요한 사이트의 IP 주소를 확인해 적어두면 이 파일에 있는 사이트에 대해서는 DNS 스푸핑을 당하지 않습니다.

 

- 세션 하이재킹

세션 하이제킹은 공격자가 인증 작업등이 완료되어 정상적으로 통신이 이루어지고 있는 다른 사용자의 세션을 가로채서 별도의 인증 작업 없이 가로챈 세션으로 통신을 계속하는 행위입니다. 세션 하이재킹은 일회용 패스워드, 챌린지/응답 기법등을 무력화시킬 수 있습니다. 세션 하이재킹은 TCP 연결 하이제킹과 웹 세션 하이재킹으로 구분됩니다.

 

<TCP 연결 하이재킹 - 시작번호 추론 기반>

취약점 : 초기 많은 TCP 구현들은 순서 번호와 시작순서번호를 임의 번호로 설정하는 대신 일정한 규칙을 가지고 설정했습니다. 공격자는 몇번의 연결 시도로 쉽게 설정 규칙을 알아내고 이를 바탕으로 다음연결을 위한 시작 순서번호를 추론할 수 있습니다. 이는 다른 호스트와 연결중인 순서번호를 추론하여 그 순서번호에 맞는 패킷을 서버에 보냄으로써 하이재킹을 할 수 있습니다.

공격 방법 : 호스트와 서버가 연결이 되면 공격자는 호스트에게 Dos 공격을 하고 IP 스푸핑을 합니다. 이후 공격자는 서버에게 SYN 연결을 보내 호스트와 서버의 끊어진 연결을 복구하며 서버와 통신을 하게됩니다. 하지만, IP 스푸핑을 해야하기때문에 서버의 응답은 받지 못한다는 단점이 있습니다.

대응책 : 순서번호를 정해진 규칙에 근거하여 수행하는 대신 임의번호를 할당함으로써 공격함으로써 공격자가 추론할 수 없게만듭니다.

 

<TCP 연결 하이재킹 - 스니핑 기반>

취약점 : 만약 서버와 호스트간의 패킷을 스니핑할 수 있고 패킷 가공 공격이 가능하다면 서버쪽의 연결을 끊고 정상적인 연결처럼 시퀀스 넘버를 교환함으로서 서버와 연결을 획득할 수 있습니다. 이는 스니핑과 패킷가공으로 서버쪽의 ARP 스푸핑을 하여 사용자 A의 MAC을 자신으로 바꿉니다. 이로써 양방향 통신이 가능합니다. 하지만 문제가 있는데, TCP 연결의 동기화 상태(순서번호 - 확인번호 < 수신된 윈도우 크기)가 비동기화상태로(순서번호 - 확인번호 > 수신된 윈도우 크기) 됨으로써 ACK 패킷 송신을 계속 반복하는 ACK 스톰 현상이 발생합니다.

공격 방법 : 

1. 공격자는 스니핑하여 세션을 확인하고 적절한 시퀀스 넘버를 획드합니다.

2. 공격자는 RST 패킷을 보내 서버쪽 연결만 끊습니다. 서버는 잠시 closed 상태가되나 클라이언트는 그대로 Establish 상태로 남습니다.

3. 공격자는 새로 시퀀스 넘버를 생성하여 서버로 보냅니다.

4. 서버는 새로운 시퀀스 넘버를 받아들이며 다시 세션을 엽니다.

5. 공겨자는 정상적인 연결처럼 시퀀스 넘버를 교환하고 공격자와 서버 모두 Establish 상태가 됩니다.

대응책 : 

1. 스니핑 공격 방지 대책과 스푸핑 방지 대책을 적용합니다.

2. 비동기화 상태를 탐지합니다.

3. ACK Storm 상태를 탐지합니다.

4. 공격자가 중간에 끼어서 동작하므로 패킷의 유실과 재전송이 발생하기에 이를 탐지합니다.

5. 기대하지 않은 접속의 리셋(RST)를 탐지합니다.

6. 데이터를 암호화합니다.

 

<HTTP 세션 하이재킹>

취약점 : 웹브라우저에대해 웹 서버가 세션을 할당합니다. 이를 만약 스니핑하고 세션을 가지고 요청을 보내면 서버는 동일한 접근 권한을 가진 것으로 처리합니다.

공격 방법 : 공격자는 호스트의 유효기간이 남아있는 세션 식별자를 가로챕니다. 이를 가지고 서버에 요청을 보냅니다.

대응책 : 스니핑 방지 대책과 데이터 트래픽 암호화르하고 어렵고 긴 식별자를 사용합니다.

 

- 다양한 Remote Attack

<Local Attack과 Remote Attack>

Local Attack : 시스템에 접속한 후에 공격자가 원하는 공격을 수행하는 공격입니다.

Remote Attack : 원격 컴퓨터에서 공격 대상에 공격을 하는 공격입니다.

 

<Trojan과 Exploit>

Trojan : 악의적인 프로그램을 건전한 프로그램처럼 위장하기에 사용자들이 자신의 컴퓨터안에서 이를 실행시킵니다.

Exploit : OS에서 버그를 이용하여 루트 권한 획득 도는 특정 기능을 수행하기위한 공격 코드 및 프로그램입니다. 

Comments