Nebula 해킹스터디 level06
https://exploit-exercises.com/nebula/level06/
🔶기본 지식
1.credentials in infomation system
credential 단어의 뜻은 자격증이라는 뜻이다. 하지만 정보시스템에서는 특정 응용에서 사용하는 암호학적 개인정보를 말한다.
2. legacy unix system
레거시 시스템(legacy system)은 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 의미한다. 현대까지도 남아 쓰이는 기술과 더이상 쓰이지 않더라도 현대의 기술주는 경우를 모두 의미한다.
3. john the ripper
john the ripper는 password crack tool 이다. 암호화된 password를 복호화해준다.
🔶풀이
About
flag06의 계정 credential은 legacy unix system 으로부터 왔다.
Source code
없음
로그인을 하고 /home/flag06으로 이동했다.
아무것도 없다.
그래서 About을 이용해 생각을 했다. flag06의 계정이 암호화된 것은 레저시 유닉스 시스템으로 부터 왔다 했는데 그럼 과거 유닉스 시스템에서 어떤 방식으로 개인 계정을 암호화했는지 알아보기로 했다.
과거 유닉스 프로그램은 개인 정보를 /etc/passwd에 저장했다. 하지만 여기엔 너무 많은 덩보를 담고 있기 때문에 요즘에는 패스워드만 저장한 /etc/shadow를 사용한다.
/etc/passwd 의 구조
사용자명:패스워드(암호화):사용자계정 uid:사용자계정 gid:사용자 계정 이름:사용자 계정 홈 디렉토리: 사용자 계정 로그인 쉘
/etc/shadow 의 구조
사용자명:패스워드:패스워드 파일 최종 수정일:패스워드 변경 최소일:패스워드 변경 최대일:패스워드 만료 기간:패스워드 파기 기간:계정 만료 기간:예약 필드
flag 계정의 /etc/passwd를 알기 위해서 cat과 grep을 사용했다. cat은 파일을 읽기 위해 사용했고 너무 많은 출력이 나오기 때문에 flag06이 나온 행만 출력하도록 grep을 사용했다. 그 결과 flag06 의 passwd가 나왔다. 이제 암호화된 password를 복호화해주기 위해 john the ripper 을 사용했다.
john the ripper는 윈도우에서 사용했다. (네뷸라를 하는 컴은 vm) 더 사용하기 편해서. 먼저 http://www.openwall.com/john/ 에서 os에 맞는 프로그램을 다운 받는다. 압축을 풀고 run폴더에 위에 있는 flag06:~ 을 txt파일로 작성해 저장한다. 파일 이름은 pass로 했다.
윈도우 cmd창으로 들어가 run 폴더까지 이동했다. 리눅스의 터미널과 명령어가 다른 부분이 있어 헷갈렸다.
john.exe라는 실행파일과 내가 저장한 pass.txt파일이 존재하는 걸 볼 수 있다.
이렇게 나왔지만 어떤 결과가 나왔는지 알 수 없다. -show를 사용하라 나와있어서 결과를 확인하기 위해 사용했다.
결과를 볼 수 있다. hello라고 나온 것을 볼 수 있다.
flag06의 계정을 얻기 위해 su(switch user)를 사용했다. su 명령어는 사용자를 바꿀 때 사용한다. su 사용자명 을 입력하면 password치는 과정을 거쳐 계정을 바꾼다.
password 입력란에 아까 얻은 hello를 입력했다. getflag를 입력하니 성공!!
참고:
https://ko.wikipedia.org/wiki/%EB%A0%88%EA%B1%B0%EC%8B%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C
https://terms.naver.com/entry.nhn?docId=864783&cid=42346&categoryId=42346
http://man7.org/linux/man-pages/man7/credentials.7.html
http://webdir.tistory.com/129
http://winkite1226.tistory.com/64?category=741694
http://egloos.zum.com/mimirga/v/7285750
https://exploit-exercises.com/nebula/level06/
🔶기본 지식
1.credentials in infomation system
credential 단어의 뜻은 자격증이라는 뜻이다. 하지만 정보시스템에서는 특정 응용에서 사용하는 암호학적 개인정보를 말한다.
2. legacy unix system
레거시 시스템(legacy system)은 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 의미한다. 현대까지도 남아 쓰이는 기술과 더이상 쓰이지 않더라도 현대의 기술주는 경우를 모두 의미한다.
3. john the ripper
john the ripper는 password crack tool 이다. 암호화된 password를 복호화해준다.
🔶풀이
About
flag06의 계정 credential은 legacy unix system 으로부터 왔다.
Source code
없음
로그인을 하고 /home/flag06으로 이동했다.
아무것도 없다.
그래서 About을 이용해 생각을 했다. flag06의 계정이 암호화된 것은 레저시 유닉스 시스템으로 부터 왔다 했는데 그럼 과거 유닉스 시스템에서 어떤 방식으로 개인 계정을 암호화했는지 알아보기로 했다.
과거 유닉스 프로그램은 개인 정보를 /etc/passwd에 저장했다. 하지만 여기엔 너무 많은 덩보를 담고 있기 때문에 요즘에는 패스워드만 저장한 /etc/shadow를 사용한다.
/etc/passwd 의 구조
사용자명:패스워드(암호화):사용자계정 uid:사용자계정 gid:사용자 계정 이름:사용자 계정 홈 디렉토리: 사용자 계정 로그인 쉘
/etc/shadow 의 구조
사용자명:패스워드:패스워드 파일 최종 수정일:패스워드 변경 최소일:패스워드 변경 최대일:패스워드 만료 기간:패스워드 파기 기간:계정 만료 기간:예약 필드
flag 계정의 /etc/passwd를 알기 위해서 cat과 grep을 사용했다. cat은 파일을 읽기 위해 사용했고 너무 많은 출력이 나오기 때문에 flag06이 나온 행만 출력하도록 grep을 사용했다. 그 결과 flag06 의 passwd가 나왔다. 이제 암호화된 password를 복호화해주기 위해 john the ripper 을 사용했다.
john the ripper는 윈도우에서 사용했다. (네뷸라를 하는 컴은 vm) 더 사용하기 편해서. 먼저 http://www.openwall.com/john/ 에서 os에 맞는 프로그램을 다운 받는다. 압축을 풀고 run폴더에 위에 있는 flag06:~ 을 txt파일로 작성해 저장한다. 파일 이름은 pass로 했다.
윈도우 cmd창으로 들어가 run 폴더까지 이동했다. 리눅스의 터미널과 명령어가 다른 부분이 있어 헷갈렸다.
john.exe라는 실행파일과 내가 저장한 pass.txt파일이 존재하는 걸 볼 수 있다.
이렇게 나왔지만 어떤 결과가 나왔는지 알 수 없다. -show를 사용하라 나와있어서 결과를 확인하기 위해 사용했다.
결과를 볼 수 있다. hello라고 나온 것을 볼 수 있다.
flag06의 계정을 얻기 위해 su(switch user)를 사용했다. su 명령어는 사용자를 바꿀 때 사용한다. su 사용자명 을 입력하면 password치는 과정을 거쳐 계정을 바꾼다.
참고:
https://ko.wikipedia.org/wiki/%EB%A0%88%EA%B1%B0%EC%8B%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C
https://terms.naver.com/entry.nhn?docId=864783&cid=42346&categoryId=42346
http://man7.org/linux/man-pages/man7/credentials.7.html
http://webdir.tistory.com/129
http://winkite1226.tistory.com/64?category=741694
http://egloos.zum.com/mimirga/v/7285750
댓글
댓글 쓰기