본문 바로가기
Today I learned

20191217 보안 SW 개발 세미나 6일차

by soheemon 2019. 12. 28.

#네트워크 공격방법 정리

 

1) Ping of Death

공격유형: icmp패킷의 사이즈를 악의적으로 크게 설정해서 서버로 보내는 공격.

패킷의 사이즈가 MTU를 초과하게 되면 송신하는측에서는 분할해서 보내고, 받는쪽에서는 분할된 패킷을 모아서 재조립 하게 된다.

예를들어. ICMP패킷의 사이즈를 65000정도로 보내면 대략 44조각으로 분할해서 보내는데, 타겟서버에서는 44조각을 모아서 재조립 한 후 응답하는 과정을 반복한다. 이 과정에서 서버에는 불필요한 부하가 발생하게 된다.

 

대응방법 : icmp를 허용할 호스트를 지정 (화이트리스트. 지정된 호스트에서만 ping응답을 하게 된다.)
리눅스에서는 iptable로 설정.

윈도우에서는 자체 방화벽에서 > 들어오는 연결 설정 가능.
- 개수제한. 초당 5개씩만 허용하는등의.. 방화벽에서 설정한다. 
- 크기제한 (ping) 윈도우 32byte 리눅스 64byte 기본사이트로만 받게 하기.
  
2) LAND Attack
Attacker쪽으로는 응답이 안가도록 출발지 주소 + 목적지 주소를 타겟의 IP주소로 지정한 Ping of Death 

ICMP Echo Reply를 Attacker로 지정하지 않고 Target으로 지정하여 보내는 공격. 특징은 공격이 외부게이트 웨이로 나가지 않는다.

Ping Of Death 공격과 비교하여 LAND Attack은

a. 공격자가 보내는 ICMP Request를 받고, 해석하는 과정 +

b. ICMP Reply 전송 +

c. 자기자신에게 보낸 ICMP Reply 받아서 해석 하는 과정을 거쳐야 되므로, Ping of Death보다 많은 처리과정이 필요하다. 부하도 더 발생.

 

대응방법: 운영체제 업데이트. (윈 7이상 사용)

3) Smurf Attack
출발지를 타겟서버로 지정하고 목적지를 다이렉트 브로드캐스트 로 지정. 
대응방법

- 외부에서 들어온 패킷의 출발지주소가 내부망 주소이면 패킷을 차단한다.
- 목적지가 브로드캐스팅인 패킷을 막는다. 외부에서 들어오는거만 차단. 내부에서는 막기가 어려움.
-- 라우터에서 기본설정 할 수 있다. : route -if#no ip dirext-broadcase

- 리눅스 시스템에서 sysctl 설정으로 ICMP를 브로드캐스트로 보내는 패킷이라면 차단할 수 있다.
-- 확인방법 stsctl -a  | grep icmp 입력 후, icmp_echorequest broadcasts = 1 인지 확인  0이면 차단하지 않는다.
-- 수정 - sysctl -w net.ipv4.icmp_ = 1 --> 제한 브로드 캐스트를 막을 수 있다.

3-2) 브로드캐스트 종류 
1. 다이렉트 브로드 캐스트 - 네트워크 주소는 그대로. 호스트주소 부분만 전부 1로 채워져 있다. 외부 네트워크로 나갈 수 있다.
2. 리미티드 브로드 캐스트 - 모든 비트가 1이다. 따라서 주소는 하나다. {255.255.255.255} 같은 내부 네트워크에서만 전달된다 외부로 안나간다. 따라서 큰 문제가 안된다. 

 

4) SYN 플러딩
목적지는 도달 불가능한 주소로 설정하여 타켓서버에 SYN 패킷을 날리는 공격. 

SYN을 많이 보내서 Backlog queue를 꽉 채우는 방법.

 

대응방법 

- 타임아웃 줄이고 큐를 늘린다.
1)큐사이즈 확인 sysctl -a | grep backlog 512는 넉넉한 편
sysctl -w net.ipv4
2) syncookie 적용. 일종의 대기표. SYN의 일련번호를 따로 기록했다가 ACK가 오면 바로 컴플릿큐로 보낸다. 그래서 따로 큐가 필요없음.
-- 설정 확인명령어: sysctl -a greap | syncookie syncoockie는 백로그 큐가 꽉 찬 경우에만 동작. 

- Syn 개수 제한: 라우터나 방화벽에서 설정 한다.

- TCP 인터셉터 : router L4 L3 L7 Switch
클라이언트가 SYN패킷을 보내면 서버로 보나는게 아니라 라우터가 중간에서 자기가 가로채 보관후, 대신 ACK를 보내고, 클라이언트가 이어서 ACK를 보내면, 그제서야 보관해뒀던 SYN과 ACK를 타겟서버로 전송한다. 
- Sink Hole : Dos트래픽을 가상의 인터페이스로 보내서 제거하는 방법

