문제를 보자. suninatas의 비번을 아냐고 물어본다.
링크에 잇는 파일을 다운받고 파일형식은 tar인것을 볼 수 있다.
tar파일안에는 passwd 파일과 shadow파일이 존재한다.
tar파일을 압축을 풀면 passwd 파일과 shadow파일둘다 34 개의 라인으로 구성되어있다.
passwd파일과 shadow파일 둘다 유닉스 리눅스계열의 계정파일인데 여기안에 passwd가 해시화되어 저장되어있다.
본래는 사용자들의 Credential 해시는 passwd파일에 저장했었지만, Rainbow Table공격에 대응하기위해 따로 별도로 shadow파일에 관리한다. 원래 passwd 파일의 : 를 기준으로 두번째 섹션의 x 자리에 비밀번호 해시가 적혀있는 자리다. 하지만, x 로 나타내어있으면 shadow파일에 관리한다는 의미를 말한다. 따라서 passwd 파일을 필요가 없다.
(/etc/passwd 파일은 모두가 read할 수 있지만 /etc/shadow파일은 root 계정이나 shadow그룹밖에 보지 못한다.)
이제 shadow파일을 보자. shadow파일을 보면 suninatas의 비밀번호 해시가 저장되어있는 것을 볼 수 있다.
마찬가지로 shadow파일도 : 를 기준으로 두번쨰 섹션에 passwd 해시가 저장된다. 해시화된 passwd는 $를 기준으로 나타낼 수 있는데 첫번쨰 $ 해시알고리즘 종류를 말한다. $6은 SHA-512 알고리즘을 의미한다.
그리고 두번쨰 $QlRlq.. 는 Salt 값을 의미한다. 같은 암호알고리즘이여도 Salt값이 다르면 다른 해시를 나타내게 된다.
마지막 $BZoS.. 부터는 passwd의 해시를 나타낸다.
왜 내가 root의 해시까지 파일에 담았는지는 모른다. (그냥 문제안보고 무지성으로 풀다가 이렇게된 것같다.)
suninatus의 passwd 해시를 파일로 저장하여 크랙을 하면된다.
john 에서 패스워드 포맷을 찾아주고
wordlists를 통해서 사전파일을 등록후 크랙해주면 손쉽게 찾을 수 있다.