01. 리눅스에서 사전 대입 공격 실습
1) 관련 프로그램 설치
관리자 권한으로 John-the-ripper 를 설치하고 시작하도록 하자.
2) 테스트 계정 생성 및 패스워드 설정
패스워드 크래킹에 사용할 계정을 생성하자.
useradd 명령어를 통해 계정을 생성하고, passwd 명령어를 통해 비밀번호를 설정할 수 있다.
비밀번호는 ggaann1234로 설정할 것이다!
추가한 사용자의 패스워드 정보는 /etc/shadow 파일에서 확인할 수 있다.
3) 패스워드 크래킹
사전 파일 준비 (dic.txt)
패스워드로 사용될 수 있는 사전 파일을 미리 작성해야 한다.
사전 파일의 이름은 dic.txt.로 하여 생성해보도록 하자.
파일에는 단어들의 list를 만들어 저장하면 된다.
이때, test01 계정의 비밀번호인 ggaann1234를 포함하도록 리스트를 구성하도록 하자.
패스워드 크래킹 실습
🖥️ john-the-ripper를 활용하여 패스워드 크래킹을 시도해보자.
➡️ 이 파일로부터 2개의 password 값이 확인됐다.
하나는 gaeun 계정의 password, 다른 하나는 test01 계정의 password 이다.
위의 코드에서 test01 계정에 대한 패스워드 크래킹 사전 공격에 대해 성공적으로 찾아냈다는 것을 알 수 있다.
(ggaann1234 (test01))
4) 사전 대입 공격 실습 코드 구현
패스워드 크래킹을 수행할 hash 값과 salt 값 파악
🖥️ 타겟으로 패스워드 크래킹 공격을 수행할 계정의 hash 값과 salt 값을 확인해보자.
/etc/shadow를 통해 파악할 수 있다.
공격 소스 코드(crack.c)
🖥️ 위의 hash 값과 salt 값으로 공격 소스 코드를 작성해보자.
공격 코드를 컴파일 하여 binary 생성
➡️ undefined reference to 'crypt' 라는 문구가 뜨면서 error 가 발생한다.
이를 해결해보자.
➡️ lcrypt는 라이브러리로, 위 코드에서 사용한 crypt() 함수가 정의되어 있는 crypt 라이브러리를 컴파일 과정에서 링킹(linking)하기 위한 것이다.
프로그램 실행 결과
만들어둔 사전 내에서 원하는 결과를 찾아내는 것을 확인할 수 있다!
02. 리눅스 패스워드 복구
1) 부팅 이미지 선택
먼저 GRUB 화면으로 진입해야 한다.
우분투 시스템이 부팅될 때, Shift 키를 누르고 있으면 다음과 같은 GRUB 화면이 나온다.
➡️ 이 화면에서 E(edit) 키를 누르고 ro find .. quiet -> rw init=/bin/bash 로 수정해보자.
부팅하면 처음 화면이 우분투 UI 가 아닌, root 권한을 가진 bash가 실행되는 것을 확인할 수 있다.
2) 부팅 후 패스워드 변경
passwd root 명령어를 통해 root 권한 패스워드를 변경하고, 관리자 권한 셸을 획득할 수 있다.