Presentation is loading. Please wait.

Presentation is loading. Please wait.

5 패스워드 크래킹.

Similar presentations


Presentation on theme: "5 패스워드 크래킹."— Presentation transcript:

1 5 패스워드 크래킹

2 학습목표 내용 패스워드의 중요성을 이해한다 윈도우와 리눅스/유닉스 시스템의 인증 구조를 이해한다.
패스워드 크래킹을 수행할 수 있다. 적절한 패스워드를 생성할 수 있다. 관리자 패스워드 분실 시 이를 복구할 수 있다. 내용 패스워드 크래킹에 대한 이해 윈도우 인증과 패스워드 리눅스/유닉스 인증과 패스워드 서비스 데몬 패스워드 크래킹 운영체제별 패스워드 복구

3 패스워드 크래킹에 대한 이해 패스워드 관리 보안 관리자의 첫번째 방어책 크래킹되기 쉬운 패스워드
길이가 너무 짧거나 널(Null)인 패스워드 사전에 나오는 단어나 이들의 조합으로 이루어진 패스워드 키보드 자판을 일련순으로 나열한 패스워드 사용자 계정 정보에서 유추 가능한 단어들로 된 패스워드 좋은 패스 워드 : 기억하기는 쉽고 크래킹하기 어려운 패스워드

4 패스워드 크래킹에 대한 이해 해시의 암호화 임의의 데이터로부터 일종의 짧은‘전자 지문’을 만들어 내는 방법
암호화(Encryption) : 특별한 알고리즘을 이용해 데이터를 전달하는 것 로마시대 암호화 방식 : 기본적인치환(Substitution) 방식 3자씩 알파벳을 밀어내 대응되는 글자로 치환

5 패스워드 크래킹에 대한 이해 ‘Wish to be free from myself’문구 암호화
암호화 알고리즘 : ‘알파벳을 밀어서 대응되는 글자로 치환’ 암호화 키(Key) : 3 수와 가 있을 때, 두 수를 가운데를 기준으로 둘로 나누고 큰 수를 작은 수로 나눈다 앞 6자리 숫자를 버리고 나머지 값이 해시의 결과 값이라면 의 해시 값은 , 의 해시 값은 로직을 알더라도 버려진 과 를 알 수 없으므로 두 해시 값만으로 해시 전의 원래 수를 알아내는 것은 불가능 해시는 로직을 알고 있을 경우 해시의 결과 값을 구하기가 쉽다 해시 결과 값을 통해 해시를 생성하기 전의 원래 값은 알기 어렵다 값이 아주 조금만 다르더라도 해시 결과 값은 무척 상이하게 생성

6 패스워드 크래킹에 대한 이해 Salt 해시나 암호화로 패스워드 저장→ 같은 패스워드는 같은 해시 값, 같은 암호문으로 저장
같은 해시 결과나 암호문은 같은 결과만으로도 패스워드를 노출시키는 약점 Salt는 이런 상황을 막기 위해 패스워드 해시와 암호화에 사용되는 첨가물의 일종 운영체제별로 다양한 알고리즘 존재. 간단한 알고리즘 해시 해시값 : ‘E2E783C7C3660CC594BFB35753E454F6’ root 계정은 a2, wishfree 계정은 4F라는 문자2개 생성하여 해시 값 생성(a2와4F가 Salt)

7 패스워드 크래킹에 대한 이해 [표 4-1] Salt와 패스워드를 조합한 값에 대한 MD5 해시 값의 생성 예 Salt와 패스워드 각각 해시한 결과 값은 다름 패스워드 파일로 저장 시 MD5 해시 값만 저장 불가능 시스템이 패스워드와 어떤 것을 합해 해시를 구한 것인지 알 수 없기 때문 패스워드 파일에 저장 시 간단한 인코딩을 통해 해시 결과 값 앞이나 뒤에 Salt 붙임 [표 4-2] 해시된 패스워드 값에 Salt 정보를 붙인 예 적용된 Salt는 똑같은 패스워드를 숨길 뿐만 아니라 적용 수준에 따라 패스워드 크래킹을 매우 어렵게 만드는 요소 계정 Salt 패스워드 Salt+패스워드를 MD5로 해시한 결과 값 root a2 9EF83D5BEF4A7CBC6F7D4940D wishfree 4F 6B796B0DD16C30CCF0B7F02E6457F024 계정 Salt+MD5 root a29EF83D5BEF4A7CBC6F7D4940D wishfree 4F6B796B0DD16C30CCF0B7F02E6457F024

