* 트래픽 분석 툴로 유명한게 WireShark이다.

이제 패킷덤프 코드 작성한것 말고 WireShark를 이용해서 패킷을 확인해보겠다.

(와이어샤크 홈페이지)



와이어샤크는 홈페이지에서 무료로 다운받을 수 있다.
자기 집 OS에 맞추어 설치하면 된다.



(첫 화면)



첫 화면에서 인터페이스를 설정 할 수 있다. 원하는 랜카드를 설정하고
캡쳐 시작을 누르면



(캡쳐 화면)



위와 같이 패킷들을 확인 할 수 있다.

우리가 패킷덤프 프로그램으로 보던 것과 비스하게 나온다.

우리가 저번에 만들었던 ICMP 패킷 만들어 전송하는 코드로
ICMP패킷을 하나 보내서 이 패킷을 확인해 보겠다.




(우리가 보낸 ICMP 패킷)



우리가 보낸 패킷에는 Checksum을 그냥 0으로 지정해서 보냈다.

그러니 응답이 없었다.
위에서 보는 것 처럼
만약 입력값이 잘못되면
패킷 내용에서 와이어샤크에서 노란색으로 표시된다.

IP 헤더는 체크섬을 0으로 하곤했다.
UDP 또한 checksum을 넣을 필요가 없다.
하지만
ICMP는 checksum을 계산해야한다.

* Checksum 구하는 법

(16진수 기준이다.)
1) 두 자리씩 더해준다.
ex) 08 00 + 00 00 + 11 11 + 00 01 + ....
    = 08 00 + 00 00 + 11 11 + 00 01 + ....
    = 19 12 + (41 41 *10)
    = 19 12 + 41 41 0
    = 4 2D 22 

2. 올림수가 발생하면 올림수를 더해준다. 위의 경우에서는
 = 2D 22 + 4
 = 2D 26

3. 그 결과에 1의보수를 해준다.(반전)
 -> 2진수로 바꾸어준다.
 - 2D 26  => 10110100100110
 -> 1의보수 => 01001011011001  => 12D9 가 나온다.16비트가 나와야하는데 14비트다
      앞에 00이 빠져있던것이다. 그렇기 때문에 00이 존재한다.
바로 이게 체크섬 값이다.
실제 체크섬 값 1110110100100110
앞에 11을 빼면 일치하다.  ( 자리수 16개에 맞추어 보수를 취해줘야한다. 그렇게 되면 11이 들어간다.)

수신측에서 체크하는 법
1. 같은방식으로 전부다 더해준다.
 = 08 00 + D2 D9 + 11 11 + 00 01 + (41 41 * 10)
 = EB EB + 41 41 0
 = 4 FF FB
 = (올림수 발생)
 = FF FB + 4
 = FF FF
FF FF 값이 나오면 올바른 값으로 인식한다.

이제 Checksum을 계산하는 법을 알았으니 프로그램 함수로 만들어 볼것이다.




(함수 코드)



위에서 비트연산을 사용했다.

* 만약 2개씩 안맞으면 뒤에 00 을 채워서 2개씩 맞춰서 더해준다.




(두번 pack해준 모습)



(정상적으로 ICMP 패킷이 전송되고 응답을 받은 모습)



IP 헤더를 이용한 공격기법
 - 테스트 가능한 공격기법이 현재는 거의 막혀있는 상태이다.
Dos( Denial Of Service )
 - 서비스 거부 공격
1) ICMP 헤더를 이용한 Dos
 - Ping of Death : 대량의 ICMP Echo Request 패킷을 발생시켜 타켓 시스템에 과부하를 일으키는 방법
 - 그래서 요즘에는 아이에 ICMP를 차단시킨다. (네이버도 그렇다.)
2) ICMP를 이용한 스니핑
 - ICMP redirect를 이용한다.
3) IP 헤더를 이용한 공격 기법
 - TearDrop : fragment offset필드의 값을 조작하는 방법(아주작은 값 혹은 큰값)
  -> 현재 패치가 다 되서 가능하진 않다.
 - Land Attack : 출발지 ip와 도착지 ip를 동일하게 조작하는 방법
  -> 이것 또한 패치가 다 되어있다.
 - Smurf Attack : 출발지 ip를 타켓으로 조작해서 브로드캐스팅한다.

Dos 는 많은 패킷을 보낼 수 있으면 더 효과적이다.
그래서 DDos가 나왔다.
Distribute (분산) Dos -> 엄청난 수의 컴퓨터가 공격하는 것이다.
        -> 공격자가 쉽게 노출될 수 있다.
DRDos -> SMURF Attack 공격과 비슷하다.
       -> DRDos는 잘 알려진 서버들이 공격에 이용된다.
      -> 공격자가 뒤로 숨을 수 있다. (공격자를 찾기 힘들다.)



+ Recent posts