겉바속촉
[보안] kali 가상머신 wireshark, TCP/IP 본문
지난번에 kali linux 가상머신을 설치했습니다:)
오늘은 이 가상머신을 활용해서 이것저것 해볼게요
2021/01/18 - [IT 일기 (상반기)/네트워크 및 시스템 보안] - [보안] Kali Linux 가상머신
sudo wireshark 내려주세요.
wireshark는 패킷 모니터링하는 도구입니다.
eth0을 선택한 후에~
다음 빨간색으로 표시한 것 클릭!!
그리고 구글창으로 가보도록 할게요!!
WireShark로 와서 확인해보려고 합니다.
터미널에서 cat /etc/resolv.conf 내려서 나오는 nameserver 즉 dns 서버 주소를 복사하세요.
그럼 다음 wireshark창에 ip.addr == nameserver주소 라고 입력!!
아래 나와있는 Domain Name System (query)를 눌러서 확인해주세요.
구글에 대해 쿼리를 날리는 것이 나옵니다.
위에서 google.com을 쳤기 때문이죠!!
자세히 살펴보면 아랫줄에서 윗줄로 갈 수록 정보가 추가되어 가고 있습니다.
응용 -> 전송 -> 네트워크 -> 데이터링크 순으로 읽어나가시면 됩니다.
전송 : 포트번호 붙고 (udp)
네트워크 : 패킷 만들어지는 데 src, dst 주소 붙고 (ip)
데이터링크 : mac address 붙고
즉 dns 쿼리하는 과정을 확인할 수 있는 거에요!!
계층별 성질은 지난 포스팅 참고!!
2021/01/18 - [IT 일기 (상반기)/네트워크 및 시스템 보안] - [보안] OSI 7계층
TCP/IP 전송 계층
UDP
- 응용 계층에서 페이로드를 생성하면 전송 계층에서 출발지 포트와 목적지 포트가 담긴 헤더를 붙인 뒤 네트워크 계층으로 전달
- 512바이트 미만의 페이로드를 대상으로 오직 전송 과정에만 초점을 두고 개발
- 실시간을 요구하는 환경에 적합
- 단편화와 버퍼링 처리 과정을 생략한 만큼 지연 발생이 없음
TCP
- 응용 계층에서 페이로드를 생성하면 전송 전에 3단계 연결 설정을 수행
- 응용 계층에서 생성한 페이로드를 응용 계층 버퍼에 임시로 저장하고 전송 계층에서 SYN 신호를 담은 세그먼트 1개를 생성
- SYN 세그먼트는 네트워크 계층, 데이터 링크 계층, 물리 계층을 통과해서 수신지로 전송
- 수신측에서는 해당 SYN 신호를 전송 계층까지 끌어올린 후 전송 계층에서 SYN/ACK 신호를 담은 세그먼트를 생성해서 송신지로 전달
- 송신층에서는 해당 SYN/ACK 신호를 전송 계층까지 끌어올린 후 전송 계층에서 ACK 신호를 담은 세그먼트를 생성해서 수신지로 전달해서 3단계 설정을 완성
- 3단계 연결 설정이 완료되면 운영체제는 응용 계층 버퍼에 저장했던 TCP 페이로드를 전송 계층으로 전달
- 전송 계층은 응용 계층에서 전달된 TCP 페이로드를 대상으로 단편화를 수행
- 단편화가 끝나면 조각난 페이로드를 각 계층을 통과하면서 헤더를 추가해서 전달
UDP 헤더
-
8바이트로 고정
-
출발지 포트와 목적지 포트 : 16비트 → 응용 계층에 속하는 프로토콜의 종류가 65536개
-
길이(length) : UDP 페이로드와 UDP 헤더를 더한 데이터 그램의 크기
-
오류검사(checksum) : 기본적으로 비활성화
TCP 헤더
-
TCP 헤더는 가변적
-
일반적으로 20바이트 크기를 사용하지만, TCP Options 항목을 이용해 21바이트 이상 사용 가능
-
출발지, 목적지 포트 : 16비트
-
일련번호(sequence number), 확인번호(acknowledgment number) : 송신자와 수신자 사이에 주고 받는 세그먼트의 연속성을 보장하기 위해 사용
- 오프셋(offset) : TCP 헤더의 길이 (일반적으로 20)
- 플래그(flags) : 제어 정보
- 윈도우(window) : 흐름 제어와 관련된 것으로 송신자가 전송할 수 있는 동적인 정보의 양
- 긴급 포인트(urgent pointer) : 작업을 긴급하게 중단할 때 (예 : Ctrl + C ) 발생, URG 항목이 나타날 때 0에서 1로 설정이 바뀌면서 동작
플래그 종류와 의미
CWR (Congestion Window Reduced) | 혼잡 윈도우 크기 감소 신호 |
ECN (Explicit Congestion Notification) | 혼잡 발생 신호 |
URG (Urgent) | 긴급 데이터라는 신호 |
ACK (Acknowledgment) | 확인 응답 신호 |
PSH (Push) | TCP 페이로드를 포함한다는 신호 |
RST (Reset) | 상대방과 연결을 강제로 종료하기 위한 신호 |
SYN (Synchronize) | 상대방과 동기화를 확립하기 위한 개시 신호 |
FIN (Finish) | 상대방과 동기화를 해제하기 위한 종료 신호 |
TCP/IP 네트워크 계층
IP 헤더
-
일반적으로 20바이트 크기를 사용
-
IP Option 항목을 이용하면 21바이트 이상으로 사용이 가능
-
버전(version) : IPv4(4), IPv6(6)
-
헤더 길이(header length) : IP 헤더의 길이 (20)
-
서비스 종류 (TOS, Type of Service) : 해당 패킷의 전송 우선 순위를 저장 (회선이 혼잡할 경우 해당 패킷에 전송 우선 순위를 부여)
-
전체 길이(total length) : IP 헤더를 포함한 패킷 전체의 길이
-
Indentification, IP Flages, Fragment Offset : MTU(Maximum Transmission Unit: 최대 전송 단위)에 따른 패킷 분할 정보
- IP Flages : 패킷 분할 여부를 표시
- D : Do not flagment ==> 더이상 받을 게 없다는 뜻
- M : More flagment
- X : 사용하지 않는 것
-
생존 시간(TTL, Time To Live) : 해당 패킷이 통과할 수 있는 라우터의 개수
-
프로토콜(protocol) : 상위 계층에 속한 프로토콜 번호. 수신 측에서 해당 패킷의 속성을 파악하는데 사용 ⇒ https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
-
헤더 오류 검사(header checksum) : 비활성화 상태
- 출발지, 목적지 주소 : 32비트의 IP주소
MTU
- Maximum Transmission Unit
- 최대 전송 단위
- MTU 1500 바이트인 이더넷 구간을 1400 바이트 크기의 패킷이 통과하는 경우 ⇒ 패킷 분할이 없음
Identification | IP Flages | fragemtn Offset | ||
X | D | M | ||
1234 | 0 | 1 | 0 | 0 |
- IP Flages : 패킷 분할 여부를 표시
- D : Do not flagment
- M : More flagment
- X : 사용하지않는 것
- MTU 1500 바이트인 이더넷 구간을 5900 바이트 크기의 패킷이 통과하는 경우 ⇒ 패킷 분할이 발생
Identification | IP Flages | fragemtn Offset | ||
X | D | M | ||
1234 | 0 | 0 | 1 | 0 |
1234 | 0 | 0 | 1 | 1500 |
1234 | 0 | 0 | 1 | 3000 |
1234 | 0 | 1 | 0 | 4500 |
- IP Flages : 패킷 분할 여부를 표시
- D : Do not flagment
- M : More flagment
- X : 사용하지않는 것
'IT 일기 (상반기) > 네트워크 및 시스템 보안' 카테고리의 다른 글
[보안] kali 한글 깨짐 해결 (0) | 2021.01.19 |
---|---|
[보안] kali에서 명령어 연습하기 (0) | 2021.01.19 |
[보안] OSI 7계층 (0) | 2021.01.18 |
[보안] UDP 및 TCP 방식, port (0) | 2021.01.18 |
[보안] DNS 캐시 테이블 (0) | 2021.01.18 |