level 8
2020. 8. 22. 03:04
shadow 파일은 /etc/passwd 파일의 계정정보를 암호화하여 저장한 파일 형태를 말하죠.
이 파일의 용량이 2700이라네요.
그러면 find / -size 2700c 2> /dev/null 명령을 입력해줘서 찾아보죠.
다음과 같이 나오네요.
아무래도 의심스러운 이름인 found.txt를 찾아가보죠.
파일 정보도 알아보겠습니다.
그냥 root가 파일의 소유자이고 읽기 권한이 level8 계정에 주어져있네요.
내용을 보겠습니다.
똑같은 문장이 엄청나게 많이 나오네요.
근데 생각해보니 이거 shadow 파일이었죠.
shadow 파일의 저장방식을 분석해보겠습니다.
level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524
1. 계정 이름(level9)
계정 이름을 표시합니다.
2. 암호화된 패스워드
구성은 이러합니다.
(1) $id
(2) $salt
(3) $password
id 에서는 단방향 해시값 생성하는 알고리즘을 선택합니다.
-- [1] MD5 [2] BlowFish [5] SHA-256 [6] SHA-512
salt는 똑같은 password 값을 입력해도 해시값이 동일하지 않게 salt 값을 기존의 password 값에 덧붙여 해시값을 생성해 보안을 강화하는 역할을 합니다.
3. 마지막 패스워드 변경 날짜(11040)
4. 패스워드 최소 사용기간(0)
5. 패스워드 최대 사용기간(99999)
6. 경고일(7)
7. 비활성화날짜(-1)
8. 만료일(-1)
9. Reserved
사용 X
이 정보를 토대로 우리가 '직접' 알아내기에는 고도의 지식과 많은 양의 시간을 들여야할 것입니다.
그래서 저는 John the ripper라는 크랙툴을 이용했습니다.
이 툴은 shadow 파일에 암호화된 데이터를 기반으로 값을 추출하는 역할을 합니다.
found.txt에 있는 shadow 파일 데이터를 복사해 새로운 텍스트 파일에 붙여넣은 뒤 John the ripper의 run 디렉터리에 넣습니다. 그런 뒤 john.exe의 인자로 그 텍스트 파일을 던져줍니다.
저는 Windows 환경에서 실행했습니다.
추출에 성공했네요.