1. 네트워크의 이해
OSI 7계층의 이해
- 국제표준화기구(ISO)는 다양한 네트워크 간의 호환을 위해 만든 표준 네트워크 모델
물리 계층(1계층)
- 시스템 간의 연결을 의미하는 것으로 간단하지만 네트워크에서 중요
- 케이블 내 구리선의 보호방법이나 꼬임 방법에 따라서 분류
데이터 링크 계층(2계층)
- 두 포인트 간의 신뢰성 있는 전송을 보장하기 위한 계층, CRC 기반의 오류 제어 및 흐름 제어 필요
- 네트워크 위의 개체간 데이터 전달, 물리 계층에서 발생하는 오류 찾고 수정하는데 기능적, 절차적 수단 제공
- MAC 주소
- 상호 통신을 위해 MAC 주소를 받음(ipconfig /all로 확인)
- 앞 6개 16진수 - 네트워크 카드 만든 회사 OUIO
- 뒤 6개 16진수 - 각 회사에 임의로 붙이는 시리얼
-
- 1,2,3 흘러가는 패킷의 구조데이터 링크 계층의 패킷 흐름
- 스위치의 동작 원리
- 스위치 포트 4개고 안방 컴퓨터와 연결된 케이블이 2번포트에 꽂힐 경우 메모리 정보
- 작은방의 컴퓨터와 연결된 랜 케이블을 스위치의 3번 포트에 꽂힐 경우 메모리 정보
네트워크 계층(3계층)
- 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할
- 라우팅, 흐름 제어, 세그멘테이션, 오류 제어 수행
- IP 주소
- 여러 개의 노드를 거쳐 경로를 찾기 위한 주소
- 8비트의 수 4개로 되어 있음
- IP 주소 클래스
- A,B,C,D,E 로 구분
- 네트워크 계층의 동작
- 대표 장비는 라우터
- 네트워크 계층의 패킷 전달 구조
- 출발지의 IP와 MAC 주소 기록
- 목적지 IP 주소 입력
- 목적지 MAC 주소에는 랜을 벗어나기 위한 게이트웨이의 MAC 주소 입력
- 라우터에서 사용한 데이터 링크 계층 정보를 벗겨냄
- 다음 라우터까지의 데이터 링크 계층 정보를 패킷에 덧씌움
전송 계층(4계층)
- 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받음
- 시퀀스 넘버 기반의 오류 제어 방식을 사용하여 특정 연결의 유효성 제어
- 포트
- 시스템에 도착한 후 패킷이 찾아갈 응용 프로그램으로 통하는 통로 번호
- 포트의 패킷 구조
- 출발지 포트 결정
- 1025~65535중 사용하지 않는 임의 포트 결정
- 연결 상태 정보
- netstat -an으로 쉽게 확인
- 연결 상태 정보는 ESTABLISHED로 확인
- TCP는 패킷 주고 받기 전 가상 경로 설정
- TCP의 연결 과정(3-웨이 핸드셰이킹)
1. 클라이언트 Closed, 서버는 Listen
2. 처음 통신 시 임의의 포트 번호가 클라이언트 프로그램에 할당, 클라이언트는 서버에 연결 의사 표시로 SYN Sent 상태가 됨
- 서버는 SYN Received 상태가 됨, 서버는 연결 동의 표시인 SYN+ACK 패킷 보냄
- 클라이언트는 응답의 표시로 ACK 패킷을 서버로 보냄
- TCP 연결 해제 과정
- 클라이언트, 서버 모두 Established
- 클라이언트가 서버에 FIN 패킷을 보내고 클라이언트는 Close Wait 상태가 됨
- 서버는 클라이언트 연결 종료 요청 확인, 클라이언트에 ACK 패킷을 보내면 서버도 FIN 패킷을 보내고 Close Wait 상태가 됨
- 클라이언트는 연결 종료 요청에 대한 서버의 응답 확인 표시로 ACK 패킷을 서버에 보냄
- TCP
- 연결 지향형 프로토콜
- 수신 측이 데이터를 흘려버리지 않도록 하는 데이터 흐름 제어
- 연결 지향형 프로토콜
- UDP
- 데이터의 신뢰성 있는 전송 보장 X
- 시간 절약 가능 UDP가 더 효과적(신뢰성 매우 높은 회선의 경우, 한번에 많은 상대에게 메시지 보낼때)
세션 계층(5계층)
- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법 제공
- 동시 송수신, 반이중, 전이중 방식 사용
표현 계층(6계층)
- 코드 간의 번역 담당
- ASN.1 방식
- 사용자 시스템에서 데이터 구조를 하나의 통일된 형식으로 표현
- 데이터 압축, 암호화 기능 수행
응용 프로그램 계층(7계층)
- 사용자, 응용 프로그램 사이 데이터 교환이 가능하게 하는 계층
- HTTP, FTP, 터미널 서비스, 메일 프로그램 제공
2. 서비스 거부 공격 : DoS와 DDoS
서비스 거부 공격(DoS)
- 다른 해킹에 비해 비교적 간단
- 취약점 공격형
- 특정 형태의 오류가 있는 네트워크 패킷 처리 로직에 문제 있을 때 그 문제점 이용 오작동 유발
- 보잉크/봉크/티어드롭 공격, 랜드 공격
- 특정 형태의 오류가 있는 네트워크 패킷 처리 로직에 문제 있을 때 그 문제점 이용 오작동 유발
- 자원 고갈 공격형
- 네트워크 대역폭이나 시스템의 CPU, 세션 등 자원 소모 형태
- 랜드 공격, 죽음의 핑 공격, SYN 플러딩 공격, HTTP GET 플러딩 공격
- 네트워크 대역폭이나 시스템의 CPU, 세션 등 자원 소모 형태
보잉크/봉크/티어드롭 공격
- 시스템 자원 고갈시키는 방식
- TCP 프로토콜 제공하는 오류 제거 기능(패킷의 순서, 손실된 패킷, 재전송 요구)
- 반복적 재요청, 수정을 계속함으로 시스템 자원 고갈
- 티어드롭은 패킷의 시퀀스 넘버 길이 조작하여 데이터 부분이 겹치거나 빠진 상태로 패킷 전송
랜드 공격
- 출발지 IP = 목적지 IP 같게하여 공격 대상에 보냄
- 운영체제의 패치 관리를 통해 마련, 방화벽과 같은 보안 솔루션 이용
죽음의 핑 공격
- 초기의 DoS 공격 방법
- 네트워크 연결 상태를 점검하는 ping 명령을 보낼 때 공격 대상에게 패킷을 최대한 길게 보내 패킷을 쪼갬
- 공격 대상 시스템은 대량의 작은 패킷을 수신하느라 네트워크 마비
- 방화벽에서 ICMP를 차단
SYN 플러딩 공격
- 네트워크에서 서비스 제공 시스템에서 동시 사용자 수 제한을 이용한 공격
- 3-웨이 핸드셰이킹의 문제점 악용
- 공격 대응책은 SYN Received의 대기 시간을 줄이는 것
HTTP GET 플러딩 공격
- 공격 대상 시스템에 3-웨이 핸드셰이킹 과정으로 정상 접속 후 HTTP의 GET 메소드로 특정 페이지를 무한대로 실행하는 공격 → 시스템에 과부하
- HTTP CC 공격
- HTTP 1.1 버전의 CC 헤더 옵션은 자주 변경되는 데이터에 새로운 HTTP 요청 및 응답을 요구하기 위해 캐시 기능 사용 X
- 서비스 거부 공격에 응용하려면 Cache-control : no-store, must-revalidate 옵션 사용
- 동적 HTTP 리퀘스트 플러딩 공격
- 특징적인 HTTP 요청 패턴을 확인하여 방어하는 차단 기법을 우회하기 위한 공격
- 슬로 HTTP 헤더 DoS 공격
- 서버로 전달할 HTTP 메시지의 헤더 정보를 비정상적으로 조작
- 슬로 HTTP POST 공격
- 웹 서버와 커넥션을 최대한 오래 유지하여 웹 서버가 정상 사용자 접속을 받아들이지 X
스머프 공격
- ICMP 패킷과 네트워크에 존재하는 임의의 시스템을 이용하여 패킷을 확장함으로써 서비스 거부 공격 수행
- 다이렉트 브로드캐스트 악용
- 기본적인 브로드캐스트는 목적지 IP 주소 255.255.255.255를 가지고네트워크 임의 시스템에 패킷 보내기
- 브로드캐스트는 기본적으로 라우터를 넘어가지 못함
- CMP request를 받은 172.16.0.0은 패킷의 위조된 시작 IP 주소로 ICMP request,reply를 재전송
- 공격 대상은 수많은 ICMP reply를 받게 되고 수많은 패킷이 시스템 과부하
메일 폭탄 공격
- 스팸 메일 종류
- 스팸 메일을 서비스 거부 공격으로 분류
분산 서비스 거부 공격(DDoS)
- 아직까지 확실한 대책 X, 공격자의 위치, 구체적 발원지 파악 X
- 과거 DDoS는 마스터와 에이전트가 중간자인 동시에 피해자
- 최근에 발생하는 분산 서비스 공격 과정
- PC에서 전파가 가능한 형태 악성 코드 작성
- 사전에 공격 대상과 스케줄을 정하고 미리 작성한 악성 코드에 코딩
- 인터넷을 통해 악성 코드 전파
3. 스니핑 공격
스니핑 공격
- 수동적 공격(다른 사람 대화 엿듣기, 전기적 신호를 템페스트 장비로 분석)
- 원리
- 네트워크 카드는 패킷의 IP 주소와 MAC 주소를 인식하고 자신의 버퍼에 저장할지 결정
- 인식된 데이터 링크, 네트워크 계층 정보가 자신의 것과 일치하지 않는 것은 무시
- 스니핑 공격자는 자신이 가지지 말아야 할 정보까지 볼 수 있어야 하므로 필터링 방해
- 랜 카드 설정 사항 조정, 스니핑 드라이버를 설치하여 프러미스큐어스 모드로 변경
- 프러미스큐어스 모드 : 2계층, 3계층 필터링 해제하는 랜 카드 모드
스위치 재밍 공격(MACOF 공격)
- 스위치가 MAC 주소 테이블을 기반으로 패킷을 포트에 스위칭할 떄 정상적인 스위칭 기능 마비
- 고가의 스위치는 캐시가 독립적이어서 안 통함
- 랜덤 형태로 생성한 MAC 주소를 가진 패킷을 스위치로 무한대로 보내 MAC 테이블 저장 용량을 마비
SPAN 포트 태핑 공격
- 스위치의 포트 미러링 기능 이용
- SPAN 포트는 네트워크 장비에서 간단히 활성화, 포트 태핑은 하드웨어 장비 이용
스니핑 공격의 탐지
- 스니퍼 설치 이후 네트워크에 별다른 현상 X, 사용자가 인지하기 어려움
- 쉽게 탐지하려면 프러미스큐어스 모드에서 작동
- 스니퍼 탐지 예시(강의실 교수가 출석 부를 떄)
- ping을 이용한 스니퍼 탐지
- 대부분 스니퍼는 일반 TCP/IP에서 동작하기 때문에 request를 받으면 response를 전달
- 이를 이용하여 의심이 가는 호스트에 ping을 보내면 스니퍼를 탐지
- 이떄 네트워크에 존재하지 않는 MAC 주소를 위장해서 전송
- 만약 ICMP echo reply를 받으면 해당 호스트가 스니핑 중
- ARP를 이용한 스니퍼 탐지
- 위조된 ARP request를 보냈을 떄 ARP response 오면 프러미스큐어스 모드로 설정되어 있는것
- DNS를 이용한 스니퍼 탐지
- 일반적인 스니핑 프로그램은 스니핑한 시스템의 IP 주소에 DNS 이름 해석 과정인 Reverse-DNS lookup을 수행
- 유인을 이용한 스니퍼 탐지
- 보안 관리자는 가짜 아이디와 패스워드를 네트워크에 뿌림
- 공격자가 이 아이디와 패스워드 접속을 시도할 때 스니퍼 탐지
4. 스푸핑 공격
ARP 스푸핑 공격
- MAC 주소를 속이는 것
- 클라이언트에서 서버로 가는 패킷이나 서버에서 클라잉너트로 가는 패킷이 공격자에게 향하게 하여 랜 통신 흐름 왜곡
- 과정
- 공격자는 서버의 클라이언트에게 10.0.02에 해당하는 가짜 MAC 주소 CC를 알리고 서버는 10.0.03에 해당하는 가짜 MAC 주소 CC를 알림
- 공격자가 서버의 클라이언트 컴퓨터에 서로 통신하는 상대방을 자기 자신을 알렸기에 서버와 클라이언트는 각각 공격자에게 패킷을 보냄
- 공격자는 패킷을 읽고, 서버가 클라이언트에 보내려던 패킷은 클라이언트에 보내주고, 클라이언트가 서버에게 보내려던 패킷은 서버에 보냄
IP 스푸핑 공격
- IP 주소를 속이는 것 , 다른 사용자가 IP를 강탈하여 권한 획득
- 트러스트를 맺고 있는 서버와 클라이언트를 확인한 후 클라이언트에 서비스 거부 공격을 하여 연결 X
- 클라이언트의 IP 주소를 확보하여 실제 클라이언트처럼 패스워드 없이 서버에 접근
- 트러스트
- 클라이언트의 정보를 미리 기록
- 합당한 클라이언트가 서버 접근 시 아이디 패스워드 없이 로그인 허락
- 설정하려면 유닉스에서 /etc/host.equiv 파일에 클라이언트의 IP와 접속 가능한 아이디 등록
200.200.200.200 root 201.201.201.201 + #1 200.200.200.200에서 root 계정이 로그인 시도하면 패스워드 없이 로그인 허락 #2 201.201.201.201에서는 어떤 계정이든 로그인 허락 #3 (+는 모든 계정, ++는 IP,아이디 상관없이 모두 로그인 허용)
- IP 스푸핑의 서버 접근
- 공격자가 해당 IP를 사용하여 접속하면 스니핑으로 패스워드 알 필요 X
- ICMP 리다이렉트
- 네트워크 계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알려 패킷의 흐름을 바꾸는 공격
DNS 스푸핑 공격
- 실제 DNS 서버보다 빨리 공격 대상에게 DNS response 패킷을 보내어 공격 대상이 잘못된 IP 주소로 웹 접속을 하도록 유도
- 인터넷 익스플로어에 사이트 주소 입력하고 Enter 눌렀을 때 쇼핑몰이나 포르노 사이트 뜰 경우
- 정상적인 DNS 스푸핑
- DNS 스푸핑 공격 : DNS Query
- 공격자는 클라이언트가 DNS 서버로 DNS query 패킷을 보내는 것을 확인, 스위칭 환경인 경우 클라이언트가 DNS query 패킷을 보내면 이를 받아야 하므로 ARP 스푸핑과 같은 선행 작업 필요
- 공격자는 로컬에 존재하므로 지리적으로 DNS 서버보다 가까우므로 DNS 서버가 올바른 DNS response 패킷을 보내주기 전에 클라이언트에 위조된 DNS response 패킷을 보낼 수 있다.
- 클라이언트는 공격자가 보낸 DNS response 패킷을 올바른 패킷이라 인식하고 웹에 접속, 멀리 떨어진 서버가 보낸 패킷은 삭제
- DNS 스푸핑 공격 대응책
- 중요 서버에 DNS query를 안 보내면 됨
- 먼저 시스템 메모리 정보 확인후 hosts 파일에 등록된 정보 확인
- 중요 접속 서버의 URL에 대한 IP를 파일에 등록하면 되지만 모든 서버 IP 등록은 X
- 중요 서버에 DNS query를 안 보내면 됨
5. 세션 하이재킹 공격
세션 하이재킹 공격
- 세션 가로채기
- 현실 세계에선 세션 하이재킹을 하려면 몇 가지 조건들이 충족되야함
- TCP 세션 하이재킹
- 공격자가 원하는 접속만 공격 대상이 생성하면 네트워크 공격으로 세션 빼앗을 수 있음
- 기본 단계
- 클라이언트와 서버 사이 패킷을 통제
- 서버에 클라이언트 주소로 연결을 재설정하기 위한 RSTreset 패킷을 보냄
- 공격자는 클라이언트 대신 연결되어 있는 TCP 연결을 그대로 물려받음
- MAC 주소를 고정하는 방법은 ARP 스푸핑을 막아주므로 세션 하이재킹 막음 X
6. 무선 네트워크 공격과 보안
- 유선 랜 네트워크 확장용
- 내부의 유선 네트워크에 AP 장비 설치
- 무지향성 안테나
- 주로 봉 형태, 전파 수신에 방향성 X(4개 이상 방향성)
- 지향성 안테나
- 수직과 수평으로 나뉨
- 통신 거리가 더 김
- 쟁반 또는 접시 모양
AP 보안
- 물리적인 보안 및 관리자 패스워드 변경
- AP는 전파가 건물 내에 한정되도록 전파 출력 조정
- SSID 브로드캐스팅 금지
- SSID : 무선 랜 네트워크 검색 시 확인할 수 있는 AP목록 중 이름으로 표시 된 것
- 높은 수준의 보안 권한이 필요한 무선 랜은 대부분 SSID 브로드캐스팅을 차단
무선 랜 통신의 암호화
- 암호화된 통신을 수행하는 네트워크에 접근 시도시 [네트워크 보안 키 입력] 창이 나타남
- WEP
- 무선 랜 통신을 암호화하기 위해 802.11b 프로토콜부터 적용
- RC 4 암호화 알고리즘을 기본
- 64비트는 40비트, 128비트는 104비트의 RC 4키를 사용
- WPA-PSK
- 802.11i 보안 표준의 일부분 WEP 방식 보안의 문제점을 해결하기 위해 만들어 짐
- WPA-개인, WPA-엔터프라이즈로 규정, 무선 랜 인증 방식에 사용되는 모드에 따른 구분