본문 바로가기
CS

[보안기술 3주차]

by 몰라몰라개복치 2021. 7. 5.

 

 

 

1. burpsuite->proxy->option->proxy listeners->edit 보면 bind to address에 loopback only, all interfaces, specific address가 있을텐데 이 세 개의 차이점 정확히 알기 
2. 인증서 공부. SSL 통신, SSL피닝이 무엇인지 공부해오기
3. 쿠키랑 세션의 차이점(+쿠키/세션 개념)
4. ACCEPT ENCODING 종류 무엇인지 알기(gzip, sdch etc)
5. http 패킷 구성요소 다시 정리+공부

 

 

 

 

 

Q1) bind to address에 loopback only, all interfaces, specific address 이 세 개의 차이점 알기

 

 

 

Q2) 인증서 공부, SSL 통신, SSL 피닝이 무엇인지 공부해오기

 

HTTP

  • 인터넷 상에서 정보를 주고 받기위한 프로토콜(양식과 규칙의 체계)
  • 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
  • 암호화되지 않은 방법으로 데이터를 전송한다. (악의적인 감청, 데이터 변조의 가능성)

 

HTTPS

  • 보안이 강화된 HTTP
  • Hypertext Transfer Protocol Over Secure Socket Layer의 약자
  • 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다.
  • HTTPS는 HTTP의 하부에 SSL과 같은 보안계층을 제공함으로써 동작한다.

 

 

HTTPS는 HTTP를 안전하게 만드는 방식이라고 보면 된다.

 

 

 

SSL V TLS

같은 말이다. 네스케이프에 의해서 SSL이 발명되었고, 이것이 점차 폭넓게 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다. TLS 1.0은 SSL 3.0을 계승한다. 하지만 TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있다.

 

 

 

 

 

SSL 디지털 인증서

SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서.

클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달.

클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행.

 

SSL과 SSL 디지털 인증서를 이용했을 때의 이점이다.

  • 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.

 

 

SSL 인증서의 내용

SSL 인증서에는 다음과 같은 정보가 포함되어 있다.

  1. 서비스의 정보 (인증서를 발급한 CA, 서비스의 도메인 등등)
  2. 서버 측 공개키 (공개키의 내용, 공개키의 암호화 방법)

 

SSL의 핵심은 암호화다. SSL에서 사용하는 암호화 기법들을 보자.

 

 

 

 

(1) 대칭키

키(key): 암호를 만드는 행위인 암호화를 할 때 사용하는 일종의 비밀번호

 

이 키에 따라서 암호화된 결과가 달라지기 때문에 키를 모르면 암호를 푸는 행위인 복호화를 할 수 없음

대칭키는 동일한 키로 암호화와 복호화를 같이 할 수 있는 방식의 암호화 기법을 의미

 

 

 

(2) 공개키

암호를 주고받는 사람들 사이에 대칭키를 전달하는 것이 어렵다는 점이 단점이 대칭키를 보안하기 위해 나온 암호화 방식

 

공개키 방식은 두개의 키를 갖게 되는데 A키로 암호화를 하면 B키로 복호화 할 수 있고, B키로 암호화하면 A키로 복호화 할 수 있는 방식 => 두개의 키 중 하나를 비공개키(private key, 개인키, 비밀키라고도 부른다)로하고, 나머지를 공개키(public key)로 지정

 

공개키가 유출된다고해도 비공개키를 모르면 정보를 복호화 할 수 없기 때문에 안전. 공개키로는 암호화는 할 수 있지만 복호화는 할 수 없다는 이유

 

 

 

 

 

 

SSL 통신과정

  • 컴퓨터와 컴퓨터가 네트워크를 통해서 통신을 할때 핸드쉐이크 -> 세션 -> 세션종료 의 과정을 거친다.
  • 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행한다.
  • 핸드쉐이크의 목적은 아래와 같다.
    • 프로토콜 버전번호 교환
    • 양쪽이 알고 있는 premaster secret 키 생성 및 교환
    • 양쪽의 신원 인증
    • 채널을 암호화 하기 위한 임시 세션 키 생성

 

 

 

 

 

SSL 피닝

 

서버에서 신뢰받는 검증 데이터에 인증하는 것을 의미하는데, 클라이언트를 검사하는 것을 포함

중간자(MITM)공격이나 다른 해킹으로부터 사용자를 보호하는 '공개키 게시(pinning)' 기능

 

*중간자(MITM) 공격: 해커가 사용자 기기와 웹서버 사이에 오가는 민감한 데이터를 가로채거나 조작하는 수법

 

 

 

 

 

 

 

 

 

 

 

 

Q3)  쿠키랑 세션의 차이점(+쿠키/세션 개념)

 

HTTP 프로토콜의 특징

(1) 비연결 지향

 HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 단발성의 특징이 있음

(2) 상태 정보를 유지하지 않음

 연결을 끊는 순간 클라이언트와 서버와의 통신이 끝나며 상태 정보는 유지하지 않는 특성