8 패스워드 크래킹에 대한 이해 패스워드 크래킹 방법에 대한 이해 사전대입공격 무작위 대입 공격 레인보우 테이블을 이용한 공격
사용자가 설정하는 대부분의 패스워드에 특정 패턴이 있음에 착안 패스워드로 사용할 만한 것을 사전으로 만들어놓고 하나씩 대입 패스워드 일치 여부 확인 무작위 대입 공격 패스워드에 사용될 수 있는 문자열의 범위 정하고, 그 범위 내에서 생성 가능한 모든 패스워드 생성하여 입력 패스워드가 그다지 복잡하지 않거나 짧을 경우 단시간에 크래킹 레인보우 테이블을 이용한 공격 1980년 마틴 헬만(Martin Hellman)에 의해 소개 2000년대에 들어 윈도우의LM 패스워드를 몇 분 만에 크래킹하며 유명해지기 시작 레인보우 테이블은 하나의 패스워드에서 시작해 변이된 형태의 여러 패스워드 생성 변이된 각 패스워드의 해시를 고리처럼 연결하여 일정 수의 패스워드와 해시로 이루어진 체인(Chain)을 무수히 만들어 놓은 테이블 레인보우 테이블의 가장 기본적인 개념 : 패스워드별 해시 값 미리 생성 크래킹하고자 하는 해시 값을 테이블에서 검색하여 원래 패스워드를 찾는 것 패스워드 ‘12qw’, 해시 값 ‘ ’라면 각 패스워드별 해시 값 미리 구해둔 해시 테이블에서‘ ’를 찾아 ‘12qw’ 찾는다

9 패스워드 크래킹에 대한 이해 레인보우 테이블의 또 다른 핵심 아이디어
대용량으로 생성될 수 있는 해시 테이블을 R(Reduction) 함수를 이용해 작은 크기로 줄이는 것 패스워드가 6자리 숫자로 이루어진 ‘234342’ MD5 해시 값은 ‘C1F2FE224298D6E39EBA607D46F3D9CC’ R 함수는 이 해시 값에서 또 다른 형태의 무작위 패스워드 추출 R 함수가 MD5 해시 값 중 앞의 6개 숫자만 뽑아낸다고 가정 R(C1F2FE224298D6E39EBA607D46F3D9CC)은‘ ’

10 패스워드 크래킹에 대한 이해 최초 패스워드 ‘234342’에서 MD 5 해시 값을 3번 구하고, R 함수가 2번 동작
C1F2FE224298D6E39EBA607D46F3D9CC 첫 번째 R 함수 동작 결과 122242 89DBCA68BE341E03B5FB59777B93067E 두 번째 R 함수 동작 결과 896834 22B7D9922C994737D0D9DFCCF6B415B6 패스워드 MD5 해시 최초 패스워드 346343 A62798B2BFCF406BD76FCBC7A 첫 번째 R 함수 동작 결과 627982 570727EE4270E0C1A4D8FBB741926DB8 두 번째 R 함수 동작 결과 570727 86AB6B3355F33F7CD62658FDDA5AF7D6

11 패스워드 크래킹에 대한 이해 [표 4-6] 898232의 MD5와 R 함수의 반복 실행 결과
[표 4-7] [표 4-4]~[표 4-6] 값을 이용해 생성한 레인보우 테이블 패스워드 MD5 해시 최초 패스워드 898232 91CF19DD04A05110A2D2A30D578DDA29 첫 번째 R 함수 동작 결과 911904 3B F22C17E A3E49992E 두 번째 R 함수 동작 결과 386357 E2038DD2A8315D9BF7F72AE5C07530F8 패스워드 MD5 해시 234342 22B7D9922C994737D0D9DFCCF6B415B6 346343 86AB6B3355F33F7CD62658FDDA5AF7D6 898232 E2038DD2A8315D9BF7F72AE5C07530F8

