2016. 1. 14. 09:09 :: 네트워크 보안

0. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

1. ICMP

가. 에러를 알려주거나 정보를 알려준다.

나. 헤더 구조

1) type 이 3, 4, 5, 11 은 에러를 알려주는 경우이다.

2) type 2

가) 목적지에 도착하지 못했다는 내용이 대표적이며 세부적인 이유를 code 필드에서 알려준다.

나) code

3) type 5

가) 라우팅 테이블 조작시에 사용 가능

4) type 11

가) TTL 값을 확인하고 1을 감소 시켜준다. 만약 TTL 0 이 되면 해당 패킷을 버리고 code 0 으로 여기까지 핑이 왔다 라고 되돌려준다. 되돌려줄때 버린 패킷을 다시 넣어서 보내준다.(ICMP의 data 필드에 다시 넣어서 보내줌) 

- type 11, code 0 이면 TTL 0 이여서 보내진 ICMP 패킷이다.

- ICMP 의 data 필드에 받았던 ICMP 패킷이 다시 넣어져있는것을 확인할 수 있다.

 

나) tracerout 명령이 type 11을 이용 

 

5) ping 명령

가) ICMP type 8, code 0

 

6) tracert(traceroute) 명령

가) ICMP type 7 (TTL = 1 부터 1씩 증가)

- type 11 : 에러, 이 메시지의 src ip를 화면에 출력

- type 0 : 마지막 목적지 도착

 

다. ICMP를 이용한 공격

1) SMURF, ICMP flooding, ping of death, ICMP redirect

2) ICMP 외에도 가능한 공격

- 은닉채널 : 사용하지 않는 필드에 데이터를 숨겨서 전속, tos 필드 및 ping 의 데이터 부분

- land attack

3) 대부분이 IP spoofing 공격을 함께 이용(공격자 자신을 숨기기 위해)

 

라. SMURF 공격

1) ICMP ping (echo), IP spoofing 해서 src 주소를 속임

2) 브로드캐스트 이용, local 및 remote 공격 가능

3) 공격 방법

가) 공격자가 ICMP echo request 의 src 주소를 victim 주소로 조작

나) dst 주소에는 호스트가 많은(큰) 네트워크에 브로드캐스트 주소 사용

다) 많은 호스트들은 ICMP echo requst 를 수신하여 echo reply 를 보내게됨 즉, victim에게 간다.

라) victim 은 많은 echo reply 를 수신하여 해당 패킷들을 drop 시키기 위해 많은 자원을 사용

- 트래픽을 발생시키는 DoS 공격중 하나

4) 공격

가) # hping3 -1 [브로드캐스트 주소] -a [victim_ip]

① # hping3 -1 192.168.221.255 -a 192.168.221.135 -c 1 

 

나) 와이어샤크 확인 

- 현재 네트워크의 규모가 vm 환경으로 작기 때문에 하나밖에 발생하지 않았다.

 

① echo requst 

- src addr 이 kali의 주소 .130 이 아니라 victim의 VMwin7의 주소가 적혀있음을 확인 가능하다.

- dst addr 에는 브로드캐스트 주소가 적혀있다.

 

② echo reply 

- 현재 VM 내부에는 공격자 kali, victim win7, 게이트웨이(.2) 밖에 없어서 게이트웨이가 응답한 reply 하나만 확인가능

- src addr은 게이트웨이 주소이다. (192.168.221.2)

- dst addr 을 보면 실제 icmp 를 보낸 kali의 주소가 아니라 victim 의 주소가 적혀있다.

 

마. Ping of Death

1) ping 하나로 죽음에 이르게 하는 공격

2) 하나의 패킷의 size 를 크게하여 전송

3) 하나의 패킷을 전송하지만 victim은 많은 단편화 패킷을 수신함으로 부하를 가중시킨다.

4) victim 혹은 목적지에서 다시 합쳐진다.(중간 라우터 노드에서는 합쳐지지 않는다.)

