목차
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 헤더

- 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 – Reverse Ident
세션 수립후 데몬의 프로세스의 소유자를 확인하기 위해 113번 포트를 통해 통신하는 것이다. 현재는 거의 막힌다.

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

세션을 확정하지 않기 때문에 로그정보를 남기지 않는다.
일반적으로 stealth Scan은 로그를 남기지 않는 것 뿐 아니라 자신을 숨기는 모든 scan을 통칭한다.
● Stealth Scan – FIN, NULL, XMAS 패킷을 이용한 scan

열린 포트에 FIN 패킷을 보내면 응답하지 않지만(응답할 것이 없다.) 닫힌 포트는 RST 패킷을 응답한다.
이외 flag를 모두 비운 null 패킷이나 모두 채운 xmas 패킷도 동일하게 반응한다.
● Stealth Scan – ACK 패킷을 이용한 scan
모든 포트에 ACK 패킷을 전송한다.

- 열린 포트 : TTL은 64이하, Rwin size는 0보다 큰 RST 패킷으로 응답한다.
- 닫힌 포트 : TTL은 큰 값(OS에 따라 다르다.), Rwin size는 0인 RST 패킷으로 응답한다.
Rwin size는 수신자의 현재 가용 버퍼 크기이므로 0인 경우 패킷을 받을 수 없는 상태임을 뜻한다.
현재까지 매우 유용한 방법이다.
● UDP scan
UDP는 3W HS를 하지않으므로 열린 포트의 경우 응답이 없지만 닫힌 경우 ICMP unreachable 패킷을 반송한다.

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영역으로 스캔을 시도할 때 모든 호스트가 살아있다고 오탐하는 경우가 발생한다.
'일일 정리' 카테고리의 다른 글
스푸핑, 터널링과 은닉채널 (0) | 2025.04.14 |
---|---|
Transport Layer, 해킹 실습 - 스니핑 (0) | 2025.04.11 |
Network Layer 구조, 해킹 실습 John the Ripper (0) | 2025.04.09 |
패킷 분석 실습 서버 구축, Wireshark, 패킷의 이해 (0) | 2025.04.09 |
게시판 웹브라우저 프로그래밍 (2) | 2025.04.04 |