12 패스워드 크래킹에 대한 이해 레인보우 테이블을 이용한 패스워드 크래킹 과정
패스워드 해시 값 ‘570727EE4270E0C1A4D8FBB741926DB8’ ➊ 레인보우 테이블에 크래킹하려는 해시 값과 같은 MD5 해시 값이 있는지 확인 → [표 4-7]에는‘570727EE4270E0C1A4D8FBB741926DB8’해시 값 없다 ➋ 레인보우 테이블에 크래킹하려는 해시 값이 없으면 크래킹할 해시 값에 R 함수 적용 패스워드 구하고 다시 해시 값 구한다. →‘570727EE4270E0C1A4D8FBB741926DB8’에 R함수 적용 패스워드‘570727’구한다‘ 570727’ 해시 값을 구하면 ‘86AB6B3355F33F7CD62658FDDA5AF7D6’ ➌ ➋에서 구한 해시 값‘86AB6B3355F33F7CD62658FDDA5AF7D6’ 레인보우 테이블에 있는지 확인 → [표4-7]에서 생성한 레인보우 테이블에‘86AB6B3355F33F7CD62658FDDA5AF7D6 ’값이 있다 ➍ 레인보우 테이블에서 확인한 해시 값 발견한 뒤 그 해시 값에 해당하는 최초 패스워드 구한다 (값이 없다면 같은 해시 값이 나올 때까지 ➋와 ➌ 과정을 해시 테이블 생성 시에 설정한 체인 수만큼 반복) → [표 4-7]에서‘86AB6B3355F33F7CD62658FDDA5AF7D6’에 해당하는 패스워드는 ‘346343’ ➎ 확인한 최초 패스워드에서 다시 패스워드와 일치하는 해시 값이 나올 때까지 MD5 해시와 R함수 반복 수행. 해당 해시 값이 확인되면 찾는 패스워드는 해당 해시 값을 생성한 문자열 레인보우 테이블 체인 2,000개 이상, 최초 패스워드, 최종 해시 값만 레인보우 테이블에 저장 체인을 2,000개 사용하는 레인보우 테이블에서 해시 값을 10,000개 저장하고 있다면, 레인보우 테이블에서 확인할 수 있는 패스워드의 종류는 20,000,000 (2000*10000)개

13 윈도우 인증과 패스워드 윈도우 인증의 구성요소
LSA(Local Security Authority), SAM(Security Account Manager), SRM(Security Reference Monitor) SAM : 윈도우에서 패스워드 암호화하여 보관하는 파일의 이름과 동일 LSA : 모든 계정의 로그인에 대한 검증, 시스템 자원 및 파일 등에 대한 접근 권한 검사 로컬, 원격 모두에 해당, 이름과 SID를 매칭하며, SRM이 생성한 감사 로그 기록 SAM : 사용자/그룹 계정 정보에 대한 데이터베이스 관리, 사용자의 로그인 입력 정보와 SAM 데이터베이스 정보를 비교해 인증 여부 결정. 윈도우의 SAM 파일 위치 SRM : SAM이 사용자의 계정과 패스워드 일치 여부를 확인하여 알리면 사용자에게 SID(Security Identifier) 부여, SID에 기반하여 파일이나 디렉터리에 대한 접근(access) 허용 여부 결정, 이에 대한 감사 메시지 생성 %systemroot%/system32/config/sam

14 윈도우 인증과 패스워드 로컬 인증과 도메인 인증 로컬인증
Ctrl+Alt+Delete → Winlogon 화면 → 아이디와 패스워드 입력 → LSA 서브 시스템이 인증 정보를 받아 NTML 모듈에 아이디와 패스워드 넘겨줌 → SAM이 받아 확인 → 로그인 허용

15 윈도우 인증과 패스워드 도메인 인증 Ctrl+Alt+Delete → Winlogon 화면 → 인증 정보 입력 → 해당 정보 LSA 서브 시스템에 인계 LSA 서브 시스템에서 해당 인증 정보가 로컬 인증용인지 도메인 인증용인지 확인 → 커버로스(Kerberos) 프로토콜 이용, 도메인 컨트롤러에 인증 요청 도메인 인증에서는 기본적으로 풀 도메인 이름(FQDN: Full qualifieddomain name)과 커버로스 프로토콜을 이용하게 되어 있지만, IP를 이용해 접근을 시도할 경우NTML 사용

16 윈도우 인증과 패스워드 인증 구조 Challenge & Response 인증
패스워드 값을 인증 서버와 같은 인증 주체에 전달, 올바른 패스워드임을 증명하는 가장 직관적이고 쉬운 방법은 패스워드 값을 직접 전달하는 것 텔넷이나 FTP가 아이디와 패스워드를 네트워크를 통해 직접 전달 웹포털 사이트에서 사용자 아이디와 패스워드로 로그인하는 것이 그러한 경우 운영체제 인증과 같이 높은 수준의 인증이 필요한 경우, 이런 단순 인증 방식은 패스워드 노출 또는 패스워드 재사용 공격에 매우 취약해서 Challenge & Response 방식으로 인증을 수행

17 윈도우 인증과 패스워드 Challenge & Response 인증 단계
➊ 인증 요청 : 인증을 수행하고자 하는 주체가 인증 서버에 인증 요청 ➋ Challenge 값 생성 / ➌ Challenge 값 전송 인증 요청받은 인증 서버는 문자열 등의 값을 특정 규칙을 따르거나 혹은 랜덤하게 생성 인증 요구자에 전달 ➍ Response 값 생성 인증 요구자는 서버에서 전달받은 Challenge 값과 본인이 입력한 패스워드 정보 이용해 서버에 보낼 Response 값 생성, 대부분의 프로토콜이 Response 값 생성하는 로직에서 차이 남. ➎ Response 값 전송 / ➏ Response 값 확인 / ➐ 인증 성공 인증 요구자는 생성한 Response 값을 인증 서버에게 전달, 인증 서버는 Response 값을 확인하여 인증 요구자의 적절한 패스워드 소유 여부 확인, 확인된 Response가 적절하면 인증의 성공 여부 인증 요구자에 알림

