C1. 컴퓨터 네트워크

전송 제어 프로토콜 (Transmission Control Protocol: TCP)
인터넷 프로토콜 (Internet Protocol: IP
두대의 컴퓨터 연결되면 네트워크가 된다.
메시지나 파일을 주고 받을 수 있다.

여러 대의 컴퓨터가 연결되면 네트워크가 된다.
컴퓨터들이 서로 정보를 주고 받을 수 있도록 연결된 망을 컴퓨터 네트워크라고 한다.




애플리케이션 계층
HTTP - 웹 페이지 데이터를 주고받음
HTTPS - 보안을 위해 웹 페이지 데이터를 주고받는 과정을 암호화함
POP3 - 서버에 보관된 수신 메일을 꺼내옴
SMTP - 메일을 송신함
FTP - 파일을 전송함
Telnet - 컴퓨터를 원격에서 제어함
SSH - 보안을 위해 컴퓨터를 원격에서 제어하는 과정을 암호화함
SMB - 윈도우 컴퓨터와 파일을 공유함
DHCP - 컴퓨터에게 프라이빗 IP를 동적으로 할당함
DNS - 도메인 이름과 IP 어드레스를 서로 변환함
SSL - 보안을 위해 통신 과정에서 주고받는 데이터를 암호화함

트랜스포트 계층
TCP - 애플리케이션의 데이터를 송수신하되 데이터의 정확한 전달을 중시함
UDP - 애플리케이션의 데이터를 송수신하되 데이터의 전송 속도를 중시함

인터넷 계층
IP - 패킷을 목적지까지 전달함
ICMP - IP의 통신 오류를 전달함
IPsec - 패킷을 암호화하여 전달함
ARP - 네트워크 장비의 MAC 어드레스를 알아냄

네트워크 인터페이스 계층
이더넷 - 일반 금속 케이블이나 광 케이블을 통해 데이터를 전달함
PPP - 사용자 인증 후에 원격지의 장비와 통신함

C2. 네트워크 서비스와 애플리케이션 계층

애플리케이션 계층은 사용자가 직접 사용하며 체감하는 계층

사용자각 직접 사용하는 프로토콜
HTTP - 웹 페이지 데이터를 주고받음
POP, SMTP, IMAP - 메일을 송수신하고 보관
SMB, AFP - LAN 안에서 파일을 공유
FTP - 서버를 통해 파일을 주고 받음
Telnet, SSH - 원격에서 서버 제어

사용자가 간접적으로 사용하는 프로토콜
DNS - 도메인명과 IP 어드레스의 정보를 서로 변환할 때 사용
DHCP - LAN 내의 컴퓨터에게 IP 어드레스를 할당할 때 사용
SSL/TLS 통신 데이터를 암호화하여 주요 정보를 안전하게 주고받을 때 사용
NTP - 네트워크에 연결된 장비들의 시스템 시간을 동기활 때 사용
LDAP - 네트워크에 연결된 자원(사용자,장비들)의 통합 관리에 필요한 디렉토리 서비스를 제공할 때 사용


C3. 트랜스포트 계층

데이터 분류하는 트랜스포트 계층
포트 번호로 애플리케이션을 구분

데이터의 정확한 전달을 중시하는 TCP
포트 번호는 컴퓨터 내부의 수진자를 표현

주요 웰 노운 포트
20번 FTP(액티브 모드에서 데이터 커넥션, 패시브 모드에서 랜덤 포트 사용)
21번 FTP(컨트롤 커넥션)
22번 SSH(원격 제어,보안 기능 있음)
23번 Telnet(원격 제어)
25번 SMTP(이메일 전송)
80번 HTTP(웹)
110번 POP3(이메일 수신)
143번 IMAP4(이메일 수신,보관 기능 있음)

클라이언트가 사용하는 포트 번호는 그때그때 다름
클라이언트의 ip어드레스와 포트를 조합해서 기억

TCP가 정확하게 데이터를 전달하는 방법
일련번호와 최대 세그먼트 크기를 사전에 조율
1.송신 실패 여부를 판단한다.
2.연속된 데이터를 몰아서 보내면 전송 속도가 빨라진다.
3.한번에 받아 낼 수 있는 데이터 양을 조절
4.버터가 가득찬 경우 네트워크의 혼잡 상태를 확인
UDP는 다른 처리 없이 전송만 한다.

출처: 명쾌한 설명과 풍부한 그림으로 배우는 TCP/IP 쉽게, 더 쉽게

암호화 보안 프로토콜

암호화 프로토콜은 보안 연결을 제공하여 두 당사자가 사생활 보호와 데이터 무결성을 가지고 서로 통신할 수 있게 해줌

HTTPS

HTTP는 기본적으로 암호화되지 않은 데이터 송수신
=> HTTPS (HTTP Secure)는 HTTP 프로토콜에 암호화 적용한 프로토콜, 기본 포트번호는 443번

HTTPS 통신 은 HTTP 통신 과 다르게 서버가 제공하는 SSL 인증서 라는 요소가 추가되었으며, 이를 통해 클라이언트는 필요한 서버의 정보를 취득하고 신뢰성을 판단합니다.

HTTPS가 사용하는 보안기능 (암호화 방식)

SSL ( Secure Sockets Layers ) : 현재 SSL 3.0까지 출시, 향후 업데이트 X
TLS ( Transport Layer Security )
현재 TLS 1.0까지 출시
SSL의 업그레이드 버전이지만 SSL 제작사와는 다른 회사에서 제작 및 관리
통상 SSL이라는 보안기능은 사실상 TLS를 의미
HTTPS-SSL, HTTPS-TLS, HTTPS-SSL/TLS 등의 여러가지 형태로 표기

SSL/TLS 인증서

클라이언트-서버 간 통신을 제3자가 보증해주는 문서
클라이언트가 서버에 접속하면 -> 서버는 클라이언트에게 인증서 전송
-> 클라이언트는 전달받은 인증서를 보고 신뢰할 수 있는 대상인지 확인 후
-> 데이터를 보내는 절차 수행

SSL(TLS) 통신과정

  1. 클라이언트 → 서버로 랜덤 데이터와 사용 가능한 암호화 방식을 보낸다.
  2. 서버 → 클라이언트로 랜덤 데이터, 사용할 암호화 방식과 SSL 인증서를 보낸다.
  3. 클라이언트는 서버에게 받은 인증서의 CA가 자신이 들고 있는 CA 리스트에 있는지 확인하고, 있다면 CA의 공개키로 복호화한다. 이는 곧 CA 비밀키에 의해 암호화됐다는 것이므로 인증서의 신원을 보증해준다. (공개키 암호화 방식)
    클라이언트는 자기가 보낸 랜덤 데이터와 서버로부터 받은 랜덤 데이터를 조합하여 임시 키 (pre master secret key)를 만든다.
  4. 만들어진 임시 키를 인증서의 공개키로 암호화하여 서버에게 보낸다.
  5. 서버는 자신이 들고 있던 비밀키로 임시 키를 복호화한다.
  6. 이로써 클라이언트와 서버는 동일한 임시 키를 공유하게 되는데, 일련의 과정을 거쳐 master secret 값을 만들고 세션 키를 생성한다.
  7. 이렇게 만들어진 세션 키로 암호화된 데이터를 주고받는다. (대칭키 암호화 방식)
  8. 세션이 종료되면 클라이언트와 서버 모두 세션 키를 폐기한다.

이렇게 공개키 암호화 방식과 대칭키 암호화 방식을 조합해서 사용하는 이유는 아래와 같다.
1. 공개키 방식은 컴퓨터 파워를 많이 사용한다. 그래서 요청이 쏠리는 경우 서버는 과금을 내야 한다.
2. 대칭키 방식은 암호를 푸는 열쇠인 대칭키를 상대방에게 줘야 한다. 하지만 인터넷을 통해 키를 전송하는 것은 위험하다.

그래서 채널을 수립할 때에는 공개키 방식을 이용해 보다 안전한 채널을 수립하고, 이후 데이터를 주고받을 때 대칭키를 통해 암호화하여 주고 받는다.

Wirshark(네트워크 패킷 분석 도구)

와이어샤크는 네트워크 패킷을 캡처하고 분석하는 오픈소스 도구이다.
처음엔 ' Ethereal ' 이라는 이름으로 나왔다가 이후에 상표문제로 ' Wireshark '로 바뀌었다.
강력하고 쉬운 사용법때문에 해킹뿐만 아니라 보안 취약점 분석, 보안 컨설팅, 개인정보 영향평가 등 여러 분야에서 폭 넓게 사용된다.
사무실 내부 네트워크에서 지연 현상 발생 시 과다 트래픽 및 패킷을 유발하는 IP를 확인하는 간단한 방법을 소개합니다.

Wireshark 기본 작동 개념

같은 네트워크 구간의 Noel과 Susan은 이메일이나 메신저 등을 통해 대화를 주고받는다.
여기에서 Wireshark를 사용하는 제3자는 이 둘 사이의 네트워크로 돌아다니는 패킷( 네트워크상의 데이터 )을 수신하여 저장한다.
이때, PCAP이라는 파일 포맷으로 저장된다.
PCAP 은 Packet Capture의 약자로 네트워크 트래픽을 캡처하는 API구성이다.
Wireshark는 자체 프로그램으로 네트워크 트래픽을 캡처하는 것이 아니고, 운영체제에서 지원하는 캡처 라이브러리를 이용하여 수집한다.
유닉스 : libpcap
윈도우 : Winpcap

Wireshark 설치

Kali Linux 사용자의 경우 기본적으로 설치가 되어있다.
window 사용자의 경우 wireshark 홈페이지에서 무료로 다운받아 사용이 가능하다.
https://www.wireshark.org/

나는 macOS Arm 64-bit .dmg 다운받아 설치하였다.


와이어샤크 처음 실행하면 위와 같은 화면이 뜬다.
가운데 빨간색 박스를 보면 자동으로 와이어샤크가 이더넷 인터페이스를 찾아놨다.
따라서 해당 부분을 클릭하면 왼쪽 상단에 상어지느러미 모양이 활성화되는데 이것을 누르면 해당 이더넷 인터페이스에서 오고 가는 패킷들을 찾아준다.


이런식으로 오고가는 패킷을 실시간으로 잡아내는 것을 확인할 수 있다.

No. : 패킷을 수집한 순서
Time : 패킷이 수집된 시간
Source : 패킷을 보낸 주소
Destination : 패킷 도착 주소
Protocol : 프로토콜 정보
Length : 패킷의 길이
Info : 패킷 정보

패킷 필터링

사실 위와 같이 그냥 start버튼으로 패킷을 수집해버리면 원하는 패킷만 보고 싶은데 다른 패킷들도 다 수집해버려서 보기 어렵다.
그래서 그런 문제를 해결하기 위해 필터링을 제공한다.

두 가지의 필터링 방식이 있는데 중요한 것은 아니므로 쉽게 설명하도록 한다.
1. 애초에 패킷 수집 자체에 필터를 걸어서 필터링에 적용된 패킷만 받는 방법(성능에 영향을 끼칠 수 있음..)
2. 오가는 패킷 전체를 수집한 후, 내가 화면에서 볼 것만 필터링하는 방법(권장, 다양한 연산이 사용가능함)
1을 캡쳐필터라고하고 2를 디스플레이 필터라고 한다는 것만 알고 넘어간다.

예를들어 "ip.addr == 192.0.2.1" 이라고 적용하면 source든 destination이든 아이피가 해당 아이피인 패킷만 볼 수 있다.

  • 유용한 필터링 식

eth.addr == 00:3f:1e:00:00:23 //출발지나 목적지 MAC 주소로 검색
ip.addr == 192.168.0.2 // 출발지나 목적지 IP주소로 검색
tcp.port == 3306 // TCP 출발지나 목적지 포트 번호로 검색
ip.src != 10.1.2.3 // 출발지 IP주소가 해당 IP주소가 아닌것 검색
eth.dst == 00:3f:1e:00:00:23 // 목적지 MAC주소 검색

기타 비교 연산자나 논리 표현도 가능해서 아주 다양하게 적용할 수도 있다.


필터링을 하여 아이폰 핫스팟으로 맥북 연결한 내 아이피를 들어가면 화면을 이렇게 나오는 것을 확인 할 수 있다.

0개의 댓글