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
- 세 번의 TCP 세그먼트의 교환으로 연결을 설정한다.
- 첫번째 세그먼트는 SYN flag 값을 1로 하고 초기 seq을 알려준다.(다른 내용은 없음)
- 두번째 세그먼트는 SYN과 ACK flag값을 1로 하고, ACK 값을 적음
- 세번째 세그먼트는 ACK flag값을 1로 하고, ACK 값을 적음
Zombie scanning
- 공격자는 공격(스캔)을 대행할 호스트(zombie)의 IP 주소 를 이용한다. (source address spoofing)
- 나중에 zombie 호스트로부터 받은 패킷의 IPID 값으로 공격 대상 호스트의 특정 포트가 열려 있는지를 판단한다.
- 공격 대상 호스트는 연결을 요청한 호스트는 zombie로 기록되고 실제 공격자는 알지 못한다.
공격 대상 호스트의 포트가 열려있다면.
- 공격자가 공격 대상(T)한테 SYN과 ACK를 보내면
- 공격 대상(T)은 공격자가 SYN부터 보내오지 않았기에 일반적인 3 way handshake가 아니다. 그래서 비정상적인 요청이기 때문에 RST (Rest)과 IPID = x를 보낸다. 여기서 공격자의 목적은 IPID = x이다.
- 그리고 공격자는 Zombie PC한테 공격 대상의 포트로 SYN을 보낸다.
- 그러면 Zombie PC는 공격대상(T)에게 SYN을 받았다고 생각해서 공격대상(T)에게 SYN-ACK를 보낸다.
- 그런데 공격대상(T)가 SYN을 보낸적이 없는데 SYN-ACK 요청이 오니깐 Zombie PC에게 RST (Rest)과 IPID = x+1을 보낸다.
- 그리고 공격자는 IPID가 x+1이라는것을 알고있고 다시 SYN-ACK를 공격대상(T)에게 보낸다
- 공격대상(T)는 RST (Rest)과 IPID = x+2를 보낸다.
- 결론 : 공격자는 IPID가 x+2 인걸 알고 2라는 짝수가 오면 공격자는 공격대상자의 포트가 열려있다는 것을 알 수 있다.
공격 대상 호스트의 포트가 닫혀있다면.
- 공격자가 공격 대상(T)한테 SYN과 ACK를 보내면
- 공격 대상(T)은 공격자가 SYN부터 보내오지 않았기에 일반적인 3 way handshake가 아니다. 그래서 비정상적인 요청이기 때문에 RST (Rest)과 IPID = x를 보낸다. 여기서 공격자의 목적은 IPID = x이다.
- 그리고 공격자는 Zombie PC한테 공격 대상의 포트로 SYN을 보낸다.
- 그러면 Zombie PC는 공격대상(T)에게 SYN을 받았다고 생각해서 공격대상(T)에게 연결을 시도하려고 했으나 포트가 열려있지 않아서 RST를 보낸다.
- 공격자는 다시 공격대상(T)에게 SYN-ACK을 보내본다.
- 공격대상(T)는 Zombie PC와 아에 echo가 발생하지 않았기 때문에 IPID가 x+1이 아닐 것이다. 그래서 공격대상(T)는 RST와 IPID = x+1를 공격자한테 보낸다.
- 결론: 공격자는 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 |