Sniffing, Spoofing(ARP, IP)

2019. 5. 30. 11:27IT - Hacking

Sniffing 
통신 과정에서 발생하는 데이터를 엿보거나 훔치는 행위. 기밀성을 침해하는 행위이다.

Sniffing의 전제조건
1) 물리적으로 데이터가 공격자에게 도달해야 한다.
2) NIC의 Mode가 Promiscous mode여야 한다.
3) sniffer가 필요하다.(필터링 되기 전 패킷을 복사한다)

Hub 환경에서의 Sniffing

Switch 환경에서의 Snifiing

Hub 모든 데이터를 Flooding하기 때문에 자동적으로 
스니핑이 가능

 
Swtich 필터링, 포워딩의 기능이 있기 때문에 
추가적인 작업이 있어야 스니핑이 가능하다.

 

Passive Sniffing

Active Sniffing

 Hub 환경처럼 모든 호스트에 신호가 전달되는 경우

1) 공격자에게 물리적으로 데이터가 도달하지 않는 경우 
추가적인 공격을 통해 데이터를 스니핑

2) Switch Jamming, ARP Spoofing, ICMP Redirect 



ARP Spoofing(ARP Cache Poisoning)
공격자가 특정 Host IP에 대응 하는 MAC주소를 자신의 MAC주소로 위조시킨 
ARP Reply를 네트워크에 흘려 해당 IP로 전달되는 패킷을 자신에게 유도하는 공격기법이다.

공격자(Kali linux)가 ARP Reply를 조작해서 Victim(Window)에게 보내는 모습. Victim의 ARP Table에는 10.10.10.20의 MAC주소가 C로 등록 된다.

* 실습 *

kali에서 arpspoof를 이용하여 타겟(-t) 10.10.10.10에게 10.10.10.254의 MAC주소는 eth0의 MAC주소라는 ARP Reply를 전송

Sender IP가 10.10.10.254로 바뀐 것을 볼 수 있다. 하지만 MAC주소는 kali의 mac주소로 들어가있다.

Victim의 ARP Table이 조작되었다. 동일 MAC주소가 2개 존재.

 

대응책
1) arpwatch 등의 탐지 프로그램 사용
2) 중요 host에 대한 arp table 정적 등록
3) 비정상패킷 탐지(arp reply의 반복발생 등)

 

 

 

IP Spoofing


 TCP의 결점으로 생긴 공격방법. 신뢰관계를 가지는 A와 B의 통신이 있다고 가정했을 때, 공격자는 IP주소를 B로 속인 상태에서 A와 통신을 하는 공격. 이때 B를 마비시키는 공격이 선행되어야 한다. 마비된 B는 응답을 할 수 없고 공격자는 마치 자신이 신뢰관계에 있는 Host인것처럼 통신을 한다. 또한 seq.num에 대한 예측이 필요하다.


 -> 신뢰관계? ID/PW 기반의 로그인이 아닌 IP주소를 인증하는 방법으로 접속을 허용하는 관계를 뜻함
     이러한 신뢰관계 Host에게는 r계열 서비스가 인증없이 허용됨.

-> TCP의 결함? host에 대한 인증이 출발지 IP로만 검증됨. 헤더를 조작하면 인증에 성공할 수 있다
                        seq.num이 초당 25,000번씩 바뀌도록 설계되었지만 OS에 많은 부하를 발생시킴
                        그래서 1초에 1번씩 바뀌도록 설계변경. 즉 예측이 쉬워짐


-> seq.num이 바뀌는 방식?
   1) 시간에 따라                                      * ISN : Initial Sequence Number
        최초의 일련번호는 1 설정됨. 최초 패킷의 ISN 초당 128,000 증가한다. 
TCP seq.num은 32비트로 이루어지므로 0~2^32(4,294,967,296)를 가지게 된다. 이렇게 계속 증가하다보면 9시간 32분이 되었을 때  ISN 다시 한바퀴 돌게 된다. 연결이 성립되면 64,000 증가하게 된다.
   2) 패킷의 통신여부에 따라
       seq.num을 예측하기 가장 간단한 방법. 패킷을 수신마다 64,000 증가시킨다.  예를 들어 서버를 이용하는 사용자가 없는 시간대에서 쉽게 성공할 수 있다.
   3) 무작위 변경
        seq.num이 무작위로 바뀌기 때문에 거의 예측이 불가능하다. IP Spoofing에 대해 안전한 방식이라고 할 수 있다.