Download presentation
Presentation is loading. Please wait.
1
인증(Authentication) & 인가(Authorization)
[Hacking Exposed] 웹 기획. 운영자를 위한 해킹과 보안중에서 인증(Authentication) & 인가(Authorization) 이성현 한남대학교 컴퓨터공학과 네트워크 실험실
2
목차 Part I : 인증절차 Part II : 웹 인증 공격 Part III : 인증회피하기 & 요약
Part IV : 웹 인가 공격 Part V : 인가공격 방법론
3
목차 인증 절차 웹 인증 공격 인증 회피하기 & 요약 웹 인가 공격 인가 공격 방법론 사례 연구 및 맺음말
4
(Authentication Mechanisms)
Part I : 인증 절차 (Authentication Mechanisms)
5
HTTP 인증 : Basic & MD 기본 인증(Basic Authentication)
웹 어플리케이션에서 이용할 수 있는 가장 기본적인 형태의 인증 사용자 이름과 패스워드를 요구하여 이를 처리 입력된 사용자 이름과 패스워드를 Base 64 알고리즘을 사용하여 부호화하여 전송 해커들에 의해 쉽게 해독할 수 있음 기본 인증 프로토콜의 취약성을 내재 기본 인증에 128 bit SSL 암호화 프로토콜의 적용을 강력히 권장
6
HTTP 인증 : Basic & MD 기본 인증(Basic Authentication)
7
HTTP 인증 : Basic & MD 기본 인증(Basic Authentication) test:test
root]# perl bd64.pl dGVzdDp0ZXN0 test:test
8
HTTP 인증 : Basic & MD 다이제스트(Digest) 기본 인증보다 높은 보안 수준을 제공하기 위해 설계
RFC 2617(HTTP Authentication: Basic and Digest Access Authentication ) Challenge-response 인증 모델을 기본으로 함 기본 인증과 유사한 절차로 동작 인증 요청에 대한 응답 Nonce(랜덤 값) 전송 후 메시지 다이제스트 암호 함수 사용 메시지 다이제스트 암호 함수 사용자 이름, 패스워드, 랜덤 값, HTTP 방법, 요구된 url 값을 다이제스트
9
User ID + P/W + Nonce + HTTP + URL
HTTP 인증 : Basic & MD 다이제스트(Digest) Nonce & 메시지 길이 확장 User ID + P/W User ID + P/W + Nonce + HTTP + URL 전사 공격 사전 전사 공격 사전 ? ? MD5 Message Digest MD5 Message Digest 동일 길이의 다이제스 값 동일 길이의 다이제스트 값
10
HTTP 인증 : Basic & MD 다이제스트(Digest) 48e3dd6dd52183781484827d4c470b7c
출력되는 메시지의 길이 변경 가능 root]# perl md5-encode.pl shlee 48e3dd6dd d4c470b7c
11
HTTP 인증 : Basic & MD 통합 윈도우(NTML) HTTP에 대한 마이크로소프트사의 독점 NT LAN 관리자
NTLM 인증 또는 윈도우 NT challenge/response로 알려짐 마이크로소프트사의 인터넷 익스플로러와 IIS 웹 서버 사이에서만 동작 Challenge-response 메커니즘을 사용하여 다이제스트 인증과 동일한 방식으로 작동 NTML 증명서와 NTLM 인증 프록시 서버를 통하여 강력한 보안 기능 제공 대부분의 인터넷 사이트에서 다양한 브라우저를 지원하기 때문에 일반적으로 수행하지 않음
12
HTTP 인증 : Basic & MD 협의(Negotiate) NTML의 확장으로 윈도우 2000에서 소개
HTTP에 대해 Kerberos 기본 인증을 제공 사용되고 있는 보안 수준을 결정하기 위해 협의 과정을 사용 통용 호스트가 윈도우 2000일 경우 매우 강력한 보안 제공 인트라넷을 제외한 경우 제한적이며 일반적이지 않음 외부적인 보안 공격에 강함 Kerberos 인증 메커니즘의 사용
13
HTTP 인증 : Basic & MD 증명서(Certificate) – 기본(Basic) 강력한 사용자 인증 방법
공개키 암호와 증명서를 사용 증명서 이용 물리적 토큰 사용자 인증서를 하드웨어(스마트 카드)에 저장 스마트 카드 판독기를 통해 사이트에 접근 클라이언트 증명서 접근할 수 있는 클라이언트에 증명서를 배부 엄청난 비용 부담으로 작용 제한된 사용자를 가진 사이트에 유용 현재까지 알려진 공격 방법이 없음
14
HTTP 인증 : Basic & MD 복합적인 인증 방법 다양한 방법을 복합적으로 적용하여 안전한 인증을 제공
보안 수준 서버 요구 사항 클라이언트 설명 기본 낮음 서버에서 유효한 계정 Basic을 지원하는 대부분의 브라우저 클리어 텍스트로 패스워드 전송 다이제스트 중간 클리어 텍스트 패스워드 사용이 가능한 유효한 계정 HTTP1.1을 지원하는 프록시 서버 및 방화벽을 통하여 사용 가능 통합 윈도우 높음 유효한 윈도우 계정 버전2 이상의 인터넷 익스플로러(beros 인 경우 5 이상) 사설 인트라넷에 알맞음 인증서 클라이언트 인증서와 동일기관에서 발행된 서버 인증서 SSL 지원, 클라이언트-측 인증서 설치 인증서 배포 웹 인증 메커니즘에 대한 요약
15
폼-기반 인증(Forms-Based) 폼-기반 인증(Forms-Based Authentication)
HTTP와 SSL과 같은 기본 웹 프로토콜 특징에 의존하지 않음 HTML 태그들로 구성된 사용자 이름/패스워드 정보 입력 필드를 포함 <FORM>, <INPUT> 표준 웹 프로토콜에 의존하지 않기 때문에 폼-기반 인증을 수행하기 위한 표준화된 방법이 존재하지 않음 ASP.NET의 경우 사용자 아이디와 패스워드를 입력하는 두 개의 필드를 포함 로그인 버튼을 사용하여 입력된 데이터를 서버로 전송
16
폼-기반 인증(Forms-Based) 폼-기반 인증(Forms-Based Authentication) 사용자 아이디 입력 필드
사용자 패스워드 입력 필드 입력된 폼 데이터를 서버로 전송
17
폼-기반 인증(Forms-Based) 잠재적인 약점 쿠키들이 일시적으로 인증 토큰(token)을 저장하기 위해 사용
사용자가 웹 사이트에 대한 정보를 반복하여 입력할 필요가 없음 저장된 쿠키들에 대한 비 암호화 쿠키에 대한 조정에 무방비 유출된 경우 사용자 정보를 보호할 수 없다.(7장, 12장) 사용자 눈에 보이지 않는 태그 서버에 보내기 전에 공격자들에 의해 수정될 우려가 있음
18
패스포트(Passport) 마이크로소프트 패스포트 마이크로소프트사의 범용 SSI(Single Sign-in) 플랫폼
Ex) MSN, Hotmail, 메신저와 같은 동일 아이디 접근 가능 사이트 패스포트 인증 하부 구조 패스포트 SDK, API 제공 폼-기반 인증과 비슷하지만 사용자 인증시 패스포트 로그인 서버에서 제공하는 인증 쿠키를 받음 인증 쿠키(암호화된 키를 보유)를 통해 관련 서버에서 인증 받을 수 있음
19
패스포트(Passport) 마이크로소프트 패스포트 login.passport.com (3) (4) (5) (2) (1)
Client Partnet
20
패스포트(Passport) 패스포트 공격(Attacks Against Passport) 패스포트 인증의 중요한 문제점
의심스러운 사용자의 컴퓨터로부터 훔쳐진 패스포트 인증 쿠키를 사용하는 공격을 재현할 수 있음 제약 사항의 부족으로 패스워드 추측 공격을 받기 쉬움 최소 6문자 이상의 길이 외에는 제약사항이 없음 계정 락아웃(lockout)에 의한 시간동안 온라인 패스워드 추측 공격이 가능하도록 설계 계정 락아웃 동안에 패스워드의 초기화 가능
21
(Attacking Web Authentication)
Part II : 웹 인증 공격 (Attacking Web Authentication)
22
패스워드 추측 패스워드 추측 웹 인증을 파괴하는 가장 효과적인 기술
프로토콜의 취약성을 제외한 인증의 가장 큰 취약요소는 사용자 패스워드의 선택 문제 Ex) 사전에 사용된 단어, 신상 정보의 조합, 전화번호 등. 패스워드 추측은 자동화된 방법 또는 수동으로 수행될 수 있음 다양한 형태의 패스워드 추측 자동화 도구가 활용 웹 크래커(WebCracker) 브루투스(Brutus)
23
패스워드 추측 패스워드 추측 사용자 이름 추측 패스워드 추측 [NULL] Root, administrator, admin
[NULL], root, administrator, admin, password, [company_name] Operator, webmaster, backup [NULL], operator, webmaster, backup Guest, demo, test, trial [NULL], guest, demo, test, trial Member, private [NULL], member, private [company_name] [NULL], [company_name], password [known_username] [NULL], [known_username]
24
패스워드 추측 웹 크래커(WebCracker)
25
패스워드 추측 브루투스(Brutus)
26
패스워드 추측 패스워드 추측 대응 방법 강력한 패스워드 정책과 계정 로그아웃 정책 제한된 인증 실패시 계정을 블록 시킴
계정 블록에 대한 공격을 방어해야 함 일정 기간동안 블록 충분히 긴 패스워드 사용 Brute forcing 공격을 완화 시킴 폼-기반 인증에서 응답 페이지를 사용하지 못하도록 함 공격에 필요한 도구들을 무력화 시킴
27
세션 ID 예측과 Brute Forcing 세션 ID 세션 ID 공격에 대한 대응 방법
해커의 목표가 될 확률이 높음 세션 ID 유추 기법 ID 예측(ID Prediction) 전사 공격(Brute Forcing) 세션 ID 공격에 대한 대응 방법 예측하기 어려운 세션 ID를 설계 Ex) 난수 발생기를 통한 세션 ID 생성 Brute Force 공격을 방어하기 위한 충분히 큰 세션 ID 공간 확보 Ex) 128 비트
28
쿠키 파괴 쿠키(Cookie) 일반적으로 인증과 관계된 민감한 데이터 포함
쿠키가 패스워드 혹은 세션 ID를 포함할 경우, 해당 웹 사이트에 대한 성공적인 공격을 지원 쿠키의 획득을 위한 공통적인 방법 클라이언트측 스크립트 삽입을 통한 쿠키 획득 네트워크 트래픽 탐지기를 통한 쿠키 획득 Reverse-Engineering을 통한 쿠키 획득 쿠키들의 샘플을 통한 변화 추측 Bit-Flipping 공격 쿠키의 유효성 여부 판정후 비트 수정
29
쿠키 파괴 쿠키 파괴에 대한 대응 방법 스크립트의 삽입을 막음 쿠키에 인증과 관련한 민간함 데이터의 포함 금지 쿠키의 암호화
쿠키의 인증을 위한 MAC(Message Authenticity Code) 포함
30
SQL-백 로그인 폼들을 피하기 SQL 백-엔드 대부분의 사이트에서 사용자 인증을 위한 아이디와 패스워드를 데이터베이스에 저장
SELECT * from AUTHENTICATIONTABLE WHERE Username = ‘username input’ AND Password = ‘password input’ SELECT * from AUTHENTICATIONTABLE WHERE Username = ‘Username’ -- AND Password = ‘password input’ -- 이후는 주석으로 처리, 사용자에 대한 암호 확인을 제거하여 불법적인 접근 허용 SELECT * from AUTHENTICATIONTABLE WHERE Username = ‘Username’ AND Password = ‘DUMMYPASSWORD’ OR 1 = 1— OR 1=1의 첨부에 의하여 SQL 질의가 항상 참으로 해석, DUMMYPASSWORD에 의해 불법적인 접근 허용
31
SQL-백 로그인 폼들을 피하기 SQL 백-엔드 대응 방법 사용자 아이디/패스워드 입력에 대한 유효성 확인 사용자 아이디
대부분의 사용자 아이디가 잘 정의 숫자와 알파벳의 조합으로 일반적으로 6-10 문자의 길이를 가짐 패스워드 특수 문자를 포함하는 충분히 긴 패스워드 사용 입력 유효성을 판별하기 어려움 잠재적인 위험과 특수 문자들로 구성된 타협안 필요 인증과 관련된 소프트웨어 패키지의 최신성 유지
32
(Bypassing Authentication
Part III : 인증 회피하기 & 요약 (Bypassing Authentication & Summary)
33
인증 회피하기 & 요약 인증 회피하기 요약 인증은 많은 애플리케이션 프로그램 보안에서 중요한 역활을 차지
다양한 방법을 통하여 인증을 회피할 수 있음 적절한 방법을 통하여 적합한 인증 증명서를 제시하는 것이 필요 요약 인증은 민감하거나 기밀을 요하는 정보를 가진 웹 사이트의 보안에서 절대적인 역활을 차지 입력의 유효성은 웹 사이트의 해킹을 막을수 있는 좋은 방법 세션 ID를 허용할 경우 다음과 같은 속성을 확인 예측되지 않아야 함 추측할 수 없는 충분히 큰 키 공간을 확보
34
(Attacking Web Authorization)
Part IV : 웹 인가 공격 (Attacking Web Authorization)
35
인가(Authorization) 인가 인가를 통한 공격 루트 사용자가 애플리케이션에 로그인될 수 있는지를 결정
사용자가 접근할 수 있는 애플리케이션 프로그램을 결정 인가를 통한 공격 루트 잘못된 웹 서버 설정 동적으로 생성된 출력과 대립되는 형태 소스 코드 접근 디렉토리간 이동 제한된 정보에 접근하는 것이 목표
36
공격(The Attacks) 애플리케이션의 접근 통제 테스트 수평적 권한 확대 수직적 권한 확대 임의의 파일 접근
대등한 사용자 정보 주민등록번호 제한된 데이터가 아닌 사용자 수준에서의 이용 가능한 기능을 목표 수직적 권한 확대 높은 사용자 정보 관리자 아이디/패스워드 등의 정보 사용자 수준에서 제한된 기능과 데이터를 목표 임의의 파일 접근 데이터 증명서 또는 웹 문서 루트밖의 파일 정보 웹 서버를 목표
37
공격(The Attack) 역할 행렬(Role Matrix) 인가 감시 과정을 돕는 유용한 도구
애플리케이션 프로그램과 그것과 관계된 모든 사용자들의 목록을 포함 애플리케이션 프로그램이 사용자 형태의 결합을 포함할 때 유용 행렬 상태 정보의 확인을 도움으로써 인가 방법을 다룸 애플리케이션이 올바른 변수 이름을 상요하지 않을 경우 도움이 됨 각 파라미터에 한 문자를 할당할 경우 인가를 피하기 위한 파라미터 값 수정을 막지 못함 다양한 공격 시나리오를 유추할 수 있음
38
다른 사람의 UID를 결합하여 해당 정보를 볼 수 있음
공격(The Attack) 역할 행렬(Role Matrix) 역활 사용자 Admin 자신의 프로파일 보기 /profile/view.asp?UID=TB992 /profile/view.asp?UID=MS128 자신의 프로파일 수정 /profile/update.aspUID=TB992 /profile/update.asp?UID=MS128 다른 사람의 프로파일 보기 n/a /profile/view.asp?UID=MS128&EUID=TB992 사용자 삭제 /admin/deluser.asp?UID=TB992 다른 사람의 UID를 결합하여 해당 정보를 볼 수 있음
39
Part V : 방법론 (The Methodology)
40
방법론(The Methodology) 웹 인가 공격을 위한 시나리오 프로파일(Profile)
사용자 프로파일 정보의 열람 영역은? 프로파일 페이지는 어떤 파라미터 혹은 쿠키에 의존 하는가? 파라미터가 사용자 정보 또는 무작위 수를 나타내는가? 누군가 프로파일을 보기 위해 값들을 변화시킬 수 있는가? 장바구니(Shopping Carts) 장바구니 내용을 볼 수 있는 영역이 있는가? 장바구니 보기 페이지는 어떤 값에 의존하느가? 다른 사람이 장바구니를 보기 위해 값을 변화시킬 수 있는가?
41
방법론(The Methodology) 웹 인가 공격을 위한 시나리오 쇼핑 계산(Shopping Checkout)
‘구입하기’ 페이지는 어떤 값에 의존하는가? 다른 사람이 계산 페이지를 보기 위한 값을 변경시킬 수 있는가? 사용자의 정보를 담고 있는가? 공격자가 물건을 구입후 배송할 수 있는가? 패스워드 변경(Change Password) 애플리케이션이 패스워드 변경을 어떻게 다루는가? 이전의 패스워드를 아는것이 필요한가? 패스워드는 이메일 주소로 보내지는가? 패스워드가 보내지기 전에 목적지 이멩리 주소를 바꿀수 있는가?
42
* 국내 대부분의 포털 메일서비스에서는 적용되지 않음(daum, hanmir, korea.com, yahoo 등
질의 스트링 질의 스트링 변수를 통과하기 위해 사용되는 물음표(?) 부호 다음의 URI 데이터 여분의 비트 클라이언트와 서버 사이에서 데이터를 전송하는데 사용 다양한 값을 포함할 수 있음 질의 스트링을 jane로 바꿈으로써 joe가 인가되는 동안 jane의 메일 계정으로의 접근 시도 * 국내 대부분의 포털 메일서비스에서는 적용되지 않음(daum, hanmir, korea.com, yahoo 등
43
데이터 POST(Post Data) 데이터 포스트
질의 스트링의 수정 용이로 인하여 대부분의 웹 어플리케이션에서 GET 보다 POST 방법을 사용 POST에서는 데이터를 보여주지 않음 수정이 어렵다(?) HTML 페이지 저장 HTML 소스 수정 올바르지 못한 POST 요구 POST 되는 값들을 쉽게 바꿀수 있음
44
데이터 Post(Post Data) 데이터 포스트
45
숨김 태그들(Hidden Tags) 숨김 태그 데이터를 서버에 보내기 위해 폼에서 사용되는 감춰진 값들
세션, 필요한 데이터를 추적하는데 사용 숨겨진 태그들이 HTML 코드내에 포함 HTTP 폼의 일부 GET 또는 POST 요구에서 값을 전달 실제 숨겨진 태그들을 찾아야 인가 공격이 가능 필드 이름 또는 HTML 구성 요소들이 태그의 함수에 부가적인 정보 또는 단서를 제공
46
* 우체국의 인터넷 뱅킹 페이지(http://www.epostbank.go.kr)
숨김 태그들(Hidden Tags) 숨김 태그 * 우체국의 인터넷 뱅킹 페이지(
47
HTTP 헤더(HTTP Headers) HTTP 헤더 웹 어플리케이션 프로그램에 의해서 공식적으로 사용되지 않음
가장 널리 알려진 헤더는 쿠키임 Curl을 포함한 도구에서 사용자 에이전트 헤더를 명시
48
HTTP 헤더(HTTP Headers) HTTP 헤더
49
쿠키(Cookies) 쿠키 세션 운영의 대중화된 형태 사용자 정보등의 중요한 필드를 저장하는데 사용
데이터를 쿠키에 저장할 수 있음 쿠키에 저장된 데이터를 쉽게 수정할 수 있음 쿠키스파이의 사용 인터넷 익스플로러에 플러그인 된 형태로 쿠키의 내용을 표시 쿠키스파이를 통해 쿠키를 수정할 수 있음
50
쿠키(Cookies) 쿠키 현재 CNN 웹 사이트의 쿠키를 표시(사용자 이름, 값)
51
쿠키(Cookies) 쿠키 CNNid의 쿠키 값을 변경
52
최종 노트(Final Note) 차이 분석(Differential analysis)
두 개 이상의 사용자 계정을 통한 웹 사이트의 차이점 파악 쿠키와 필드등의 정보의 차이를 기록 파일 애플리케이션 /etc/passwd Unix & Linux 패스워드 /winnt/repair/sam._ (NT) /windows/repair/sam(2000) 윈도우 백업 SAM 데이터베이스 /etc/apache/httpd.conf /usr/local/apache/conf/httpd.conf Apache 구성 /usr/netscape/suitespot/httpsserver/config/magnus.conf 등 iPlanet(Netscape) 구성 /etc/apache/jserv/jserv.conf /etc/usr/local/apache/conf/jserv/jserv.conf Apache JServ 구성 .htaccess(다양한 위치) 사용자 이름 및 패스워드
53
(Permissions을 위한 Curl의 사용)
Part VI: 사례 연구 & 맺음말 (Permissions을 위한 Curl의 사용)
54
사례 연구 Curl을 통한 Permission 획득 아파치 인가(Apache Authorization)
IIS 인가(IIS Authorization)
55
맺음말 Q & A
Similar presentations