728x90

인증방식의 종류(Cookie & Session & Token)


서버가 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키,세션,토큰 3가지 방식이 존재합니다.

 

 

Cookie인증

쿠키는 Key-Value 형식의 여러개의 문자열 형식이라 생각하면 됩니다.

우리가 크롬을 통해 네이버라는 웹사이트에 방문할경우, 네이버가 사용하고 있는 서버를 통해 클라이언트의 브라우저에

설치되는 작은 기록 정보 파일입니다.

각 사용자마다 브라우저에 정보를 저장하니 고유 정보 식별이 가능한것

 

(크롬 개발자모드 F12를 통해 확인할수있다)

 

Cookie 인증방식

 

1.클라이언트가  서버에 요청(requests)을 보낸다.

 

2.서버는 클라이언트 접속요청에 대한 응답(response)을 작성하는데, 클라이언트 측에 저장하고 싶은 정보의 응답헤더의 Set-Cookie에 담는다

 

3. 이후 클라이언트는 서버에 대한 요청(requests)를 보낼때마다 2번 과정에서 설정한 쿠키값들을 요청헤더(requests header)에 담아서 보내고 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별함 

 

 

이러한 Cookie 인증방식의 단점은

보안에 취약하며 , 쿠키에는 용량제한이 있어 많은정보를 담을수없다. , 쿠키의 사이즈가 커질수록 네트워크에 부하가 심해진다.

728x90
728x90

실습은 리눅스 Ubuntu 가상환경에서 진행됩니다. 

 

 

SCAPY 란?


Scapy는 패킷 조작 프로그램으로 다양한 프로토콜의 패킷을 생성/전송/캡처 작업을 수행할수 있으며

hping,nmap의 85% arpspoof, arp-sk, tcpdump, tethereal, p0f등을 대체 할수있습니다.

 

 

Scapy 설치페이지


https://scapy.readthedocs.io/en/latest/

 

Welcome to Scapy’s documentation! — Scapy 2.4.5. documentation

© Copyright 2008-2021 Philippe Biondi and the Scapy community. Revision 7e161f1d.

scapy.readthedocs.io

 

실습을 위한 기본 개념 + Scapy 실습 환경 구축


스캔(Scan): 서버의 작동 여부와 서버가 제공하는 서비스를 확인

 

 

국내에서 스캐닝은 불법입니다. 절대로 공개되어 있는 IP/도메인에 대해 스캐닝하면 안됨

제48조(정보통신망 침해행위 등의금지) 

 

Scapy 실습 환경 구축(리눅스 환경 cmd)

> sudo apt-get update

> sudo apt-get upgrade

> sudo scapy

> sudo apt-get install scapy

> sudo apt-get upgrade scapy

 

#기본명령어

ls() # Layer 리스트 보여줌

ls(TCP)  #TCP header 구조

ls(IP) #IP header 구조

lsc() #scapy 명령어/함수리스트 

conf #환경설정

sniff() #패킷 스니핑

str() #문자열 정보보기

hexdump() #16진수 코드보기

traceroute("naver.com") #hop 추적

 

 

Scapy 실습(패킷 생성과 전송)


CMD에서 scapy 명령어를 통해 scapy실행

 

 

 

frame=Ether()/IP()/TCP()/Raw(load="heelo")

frame.show()

frame=Ether()/IP(ttl=20)/TCP()/Raw(load="hi")

frame.show()

str(frame) #16진수 문자열출력

hexdump(frame) #16진수 덤프

 

