Network Security

스캔 및 탐지

부산대보금자리 2021. 8. 8. 14:29

스캔은 서비스를 제공하는 서버의 작동 여부와 서버가 제공하는 서비스를 확인하기 위한 작업이다. TCP 기반의 프로토콜은 기본적으로 요청을 보내면 응답을 해준다. 스캔은 이런 원리를 기반으로 작동한다. 

방화벽과 IDS를 우회하기 위해 발전한 스캔의 종류는 무척 다양하다.

 

1. PING

가장 기본적인 스캔은 ping을 이용하는 것이다. ping은 네트워크와 시스템에 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티로, 2장에서 살펴본 ICMP를 사용하며, 기본적으로 TCP/IP 네트워크에서 사용된다. 넷웨어와 같이 다른 프로토콜 체제를 쓰는 네트워크에서는 ping 유틸리티도 다르며 모든 네트워크에 ping이 있는 것은 아니다.

 

2. ICMP스캔 

ICMP를 이용해 공격 대상 시스템의 활성화 여부를 알아보는 방법은 다음 네 가지다. 

1) Echo Request와 Echo Reply 이용하기 

2) Time stamp Request와 Timestamp Reply이용하기

3) Information Request와 Information Reply 이용하기 

4) ICMP Address Mask Request와 ICMP Address Mask Reply이용하기 

 

가장 일반적인 방법은 Echo Request와 Echo Reply를 이용한 것이며, 일반적으로 옵션 없이 ping 유틸리티를 사용하면 된다. 

32 bytes는 패킷의 길이를 나타내는 것으로 운영체제마다 보내는 바이트의 길이가 다르다. 윈도 시스템은 23바이트 패킷을 생성해서 보낸다. 유닉스나 리눅스와 같은 다른 운영체제는 대부분 56바이트다. 각 바이트의 내용은 의미 없는 알파벳으로 채워진다.

TTP은 Time to live값으로, 라우팅 정보가 잘못되어 패킷이 네트워크를 무한대로 돌아다니지 않도록 최초 라우터를 제외한 라우터를 지날 때마다 값이 1씩 줄어든다. TTL값도 운영체제에 따라 조금씩 다르다. 

줄어든 TTL값으로 원격지 시스템에 라우터 몇 개를 거쳐서 도달했는지 알 수 있다. 

세계 어느 곳에 있는 시스템이라도 20개 이상을 지나는 경우는 드물다. 

 

라우터나 방화벽 등에서 ICMP Echo Request패킷을 막는 경우가 있는데, 이때 이용할 수 있는 방법으로 세 가지를 생각할 수 있다.

1). Timestamp Request 패킷을 이용 

Timestamp Request 패킷은 원격지 시스템의 현재 시각을 알아보기 위한 것이다. 송신자가 패킷을 보낸 시각과 수신자가 패킷을 받은 시간, 송신자가 수신자에 전송하는 동안 걸린 시간으로 공격 대상의 현재 시스템 시각을 알 수 있다.

하지만 timestamp Request패킷에 Reply 패킷을 돌려보내는 시스템이 시간만 알려준다고 생각할 수는 없다. 

상대 시스템의 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화되어 있음도 말하는 것이다

 

2). Information Request패킷을 이용하는 것이다. 원래 Information Request와 Reply는 메인 프레임의 단말기처럼 부팅할 때 자신의 디스크가 없는 시스템이 스스로 ip를 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발되었다.

기본 목적은 RARP, DHCP 같은 프로토콜과 같지만 다른 프로토콜을 이용한 방법에 대해 원시적이라고 할 수 있다.

이 방법에서도  Timestamp Request패킷처럼 죽은 시스템은 Reply패킷을 보내지 않을 것이다. 

 

3). ICMP Address Mask Request와 Reply패킷을 이용하는 것이다. 이 패킷 역시 Information Request패킷처럼 단말기가 부팅될 때 자신이 속한 네트워크의 서브넷 마스크를 알기 위해 보낸다. 앞의 두 가지 방법과 마찬가지로 Reply 패킷이 돌아오는지 확인함으로써 상대 시스템의 활성화 여부를 확인한다.

 

하지만 위의 세 가지 방법이 모든 운영체제에서 작동하지는 않으므로 일부 지원하는 것에 따라서 운영체제를 짐작할 수 있다.

 

3. TCP와 UDP를 이용한 스캔 

TCP와 UDP를 이용한 스캔은 시스템 자체의 활성화 여부가 아닌 포트 스캔을 한다. 

1) TCP Open 스캔

TCP를 이용한 가장 기본적인 스캔으로는 OPEN스캔을 생각할 수 있다. 먼저 작동하리라고 예상하는 포트에 세션을 생성하기 위한 SYN패킷을 보낸다. 포트가 열린 경우 서버에서 SYN+ACK패킷이 돌아오고, 공격자는 다시 ACK 패킷을 보낸다. 

OPEN 스캔은 3-way handshack과정을 모두 거치므로 상대방 시스템에 로그가 남는다.

포트가 닫혀 있는 경우에는 RST+ACK패킷이 돌아온다.

 

2) 스텔스 스캔

스텔스 스캔은 세션을 완전히 성립하지 않고 공격 대상 시스템의 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에 로그가 남지 않는다. 따라서 공격 대상의 시스템 관리자는 어떤 IP를 가진 공격자가 자신의 시스템을 스캔했는지 확인할 수가 없다. 

스텔스 스캔은 이처럼 단순히 로그를 남기지 않는 것만이 아니라, 공격 대상을 속이고 자신의 위치를 숨기는 스캔 모두를 통칭한다.

동작 방식에서 OPEN에서의 차이점은 닫힌 경우 응답이 같지만 열린 경우 아무런 응답이 없다.

이런 종류는 FIN, NULL, XMAS스캔이 있다.

 

- nmap 실습

nmap -sT는 TCP OPEN 스캔이다. 

virtual box안 칼리 리눅스에서 호스트의 포트 스캔을 해볼 것이다.

open 된 포트 상태와 이름 등을 볼 수 있다. 

-sS를 사용하면 로그를 남기지 않는 SYN 스텔스 스캔을 한다.

 

특정 포트를 스캔하려면 -p옵션을 사용한다.

위는 fin패킷을 이용해 80,139 포트를 스캔한 결과이다. 

nmap은 이외에도 다양한 종류의 스캔 옵션과 실행 옵션을 제공한다. 

윈도우용 nmap은 Zenmap이 있다.

 

fping은 다음을 보자

https://geru.tistory.com/42

 

같은 네트워크 내의 컴퓨터(호스트)ip주소를 검색하기

1. 개요 공격 대상을 직접 스캐닝하는 단계이다. 액티브 스캐닝부터는 불법이기 때문에 반드시 허가를 받아야 한다. 대표적인 액티브 스캐닝으로는 DNS 정보수집, 포트 스캐닝, 웹 스캐닝, 종합

geru.tistory.com

 

'Network Security' 카테고리의 다른 글

TLS보안 프로토콜 기술  (0) 2021.12.01
터널링과 VPN  (0) 2021.08.23
스푸핑 공격 대응책  (0) 2021.08.18
스니핑 : promiscuous,tcpdump,fragrouter,dsniff과 대응책  (0) 2021.08.09
IP주소 추적하기  (0) 2021.08.06