728x90
  • 엿듣기
  • Ping - ICMP echo request/reply (type 8과 0)
  • Trace route - ICMP time exceeded (type 11)
  • ICMP redirect - ICMP redirection (type 5)

 


경로 추적 (trace route)

 

  • 특정 목적지 호스트에 이르는 경로를 추적한다.
  • IP 패킷의 TTL값을 1부터 차례로 증가시켜 보낸 후에, ICMP Time Exceeded 에러 메시지를 받아본다.


ICMP redirect 공격

 

  • ICMP redirect는 네트워크 내의 호스트가 다른 네트워크의 호스트로 패킷을 보낼 때 네트워크의 정해진 라우터로 전송하게 된다.(보통 디폴트 라우터)
  • 이때 정해진 라우터를 변경하고 싶을 때 ICMP redirection 패킷을 전송한다.
  • 이 패킷을 수신한 호스트는 새로운 라우터를 디폴트 라우터로 하고 라우팅 테이블 값을 변경한다.
  • 원래 ICMP redirect의 목적은 더 좋은 경로가 존재할 경우 라우터를 변경하기 위한 것이다.
  • ICMP redirect 자체가 공격은 아니지만, 악의적으로 특정 호스트가 있는 네트워크로 패킷 전송을 유도(변경)할 수 있다.

Ping (포트스캐닝)

 

  • 완전 TCP 연결을 통한 포트 스캐닝 - 3 way handshake를 하여 완전한 연결을 설정
  • 반 연결 (half-open connection)을 통한 포트 스캐닝
    • 공격자는 SYN 세그먼트를 보내고 SYN-ACK 응답을 받는다.
    • 더 이상의 ACK는 하지 않는다.
  • Zombie scanning - TCP 연결을 통해 포트 스캐닝을 했다는 흔적을 남기지 않는다.
  • TCP ACK 스캔 - 방화벽에 열려있는, 즉 방화벽을 통과할 수 있는 포트 번호를 찾는다.

TCP 연결 설정 - 3 way handshake

 

  1. 세 번의 TCP 세그먼트의 교환으로 연결을 설정한다.
  2. 첫번째 세그먼트는 SYN flag 값을 1로 하고 초기 seq을 알려준다.(다른 내용은 없음)
  3. 두번째 세그먼트는 SYN ACK flag값을 1로 하고, ACK 값을 적음
  4. 세번째 세그먼트는 ACK flag값을 1로 하고, ACK 값을 적음

 

 


Zombie scanning

  • 공격자는 공격(스캔)을 대행할 호스트(zombie)의 IP 주소 를 이용한다. (source address spoofing)
  • 나중에 zombie 호스트로부터 받은 패킷의 IPID 값으로 공격 대상 호스트의 특정 포트가 열려 있는지를 판단한다.
  • 공격 대상 호스트는 연결을 요청한 호스트는 zombie로 기록되고 실제 공격자는 알지 못한다.

 

공격 대상 호스트의 포트가 열려있다면.

공격 대상 호스트의 포트가 열려있을 때

  1. 공격자가 공격 대상(T)한테 SYN과 ACK를 보내면
  2. 공격 대상(T)은 공격자가 SYN부터 보내오지 않았기에 일반적인 3 way handshake가 아니다. 그래서 비정상적인 요청이기 때문에 RST (Rest)과 IPID = x를 보낸다. 여기서 공격자의 목적은 IPID = x이다.
  3. 그리고 공격자는 Zombie PC한테 공격 대상의 포트로 SYN을 보낸다.
  4. 그러면 Zombie PC는 공격대상(T)에게 SYN을 받았다고 생각해서 공격대상(T)에게 SYN-ACK를 보낸다. 
  5. 그런데 공격대상(T)가 SYN을 보낸적이 없는데 SYN-ACK 요청이 오니깐 Zombie PC에게 RST (Rest)과 IPID = x+1을 보낸다.
  6. 그리고 공격자는 IPID가 x+1이라는것을 알고있고 다시 SYN-ACK를 공격대상(T)에게 보낸다
  7. 공격대상(T)는 RST (Rest)과 IPID = x+2 보낸다. 
  8. 결론 : 공격자는 IPID가 x+2 인걸 알고 2라는 짝수가 오면 공격자는 공격대상자의 포트가 열려있다는 것을 알 수 있다.

 

공격 대상 호스트의 포트가 닫혀있다면.

공격 대상 호스트의 포트가 닫혀있을 때

  1. 공격자가 공격 대상(T)한테 SYN과 ACK를 보내면
  2. 공격 대상(T)은 공격자가 SYN부터 보내오지 않았기에 일반적인 3 way handshake가 아니다. 그래서 비정상적인 요청이기 때문에 RST (Rest)과 IPID = x를 보낸다. 여기서 공격자의 목적은 IPID = x이다.
  3. 그리고 공격자는 Zombie PC한테 공격 대상의 포트로 SYN을 보낸다.
  4. 그러면 Zombie PC는 공격대상(T)에게 SYN을 받았다고 생각해서 공격대상(T)에게 연결을 시도하려고 했으나 포트가 열려있지 않아서 RST를 보낸다.
  5. 공격자는 다시 공격대상(T)에게 SYN-ACK을 보내본다.
  6. 공격대상(T)는 Zombie PC와 아에 echo가 발생하지 않았기 때문에 IPID가 x+1이 아닐 것이다. 그래서 공격대상(T)는 RST와 IPID = x+1를 공격자한테 보낸다.
  7. 결론: 공격자는 IPID가 x+1 인걸 알고 1이라는 홀수가 오면 공격자는 공격대상자의 포트가 열려있다는 것을 알 수 있다.

 


TCP ACK 스캔

  • 공격자는 3-way handshake 없이 ACK 비트를 세팅하고 패킷을 보낸다
  • ACK패킷은 패킷필터를 통과한다면, 이 ACK 패킷을 받은 수신 프로세스는 RST비트 를 세팅하여 보낸다.
    • SYN-ACK에 대한 응답 패킷이 아니므로 (프로토콜을 위반한 패킷)
  • 이와 같이 하여 공격자는 포트 1302가 현재 방화벽에서 열려 있는 것을 알 수 있다.

 

'서버 > 암호' 카테고리의 다른 글

방화벽 (Firewall)  (0) 2021.08.02
Spoofing (속이기)  (0) 2021.07.29
네트워크 공격  (0) 2021.07.29
ICMP 질문 메시지(Query)  (0) 2021.07.29
ICMP 에러 보고 메시지  (0) 2021.07.29

+ Recent posts