18 윈도우 인증과 패스워드 LM & NTML LM 해시 1980년대에 만들어진 알고리즘으로, 본래 IBM의 OS 2에서 사용
MS에서 1993년에 만든 윈도우 NT에 탑재되기 시작 LM은 구조적으로 취약한 알고리즘 윈도우 2000, XP의 기본 알고리즘

19 윈도우 인증과 패스워드 ➊ 대문자 변환 : 사용자가 패스워드 입력하면 모두 대문자로 전환, 대소문자 구분 않음
➋ 패딩(Padding) : 기본적으로 14글자를 하나의 패스워드로 인식 14글자가 되지 않는 패스워드는 뒤에 0을 붙여 14자리로 만듬 ➌ 분리 : 패스워드 길이에 관계없이 8바이트가 블록 하나를 형성 이 중 1바이트는 패스워드 블록에 대한 정보를 담고 있어 실질적 패스워드 문자열은 7바이트, 즉 문자 7개로 구성 패스워드가 qwer1234라면 8자이므로 패스워드 블록 두 개 형성 ➍ DES 암호화 : 두 개 블록으로 분리된 패스워드는 문자열을 암호화 키(Key)로 사용해 암호화 ➎ 결합 : “ 각각 암호화한 두 결과 값을 합하여 SAM 파일에 저장 LM 알고리즘 그림에서 확인한 바와 같이 패스워드 블록 하나는 별도로 운영 qwer1234는 qwer123과 4로 나뉨 qwer123이 쉽게 크래킹되지 않을 수도 있으나, 4는 수초 내 크래킹 윈도우는 문자열 7개 패스워드 블록 이용 패스워드 구현, 7자나 8자 패스워드 강도동일 윈도우에서 14자 패스워드 크래킹이 7자 패스워드 두 개 크래킹과 같은 노력 필요 14자 패스워드의 보안 강도는 7자 패스워드보다 겨우 2배 더 셈

20 윈도우 인증과 패스워드 NTML 해시 LM 해시에 MD4 해시가 추가

21 윈도우 인증과 패스워드 NTML v2해시 v2는 윈도우 비스타 이후의 윈도우 시스템에서 기본 인증 프로토콜로 사용

22 윈도우 인증과 패스워드 자격 증명 일반PC 사용자는 로그인할 때 로컬 계정 이용
해당 컴퓨터가 도메인과 네트워크에 연결되어 있는 경우에는 NTML이나 커버로스 이용해 로그인 네트워크가 연결되지 않은 경우에도 도메인에 등록된 PC에 로그인할 때 도메인 계정을 사용해 로그인하는데, 이를 가능하게 만는 것이 자격 증명(Cache Credential) ‘Password verifier’라고도 함

23 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 테스트 계정 생성 및 패스워드 설정
패스워드 크래킹에 사용할 계정 몇 개 생성 다양한 난이도의 패스워드 크래킹 시도 위해, 숫자로만 된 패스워드, 짧은 패스워드 영문자와 숫자로만 된 패스워드, 특수 문자 등을 포함한 패스워드 등을 설정 윈도우 XP 계정 생성,패스워드 설정 : [컴퓨터 관리]-[로컬 사용자 및 그룹]-[사용자] [그림 4-17] 테스트 계정 생성과 패스워드 설정 1

24 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Cain & Abel을 이용한 LM/NTML 해시 덤프
[Cracker] 탭의‘LM&NTML Hashes’항목 선택 → 오른쪽 빈 창에서 마우스 오른쪽 버튼 → [Add to list] 메뉴 선택 → 로컬 시스템에서 LM/NTML 해시 획득하도록 선택 [그림 4-18] 로컬 시스템에서 LM/NTML 해시 덤프 2

25 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Cain & Abel을 이용한 무작위 대입 공격
로컬시스템에서 NT/NTML 해시 덤프, 사용자이름, LM, NT(NTMLv2)해시 값 확인 윈도우XP의 경우LM 해시,NTMLv2 해시 모두 크래킹 대상, 더 취약한 LM 해시 크래킹 확인된 계정 모두 크래킹 위해 계정에서 마우스 오른쪽 버튼 → [Select All] 메뉴 선택 → [Brute-Force Attack]-[LM Hashes] 메뉴 패스워드 크래킹 방법 선택 [그림 4-19] 패스워드 크래킹 방법 선택 3

