Knowledge/웹보안 / / 2016. 7. 11. 02:42

웹보안(Encoding,WEB AUTHENTICATION)

반응형


웹보안


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 typesHTTP와 같은 통신 프로토콜에서 사용되며, 점차 그 중요성이 커지고 있다.)
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 방식
uExploreIIS에서만 사용가능
u호환성을 위해 웹 인증에 NTLM은 사용되지 않음




Anonymous Authentication
uWeb Sever에서 제공하는 익명계정을 이용하여 서버의 자원을
클라이언트에게 제공




Form Based Authentication
uHTML에서 지원하는 Form 태그를 이용하여 인증정보를 서버 측에 전송
u대부분의 웹 애플리케이션에서 사용하는 방식

uSSL을 이용한 암호화가 필요함


Basic Authentication

클라이언트는 인증에 사용되는 IDPasswordBase64방식으로 인코딩 하여 웹 서버에 전달한다. Base64방식을 사용하기 때문에 Sniffing에 의해 ID와 패스워드가 노출될 수 있다.


basic인증을 하도록 설정



basic 인증하도록 설정된 웹사이트 접근



basic 인증하도록 설정된 웹사이트 패킷 확인하기




로그인 후 패킷 확인 basic인증으로 되어있으면 base 64 로 인코딩 되어 있으므로 Sniffing에 의해 ID와 패스워드가 노출될 수 있다.





Form Based Authentication

uHTML Form 태그를 이용하여 사용자로부터 IDPassword를 입력 받은 후 HTTP
이용하여 웹 서버에 전달한다.

u웹 서버에서 가장 많이 사용하는 인증 방식


로그인 후 패킷 분석하면 평문으로 아이디와 패스워드가 드러나는것을 확인할수 있다.



평소에는 http 사용



로그인시 https 사용






반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유