-케이블 내 구리 선의 보호 방법이나 꼬임 방법에 따라서 케이블을 분류(케이블 선은 일반적으로 UTP 사용)
-케이블 선의 종류(UTP, FTP, STP)
-두 포인트 간의 신뢰성 있는 전송을 보장하기 위한 계층으로, CRC 기반의 오류 제어 및 흐름 제어가 필요(CRC: 순환 중복 검사)
※ MAC 주소
-총 12개의 16진수로 구성
-앞 쪽의 6개 16진수는 네트워크 카드를 만든 회사를 나타냄(OUI)
-뒤 쪽의 6개 16진수는 각 회사에서 임의로 붙이는 일종의 시리얼
-같은 MAC 주소는 존재하지 않음
-ex) 1C-1B-DD-77-90-4C
데이터 링크 계층의 패킷 흐름
-대표적인 네트워크 장비는 스위치
-MAC 계층에서 동작하는 대표적인 프로토콜은 이더넷
-네트워크 계층까지의 패킷 정보 + 데이터 링크 계층의 패킷 정보(출발, 목적 MAC 주소)
-스위치의 메모리에 포트별로 MAC 주소가 매칭된 테이블이 존재하고, 이것이 업데이트 됨
-스위치는 네트워크 계층 정보인 IP 정보를 네트워크에 활용하지 않음
-즉, MAC 계층까지만 조사가 됐고 현재 IP정보는 받은 게 없어 IP주소와 매칭될 수 없음
두 개의 부계층
-상위의 LLC 부계층: 여러 다양한 MAC 부계층과 네트워크 계층간의 접속을 담당
-하위의 MAC 부계층: 물리계층 상의 토폴로지나 기타 특성에 맞추어 주는 제어를 담당
▷토폴로지(topology): 컴퓨터 네트워크의 요소들(링크, 노드 등(을 물리적으로 연결해놓은 것, 또는 그 연결방식/ LAN은 물리적 토폴로지와 논리적 토폴로지를 둘 다 보여 줄 수 있는 한 예
▷둘 간의 주요 차이점
-MAC: 공유 매체를 통해서 신뢰성 보장 없이 패킷에 대한 전송 서비스 제공
-LLC: 기본적으로 두 지점 간의 신뢰성 있는 패킷 링크로 전환
-LLC의 목적: 여러 상이한 MAC 부계층 프로토콜을 사용할 수 있게 하여 망의 토폴로지에 관계없는 통신이 가능하도록 함
-여러 개의 노드를 거칠 때마다 경로를 찾아줌, 다양한 길이의 데이터를 네트워크를 통해 전달
-전달 과정에서 라우팅(최적 경로 찾기), 프름 제어, 세그멘테이션, 오류 제어등을 수행
-대표적인 네트워크 장비는 라우터
※ IP 주소
-네트워크 계층에서 여러 개의 노드를 거쳐 경로를 찾기 위한 주소
-ipconfig /all명령을 실행하여 IP 주소를 확인
-ex) 11000000.10101000.00000000.01100100(C클래스)
- IP주소의 클래스
-A,B,C,D,E로 구성
A클래스: 첫 번째 자리(8비트)가 네트워크 주소, 세 자리는 호스트 주소(시작주소: 0)
B클래스: 두 번째 자리(16비트)까지 네트워크 주소, 두 자리는 호스트 주소(시작주소: 10)
C클래스: 세 번째 자리(24비트)까지 네트워크 주소, 한 자리는 호스트 주소(시작주소: 110)
-패킷 송신 시스템의 IP: 172.16.0.100 -> 출발 IP 주소
-라우터 랜 쪽 포트의 IP(게이트웨이): 172.16.0.1
-패킷 송신 시스템의 MAC 주소: AA-AA -> 출발 MAC 주소
-라우터 랜 쪽 포트의 MAC 주소(게이트웨이): BB-BB -> 도착 MAC 주소
-라우터 인터넷 쪽 포트의 MAC 주소: CC-CC
* 순서
1. 출발 MAC 주소, 출발 IP 주소
2. 도착 IP 주소
3. 도착 MAC 주소
-양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있게 함
-상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해줌
-시퀀스 넘버 기반의 오류 제어 방식을 사용하여 특정 연결의 유효성을 제어
-가장 잘 알려진 전송 프로토콜은 TCP로 포트라는 주소가 있음
포트
-시스템에 도착한 후 패킷이 찾아갈 응용 프로그램으로 통하는 통로 번호
-세션 계층까지의 패킷 정보 + 전송 계층의 패킷 정보 + 네트워크 계층의 패킷 정보 + 데이터 링크 계층의 패킷 정보
-출발지 포트는 보통 1,025~65,535번 중에서 사용하지 않는 임의의 포트를 응용 프로그램별로 할당하여 사용
연결 상태 정보
-네트워크 계층과 전송 계층의 정보는 netstat -an 명령으로 쉽게 확인할 수 있음
-연결 상태 정보는 ESTABLISHED로 확인됨
-연결 설정 과정은 '3-way 핸드셰이킹'이라고 함
TCP의 연결 과정(3-way 핸드셰이킹)
TCP
-연결 지향형 프로토콜(양뱡향)
-정보를 보내는 쪽과 받는 쪽이 서로 의사 소통을 할 수 있도록 설계된 프로토콜
-수신 픅이 데이터를 흘려버리지 않도록 하는 데이터 흐름 제어
-전송 중 에러가 발생하면 자동으로 재전송하는 에러 제어
-데이터의 확실한 전송을 보장하지만, 과정이 완전하지 않아 해커들에게 많은 공격을 받음
UDP
-한 쪽에서 일방적으로 보내는 방식의 통신 트로토콜(단방향)
-TCP와 달리 데이터의 수신에 대한 책임을 지지 않음
-TCP보다 안정성 면에서는 떨어지지만, 속도는 훨씬 빠름
-TCP와 달리 신뢰성 있는 전송을 보장하지 않음
-특정한 경우 전송 경로 확립을 위한 번잡함을 생략하고 시간을 절약할 수 있어 UDP가 더 효과적
-양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
-응용 계층 간 대화 제어, 응용 실체 간 데이터 전송을 위해 기본이 되는 논리적 통신로 제공, 통신로상 데이터 전송을 위한 송신권, 동기 등의 제어
-동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께 체크 포인팅, 유휴, 종료, 다시 시작의 과정을 수행
-코드 간의 번역을 담당(OSI 표준방식으로 변경)
-ASN.1 방식: 데이터 구조를 하나의 통일된 형식으로 표현, 응용 프로그램 계층 간의 서로 다른 표현을 인식하기 위해 정보를 정의하고 데이터 합축과 암호화 기능을 수행
-사용자나 응용 프로그램 사이에 데이터 교환이 가능하게 하는 계층
-응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
-HTTP, FTP, 터미널 서비스, 메일 프로그램, 디렉터리 서비스 등을 제공
다른 해킹에 비해 비교적 간단한 것으로 일종의 훼방
-예를 들어 깡패가 노점상의 장사를 방해하는 것
취약점 공격형
-특정 형태의 오류가 있는 네트워크 패킷의 처리 로직에 문제가 있을 때, 공격 대상이 그 문제점을 이용하여 오작동을 유발하는 형태
-보잉크/봉크/티어드롭 공격, 랜드 공격
자원 고갈 공격형
-네트워크 대역폭(채널)이나 시스템의 CPU, 세션 등의 자원을 소모시키는 형태
-랜드 공격, 죽음의 핑, SYN 플러딩, HTTP GET 플러딩, HTTP CC, 동적 HTTP 리퀘스트 플러딩, 슬로 HTTP 헤더 DoS(슬로로리스), 슬로 HTTP POST, 스머프 공격, 메일 폭탄 공격
보잉크/봉크/티어드롭 공격
→프로토콜의 오류 제어 로직을 악용하여 시스템 자원을 고갈시키는 방식
→TCP 프로토콜이 제공하는 오류 제거 기능
-패킷의 순서가 올바른지 확인
-중간에 손실된 패킷이 없는지 확인
-손실된 패킷의 재전송을 요구
→TCP는 데이터 전송 시 신뢰를 확보하기 위해 패킷 전송에 문제가 있으면 반복적으로 재요청과 수정을 함
→보잉크, 봉크, 티어드롭은 공격 대상이 TCP에서 수행되는 반복적인 재요청과 수정을 계속하게 함으로써 시스템 자원을 고갈시킴
→티어드롭은 패킷의 시퀀스 넘버와 길이를 조작하여 패킷 간의 데이터 부분이 겹치거나 빠진 상태로 패킷을 전송하는 공격 방법
→시퀀스 넘버가 조작된 패킷의 흐름은 공격 대상에게 절대로 풀 수 없는 퍼즐을 던져주는 것과 같음
→이런 취약점은 패치관리를 통해 제거하는데, 과부하가 걸리거나 계속 반복되는 패킷을 무시하고 버리도록 처리함
랜드 공격
→'land'는 (나쁜 상태에) 빠지게 하다라는 뜻
→패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소를 똑같이 만들어 대상에게 보내는 것
→SYN 플러딩처럼 동시 사용자 수를 점유하고 CPU 부하를 올림
→대책은 주로 운영체제의 패치관리를 통해 마련( ex) 방화벽 )
죽음의 핑 공격
→네트워크의 연결 상태를 점검하는 ping 명령을 보낼 때 공격 대상에게 패킷을 최대한 길게 보내 패킷을 쪼갬
→공격 대상 시스템은 대향의 작은 패킷을 수신하느라 네트워크가 마비
→대책은 ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 ICMP를 차단해야 함(ICMP: ping이 사용하는 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜)
SYN 플러딩 공격
→동시 사용자 수의 제한을 이용한 공격
→존재하지 않는 클라이언트가 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 제공받지 못하게 함
→3-way 핸드셰이킹의 문제점을 악용
→대책은 SYN Received의 대기 시간을 줄이는 것 / 침입 방지 시스템과 같은 보안 시스템으로도 공격을 쉽게 차단할 수 있음
HTTP GET 플러딩 공격
→공격 대상 시스템에 TCP 3-way 핸드셰이킹 과정으로 정상 접속한 뒤 HTTP의 GET 메소드로 특정 페이지를 무한대로 실행하는 공격
→공격 패킷을 수신하는 웹 서버는 정상적인 TCP 세션과 정상으로 보이는 HTTP GET을 지속적으로 요청받음으로 시스템에 과부하가 걸림
HTTP CC 공격
→HTTP 1.1 버전의 CC 헤더 옵션은 자주 변경되는 데이터에 새로운 HTTP 요청 및 응답을 요구하기 위해 캐시 기능을 사용하지 않을 수 있음
→웹 서버가 캐시를 사용하지 않고 응답해야 하므로 웹 서비스의 부하가 증가
동적 HTTP 리퀘스트 플러딩 공격
→특징적인 HTTP 요청 패턴을 확인하여 방어하는 차단 기법을 우회하기 위한 공격
→지속적으로 요청 페이지를 변경하여 웹 페이지를 요청
슬로 HTTP 헤더 DoS(슬로로리스) 공격
→서버로 전달할 HTTP 메시지의 헤더 정보를 비정상적으로 조작
→웹 서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하는 공격
→시스템 자원을 소비시켜 다른 클라이언트의 정상적인 서비스를 방해
슬로 HTTP POST 공격
→웹 서버와의 커넥션을 최대한 오래 유지하여, 웹 서버가 정상적인 사용자의 접속을 받아들일 수 없게 하는 공격