일일 정리

Transport Layer, 해킹 실습 - SCAN

mysecurity 2025. 4. 10. 23:36

목차

1. Transport Layer

1-1 TCP

1-2 TCP/IP 구조

 

2. 해킹 실습 - SCAN

2-1 주요 포트와 서비스

2-2 SCAN 

2-3 ICMP scan

2-4 TCP scan

2-5 다양한 Scanner 

 

 

1. Transport Layer

1-1 TCP

● TCP(Transmission Control Protocol) 기능

IP는 데이터 패킷을 한 장소에서 다른 장소로 옮기는 역할을 한다면, TCP는 데이터의 흐름을 관리하고 데이터가 정확한지 확인하는 역할을 한다.

- 높은 신뢰성

- 가상회선 연결 방식

- 연결의 설정과 해제

- 데이터 체크섬

- 시간 초과와 재전송

- 데이터 흐름 제어

 

● TCP 연결 관리

Recall

: TCP sender와 receiver는 connection을 초기화한 다음 data segment를 전송한다.

 

3 way handshake

: 클라이언트가 서로 통신하기 위해 통신망을 확보하는 과정이다.

 

     ① 클라이언트가 서버에게 TCP SYN 세그먼트를 전송한다.

     초기 seq#를 설정한다.

     data는 없다. 

 

     ② 서버 는 SYN를 수신하고 SYNACK를 전송한다.

     서버 : 변수 및 버퍼를 할당한다.

     서버의 초기 seq#를 설정한다.

 

     ③ 클라이언트는 SYNACK수신 ACK를 전송한다. (data를 추가해도 된다.)

     클라이언트 : 변수 및 버퍼를 할당한다.

 

이 과정에서 서버는 싱크만 받으면 변수 및 버퍼를 할당하므로 공격자가 여러 창으로 접속하면 결국 여분의 할당공간이 없어져 다른 사용자들의 싱크에 반응할 수 없게 된다.

 

1-2 TCP/IP 구조

● TCP 패킷 

TCP 패킷 구조

 

● TCP 헤더

TCP 헤더 구조

 

- Source/Destination Port #

: 각 호스트에 있는 응용 프로그램의 포트 번호이다.

: 네트워크 프로세스를 구별하기 위해 존재한다.

 

- Sequence #

: Segment Stream의 첫 번째 Byte 번호이다.

: 0에서 (2^32) -1 까지의 번호를 이용하고 어떤 번호를 이용해도 무관하다.

 

- ACK #

: 다음에 수신할 바이트스트림 번호이다.

: NACK가 없다. 누적 ACK를 이용한다.

: 성공적으로 수신한 마지막 byte 번호 + 1, 즉 내가 다음에 받을 패킷의 시퀀스 넘버를 알려준다.

 

- 헤더 길이

: TCP 헤더의 길이이다.

: 옵션부분이 가변이므로 헤더의 길이가 바뀔수 있다.

: word 단위이며 보통 크기는 5 word = 20 byte이다.

 

- 예약

: 사용하지 않는 필드이다.

 

- Window size

: 흐름제어를 위한 윈도우 사이즈이다.

 

- Urgent Point

: 사용하지 않는 필드이다.

 

- 플래그

U : urg 1이면 마지막 필드인 Urgent Point가 유효이다.
- Telnet이나 rlogin과 같은 응용에서 인터럽트 키가 전송되거나 FTP에서 파일 전송 중단과 같은 경우에 사용되나, 현재 urgent point는 사용하지 않는다.
A : ack 1이면 ACK가 유효하다.
P : psh 1이면 클라이언트의 데이터가 TCP 버퍼에 쌓이지 않도록 한다.
- 현재 대부분 사용하지 않는다.
R : rst 1이면 TCP 연결을 재설정한다. 
- fin과는 달리 버퍼를 즉시 비우고 접속을 종료한다.
- 닫힌 포트에 대한 접속 요청에 응답한다.(종료신호)
S : syn 1이면 연결 요청과 설정을 한다.
F : fin 1이면 TCP 연결을 종료한다.

 

플래그는 의미상 동시에 1이 될 수 없는 설정들이 있으나, 모든 플래그가 1이거나 0인 패킷을 크리스마스 패킷이라고 한다.

 

2. 해킹 실습 - SCAN

2-1 주요 포트와 서비스

