글 작성자: nouu

http://www.yes24.com/Product/Goods/83538369

 

보안 실무자를 위한 네트워크 공격 패킷 분석 - YES24

저자의 풍부한 실무 경험을 바탕으로 보안 업무를 담당하고 있는 실무자와 보안에 입문하고자 하는 독자를 위해 쓰였다. 이 책은 포트 스캔, DDoS, SMB 해킹, 웹 해킹, RAT 악성 코드, 메일 서버 해킹

www.yes24.com

 

해당 서적을 참고하였으며, 패킷 샘플(.pcap) 역시 책 내용에 적힌 url을 통해 다운 받아 사용했습니다. 

패킷 샘플에 대한 출처는 구글링이나 해당 서적을 구매하여 참고하시길 바랍니다. 

 

 

 

 

서버 관리자가 잠재적인 취약점을 찾기 위해 정보 수집 단계중 단연 첫번째는 포트 스캐닝이다. 대상 서버에 활성화된 서비스를 확인하거나 외부로 노출되어 침해 가능성이 있는 취약점을 점검하기위한 절차이다. Nmap과 같은 포트 스캔 도구는 손쉽게 구할 수 있을 뿐더러 실행 방법도 아주 간단하여 굳이 스캐닝의 원리를 알지 못하더라도 손쉽게 사용할 수 있지만 프로토콜별 패킷의 흐름을 이해한다면 스캐닝은 간단한 원리로 동작한다는 것을 알 수 있다.

 

포트 스캐닝은 통신할 수 있는 포트를 대상으로 실행하며, 0 ~ 1023은 웰 노운 포트라고 하여 포트마다 주요 서비스가 사전에 정의되어 있으므로 포트 스캐닝을 할 때 주요 점검대상이 된다.

 

 

https://hack-cracker.tistory.com/120

 

TCP/IP 3 Way-Handshaking

Network - TCP 3 Way-Handshaking   3 Way - Handshaking  TCP통신은 UDP 통신과는 달리 신뢰성 있는 통신을 하기위해 3번의 패킷 교환을 한다. 이를 3 Way -Handshaking  이라고 하며 데이터의 동기화라고도..

hack-cracker.tistory.com

 

포트 스캔을 이해라려면 TCP와 UDP의 특성을 이해하고 있어야한다. TCP와 UDP의 가장 큰 차이점은 신뢰성이 있는 통신이냐 아니냐의 차이이다. 신뢰성은 3-way-handshake를 수행하는지 수행하지 않는지의 차이로 바꿔 말할 수 있다.

 

 

https://velog.io/@ctp102/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCPUDP-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

[네트워크] TCP/UDP 이해하기

Transport Layer(전송 계층) OSI 7계층에서 4번째 계층에 해당한다. 전송 계층은 End Point간 신뢰성있는 데이터 전송을 담당하는 계층이다. 여기서 신뢰성은 '데이터를 순차적, 안정적인 전달'을 의미하

velog.io

반면 UDP는 신뢰성이 없는 통신으로 전송속도에 우선순위를 둔다. 상대방의 상태나 수신 여부를 판단하지 않으며 빠르게 데이터를 전송하는 것이 목적이므로 인터넷 전화, 실시간 방송, DNS와 같은 데이터 전송이 빠르게 요구되는 서비스에 사용한다. 

 

 

 

 

 

 

TCP 포트 스캔 

TCP 포트 스캔은 3-way-handshake를 이용하여 포트의 개방 여부를 파악한다. Nmap의 nmap -sT 10.50.xxx.xxx -p 1-65535 명령어를 사용하여 SYN 스캔 포트 스캐닝을 한다고 가정하자. 특정 서버에 열려 있지 않은 포트로 SYN을 전송한다면 서버 측에서는 포트가 열려 있지 않은 상태라는 것을 알려주고자 RST-ACK 패킷으로 응답한다. 

 

반대로 열려 있는 포트로 SYN을 전송하면 서버 측에서는 SYN-ACK 패킷으로 응답한다. 그런데 이후 정상적인 클라가 ACK을 보냄으로써 정상적인 3-way-handshake가 이루어지게 되므로 서버의 접속 로그에 남을 수 있다. 이는 공격자 입장에서는 치명적인 문제가 될 수 있으며 이것을 보완한 포트 스캔이 Stealth 스캔이다.

 

방화벽 또는 iptables와 같은 차단 정책에 의해 포트 스캔이 차단되었을 때 TCP와 UDP에 관계없이 어떠한 패킷도 응답하지 않는다. 

 

 

 

 

 

