반응형
웹보안
Encoding Schema
정의:각종 정보를 재현시킬 수 있는 가장 적합한 전송 파형으로 변환하는 것을 말한다. 전신의 모르스 부호도 그 하나로, 정보를 숫자화하는 것도 그것을 지칭하는 것이다.
이유: 데이터를 안전하게 전달하기위해
웹에서 사용되는 인코딩 종류:
ASCII
URL Encoding
Force Full URL Encoding
HTML Encoding
Unicode Encoding
MS-Script
Base64 Encoding
Etc..
ASCII:
▲American Standard Code for
Information Interchange 의 약자
▲미국 정보 교환 표준 부호
▲영문 알파벳을 사용하는 대표적인 문자 인코딩 방법
▲7Bit로
이루어져 있다.
( 총
128개의
문자)
ASCII 표
URL Encoding:
▲URL에는 US-ASCII의
문자들중 출력이 가능한 문자들만 포함
▲URL에
포함되는 문자들을 안전하게 웹 서버에 전달 되도록 특수한 기능을 가진 문자들을 브라우저가 인코딩하여 전달
▲원래 문자열의 Hex값
앞에 %
를
사용
Force Full URL Encoding:
▲강제적으로 모든 문자를 URL
Encoding 하는
기법
▲IDS 등을
우회하기 위한 용도로 사용될 수 있음
HTML Encoding:
▲HTML문서
내에서 특별한 기능을 수행하는 문자들을 안전하게 브라우저에 표현하기 위해 사용하는 인코딩 방법
▲XSS 공격에
대응하기 위한 방법으로 사용됨(
XSS ( Cross Site Scripting )
공격자가 악성 Script를 작성한 후 웹 서버를 경유하여 다른 사용자에게 전달하는 공격 기법입니다.
Script를
받은 사용자의 브라우저는 이 Script를
수행하게 됩니다.)
크롬으로 들어가서 네이버에 "<>" 이걸 치고 검색하시고 오른쪽 마우스 눌러서 페이지 소스 보기
누르시면 html encoding 되는걸 볼수 있습니다.
Unicode Encoding:
▲전 세계에 존재하는 다양한 문자코드를 표현하기 위해 만들어진
인코딩방법
▲16Bit Unicode Encoding을
이용하는 방법은 URL
Encoding과
유사
MS-Script:
▲클라이언트 측에 전달되는 JScript의
로직을 보호하기 위해 사용되는
인코딩 방법
▲Microsoft 사에서
제공하는 인코딩 기법으로 Internet Explorer(IE)에서만
사용이 가능하다
(IE에는 는 MS Script decoder가
내장되어 있음)
▲인코딩 되어있는 코드인 경우에는 아래와 같이 인코딩 되었음을
브라우저에게 알려주게 된다.
Base64 Encoding:
▲MIME에
주로 사용(MIME (Multipurpose Internet Mail
Extensions)는 전자우편을 위한 인터넷 표준 포맷이다. 전자우편은
7비트
ASCII 문자를
사용하여 전송되기 때문에, 8비트
이상의 코드를 사용하는 문자나 바이너리 파일들은 MIME
포맷으로 변환되어 SMTP로
전송된다. 실질적으로
SMTP로
전송되는 대부분의 전자우편은 MIME 형식이다. MIME 표준에
정의된 content types은
HTTP와
같은 통신 프로토콜에서 사용되며, 점차
그 중요성이 커지고 있다.)
▲Web인증
중 하나인 기본인증(Basic
Authentication)에도 사용됨
▲2진
데이터를 ASCII
형태의
텍스트로 표현 가능
▲64개의
문자로 구성됨
l알파벳 대문자 : 26자
l알파벳 소문자 :
26자
l숫자 : 10자
l특수문자 : + / 2자
▲6Bit로
한 문자를
표현
▲= 는 padding
값으로
사용
( n%3 만큼
패딩됨 )
Base64 Encoding 하는방법
항상 4개의 문자로 떨어져야함
3문자로 표현할때
아스키코드값 구한후 2진수로 변환
base64 6비트 단위로 끊어서 표현
10진수로 바꿔서 base64표 를 보고 바꾸기
12345678 12345678 12345678
123456 781234 567812 345678
6비트 단위로 표현
M a n
ascii 77 97 110
이진수 01001101 01100001 01101110
base64 010011 010110 000101 101110
19(T) 22(W) 5(F) 46(u)
Man=TWFu
-----------------------------------------------------------------
2개 문자 표현
M a
01001101 01100001
010011 010110 000100 000000
19(T) 22(W) 4(E) =
TWE=
-----------------------------------------------------------------
W e b
87 101 98
01010111 01100101 01100010
010101 110110 010101 100010
21 54 21 34
V 2 V i
W e
87 101
01010111 01100101
010101 110110 010100 000000
21 54 20 =
V 2 U =
W
87
01010111
010101 110000 000000 000000
21 48 = =
V w = =
paros 를 이용해서 바로 인코딩 할수도 있습니다.
Web Authentication
Basic Authentication
u웹 서버에 보낼 아이디와 암호를 Base64방식으로
인코딩 후 전달
u사용자 계정은 시스템 계정이 이용됨
HTTP Digest Authentication
uChallenge / Response / Nonce
uWindows의
경우 Domain
계정을 이용하여 인증
uMD5 Hash 값
이용
HTTP NTLM Authentication
uChallenge / Response 방식
uExplore와
IIS에서만
사용가능
u호환성을 위해 웹 인증에 NTLM은
사용되지 않음
Anonymous
Authentication
uWeb Sever에서
제공하는 익명계정을 이용하여 서버의 자원을
클라이언트에게 제공
Form
Based Authentication
uHTML에서
지원하는 Form
태그를
이용하여 인증정보를 서버 측에 전송
u대부분의 웹 애플리케이션에서 사용하는 방식
uSSL을
이용한 암호화가 필요함
Basic Authentication
클라이언트는 인증에 사용되는 ID와
Password를
Base64방식으로
인코딩 하여 웹 서버에 전달한다. Base64방식을
사용하기 때문에 Sniffing에
의해 ID와
패스워드가 노출될 수 있다.
basic인증을 하도록 설정
basic 인증하도록 설정된 웹사이트 접근
basic 인증하도록 설정된 웹사이트 패킷 확인하기
로그인 후 패킷 확인 basic인증으로 되어있으면 base 64 로 인코딩 되어 있으므로 Sniffing에 의해 ID와 패스워드가 노출될 수 있다.
Form Based Authentication
uHTML Form 태그를
이용하여 사용자로부터 ID와
Password를
입력 받은 후 HTTP를
이용하여 웹 서버에 전달한다.
u웹 서버에서 가장 많이 사용하는 인증 방식
로그인 후 패킷 분석하면 평문으로 아이디와 패스워드가 드러나는것을 확인할수 있다.
평소에는 http 사용
로그인시 https 사용
반응형