포트번호 서비스 내용
21 FTP File Transfer Protocol
FTP 연결 시 인증과 컨트롤을 위한 포트이다.
23 Telnet Telnet 서비스로서 원격지 서버의 실행창을 얻어낸다.
25 SMTP Simple Message Transfer Protocol
메일을 보낼 때 사용하는 서비스
53 DNS Domain Name Service
이름을 해석하는데 사용하는 서비스
69 TFTP Trivial File Transfer Protocol
인증이 존재하지 않는 단순한 파일 전송에 사용되는 서비스
80 HTTP Hyper Text Transfer Protocol
웹 서비스
110 POP3 Post Office Protocol
메일 서버로 전송된 메일을 읽을 때 사용하는 서비스
111 RPC Sun의 Remote Procedure Call
원격에서 서버의 프로세스를 실행할 수 있게 한 서비스
138 NetBIOS Network Basic Input Output Service
윈도우에서 파일을 공유하기 위한 서비스
143 IMAP Internet Message Access Protocol.
POP3와 기본적으로 같으나, 메일을 읽고 난 후에도 메일은 서버에 남는 것이 다르다.
161 SNMP Simple Network Management Protocol
네트워크 관리와 모니터링을 위한 서비스

 

2-2 SCAN 

● 스캔의 개념

스캔은 네트워크 상에서 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하기 위한 것이다. TCP 기반의 프로토콜은 기본적으로 질의(Request)를 보내면 응답(Response)을 보낸다.

 

2-3 ICMP scan

● Ping & ICMP Scan

Ping은 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티로 개발되었으며 ICMP(Internet Control Messaging Protocol)를 사용한다.

각각의 네트워크는 고유한 ping이 존재하며, 일반적으로 알려진 ping은 TCP/IP 네트워크에서의 ping을 말한다.

 

방화벽 설정 시 가장 먼저 하는 것은 icmp 패킷을 무시하도록 세팅하는 것이다.

 

ICMP Type

icmp 패킷의 주요 타입은 다음과 같다.

0 Echo Reply
8 Echo
13 Timestamp
14 Timestamp Reply
15 Information Request
16 Information Reply
17 Address Mask Request
18 Address Mask Reply

 

- Echo 관련 타입은 흔히 아는 ping과 동일 하다.

- Information Request 타입은 상대의 os나 netmask와 같은 정보들을 물어본다.

 

2-4 TCP scan

TCP나 UDP를 이용한 Scan은 호스트를 대상으로 하는것이 아니라 포트를 대상으로 한다.

 

TCP Open scan

포트가 열려있을 경우 세션이 성립되며, 포트가 닫혀 있을 경우에는 RST+ACK 패킷을 받게 된다.

TCP Open scan

 

호스트에게는 아무런 일도 일어나지 않았으므로 호스트 베이스 침입 탐지 시스템에는 로그가 남지 않는다. 반면, 네트워크베이스 침입 탐지 시스템에는 로그가 남는다.

 

TCP Open scan – Reverse Ident

세션 수립후 데몬의 프로세스의 소유자를 확인하기 위해 113번 포트를 통해 통신하는 것이다. 현재는 거의 막힌다.

TCP Open scan – Reverse Ident

 

Stealth Scan – TCP Half Open

3W HS과정에서 RST 패킷을 이용 포트를 확인하고 connect는 생성하지 않는다.

Stealth Scan – TCP Half Open

 

세션을 확정하지 않기 때문에 로그정보를 남기지 않는다.

일반적으로 stealth Scan은 로그를 남기지 않는 것 뿐 아니라 자신을 숨기는 모든 scan을 통칭한다.

 

Stealth Scan – FIN, NULL, XMAS 패킷을 이용한 scan

Stealth Scan – FIN, NULL, XMAS 패킷을 이용한 scan

 

열린 포트에 FIN 패킷을 보내면 응답하지 않지만(응답할 것이 없다.) 닫힌 포트는 RST 패킷을 응답한다.

이외 flag를 모두 비운 null 패킷이나 모두 채운 xmas 패킷도 동일하게 반응한다.

 

Stealth Scan – ACK 패킷을 이용한 scan

모든 포트에 ACK 패킷을 전송한다.

Stealth Scan – ACK 패킷을 이용한 scan

 

- 열린 포트 : TTL은 64이하, Rwin size는 0보다 큰 RST 패킷으로 응답한다.

- 닫힌 포트 : TTL은 큰 값(OS에 따라 다르다.), Rwin size는 0인 RST 패킷으로 응답한다.

Rwin size는 수신자의 현재 가용 버퍼 크기이므로 0인 경우 패킷을 받을 수 없는 상태임을 뜻한다.

 

현재까지 매우 유용한 방법이다.

 

UDP scan

UDP는 3W HS를 하지않으므로 열린 포트의 경우 응답이 없지만 닫힌 경우 ICMP unreachable 패킷을 반송한다.