TCP SYN 스캔 

Nmap을 이용하여 TCP SYN 스캔의 기본 명령어는 nmap -sT 대상서버 ip 형식이며,

위의 그림은 클라에서 nmap 명령어에 의한 패킷 캡처를 서버 측에서 한 결과이다.

 

이와같이 서버 측에서 캡처한 패킷이 다수의 SYN 패킷과 RST-ACK 패킷이 있다는 것을 확인할 수 있다. 

 

 

 

 

 

특정 서버의 열려 있는 포트로 전송된 SYN 패킷은 3-way-handshake 과정을 통해 연결이 생성되며, 이후 클라이언트 쪽에서 RST-ACK 패킷을 전송하여 강제로 연결을 끊는 형태이다.

 

 

 

 

 

반대로 닫혀 있는 포트는 SYN 패킷에 대한 응답으로, RST-ACK 패킷이 응답하여 포트가 열려있지 않다는 것을 알려준다. 

 

 

 

 

 

TCP Stelath 스캔 

TCP SYN 스캔은 정상적인 연결로 포트의 Open Closed 여부를 판단하므로 로그에 남는다는 치명적인 단점이 존재한다. 이것을 보완하고자 공격자는 정상적인 3-way-handshake 과정이 완료되지 않게 하여 로그가 남기지 않도록 포트 스캔을 한다. 이러한 방식을 Stealth 스캔이라고 한다. 

 

Stealth 스캔은 여러가지의 종류가 있다. TCP Half Open Scan, FIN, Xmas, Null 스캔 등 다양한 종류가 있지만 현재 TCP Half Scan만 제대로 동작하며 FIN, Xmas, Null 스캔은 정상적으로 동작하지 않는다. 

 

 

 

 

TCP Half Open 스캔 

TCP Half Open 스캔은 3-way-handshake 과정에서 SYN 패킷을 받은 서버가 SYN-ACK 패킷을 응답하고서 언젠가 ACK 패킷이 돌아올 것을 기다리는 이른바 '반쯤 열린' 상태를 말한다. TCP Half Open 스캔은 클라가 마지막의 ACK 패킷을 전송하지 않아 3-way-handshake 과정을 완성하지 않는 데서 나온 이름이다.

 

Nmap을 이용하여 TCP Half Open 스캔의 기본 명령어는 nmap -sS 대상서버 -p port번호 형식이다.

 

와이어 샤크를 통해 패킷을 캡처했을 때 TCP SYN 스캔과 마찬가지로 다수의 SYN과 RST-ACK 패킷을 볼 수 있다. 

 

 

 

 

열려 있는 포트에 대한 패킷의 흐름이다. 이러한 흐름을 보면 기존의 TCP SYN 스캔과 차이점을 확연히 볼 수 있다. 서버로부터 수신된 SYN-ACK 패킷을 클라가 ACK으로 응답하여 3-way-handshake로 만드는 것이 아닌 RST로 응답하여 3-way-handshake 과정을 맺지 않는 것을 알 수 있다. 서버에 로그를 남기지 않으려고 3-way-handshake 과정을 맺지 않고 SYN-ACK 패킷의 수신 여부에 따라 특정 포트가 열려 있음을 확인하는 스캐닝 방식이다.

 

 

 

 

 

열려 있지 않은 포트로부터 RST-ACK 패킷으로 응답받는 것은 TCP SYN 스캔과 같다.

 

 

 

 

FIN 스캔, Xmas 스캔, Null 스캔 

 

해당 스캔은 유형별로 TCP Flags의 구성요소는 다르지만 포트 스캔의 원리는 동일하다. 열려있는 포트의 경우에는 아무런 패킷이 응답하지 않으며, 열려 있지 않은 포트에 경우 RST-ACK 패킷이 응답한다.

 

 

FIN 스캔은 TCP Control Flags중 FIN 패킷을 전송하며 열려 있는 포트는 아무런 응답이 없는 특징을 가지고 있다.

Xmas 스캔은 FIN/PSH/URG 플래그를 1로 놓은 상태로 전송하며 역시 열려 있는 포트는 아무런 응답이 없는 특징을 가지고 있다. 

Null 스캔은 아무런 플래그를 설정하지 않고 전송한다. 

 

하지만 현재 유닉스 시스템을 대상으로 이들 스캔이 정상적으로 동작하지 않으므로, 차후 있을 자격증 시험에 대한 대비로 기본 원리만 알고 있으면 된다.