본문 바로가기

🔐 Security/System

[시스템보안] 패스워드 크래킹

위 글은 2022년도 목포대학교 학점교류 '시스템보안' 수업에서 수행한 과제를 작성한 내용입니다.
교재 : 시스템 해킹과 보안: 정보 보안 개론과 실습 3판, 양대일 (2018)

 

1. 레인보우 테이블을 이용한 공격에서 체인 확인하기

레인보우 테이블은 패스워드별로 해시 값을 미리 생성한 후, 크래킹 하려는 해시 값을 테이블에서 검색하여 원래 패스워드를 찾는 방식이다.

“346343”“86AB6B3355F33F7CD62658FDDA5AF7D6” 사이의 체인을 확인해보자.
최초 패스워드 “346343”에서 MD5 해시값을 구한다.
MD5 해시값은 “A62798B2BFCF406BD76FCBC7A3679976“이 된다.
여기서 R함수가 동작하여 해시값에서 무작위 패스워드를 추출하면 결과는 ”627982“가 된다.

다시 ”627982“MD5 해시값을 구하면 ”570727EE4270E0C1A4D8FBB741926DB8“이 된다.
R함수가 동작한 결과 값은 ”570727“이 되고, 다시 MD5 해시 결과를 구하면
“86AB6B3355F33F7CD62658FDDA5AF7D6”이 된다.

 

2. 윈도우 패스워드 크래킹하기

(1) 테스트 계정 생성 및 패스워드 설정하기

윈도우 계정에서 netplwiz를 사용하여 테스트 계정 6개를 생성한다. 패스워드는 다양한 난이도의 패스워드 크래킹을 시도해야 하므로 숫자, 영문자, 특수문자를 적절히 사용해 작성한다.

(2) NTLM 해시 추출 및 패스워드 크랙하기

NTLM 해시는 컴퓨터 자체의 보안 문제 및 오류 발생으로 패스워드 크랙에 실패하였다.

(3) 레인보우 테이블을 이용한 패스워드 크랙하기

 

NTLM 해시를 pwdump 파일 형식으로 바꾸고 NTLM_hash.txt 파일로 저장한다.

레인보우 테이블의 Vista free 버전과 Vista special 버전 두 가지를 사용하여 실습했다.

수행 결과는 다음과 같다. vista free 버전이라 쉬운 패스워드인 1234qwer1234는 크랙되었고, test 3, 4, 5, 6의 계정은 크랙 되지 않았다.

Vista special버전은 특수문자가 포함된 패스워드와 영문자와 숫자가 섞인 패스워드까지 크랙됨을 알 수 있다.

 

4. 리눅스 패스워드 크래킹하기

(1) john-the-ripper 설치하기

패스워드 크래킹에 사용할 john-the-ripper-을 설치한다.
루트 계정으로 다운로드 후 압축해제 한다.

src 디렉토리로 이동하여 컴파일 옵션을 확인한다.

컴파일 후 run 디렉토리에 john 실행파일이 들어있는 것을 확인한다.

(2) 테스트 계정 생성 및 패스워드 설정하기

패스워드 크래킹에 사용할 계정 몇 개를 생성한다. useradd 명령으로 계정을 생성하고, cat /etc/shadowshadow파일에 계정이 잘 생성되었는지 확인한다.

(3) 패스워드 크래킹하기

라눅스의 패스워드 크래킹에서 패스워드로 사용할 사전파일을 생성한다.
dic.txt.qwer1234 입력하여 패스워드를 사전에 미리 넣어둔 상태로 크래킹을 시도한다.

패스워드 크래킹에 성공하였다.
만약 사전 대입 공격에 실패한 경우, 무작위 대입법으로 패스워드 크래킹을 시도할 수 있다.

 

5. 리눅스 패스워드 복구하기

(1) 부팅 이미지 선택하기

우분투 시스템 부팅하여 시프트, e(edit)를 누른다.

edit 창에서 부팅과 관련한 설정 사항을 확인할 수 있다.

ro 다음의 부분을 rw(read write) 모드로 /bin/bash/를 실행하도록 수정한다.

 

(3) 부팅 후 패스워드 변경하기

설정변경 후 F10 입력하여 변경된 설정으로 부팅한다.
부팅이 진행되면 계정과 패스워드를 묻지 않고 바로 셸을 획득할 수 있게 된다.

root 패스워드를 변경하는 것에도 문제가 없다.