UDP scan

 

2-5 다양한 Scanner 

스캐너 종류는 fping, hping3, nmap이 있으며 다음과 같이 설치할 수 있다.

# apt list nmap
# apt list fping
# apt list hping3

 

● fping

fping은 시스템이 살아있는지 확인하는 용도로 사용하며 네트워크 전체에 패킷을 날릴 수 있다.

 

# fping ‐h

# fping ip ip ip ….

# fping ‐g ip/netmask

 

ex)

# fping 1.1.10.121 1.1.1.3 1.1.10.122

# fping  ‐g 1.1.1.0/24

 

● hping3

hping3은 다양한 패킷을 생성할 수 있다.

 

# hping3 option target_ip

option 설명
-1 ICMP
-S, -A, -F, -R SYNC, ACK, FIN, RST
--udp UDP    // 시간이 오래 걸리며 실패 확률이 높다. 
-p port#, -s port# dst port, src port
--flood 최대한 많은 패킷 생성
-c # 보낼 패킷 개수 지정

 

ex)

# hping3 -1 192.168.11.17

# hping3 -S -p 80 192.168.11.17

# hping3 -S --flood -p 80 192.168.11.17

# hping3 -S -p 80 -s 12345 192.168.11.17

# hping3 --udp -p 53 192.168.11.17

 

SYNC,  ACK, FIN, RST, UDP는 컴퓨터가 아닌 프로그램에게 보내므로 반드시 -p로 포트를 지정한다.

 

통상 fping으로 살아있는 서버를 찾아내고 hping으로 어떤 포트가 열려있는지 찾아낸다.

 

# hping3 ‐S ‐p 80 ‐s 12345 192.168.11.17

위 명령어를 이용해 11.36에서 11.17로 스캔을 진행하는 경우, 아파치 서버를 11.17에 설치하고 서비스를 켜고 껐을 때에 따른 패킷의 움직임을 다음과 같이 확인할 수 있다.

패킷 분석 화면

 

1: 아파치 서버 가동 중  11.36에서 11.17로 보내는 패킷

2: 아파치 서버 가동 중  11.17에서 11.36로 보내는 패킷

3: 아파치 서버 종료 후  11.36에서 11.17로 보내는 패킷

4: 아파치 서버 종료 후  11.17에서 11.36로 보내는 패킷

 

● nmap

네트워크 스캐너이자 보안 감사 도구로, IP 또는 도메인을 대상으로 열려있는 포트,  서비스, 운영체제, 버전, 취약점 등을 탐지할 때 사용된다.

 

# nmap option target

주요 옵션은 다음과 같다.

option 설명
-sS SYN 스캔(stralth)
-sT TCP 연결 스캔
-sU UDP 포트 스캔
-sV 서비스 버전 탐지
-sN Null 스캔
-sX x‐mas 스캔
-sn ICMP와 ARP만을 이용한 스캔
-p 특정 포트 지정 (-p 80,443  -p 1-100)

 

'-p 80,443'의 경우 '-p 80, 443'과 같이 반점 이후 띄어쓰기는 허용하지 않는다.

 

ex)

# nmap 192.168.11.17

 : TCP 기본 포트 스캔을 진행한다.

 

# nmap ‐sS 192.168.11.17 

 : TCP 하프 연결을 이용해서 Stealth 모드로 스캔한다.

 

# nmap ‐sS ‐sV ‐O 192.168.11.17

 : 열려 있는 포트, 서비스 이름, 버전, OS 정보를 스캔한다.

 

# nmap ‐sU 192.168.11.17 

 : UDP 스캔을 진행한다.

 

# nmap ‐sU ‐p 53,161 192.168.11.17 

 : UDP 포트53(DNS), 161(SNMP) 를 탐지한다.

 : UDP 라고 손상을 전부 허용하는 것은 아니다.

 

# nmap ‐sn 192.168.11.0/24 

 : ICMP(ping) 또는 ARP로 응답하는 IP만 확인한다.

 : 응답이 있다면 살아있다는 정도만 확인한다.

 

# nmap 192.168.11.1 192.168.11.20

 

# nmap 192.168.11.1-10

 : 여러 대상에 대한 스캔을 진행한다.

 

# nmap ‐p 80,443 ‐sV 192.168.11.17

 : 웹 서비스를 탐지한다.

 

# nmap ‐sn 192.168.10.0/24

:  Vmware Nat에서 bridge영역으로 스캔을 시도할 때 모든 호스트가 살아있다고 오탐하는 경우가 발생한다.