두 가지의 특성을 보완하기 위해서 사용

 

비연결지향 특성으로 계속해서 통신 연결을 유지하지 않기 때문에 리소스 낭비가 줄어든다는 장점이 있지만 통신 할때마다 새로 연결을 해줘야 하기때문에 클라이언트는 그때마다 인증을 해주어야한다는 단점이 있음


EX) 쿠키와 세션을 사용하지 않으면 쇼핑몰에서 무언가를 구입하려고 로그인을 해도, 페이지를 이동할때마다 계속 로그인을 해주어야 한다.

 

 

 

쿠키(CooKie)

쿠키는 클라이언트 로컬에 저장되는 키와 밸류가 들어있는 저용량 데이터 파일
쿠키에는 이름, 값, 만료날짜 (쿠키 저장기간), 경로 정보가 포함
쿠키는 일정시간 동안만 데이터를 저장할 수있다. 그래서 로그인 상태 유지 같은 곳에서 쓰인다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장하였다가 참조한다.

 

 

과정

(1) 브라우저에서 웹페이지 접속

(2) 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트의 로컬(하드)에 저장

(3) 클라이언트가 재요청 시 웹페이지 요청과 함께 쿠키값도 전송

(4) 지속적으로 로그인 정보를 가지고 있는것처럼 사용

 

 

쿠키의 한계

1.300개까지 만 저장가능, 하나의 도메인에 20개의 값만 보유가능, 하나의 쿠키값은 4KB까지만 저장
2.사용자의 요청없이도 브라우저가 request시에 request header을 넣어 자동으로 서버에 전달

 

 

 

 

 

 

세션(Session)

세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리.
일정 시간동안 같은 브라우저로 부터 들어오는 요구를 하나의 상태로 보고 그 상태를 유지하는 것

다시말해 웹 브라우저를 통해 웹서버에 접속한 이후부터 그 브라우저를 종료 할 때까지 상태 유지

 

 

클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID를 부여함.

 

 

 

과정

(1) 클라이언트는 서버접속시 세션 ID를 발급받음

(2) 클라이언트는 세션ID에 대해 쿠키를 사용해서 저장하고 가지고 있음

(3) 서버요청시에 이 쿠키의 세션ID를 서버에 전달하여 사용

(4) 서버는 받은 세션ID로 세션의 클라이언트정보를 가져오고 서버요청을 처리하여 클라이언트에게 응답

 

 

 

 

 

 

쿠키와 클라이언트의 차이

1. 저장위치

쿠키: 클라이언트에 파일로 저장

세션: 서버에 저장

 

2. 보안

쿠키: 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스나이핑 당할 우려가 있어서 보안 취약
세션 : 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 떄문에 비교적 안전 (보안 면에서 쿠키보다 우수)

 

3. 라이프 사이클

쿠키 : 만료시간은 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아 있을수 있음.

만료기간을 넉넉히 잡아두면 쿠키삭제 할 때까지 유지될수도 있음.
세션 : 만료기간을 정할수는 있지만 브라우저가 종료되면 그 에 상관없이 삭제.

 

4. 속도

쿠키 : 쿠키에 정보가 있기 떄문에 서버에 요청시 속도가 빠르다.
세션 : 정보가 서버에 있기 떄문에 처리가 요구되어 비교적으로 느림

 

 

 

 

 

 

 

 

 

 

 

 

Q4) ACCEPT ENCODING 종류 무엇인지 알기(gzip, sdch etc)

 

Accept-Encoding 요청 HTTP 헤더는, 보통 압축 알고리즘인, 클라이언트가 이해 가능한 컨텐츠 인코딩이 무엇인지를 알려준다.

 

gzip

32비트 CRC와 함께 Lempel-Ziv coding (LZ77)를 사용하는 압축 포맷.

파일 압축에 쓰이는 응용 소프트웨어. gzip은 GNU zip의 준말이며, 초기 유닉스 시스템에 쓰이던 압축 프로그램을 대체하기 위한 자유 소프트웨어.

 

compress

Lempel-Ziv-Welch (LZW) 알고리즘을 사용하는 압축 포맷.

 

deflate

deflate 압축 알고리즘과 함께 zlib 구조를 사용하는 압축 포맷.

 

br

Brotli 알고리즘을 사용하는 압축 포맷.

 

identity

식별 함수(압축하지 않거나 수정하지 않은 경우)를 가리킨다.

이 값은 존재하지 않은 경우에도 항상 수용 가능하다고 여겨짐(*헤더 내에 아직 나열되지 않은 컨텐츠 인코딩이라도 일치)

헤더가 존재하지 않을 경우, 기본값이 되지만 모든 알고리즘이 지원된다는 것을 의미하지는 X, 단지 표현된 선호 대상이 없다는 것을 의미합니다.

 

;q= 

(q값 가중치)weight라고 부르는 상대적인 퀄리티 값을 사용하여 표현한 선호도에 따라 배치된 값

 

 

SDCH