#SYN/ACK Packet 
> pkt =IP(dst="192.168.122.101")/TCP(dport=80,flags="SA)

#ICMP Packet
pkt = IP(dst=192.168.122.101")/ICMP(code=1,type=3)

#icmp packet , echo request packet
mypkt = IP(dst=192.168.122.101")/ICMP(code=0,type=8)

mypkt.summary()#패킷 한줄요약
mypkt.show()#패킷정보출력

#캡처한 패킷을 pcap 쓰기
wrpcap("file1.pcap", mypkt)
a = rdpcap("file1.pcap") #읽기
728x90
728x90

DoS(Denial of Service atack) : 혼자 쏘는 Dos공격

 

▶한 명 또는 그 이상의 사용자가 1개의 시스템의 리소스를 독점하거나 파괴함으로써

시스템 또는 서비스의 정상적인 운영을 할 수 없게 만드는 공격

 

▶시스템파괴, 시스템 자원 및 네트워크 자원 고갈

 

DDoS : 분산 Dos 공격

 

▶ Dos 공격의 일종 여러 대 공격자를 분산적으로 배치하여 동시에 DoS공격

▶ 여러 대의 컴퓨터를 일제히 동작하게 하여 특정사이트를 공격하는 방식

 

 

DoS공격 개념

 

▶ 자원 고갈형 

ex) SYN Flooding , Ping of Death , L7 Application공격(http get flooding)

 

▶ OS 또는 서버 프로그램, 네트워크 프로토콜의 취약점을 이용한 Dos

Land attack , Ping of Death Attack , Teradrop Attack

 

▶ Route 경로 조작

ICMP Router Discovery Attack

 

▶ Bandwidth 잠식형

Smurf Attack , UDP Diagnostic Port Denial service attack

 

SYN Flooding : 서버 자원의 리소스를 고갈시키는 공격

 

'SYN Received' 상태로 ACK 패킷을 기다리는것을 'BACKLOG에 빠졌다' 라고 말함

 

SYN FLOODING 과정

1. 공격자는 많은 숫자의 SYN패킷을 서버에 전송

2. 서버는 받은 SYN 패킷에 대한 SYN/ACK 패킷을 각 클라이언트로 보냄

3. 서버는 자신이 보낸 SYN/ACK 패킷에 대한 ACK패킷을 받지못함

4. 서버는 세션의 연결을 기다리게 되고 공격은 성공

 

SYN FLOODING 보안대책 -> 시스템 패치설치, 침입 차단,탐지 시스템 설치, IP주소 대역 차단, SYN_COOKIE 이용

 

 

Boink, Bonk, Teardrop : TCP 프로토콜의 오류제어를 이용한 공격

 

Bonk : 처음 패킷을 1번으로 보낸후 두번째와 세번째 패킷의 시퀀스 넘버를 모두 1번으로 조작해서 보냄

BOINK : 처음 패킷을 1번으로 보낸후 두번째 패킷은 101번, 세번째 패킷은 201번 으로 정상적으로 보내다가 중간에서 일정한 시퀀스 넘버를 보냄

Teardrop : 시퀀스 넘버를 일정하게 바꾸는 것을 넘어 중첩과 빈공간을 만들어 시퀀스 넘버가 좀더 복잡해지도록 섞음

 

▷ 전혀 맞지 않는 시퀀스 넘버때문에 피해 시스템이 패킷화된 데이터를 재조합하는데 혼란이 생겨 cpu에 과부하가 걸리게 됨

 

LAND 공격 : SYN Flooding 기법과 유사

 

송신지 IP주소를 스푸핑하여 SYN flooding 공격 이때 패킷을 전송할때 출발지ip주소와 목적지 ip주소의 값을 동일하게

 

수신 시스템은 송신지 주소가 자신의 주소와 동일하므로 응답패킷을 자신에게 송부하고 유휴시간까지 대기하게 되어 해당 시스템에 장애 발생

 

Land 공격법은 동시 사용자 수를 점유하여 cpu부하까지 올림

 

 

Smurf공격 

 

웹 Dos공격

 

Http 유형 http get flooding , 동적 http requests flooding , http cc attack , http slowloris , rudy

dns 유형 dns query flooding , dns application ddos

메일 유형  mail bomb

728x90

+ Recent posts