TCP (Transmission Control Protocol)
IP (Internet Protocol)
① 웹서버 : 아파치 웹서버 스타트, 방화벽 중지
-> #systemctl start httpd, #systemctl stop firewalld
② 클라이언트 : 웹서버 핑 확인, 웹문서 요청
-> #ping -c 4 8.8.8.8, #lynx --dump 200.200.200.4
실습> 패킷을 덤프해서 분석하기
ssh 접속은 모두 연결을 종료한다.
1. 패킷 덤프
와이어샤크를 실행해서 VMnet8 Adapter를 선택한다.
2. 웹페이지 접속
웹 문서를 요청한다.
[root@www1 ~]# lynx --dump 200.200.200.4
Welcome to my server.
3. 패킷 분석
와이어샤크에서 패킷 덤프를 중지한다.
[와이어샤크 설정]
패킷의 Sequence 번호를 보이게 설정
하기.
Edit > Preference > Protocols > TCP > Analyze TCP sequence numbers 체크 해제
📌 Tip 📌
와이어샤크 레이아웃 변경하는 방법
Default로 패킷 디테일과 패킷 바이트 화면이 양옆으로 설정된 부분을 위 아래로 변경하여 로그가 짤리지 않고 다 볼 수 있도록 변경
(참고)
💥💥💥[3 way handshake]💥💥💥
HTTP 패킷 분석
: 패킷 > 마우스 오른쪽 > Follow > TCP Stream
GET / HTTP/1.0
Host: 200.200.200.4
Accept: text/html, text/plain, text/css, text/sgml, /;q=0.01
Accept-Language: en
User-Agent: Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips
HTTP/1.1 200 OK
Date: Mon, 12 Dec 2022 22:42:45 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Mon, 12 Dec 2022 22:25:50 GMT
ETag: "16-5efa8fc5104c0"
Accept-Ranges: bytes
Content-Length: 22
Connection: close
Content-Type: text/html; charset=UTF-8
Welcome to my server. <-- 평문 통신
4. 파일 저장
캡처된 패킷을 파일로 저장한다.
저장된 파일은 나중에 다시 분석하기 위해서 와이어샤크에서 열어볼 수 있다.
패킷덤프파일의 확장자: pcap, pcapng(pcap의 업그레이드 버전)
HTTP패킷분석.pcapng
실습> 패킷을 덤프해서 분석하기
nc(NetCat)로 패킷 전송을 한다.
1. 방화벽 비활성화
방화벽을 비활성화한다. 방화벽을 비활성화 한다는 말은 서버가 부팅되도 방화벽이 다시 올라오지 않는다는 말이다.
[root@www2 ~]# systemctl disable firewalld
2. 포트 오픈
nc 로 8000 포트를 열고 외부에서 접속해오기를 귀기울인다.
[root@www2 ~]# nc -lvp 8000
3. 패킷 덤프
wireshark를 실행해서 VMnet8 네트워크의 통신을 분석하기 위해서 VMnet8을 모니터링한다.
4. nc 접속
[root@www1 ~]# nc 200.200.200.4 8000
5. 데이터 전송
[root@www1 ~]# nc 200.200.200.4 8000
Hello
[root@www2 ~]# nc -lvp 8000
Hello
Hi
[root@www1 ~]# nc 200.200.200.4 8000
Hello
Hi
^C
6. 패킷 덤프 중지
와이어샤크에서 패킷 덤프를 중지하고 패킷을 분석한다.
7. 파일 저장
캡처된 패킷을 파일로 저장한다.
저장된 파일은 나중에 다시 분석하기 위해서 와이어샤크에서 열어볼 수 있다.
패킷덤프파일의 확장자: pcap, pcapng(pcap의 업그레이드 버전)
nc패킷분석.pcapng
(참고)
아스키코드
https://ko.wikipedia.org/wiki/ASCII
💥💥💥 TCP Header 💥💥💥
TCP의 Header 부분에 Header Length 부분에는 총 4bit가 설정되어 있다.
32/8 = 4byte
0 ~ 15 까지의 값을 가지고 있고 1bit의 크기는 4byte의 크기를 갖는다.
0000
~
1111
15 * 4 = 60 (최대 60byte)
Q. TCP Header의 길이가 40byte 일 때 HLEN의 값은 무엇인가?
A. 1010
Q. TCP Header의 길이가 20byte 일 때 HLEN의 값은 무엇인가?
A. 0101
Q. TCP Header의 길이가 60byte 일 때 HLEN의 값은 무엇인가?
A. 1111
[파일을 보는 리눅스 명령어]
cat
tac
head
tail
less
more
# cat /etc/protocols
# tac /etc/protocols
# head /etc/protocols
# tail /etc/protocols
# less /etc/protocols
# more /etc/protocols
# grep ^icmp /etc/protocols
# grep ^tcp /etc/protocols
# grep ^udp /etc/protocols
미션> 아래의 미션을 수행하시오.
미션> 아래의 미션을 GNS3에서 수행하시오.