구글 크롬의 데이터 압축 방식. 크롬 브라우저 나름의 패킷 보안 방식으로 보임

 

 

 

 

 

 

 

 

 

 

Q5) http 패킷 구성요소 다시 정리+공부

 

 

1. HTTP

인터넷에서 브라우저와 웹서버 간에 문서를 전송하기 위해 사용되는 통신 규약. 

 Header와 Body로 구성

-Header: 보낼 메시지의 형식

-Body: 실제 보낼 메시지의 내용을 정의

 

HTTP 메시지는 TCP를 통해 최소 1개 이상의 패킷으로 분할되어 전송

 

 

 

http 패킷 구조

클라이언트가 http 서버에 요청을 하면 http 서버는 상태 코드로 응답하게 된다.

 

크롬 => 개발자 도구(F12) => Settings => Network에서 Preserce log 체크

 

그 이후 파일을 선택하자 패킷 정보들을 확인할 수 있었다.

 

 

 

 

 

 

1. Method
(1) GET

URL에 해당하는 자료를 제공해 줄 것을 요청 ․웹서버에 저장된 정보를 단순히 요청하기 위해 사용하는 방법 으로 클라이언트는 GET 지시자와 함께 URL 정보를 웹서버로 전달하면 웹서버는 해당 정보를 브라우저로 회신하게 됨

(2) POST
클라이언트에서 웹서버로 데이터를 전송할 때 사용하는 방법으로 웹서버가 처리할 수 있는 자료(예:ID, PWD 등)를 전달할 때 사용 

(3) HEAD
GET과 같은 요청이지만 자료에 대한 정보(meta-information) 만을 수신하는 요청 

(4) PUT

해당 URL에 자료를 저장하는 요청

(5) DELETE

해당 URL의 자료를 삭제하는 요청

(6) TRACE

이전에 요청한 내용(히스토리)을 요청
(7) OPTIONS
서버가 특정 URL에 대해 어떠한 HTTP 지시자를 지원하는 지 질의하는 요청

(8) CONNECT

프록시(Proxy)가 사용하는 요청 

 

get과 post 방식의 차이는 다음 블로그에 잘 정리되어 있음

https://mangkyu.tistory.com/17

 

[Web] GET과 POST의 비교 및 차이

사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL(Uniform Resource Locator)을 입력하였을 뿐이지만 서버

mangkyu.tistory.com

 

 

 

 

 

 

 

2. HOST

호스트 필드는 요청되는 인터넷 호스트와 포트 번호를 식별한다. 포트 번호가 정의되지 않으면 서비스에 대한 기본 포트 번호가 정의된다.

 

 

 

 

3. REQUEST HEADER FIELDS

클라이어트가 요청에 대한 추가 정보를 전달. 프로그래밍 언어 방식의 매개 변수에 상응하는 의미를 함께 보내는 요청 수식자의 역할을 한다.

 

  • 요청 헤더 : 키-값 방식으로 들어감
    • Accept : 클라이언트가 받을 수 있는 컨텐츠
    • Cookie : 쿠키
    • Content-Type : 메세지 바디 종류
    • Content-Length : 메세지 바디 길이
    • If-Modified-Since : 특정 날짜 이후에 변경됐을 때만
    • User-Agent: 클라이언트 소프트웨어의 이름과 버전
    • Accept-Language: 클라이언트가 인식할 수 있는 언어로 우선순위 지정
    • Accept-Encoding클라이언트가 인식할 수 있는 인코딩(압축방법)
  • 요청 바디(엔티티)
  • CONTENT-TYPE과 BODY
    • Content-Type과 Body
    • FORM 형태: URL ENCODED 방식

 

 

 

 

 

4. RESPONSE

 

  • Date: 현재 날짜
  • Content-Type: 요청한 파일의 MIME 타입
  • Server: 웹서버 정보
  • HTTP 버전과 응답코드 (200 = 성공)

 

status 코드

200: ok

403: forbidden

404: Not found

500: Internal Server Error

503: Servuce Unavailable

 

 

 

 

 

 

 

 

출처:

https://www.zerocho.com/category/HTTP/post/5b594dd3c06fa2001b89feb9

 

https://opentutorials.org/course/228/4894

https://dokydoky.tistory.com/464?category=377272 

https://xapilla.tistory.com/11

https://velog.io/@stay136/%EA%B8%B0%EC%88%A0-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

https://itstarter.tistory.com/133 

 

https://darksoulstory.tistory.com/68

 

https://goldory.tistory.com/entry/HTTP-%ED%8C%A8%ED%82%B7-%EB%B6%84%EC%84%9D

 

'CS' 카테고리의 다른 글

NAT 개념 공부  (0) 2021.07.27
보안기술 4주차  (0) 2021.07.20
OWASP TOP 10, 국정원 8대 취약점  (0) 2021.06.28
[1주차] 보안 기술 공격:: 크롬 개발자 모드 공부해보기  (0) 2021.06.28
네트워크 보안 과제[aws]  (0) 2020.11.25