26 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 무작위 대입 공격 수행위한 상세 옵션 선택(패스워드 길이 1~7 자리, 무작위 대입 공격에 사용 할 문자열 선택, LM이 대소문자 구분 않으므로, 문자열은 대문자 알파벳 숫자, 특수문자 포함) → <Start>버튼(공격 시작) [그림 4-20] 패스워드 크래킹 옵션 선택

27 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 LM 패스워드는 패스워드가 7자리가 넘는 경우 7자리가 패스워드 블록 2개로 나뉨 뒷 블록의 패스워드가 먼저 크래킹되어 나옴 [그림 4-21] 크래킹되는 패스워드 확인

28 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 <Stop> 버튼을 누르면 패스워드 중 현재까지 크래킹된 부분 확인 [그림 4-22] 크래킹되는 패스워드 확인

29 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 레인보우 테이블 생성
Cain & Abel과 함께 내려받은 Winrtgen 프로그램 이용 레인보우 테이블 생성 사용 Wintrgen을 실행 → <Add Table> 버튼 생성할 레인보우 테이블의 옵션 선택 [그림 4-23] Winrtgen 실행 4

30 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Hash는 ‘lm’로, Charset은‘alphanum-symbol14’로 선택 No of tables에서 레인보우 테이블의 크기 결정 Charset을 ‘alpha-num-symbol14’로 선택한 경우 테이블이 35개 되어야 크래킹 성공률 98.33% <Benchmark> 버튼을 누르면 레인보우 테이블을 생성하는 데 약 37일 소요 확인 (a) 실제용 (b) 테스트용 [그림 4-24] 레인보우 테이블 실행 옵션

31 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 [그림 4-25] 레인보우 테이블 생성

32 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 레인보우 테이블을 이용한 패스워드 크래킹
레인보우 테이블을 생성한 후 다시 패스워드 크래킹 Cain & Abel에서 모든 계정 선택 → 마우스 오른쪽 버튼 [Cryptanalysis Attack]-[LM Hashes]-[viaRainbowTables (RainbowCrack)] 메뉴 선택 [그림 4-26] 레인보우 테이블 크래킹 선택 5

33 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 레인보우 테이블을 이용한 패스워드 크래킹
<Add Table> 버튼을 눌러 앞서 생성한 LM 레인보우 테이블 선택 <Start> 버튼(크래킹 시작) [그림 4-27] 레인보우 테이블 선택 5

34 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 레인보우 테이블을 이용한 패스워드 크래킹
약 20초의 후 전체 패스워드들이 크래킹되어 나오기 시작 전체 레인보우 테이블을 이용한 크래킹에 약3분 소요 [그림 4-28] 레인보우 테이블을 이용한 패스워드 크래킹 5

35 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 테스트 계정 생성 및 패스워드 설정
윈도우 2008 [제어판]-[관리 도구]-[로컬 보안 설정]-[계정정책]-[암호 정책] 암호는 복잡성을 만족해야 함’항목 값이‘사용’ 기본 설정, 간단한 암호 설정 못함 [그림 4-29] 로컬 보안 정책과 윈도우 2008 패스워드 설정 정책 확인 6

36 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Cain & Abel을 이용한 NTMLv2 해시 덤프
윈도우 2008이나 윈도우 7에서 NTML 해시를 덤프하는 방법은 윈도우XP와 같다 [Cracker] 탭에서‘LM&NTML Hashes’ 선택 → 오른쪽 빈 창에서 마우스 오른쪽버튼 → [Add to list] 메뉴 선택. 덤프 결과 LM 해시 값은 보이지만, LM Password에서‘* empty *’로 표시된 것처럼 이는 사용되지 않는 기본 값 [그림 4-30] NTML 해시 덤프 7

37 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Cain & Abel을 이용한 NTMLv2 해시 덤프
[Brute-Force Attack]-[NTLM Hashes] 메뉴로 크래킹 [그림 4-31] NTML 패스워드 크래킹 방법 선택 7

38 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 Cain & Abel을 이용한 NTMLv2 해시 덤프
<Start> 버튼(패스워드 크래킹 시작) [그림 4-32] NTML 패스워드 크래킹 수행 7

