1. ARP 프로토콜
네트워크의 프로토콜 중 하나로 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 프로토콜 => 목적지 IP 주소로 목적지 MAC 주소를 알아오는 것
ARP =[Ethernet+ARP Header]
- 패킷 구조
Hardware type: 네트워크 프로토콜의 타입
ex) 이더넷은 1이다
Protocol type: Intenetwork 프로토콜 타입.
ex) IPv4는 0x0800이다
Hardware length: 하드웨어 주소(MAC)의 길이
Protocol address length: 상위 레이어 프로토콜의 주소 길이
Operation: 1은 요청, 2는 응답
Source hardware address 요청을 보내는 측의 MAC
Source IP address: 요청을 보내는 측의 IP 주소
Target hardware address: 응답을 보내는 측의 MAC
Target IP address: 응답을 보내는 측의 IP 주소
- ARP 동작 과정
1) 송신자는 목적지 IP Address를 지정해 패킷 송신
2) IP 프로토콜이 ARP 프로토콜에게 ARP Request 메시지를 생성하도록 요청
= ARP 요청 메시지 (송신자 물리주소, 송신자 IP주소, 00-00-00-00-00, 수신자 IP주소)
3) 메시지는 2계층으로 전달되고 이더넷 프레임으로 Encapsulation 됨
= 송신자 물리주소를 발신지 주소, 수신자 물리주소를 브로드캐스트 주소로 지정
4) 모든 호스트와 라우터는 프레임을 수신 후 자신의 ARP 프로토콜에게 전달
5) 목적지 IP Address가 일치하는 시스템은 자신의 물리주소를 포함하고 있는 ARP Reply 메시지를 보냄
= 자신의 물리주소를 포함하는 응답 메시지
6) 최초 송신 측은 지정한 IP Address에 대응하는 물리주소를 획득
cf) ARP 요청은 브로드캐스트, ARP 응답은 유니캐스트
*ARP 캐시: 시스템에서 사용할 IP에 해당되는 MAC 주소를 일시적으로 저장하는 기능
- ARP 네트워크 분석
우분투의 ip 주소 파악
(1) 우분투에서 wireshark 캡처
(2) 우분투에게 ping 진행 (호스트의 cmd 에서)
(3) ping 응답
참고: www.joinc.co.kr/w/man/12/ARP
ARP - Address Resolution Protocol
Address Resolution Protocol
www.joinc.co.kr
ARP(Address Resolution Protocol)란? - 개념과 동작원리
ARP 란? 주소 결정 프로토콜(Address Resolution Protocol) 해당 IP를 그 IP주소에 맞는 물리적인 주소 즉, MAC주소를 가지고 오는 프로토콜입니다. RARP : 역순 주소 결정 프로토콜 (Reverse Address Resolution..
musclebear.tistory.com
2. ARP spoofing 개념 정리
ARP 스푸핑이란?
근거리 통신망(LAN) 하에서 주소 결정 프로토콜(ARP) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법. 이 공격은 데이터 링크 상의 프로토콜인 ARP 프로토콜을 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격.
- 위의 그림을 보면 공격자가 클라이언트가 서버에게 보내는 패킷을 먼저 받은 뒤, 서버에게 패킷을 보낸다.
- 즉, A와 B가 통신을 할 때 자신의 MAC 주소를 B의 MAC주소라 속이고 B가 받을 패킷을 자신이 먼저 받고, B 에게 그 패킷을 보내주는 방식이다.
- 특별한 이상 증상이 없기 때문에 공격당하는 것을 확인하기가 힘들다.
ARP 스푸핑 공격 과정
1) 공격자가 A에게 자신의 MAC주소를 B의 MAC 주소인것처럼 속인다.
2) 공격자가 B에게 자신의 MAC 주소를 A의 MAC 주소인것처럼 속인다.
3) A는 B의 MAC 주소가 CC(공격자)라 알고 있고, B도 A의 MAC 주소가 CC(공격자)라 알고 있다.
4) 공격자는 A에게 받은 메시지를 B에게 보내고, B에게 받은 메시지를 A에게 정상적으로 보내준다.
(이렇게 되면 정상적인 통신이 되며, 공격자는 메시지를 모두 읽을 수 있다.)
참고:
security-nanglam.tistory.com/191
[알쓸신잡] ARP 스푸핑 공격 기법의 모든 것 (ARP spoofing)
[ARP 스푸핑 공격] _ 2019.01.21 ARP 란? - Address Resolution Protocol의 약자로서 IP주소를 MAC주소로 변환해주는 프로토콜이다. - IP 주소와 이에 해당하는 물리적 네트워크 주소 정보는 각 IP 호스트의 ARP..
security-nanglam.tistory.com
3. TCP 프로토콜 개념 정리
TCP 프로토콜
OSI 7Layer 중 4계층인 전송 계층에 속하는 중요 프로토콜로 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로, 에러없이 교환할 수 있게 하는 역할
- 스트림 기반의 전송방식을 사용. 데이터를 임의의 크기로 나누어 연속해서 전송하는 방식을 사용.
- 흐름 제어를 위해 슬라이딩 윈도우(Sliding Window) 방식을 사용. 이는 상대방이 수신 가능한 크기(Window size) 내에서 데이터를 연속해서 전송하는 방식으로 매 세그먼트(Segment) 전송 시마다 수신확인응답(ACK)을 수신한 후 전송하게 되면 왕복시간(RTT : Round Trip Time)이 길 경우 단위 시간당 데이터 전송량이 매우 떨어지므로 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송.
<TCP 구조>
Source Port(16 bits) : 출발지(송신) 포트 번호
Destination Port(16 bits) : 목적지(수신) 포트 번호
Sequence Number(32 bits) : 송신 데이터 순서 번호
- 송신 시 전송하는 데이터의 시작 바이트 순번을 담는다. 바이트 순번은 전송하는 데이터의 바이트 단위로 부여하는 연속된 번호를 의미
- 연결설정 단계에서 초기 순서 번호를 상호간에 주고받는다, 초기 순서 번호는 0부터 시작하는 것이 아니라 임의의 수를 할당해서 사용
Acknowledgment Number(32 bits) : 상대방이 다음에 전송할 순서 번호
수신 확인 응답(ACK)과 함께 해당 필드에 상대방이 다음에 전송할 순서 번호를 담아서 보냄
HLEN(4 bits) : 헤더 길이
- 4 bits 워드 단위로 표시(20 ~ 60 bytes)하며 기본 헤더 20 bytes와 옵션 헤더 최대 40 bytes로 구성된다.
Reserved(4 bits) : 예약
Control Flags(6 bits)
- URG(Urgent pointer is valid) : 긴급 데이터 설정
- ACK(Acknowledgment is valid) : 수신 확인 응답(ACK) 설정
- PSH(Request for push) : 송수신 버퍼에 있는 데이터를 즉시 처리
- RST(Reset the connection) : 연결 중단(강제 종료)
- SYN(Synchronize sequence numbers) : 연결 설정
- FIN(Terminate the connection) : 연결 종료 (정상 종료)
Window size(16 bits)
- 수신측에서 송신측에 보내는 Receiver window size로 수신버퍼의 여유공간 크기를 의미한다. 송신측에서는 상대방의 여유 공간 크기를 통해서 흐름제어를 수행
- 따라서 송신측에서는 상대방의 윈도우 사이즈 범위 내에서 수신측의 수신 확인 응답(ACK)을 기다리지 않고 연속적으로 전송할 수 있는데 이를 슬라이딩 윈도우 제어방식이라 한다.
Checksum(16 bits) : 헤더를 포함한 전체 세그먼트에 대한 오류를 검사하기 위한 필드
Urgent Pointer(16 bits) : 세그먼트가 긴급 데이터(URG 플래그 설정)를 포함하고 있는 경우에 사용되는 필드로 긴급 데이터의 위치값을 담고 있다.
TCP의 연결 설정 및 해제 과정
3-way handshake란?
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고 실제로 데이터 전달이 시작하기 전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 함
=> 즉, TCP/IP 프로토콜을 이용하여 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미
(1). Client > Server : SYN
첫번째론 클라이언트가 서버에게 syn패킷을 보내는 것이다. SYN 패킷을 전송함으로써 클라이언트 가 서버에게 통신할 의사가 있음을 알려준다. 이때 클라이언트의 초기 순차 일련번호를 보낸다.
(2). Server > Client : SYN+ACK
서버가 클라이언트에게 SYN패킷과 ACK패킷을 보내는 것이다.
ACK패킷으로 이전에 보낸 패킷에 대한 성공, 실패를 판단하여 재전송하거나 다음 패킷을 전송한다. TCP 3 way handshake의 ACK패킷은 클라이언트의 초기 순차 일련번호+1의 값을 가지고 있다.
이때 보내는 SYN패킷에는 서버의 초기 순차 일련번호의 값이 들어있다. 이 과정까지 거치면 서버 의 포트가 listen(대기)상태에서 상대방의 응답을 대기하는 SYN_RCV상태로 변한다.
(3). Client > Server : ACK
클라이언트가 서버에게 요청을 받았다는 응답이며 서버의 초기 순차 일련번호+1의 값을 가지고 있다. 이 과정까지 거치면 클라이언트와 서버의 포트 상태는 established 즉 연결이 성립된 상태
4-way handshake란?
TCP의 연결을 해제하는 과정
(1) Clent -> Server: FIN
프로세스 A가 연결을 종료하겠다는 FIN 플래그를 전송
프로세스 B가 FIN 플래그로 응답하기 전까지 연결을 계속 유지
(2) Server -> Client: ACK
프로세스 B는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다. (이 상태가 TIME_WAIT 상태)
수신자는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
그리고 자신이 전송할 데이터가 남아있다면 이어서 계속 전송한다.
(3) Server -> Client: FIN
프로세스 B가 통신이 끝났으면 연결 종료 요청에 합의한다는 의미로 프로세스 A에게 FIN 플래그를 전송
(4) Clent -> Server: ACK
프로세스 A는 확인했다는 메시지를 전송
gmlwjd9405.github.io/2018/09/19/tcp-connection.html
참고:
[Network] TCP 프로토콜 이란?
TCP (Transmission Control Protocol) 란? OSI 7Layer 중 4계층인 전송계층에 속하는 중요 프로토콜로 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로, 에러없이 교환할 수 있게 하는 역할이�
itragdoll.tistory.com
gmlwjd9405.github.io/2018/09/19/tcp-connection.html
[Network] TCP 3-way handshaking과 4-way handshaking - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
TCP 4 way handshake 내용 정리
TCP 4 way handshake 란? TCP 는 Connection-Oriented (연결 지향) 프로토콜 입니다. 따라서, 논리적인 접속 상태를 "해제"하기 위해서도 필요한 과정이 있는데 이것이 4-way handshake 입니다. 해당 과정을 통하..
sjlim5092.tistory.com
'CS' 카테고리의 다른 글
[네트워크 보안] google cloud platform(gcp)에서 instance 만들기 (0) | 2020.11.09 |
---|---|
IAT,EAT 로딩 과정 문서화 (0) | 2020.11.02 |
네트워크 보안 1주차 (0) | 2020.09.14 |
DDos 공격 대응 가이드 pdf (http 위주) (0) | 2020.02.24 |
wireshark를 이용한 패킷 분석 (0) | 2020.02.17 |