네트워크 보안

Port Scan (TCP scan UDP scan)

JNU 2022. 11. 8. 11:56
반응형

port scanning에 앞서 기본적인 scan의 종류와 scan 방식을 살펴보자.

 

1. TCP scan

우리가 현재 가장 많이 사용하는 통신 protocol은 tcp다. tcp를 기반으로 한 scanning방식이 있는데,

이 방식은 세 가지 방법을 통하여 scan을 할 수 있어!

 

-open scan: TCP connected scan으로 3 way-handshaking으로 established가 된 상태에서 scan을 하는 방식

-half scan: SYN scan으로 3 way-handshaking을 맺지 않고 중간에 연결을 끊어버리는 scan 방식

-stealth scan:  TCP header의 6가지 flag를 이용하여 보내는 scanlog가 남지 않는다는 특징이 있어!

(공격자들에게 유용한 scan 기법이겠지?)

 

 

- 3 way handshaking 알고 넘어가기

3-way handshaking이란 말 그대로 3번의 악수 끝에 서로 통신을 하는 과정을 뜻해

위의 그림과 같이 흐름이 흘러가는데 client가 syn packet을 보내 통신을 시도한 후, 

server에서 (syn, ack) packet을 보내 응답하여 연결허가와 응답 문자를 보내줘

이후 client는 이에 응답과 동시에 server와의 통신을 하기 위한 기반을 마치면

이 상태를  "ESTABLISHED"라고 해

 


 

Open Scan

open scan은 3-way handshaking이 완료된 후 established 상태에서 scan을 진행하는 방식이야

이는 공격자와 server가 정상적으로 통신을 할 수 있는 환경에서 진행되는 scan으로

server의 log file에는 scnning 한 내역들이 고스란히 남게 돼

즉, 공격자가 흔적을 남기는 scanning 방식이다.

공격자가 자신의 신분을 들키고 싶지 않다면 open scan 방식을 사용하지 않겠지?

그렇다면 분명히 다른 scan방식이 있을 텐데 바로 다음에 볼 scanning이 바로 half scannig이야

 

 

Half Scan

half scan은 다른 말로 syn scan이라고 하는 scanning 방식이야

3-way handshaking에서 syn -> syn+ack -> ack 흐름대로 연결이 형성되는데,

마지막 ack대신 RST를 응답하여, server와 client의 연결을 끊어버리는 방식이지 (RST=reset flag)

공격자는 syn+ack packet을 받았기 때문에 공격하려는 server의 상태를 확인하고자 하는 목표는 달성한 상태야

따라서 연결 상태를 만들지 않아도 정보를 수집했기 때문에 log를 남기지 않고 server의 상태를 scanning 할 수 있게 돼

공격자들이 가장 많이 사용하는 방식으로 nmap 명령의 default 형식 또한 half scan (syn scan) 방식이지

 

 

Stealth Scan

stelth scan은 TCP header의 여러 flag를 활용하는 syn scan의 변형이야

종류에는 FIN, Null, X-Mas scan이 있는데 TCP header의 flag를 변형시켜 만든 scan이 있어

 

FIN scan:  fin flag를 활성화시켜 보내는 scan

Null scan:  tcp flag 6개를 모두 다 비활성화하여 보내는 scan

X-Mas scan:  flag flag 여러 개를 설정하여 보내는 scan으로 일종의 깜짝 box 같은 scan

 

 

cf) TCP header structure

tcp flag를 알려면 tcp header의 구조를 파악해야 해. 다음 그림이 tcp header의 구조다.

 

source/dest port  >  출발지, 목적지 port

sequence/ack number   >   syn, ack 보낼 때 순서를 확인하기 위한 number 

window size  >  packt의 flow control을 처리한다. sliding window가 처리되는 flag

checksum  >  tcp header 자체를 검사하는 flag 

option and padding  >  packet의 size를 맞추기 위해 padding을 기본적으로 처리하는데 이때 사용되는 flag

 

 

tcp flag 순서

URG ACK  PSH RST  SYN FIN

URG:  긴급 bit 

ACK:  연결요청에 대한 응답 bit

PSH:  밀어넣기 bit

RST:  연결 초기화 bit

SYN:  연결 요청 bit

FIN:  정상 종료 bit

 

번외 편으로 보안에 있어서 꼭 알아야 할 header 다섯 가지를 다음 편에 정리해보도록 할게

(IP TCP UDP Ethernet ARP) header는 꼭 암기하자!

 

 

응답(ACK)

- open scan ack: [syn+ack]가 정상적으로 응답한다. (3-way handshaking 완료)

- half open scan ack: [syn+ack]가 정상적으로 응답하지만, 송신자에서 마지막 연결 시 RST를 보내 연결을 끊는다.

- stealth scan ack: [ack]를 느닷없이 보내어 응답을 할 수 없게 만든다. port가 open 상태일 때는 응답을 하지 않지만,

port가 closed 상태이면 RST가 돌아온다.

 

 

2. UDP scan

TCP에 비해서 많이 사용되지 않지만 그래도 scan시 port의 상태에 따라 어떤 반응을 보이는지 확인해보자.

 

응답(ACK)

- port open : no ack

- port closed : ICMP unreachable

 

udp port 상태와 tcp의 stealth scan은 서로 유사하다는 것을 알 수 있어

둘 다 port open 상태에서는 응답이 없다는 것을 알아두자!

 

 


결론 

tcp, udp scanning에 앞서 기본적인 개념을 훑어보았어

다음에는 이를 기반으로 직접 tcp, udp scan을 nmap을 활용하여 실습해보도록 할게~

 

 

반응형