5) TearDrop 재조립 방해공격
패킷을 재조립하기 어렵게 악의적으로 나눠서 보낸다.

Offset: 순서번호 (맨앞 바이트를 8로 나눈 값)

첫번째 조각 0 ~ 1479       Offset: 0

두번째 조각 1480 ~ 2959  Offset: 185

세번째 조각 2960 ~ 4439  Offset: 370

정상적인 Offset값 순서 : 0 -> 185 -> 370 차례대로 보낸다.

Tear Drop 공격시 Offset 순서 : 0 -> 370 -> 185.... 섞어서 보냄

재조립을 못하게 만든다. 패킷을 보관해두는 임시버퍼가 OverFlow발생하며 오작동을 일으킬 가능성이 있다. 


☆SYN > smurf > tear 순으로 시험에 많이나옴

6)DDos

DDos공격은 다수의 좀비PC들이 Dos공격을 하는것.

특징은, 앞에서 배운 Dos공격처럼 Attacker가 직접 공격을 하는게 아니다. Attacker는 C&C 서버를 통해서 좀비들에게 명령을 내리고, 좀비PC는 실제 서버에 공격을 하게 되는 구조이다.

- DDos 공격의 과정 
1)관리가 소홀한 서버를 골라서 C&C 서버를 설치한다. (백도어)
2) 좀비로 감염시킬 악성코드를 만들어서 취약한 서버에 올려놓고. 스크립트, 게시판 등에 다운로드 하도록 유도한다.
3) 좀비에 감염된 PC는 자신의 IP주소를 C&C에게 알림.
4) Attacker 는 C&C 에 접속해서 공격명령을 내리면 좀비에게 전달되고 좀비는 타겟에 공격을 하게 되어있다.

- 백신업체는 일부러 좀비PC로 감염되고, 감염된 좀비PC가 C&C서버에 자신의 IP를 보내면 C&C서버의 IP를 알 수 있게되는데, 이렇게 알게된 C&C서버를 차단하는방법으로 예방한다. 하지만 서버가 IP주소를 옮겨다니면 차단하기가 어렵다..
주로 3단계에서 많이 막는다..  국가사이버안전센터에서 C&C서버 아이피가 들어오면 막는다..

 

A) 방화벽의 유형
1) 패킷필터 1세대
- src IP srcPort dstIP desPort에 따라 허용 거부를 설정
-- 처리 속도가 빠르고 명확한 편(주로 L3, L4 에서 동작)
--정책 설정이 가능하다.
(예를들어 회사에서 외부 사이트 접속을 막을 수 있음)
--IP Spoofing 을 막을 수 없다. 조작된 트래픽에 대한 필터링이 불가하다.

2) 상태기반감시 3세대 SPI 공식
- 상태테이블을 유지하고 있다가 패킷의 정보를 기록하고, 이상패킷일때는 허용이나 차단을 한다.
- 요청에 대한 응답이 외부에서 들어오는경우 (정상, 허용)
- 요청이 없었는데 응답이 들어오면 (비정상, 차단)
- 상태테이블의 항목을 많이 늘려서 DPI이라고도 부른다 (비공식 용어)

3. Application Proxy Gateway(2세대)
모든 각 서비스마다 별도의 프록시가 허용이나 거부를 결정한다.
일종의 데몬같은것. 7계층의 헤더까지 볼 수 있으므로 상세한 설정이 가능하다.
단점 : 7계층헤더까지 보다보니 속도가 매우 느리다. 병렬연결, 이중화 등등으로 극복

Circuit Gateway 회로수준 게이트 웨이
하나의 데몬(프록시) 가 모든 서비스의 허용/거부를 결정한다.
덜 세밀하다. 하지만 덜 느리다.

룰셋 작성 
출발지 IP 목적지 IP 서비스 허용/거부 로그여부 ->테이블로 관리
내부망    외부망   http        허용        none
외부망    웹서버    80, 443   허용       log
any        any       모든         거부       --> 묵시적 거부... 이거 있어야 해.. 위에서 적용하지 않되는건 거부 한다는 뜻.!

위에서부터 우선적으로 적용이 된다.

룰셋작성 규칙
1) 맨 아래줄에는 모두 거부를 배치한다.
2) 최소한 하나의 허용이 반드시 필요하다. (전부 거부면 안나가니까) 
3) 세부적인 규칙은 위에 배치하고 포괄적인 규칙은 아래에 배치한다.
4) 자주 참조되는 규칙은 위에 배치한다.

댓글