39 실습 5-1 윈도우 XP, 2008, 7 패스워드 크래킹하기 레인보우 테이블의 생성 시간으로 LM 패스워드와 NTML 패스워드 크래킹의 크래킹 시간 가늠 [표 4-8] 해시 종류와 패스워드 설정 강도에 따른 레인보우 테이블 생성 조건 [표 4-8]의 세 번째 NTMLv2 해시의 경우 패스워드의 길이를 10자리로 하고, 구성하는 문자를 알파벳(소문자), 숫자, 특수문자(14가지)로 설정하면 약 5140년의 시간 소요 패스워드 크래킹이 불가능 Winrtgen보다 효율적인 레인보우 테이블을 구매하여 크래킹하면 약 1시간 소요. 해시 종류 LM NTMLv2 패스워드 최대 길이 7 10 구성 문자 알파벳(소문자), 숫자, 특수문자(14가지) 알파벳, 숫자 레인보우 테이블 숫자 30 3,700,000 1,400,000 레인보우 테이블 용량 17.88GB 2,205,371.85GB 83,456.50GB 성공률 97% 97.16% 97.19% 레인보우 테이블 생성 시간 20일 12일 5140년 189년

40 리눅스/유닉스의 인증과 패스워드 유닉스의 인증 방식 : 윈도우의 인증 방식보다 단순하지만 더 취약하지는 않다
유닉스에서 인증에 가장 중요한 역할을 하는 것은 패스워드 파일과 shadow 파일 패스워드는 shadow 파일에 암호화되어 저장 shadow 파일에서 root 계정에 대한 정보 확인(각 정보는 :로 나뉘어 있다) ➊ 사용자 계정 ➋ 암호화된 사용자의 패스워드 저장, 시스템마다 조금씩 다르며 페도라 14 버전에서는 SHA512 형식을 기본으로 저장, MD5, SHA256 등의 해시를 선택, ‘ $1$’로 시작하면 MD5,‘ $5$’와‘$6$’로 시작하면 각각 SHA256, SHA512를 나타냄 ➌ 1970년 1월 1일부터 마지막으로 패스워드 변경한 날까지 계산 값, 14923일은 약 41년 ➍ 패스워드 변경하기 전 패스워드 사용한 기간, 최초 설정 후 바꾸지 않았으므로 0 ➎ 패스워드 바꾸지 않고 최대한 사용할 수 있는 기간,이 값은 보안 정책에 따라 변경 됨 보통 패스워드의 최대 사용 기간을 60일로 권고 ➏ 패스워드 최대 사용 기간에 가까워질 경우 사용자에게 미리 통지,패스워드 사용 기한 며칠 전에 경고를 보낼지 지정 root : $6$LL489S99Pyh6∼중략∼Pazr/uKuAkuFT0/ : : 0 : : 7 : : : ➊ ➋ ➌ ➍ ➎ ➏ ➐ ➑

41 리눅스/유닉스의 인증과 패스워드 ➐ 계정에 대한 사용 제한을 설정, 며칠 후에 완전히 사용 정지할지 설정
➑ 1970년 1월 1일부터 계정이 완전 사용 정지된 기간 계산 값 기록 ➒ 관리자 임의 사용 부분 shadow 파일 : 암호화된 패스워드 저장 기능, 패스워드에 대한 보안 정책을 적용, 시스템에 shadow 파일 존재하지 않고 passwd 파일에 암호화된 패스워드 저장되면, 시스템에 계정에 대한 보안 정책 적용 안된 것

42 리눅스/유닉스의 인증과 패스워드 페도라 14에서 [System]-[Administration]-[Authentication] 메뉴 선택 하면 ‘Advanced option’에서 SHA512 해시 알고리즘 사용 확인 및 MD5, SHA256 등의 알고리즘 선택 가능 리눅스의 경우에는 passwd 파일과 shadow 파일이 대부분 /etc/passwd와 /etc/shadow 파일로 생성, passwd 파일은 대부분 /etc/passwd 파일로 동일 shadow 파일은 운영체제별로 고유한 경로와 파일명을 사용하는 경우도 많음 [그림 4-34] Shadow 파일 해시 알고리즘 선택

43 실습 5-2 리눅스 패스워드 크래킹하기 John-the-ripper 설치
페도라 14에서 Johnthe-ripper는 yum으로 간단히 설치 [그림 4-35] john the ripper의 설치 john the ripper 설치 후 john 명령으로 간단한 사용법 등을 확인 1 yum install john.i686

44 실습 5-2 리눅스 패스워드 크래킹하기 John-the-ripper 설치
john the ripper 설치 후 john 명령으로 간단한 사용법 등을 확인 [그림 4-36] john the ripper의 사용법 확인 1

45 실습 5-2 리눅스 패스워드 크래킹하기 테스트 계정 생성 및 패스워드 설정 윈도우에서처럼 패스워드 크래킹에 사용할 계정 생성
다양한 난이도의 패스워드 크래킹 시도를 위해 숫자만으로 이뤄진 패스워드 짧은 패스워드, 영문자와 숫자만으로 이루어진 패스워드, 특수문자 등을 포함한 패스워드 등으로 설정 useradd 명령으로 계정 생성 [그림 4-37] 패스워드 크래킹을 위한 테스트 계정 추가 2 useradd user passwd user

