Sqix

FTZ Level8 본문

Wargame/FTZ

FTZ Level8

Sqix_ow 2018. 6. 17. 20:59


===================================================

$ cat hint


level9의 shadow 파일이 서버 어딘가에 숨어있다.

그 파일에 대해 알려진 것은 용량이 "2700"이라는 것 뿐이다.

===================================================


Shadow 파일 용량이 2700이라고 하니, 아마 2700바이트를 의미하는 것 같습니다. 


그 전에 Shadow 파일이 무엇인지에 대해서 자세히 알아보는 것이 좋을 것 같습니다.


리눅스 시스템은 단방향으로 암호화한 패스워드를 포함해서 계정 유효 기간 등의 정보를 /etc/passwd에 보관합니다.


이 파일은 수정할 수는 없지만, 이전에는 이 정보를 아무나 볼 수 있었습니다. 따라서 보안 문제가 있었습니다.


이를 해결하기 위해 도입된 것이 shadow라는 패스워드 시스템입니다. 




shadow 파일의 권한은 -r---------로, Root 권한으로의 읽기만 허용이 됩니다. 꽤나 안전한 방법입니다.


그리고 이 또한 /etc/shadow 위치에 존재합니다.


shadow의 계정 정보는 다음의 구조를 따릅니다.

level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524
   1       2            3                          4                          5      6    7      8  9 10  11

1. 사용자 계정명
2. Hashid. 1은 MD5, 2a는 Blowfish, md5는 md5, 5는 SHA-256, 6은 SHA-512
3. Salt (Rainbow Table을 이용한 Brute Force를 방지하기 위한 값)
4. Hash Value (실제 해쉬값)
5. Last Changed(1970.1.1 이후로 패스워드가 며칠 뒤에 마지막으로 수정되었는가)
6. Minimum(패스워드 변경 전 최소 사용기간)
7. maximum (패스워드 변경 전 최대 사용시간)
8. Warn (패스워드 만기 <Warn>일 전에 경고 메시지 제공)
9. Inacvite (로그인 접속 차단된 날짜 수)
10. Expire (로그인 금지일 수)
11. Reserved (사용되지 않는 필드)

처음에는 MD5-decode 코드를 작성하여 해결하려 했으나, Rainbow Table 부분에서 많이 막혀서, 이번에는 툴을 이용해 보기로 했습니다.

제가 사용한 tool은 Hashcat입니다. 

https://github.com/hashcat/hashcat에서 클론하여 이용하실 수 있습니다.

단, openCL을 이용하는 프로그램이기 때문에 여기에서 opencl을 다운로드 하셔서 이용하셔야 합니다.

우선, shadow file의 크기가 2700바이트이기 때문에, find 명령어를 이용해야 합니다. txt파일은 하나이기에, 이를 cat하여 봅시다.

$ find -size 2700c 2> /dev/null
$ cat /etc/rc.d/found.txt

그러면 level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524 이라는 문장이 나타납니다.

이제 이를 hashcat을 이용하여 solve합니다. example500.hash에 $1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.을 넣어 줍니다.

그 후, example500.sh을 실행해 줍니다.



'Wargame > FTZ' 카테고리의 다른 글

FTZ Level10  (0) 2018.06.18
FTZ Level9  (0) 2018.06.18
FTZ Level7  (0) 2018.06.12
FTZ Level6  (0) 2018.06.12
FTZ Level5  (0) 2018.06.12
Comments