5) 네트워크 환경에 따른 MTU size

가) ethernet : 1500 byte

나) tokenring(16M) : 17915 byte

다) tokenring(4M) : 4464 byte

라) FDDI : 4352 byte

마) IEEE 802.3 + 802.2 : 1492 byte

6) 공격

가) # hping3 -1 [victim_addr] -d 65000

# hping3 -1 192.168.221.135 -d 65000 -c 1

- 단편화된 패킷들이 전송되는 것을 확인가능

- 마지막에는 ICMP 패킷으로 끝남

(위 2개 사진 맨왼쪽에 번호를 보면 1 ~ 44 개의 단편화 패킷이 전송됬을음 확인할 수 있다.)

 

나) # hping3 -1 [victim_addr] -d 65000 -a 100.100.100.100

① # hping3 -1 192.168.221.135 -d 65000 -a 100.100.100.100 -c 1

- 송신자를 100.100.100.100 로 속여서 패킷 전송

- 마찬가지로 마지막에는 ICMP 패킷으로 끝남

 

다) hping3의 옵션을 이용하여 부하를 일으키는 방법

-i u10000 (1초에 10개 패킷전송) 또는 --fast

-i u1000  (1초에 100개 패킷전송) 또는 --faster

-i u100   (1초에 1000개 패킷전송)

--flood : 공격자 시스템이 공격가능한한 최대한 많은 트래픽 발생

# hping3 -1 192.168.221.135 -d 65000 -a 100.100.100.100 --flood

공격전의 victim 의 성능

 

- 공격 후 victim의 성능

 

- 공격 중지

 

바. Land Attack

1) 알고리즘 오류에 의한 공격 (자신의 꼬리를 잡기 위해 제자리 걸음하는것)

2) 최근에는 해당 공격 되지 않음 (OS가 drop 시킴)

3) 많은 패킷을 유발하는 목적으로만 사용

4) src와 dst 의 각종 정보를 동일시켜 보냄

가) IP : src ip == dst ip

나) 서비스 : src port == dst port

5) ICMP 이외에도 IP 가 포함되는 모든 프로토콜, tcp, udp 도 가능

6) IP spoofing과 같이 사용

7) 공격

가) # hping3 -1 [victim_addr] -a [victim_addr]

# hping3 -1 192.168.221.135 -a 192.168.221.135

[[[[사진 추가]]]]

② requst 패킷만 있다. reply 패킷은 OS가 버리기 때문이다.

 

사. 은닉채널(ICMP)

1) 환경 구축

가) ish : ICMP 패킷으로 데이터를 주고받는 통신을 한다.

나) 백도어로 쉘을 가져와서 공격자가 각종 명령어를 실행할 수 있다.

다) centOS_VM(서버, victim)

- # yum install gcc* : 컴파일러 설치

- ish 설치 (ish : 클라이언트용, ishd : 서버용)

라) kali_VM(클라이언트, 공격자)

- ish 설치 (ish : 클라이언트용, ishd : 서버용)

2) 서버 측

- # ./ishd

- # ps -ef | grep ishd    =>    동작 확인

3) 클라이언트 측

- # ./ish [server_IP]

- 쉘을 가져와서 내마음대로 조작 가능

4) 와이어샤크 확인

가) 클라이언트가 서버에 접속하여 각종 명령어 실행하며 패킷을 확인

나) ICMP 패킷의 data 필드 확인

다) 원래는 의미 없는 값이 가야하지만 ish 통신을 하면 의미있는 값들이 전송되어짐을 확인 가능

5) 대책

가) 지금의 경우는 reply 패킷만 사용하기 때문에 requst 없는 경우를 탐지

나) 반대로 requst만 사용하는 방법도 있음

다) 은닉채널은 모니터링을 잘해야한다.

- TCP, ICMP 패킷의 필드를 사용하기 때문에 찾기 어렵다.

 

 

posted by Red_Seek