46 실습 5-2 리눅스 패스워드 크래킹하기 테스트 계정 생성 및 패스워드 설정
추가한 사용자의 패스워드 정보는 /etc/shadow 파일에서 확인 [그림 4-38] 추가한 계정의 SHA512로 해시된 패스워드 확인 2 cat /etc/shadow

47 실습 5-2 리눅스 패스워드 크래킹하기 패스워드 크래킹
리눅스에서의 패스워드 크래킹은 패스워드로 사용될 수 있는 사전 파일 미리 작성 이 사전 파일에 있는 패스워드 대입 사전 파일에‘dideodlf(양대일)’이라는 패스워드를 미리 넣어둔 상태에서 john the ripper로 패스워드 크래킹을 시도 [그림 4-39] 사전 대입법을 이용한 패스워드 크래킹 3 john --wordlist=dic /etc/shadow

48 실습 5-2 리눅스 패스워드 크래킹하기 패스워드 크래킹 사전 대입 공격에 실패한 경우 무작위 대입법으로 패스워드 크래킹 시도
무작위 대입법을 이용한 패스워드 크래킹은‘--wordlist’옵션 없이 바로 실행 이때 패스워드가 크래킹되면 바로 확인할 수 있도록‘--show’옵션 사용 [그림 4-40] 사전 대입법을 이용한 패스워드 크래킹 SHA512해시를 사용한 shadow 파일을 무작위 대입법을 사용해 패스워드 크래킹 하기는 매우 어렵다. SHA512 알고리즘을 사용한 해시 생성에 시간 소요 많아 경우의 수 모두 대입 어려움 SHA512와 같은 알고리즘으로 해시된 shadow 파일을 크래킹하기 위해 레인보우 테이블을 이용해 크래킹하는 것이 효율적 3 john --show /etc/shadow

49 서비스 데몬 패스워드 크래킹 HTTP, FTP, 텔넷, SMB(NetBIOS) 데몬처럼 서버에서 제공하는 서비스 프로그램도
패스워드 크래킹 가능 서비스 데몬 대부분은 운영체제와 동일한 아이디와 패스워드 소유 서비스 데몬을 통한 패스워드 크래킹 시도로 운영체제의 다른 서비스에 대한 접근 권한을 얻을 수도 있음 윈도우의 파일 공유 서비스(SMB(NetBIOS))나 리눅스의 텔넷 서비스 등이 대표적 서비스 데몬에 대한 패스워드 크래킹에서 획득한 계정이 반드시 운영체제에 존재 않음 일부 윈도우 서비스의 경우 서비스 데몬에 대한 계정과 패스워드 별도 생성 관리

50 실습 5-3 서비스 데몬 패스워드 크래킹하기 UNS가 가장 좋은 성능을 보이는 것은 FTP 포트인 21번 포트에 대한 공격
BRUTUS : HTTP, FTP, 텔넷, SMB(NetBIOS) 데몬의 패스워드 크래킹 백도어인 NetBUS 패스워드 크래킹도 가능 [그림 4-41] FTP 계정 크래킹

51 실습 5-3 서비스 데몬 패스워드 크래킹하기 ➊ ➋ ➌ ➍ ➎ BRUTUS-AET2 인터페이스 확인 1
[그림 4-42] 인터페이스 확인 1

52 실습 5-3 서비스 데몬 패스워드 크래킹하기 BRUTUS-AET2 인터페이스 확인
➊ 목표 시스템의 IP 주소와 크래킹할 데몬 선택(선택할 수 있는 데몬 : HTTP,FTP, 텔넷, SMB(NetBIOS), NetBUS) ➋ 연결 포트와 1회 시도 횟수(Connections), 응답 대기 시간(Timeout) 설정 1회시도 시 10개의 패스워드 테스트하는 것이 기본, 시스템 응답 시간이 많이 걸릴 경우 응답 대기 시간을 충분한 값으로 설정 ➌ 텔넷 데몬에 대한 특정 시퀀스를 입력하고 변경 ➍ 크래킹하고자 하는 계정과 패스워드 목록 설정 ➎ 크래킹의 진행 과정 및 결과 출력 1

