본문 바로가기
Study/침입탐지와차단시스템

[침입탐지와차단시스템] 포트스캔(nmap) 실습 - TCP SYN 스캔

by 8희 2023. 3. 31.

실습 환경 구성

Kali IP 주소 설정
Xubunt IP 설정

 

Kali IP는 192.168.100.128 (NAT)

Xubuntu IP는 192.168.100.20 (NAT)

로 설정한다.

 

포트 스캔(nmap) 실습

nmap (Network Mapper)은 네트워크와 포트 스캐닝에 널리 사용하는 무료 소프트웨어이다. 

공격자들은 포트 번호를 통해 어떤 동작을 하고 있는 지 자료를 수집한다.

 

 

Kali에서 Host OS로 ping을 전달한다.

-> ping은 네트워크 연결 상태는 확인할 수 있으나, 공격이 가능한 포트(예: 문)을 알기 어렵다.

 

 

Kali에서 Host OS로 nmap을 사용하여 열려 있는 포트를 확인한다.

외부로 보내는 서비스가 없기 때문에 결과가 나오지 않는다.

 

 

Kali에서 nmap 명령어를 사용하여 Xubutu의 열려 있는 포트를 확인한다.

21, 22, 23, 80 포트가 열려 있는 걸 확인할 수 있다.

1000개를 포트 검사했는데 996개는 닫혀 있고, 4개만 열려 있는 것이다.

 

TCP SYN 스캔

 

Xubuntu에서 wireshark를 실행한 후에 ens33을 선택한다.

 

 

Kali에서 nmap을 실행한다.

 

 

Xubuntu에서 캡처된 패킷들을 확인한다.

-> 와이어샤크 Filter: "tcp.stream" 입력

 

 

열려 있는 포트로 전송된 STN 패킷은 3-way-handshake 과정을 통해 연결이 생성되고,

이후에 RST-ACK 패킷을 전송하여 강제로 연결을 끊는 형태이다.

자세히 설명하자면

현재 src가 dst의 포트 80번으로 보내고 있다. 

3, 4, 7번이 3-way-handshake 과정을 의미한다. 

현재 서버의 80 포트 (http)가 열려 있다.

클라이언트에서 보내지는 소스의 포트 번호는 랜덤하게 생성된다.  

즉, 소스의 포트 번호로는 번호가 계속 바뀌기 때문에 침입 탐지가 불가능하다!

 

 

포트 확인은 이런 식으로 할 수 있다. 사진은 21번 포트를 확인하는 방법이다.

-> 와이어샤크 Filter: "tcp.PRT == 21" 입력

 

닫혀 있는 포트의 TCP SYN 스캔 패킷 흐름을 확인한다.

-> Wireshark Filter: "tcp.stream.eq 2" 입력

 

닫혀 있는 포트는 과정은

SYN을 보내는 과정과 RST+ACK을 보내는 과정

이렇게 두 가지이다.

 

참고로 열려 있는 포트의 TCP SYN 스캣 패킷 흐름은 eq 뒤를 0으로 바꿔서 확인할 수 있다.

 

 

Xubuntu에서 패킷이 오고 간 현황을 파악하기 위해 

Wireshark 메뉴에서 [Statistic] -> [Conversations]을 실행한다.

TCP SYN 스캔은 정상적인 연결로 포트 개폐 여부를 판단하므로 서버에 로그가 남는다는 단점이 있다.