Brute Force 기법 중 하나인 패스워드 크렉킹 실습(Password Cracking)
Brute Force
- 비밀번호를 알 수 없을 때 or 비밀번호 해쉬값을 흭득했을 때 사용 가능.
- 비밀번호에 대한 사전지식 없이 공격자는 반복적인 메커니즘으로 비밀번호를 유추한다.
- 오프라인으로도 수행될 수 있다.
- 하위 기법
- Password Guessing
- Password Cracking
- Password Spraying
- Credential Stuffing
• Password Cracking
- 체계적으로 유추된 패스워드는 사용가능한 해쉬를 계산하는데 사용될 수 있다.
- 미리 계산된 rainbow table에서 해쉬 크랙을 얻는데 사용할 수 있다.
- 해쉬 크렉킹은 보통 공격자가 타깃 네트워크 밖에서 조정하는데 사용된다.
- 생성된 일반 비밀번호는 성공적으로 해당 계정이 액세스할 수 있는 시스템, 리소스 및 서비스에 로그인하는 데 사용된다.
실습
# 관련 과제1
공격자가 침투한 리눅스 서버에서 victim1, victim2, victim3 계정의 패스워드 해시를 탈취하였다(에델바이스 첨부 파일).
victim1, victim2, victim3 계정의 패스워드를 알아내시오.

- 탈취한 shadow 정보 확인
먼저 탈취한 shadow 파일의 정보를 확인해준다.

2. 힌트(1차) 사용
1).John the Ripper
- --format=crypt
사용법
john --format=crypt 파일명
|

각각의 메시지 해석
"Using default input encoding: UTF-8"
"Loaded 4 password hashes with 4 different salts"
"Remaining 3 password hashes with 3 different salts"
"Cost 1 (algorithm...)"
|

--> 시간이 조금 지나니 가장 간단한 cju의 비밀번호 크렉킹에 성공했다.
조금 더 기다려보자...

하지만 나머지 파일은 굉장히 해석하는데 오래걸린다. 앞으로의 예상시간인 ETA가 12시간이 뜨는 것을 볼 수 있다.
메시지를 챗GPT를 통해 해석해보니..
이 메시지는 "존더리퍼(John the Ripper)"라는 암호 해독 도구를 사용해 비밀번호를 크래킹하는 과정에서 나타난 로그입니다. 주요 내용을 분석해보면 다음과 같습니다:
|
즉, 비밀번호 리스트의 수가 현저히 부족하다는 것을 알 수 있다.
비밀번호 리스트를 추가로 어디서 흭득할 지 생각해야한다.
2) NordPass
이것은 비밀번호 관리자다. 하지만 통계 란으로 가보면, 세계인이 많이 쓰는 비밀번호를 통계 내 놓은 것을 볼 수 있다. 이것을 토대로 비밀번호 리스트를 흭득한다.
힌트 2차
1). --wordlist
- 존 더 리퍼 도구 중 하나.
- --format=crypt --wordlist 와 같은 형식으로 사용
- 사용자가 암호에 사용할 파일을 명시해야한다.
john --wordlist=암호리스트.txt shadow파일.txt
|
2) 우리나라
- 한국에서 흔한 비밀번호 리스트 → nordpass 통계를 이용하면 되었다.
한국에서 많이 사용하는 비밀번호 리스트는 다음과 같다. 다음 리스트를 텍스트 파일로 저장해준다.
111111 admin 123456 111111 12345 1q2w3e4r P@ssw0rd 1q2w3e 1qaz2wsx qwer1234 qpalzm123 1q2w3e4r5t UNKNOWN pascal 12345678 qwe123 123123 1q2w3e4r! ******* 1q2w3e4r5t! |
암호 해독 과정
위에서 흭득한 정보를 모아서 존더 리퍼를 사용한다.
john --format=crypt --wordlist=패스워드 파일 경로 흭득한 shadow 파일명

손 쉽게 암호가 해독되는 것이 보인다.
느낀점
힌트조차도 아예 없던 상태에서 시작했을 때는 정말 어떻게 해야할지 몰랐다. 힌트가 주어져도 어떻게 써야할지 몰랐다. 고민하고, 열심히 서치해보기도 하였다. 점점 생각하는 시간이 깊어질 수록 마치 추리 소설의 한 장면처럼 주어진 힌트를 어떻게 사용해야할지 흐름이 보이기 시작했다. 물론 막힐 때도 있었다. 이럴 땐, 먼저 과제를 해결한 친구에게 도움을 요청하기도 했다.
이렇게 암호를 해결하는 과정, 그리고 마침내 해석했을 때는 '재밌다'와 '성취감'이라는 감정이 들었다. 하지만 직접 password cracking 실습을 해보니, 간단한 암호를 사용하는 것이 얼마나 위험한지를 몸소 깨닫게 되었다. 회원가입 시 입력하는 비밀번호를 성실하게 정성들여서 만들어야겠다고 다짐했다.
NordPass에서 비밀번호를 통계낸 것을 보고, 세상 어딘가에는 이런식으로 무료 비밀번호 리스트들이 많겠구나란 생각이 들었다. 이 중 어딘가에, 내 비밀번호가 유출되었다면 이것을 토대로 공격자가 충분히 다른 계정들도 크렉킹을 시도할 수 있겠다는 생각이 들어 조금은 무서웠다. 해당 과제는 경각심을 깨워준 과제였다. 또안 더욱 보안을 신경쓰기 위해서는 창의적 사고를 키울 필요가 있을 것 같다. 생각치도 못한 곳에서 힌트를 얻을 수 있었기 때문이다.