53 실습 5-3 서비스 데몬 패스워드 크래킹하기 ➊ ➋ 텔넷 서비스 인증 순서 확인하기
BRUTUS를 이용해 텔넷 서비스 크래킹 위해 규칙성 파악 규칙성을 파악 후 ➌<Modify sequence> 버튼 누르고 적절한 값 입력 ➊ ‘login:’뒤에 계정 입력 Enter(CR, Carriage Return) 입력. 줄이 바뀌면(LF, Line Feed)‘password:’문자열 나옴 잘못된 패스워드 입력한 경우 다시‘CR+LF’과정 거치고‘Login incorrect’문자열 뜸 ➋ 로그인 성공한 때도 정상적인 패스워드 입력 후,‘CR+LF’과정 거침 비슷한 과정으로 단지‘Last login: Tue .... ’만 다름 [그림 4-43] 인증 순서 확인 2

54 실습 5-3 서비스 데몬 패스워드 크래킹하기 ➌ ➊ ➋ ➍ 텔넷 서비스 규칙성 설정
➌의 <Modify Sequence> 버튼 클릭, ‘Selected authentication phase’를 ‘UserID phase’로 설정, 처음 아이디 로그인하는 과정과 아이디 입력에 따른 응답 규칙 입력 ‘Selected authentication phase’를 ‘Password phase’로 바꿈, (b)에서는 패스워드 입력하는 규칙과 그에 대한 응답 규칙 입력 (a) UserID phase 설정 화면 (b) Password phase 설정 화면 [그림 4-44] 규칙성 설정 3

55 실습 5-3 서비스 데몬 패스워드 크래킹하기 ➊ Authentication Sequence : UserID phase - 문자열‘login :’에 대한 입력 설정 ➋ Authentication Sequence : Password phase - 문자열‘Password :’에 대한 입력 설정 ➌ Response Sequence : Primary - 위 테스트에서 잘못된 패스워드 입력 시 ‘Login incorrect’문자열 응답. 그대로 입력하고 해당 문자열을 만났을 때 On match action을 Send UserID phase로 한다. 이로써 ➊과정으로 돌아가 처음부터 계정과 패스워드 입력받게 함 ➍ Response Sequence : Secondary - 올바른 패스워드 입력 시 응답받는‘Last Login ...’ 입력. 해당 문자열 받을 경우 올바른 패스워드 입력한 것이므로 ‘ Response is positive authentication’에 체크표시. On no match action은 잘못된 패스워드 입력한 것이므로 ‘Disconnect’로 설정

56 실습 5-3 서비스 데몬 패스워드 크래킹하기 ➎ [그림 4-45]에서 설정한 규칙성 확인. Stage2에서‘login:’문자열을 받으면 Stage3에서 크래킹하고자 하는 계정 입력, Stage 4에서‘Password :’문자열을 받으면 Stage5에서 크래킹할 패스워드 입력, Stage6에서는 Login incorrect를 만나면 Stage3으로 돌아가 계정을 입력하는 과정 반복 [그림 4-45] 설정한 규칙성 확인

57 실습 5-3 서비스 데몬 패스워드 크래킹하기 패스워드 크래킹 [그림 4-46] 패스워드 크래킹 4

58 실습 5-4 윈도우 패스워드 복구하기 윈도우 시스템에서 패스워드 초기화
CD의 미리 만들어진 이미지로 부팅 NTFS를 무시하고 하드웨어 기반에서 패스워드가 저장된 섹터를 임의로 바꾸는 것 패스워드 복구를 위한 BRUTUS-AET2 인터페이스 확인 파티션 마운트 [그림 4-47] 윈도우 파티션 마운트 1 2

59 실습 5-4 윈도우 패스워드 복구하기 파티션 마운트와 윈도우 디렉토리 저장 [그림 4-48] 윈도우 디렉터리 지정 3

60 실습 5-4 윈도우 패스워드 복구하기 SAM파일 편집 [그림 4-49] SAM 파일 선택 및 편집 메뉴 선택 4

61 실습 5-4 윈도우 패스워드 복구하기 SAM파일 편집 [그림 4-50] 계정 선택 후 계정에 대한 패스워드 초기화 4

62 실습 5-4 윈도우 패스워드 복구하기 실시사항 저장 [그림 4-51] 패스워드 변경 후 저장 5

63 실습 5-5 리눅스 패스워드 복구하기 부팅 이미지 선택 1 [그림 4-52] GRUB 시작 화면
[그림 4-53] 부트 이미지 선택 1

64 실습 5-5 리눅스 패스워드 복구하기 부팅 이미지 선택 싱글모드 부팅 설정 2 [그림 4-54] 싱글 모드 부팅 설정 3
[그림 4-55] 싱글모드 셸 획득 2 3

65 실습 5-5 리눅스 패스워드 복구하기 패스워드 파일 수정 [그림 4-56] 패스워드 파일 편집 4


Download ppt "5 패스워드 크래킹."

Similar presentations


Ads by Google