소개
한 지역 단체가 직원 포털을 폐쇄했습니다. 사고 대응 연습에서 예전 비밀번호 내보내기를 모사한 데이터가 나타났지만 현재 직원 아카이브는 계속 운영 중입니다. 이전 레코드와 사람의 관계를 잃지 않으면서 제공된 후보로 실제 무엇을 복구할 수 있는지 확인하세요.
운영 중인 아카이브를 사용하고 Kali Linux에서 John the Ripper를 실행하여 비공개 복구 목록을 만듭니다. 모든 신원은 가상입니다. 감사 환경과 대상 컨테이너는 격리되어 있으며 하나의 VM 커널을 공유합니다. 범위는 제공된 파일과 서비스뿐이며 설치나 프로그래밍은 필요하지 않습니다.
선수 지식은 터미널 명령 입력과 경로 구별입니다. 이 실습은 사용하는 옵션과 파일 작업을 설명합니다. 읽기와 일반적인 오류 처리를 포함하여 약 45분이라는 저자 추정 시간입니다. 다음 가이드 실습은 독립 환경에서 현재 영향을 검사합니다.
아카이브를 사용하고 결과 보호하기
이 단계에서는 내보내기를 조사하기 전에 정상 접근을 관찰합니다. Auditor를 여세요. 터미널은 Kali 감사 컨테이너에 auditor로 들어가며 현재 위치는 /home/auditor/project입니다. 아카이브는 다른 컨테이너에서 실행됩니다.
SSH는 암호화된 원격 로그인 프로토콜입니다. 이 아카이브는 비밀번호를 받고 인증된 계정 이름만 반환하며 범용 셸은 제공하지 않습니다. 먼저 민감하지 않은 데모 계정을 사용합니다. -p는 서비스 포트를 선택합니다. 두 -o 옵션은 준비된 서버 키 파일을 선택하고 키 일치를 요구합니다. 호스트 키는 서버를 식별하고 비밀번호는 사용자를 인증합니다. 마지막 whoami는 원격 계정 이름을 요청합니다.
ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 demo@staff-archive whoami
demo@staff-archive's password:에서 welcome-7을 입력하고 Enter를 누르세요. 비밀번호 문자는 표시되지 않습니다. demo가 표시된 뒤 로컬 프롬프트로 돌아와야 합니다. 비밀번호를 셸 명령으로 입력하지 마세요. 오타가 나면 Ctrl+C로 취소하고 SSH 명령을 반복합니다. 연결 또는 호스트 키 오류는 자격 증명 거부가 아닙니다. 호스트 키 검증을 끄지 마세요.
허용 범위를 읽습니다. cat은 파일을 표시하고 상대 경로는 현재 디렉터리에서 시작합니다. inputs에는 읽기 전용 원본이 있습니다.
cat inputs/scope.tsv
탭으로 구분된 열은 employee_id, current_login, host, port입니다. staff-archive:12222의 이 현재 사용자들과 demo만 검사할 수 있습니다. 추가 사용자 이름, 호스트, 후보 목록을 추측하지 마세요.
연습에서도 복구한 비밀번호는 민감합니다. umask 077은 이 터미널 세션에서 새로 만드는 파일의 그룹 및 기타 사용자 접근 권한을 없앱니다. mkdir -m 700은 소유자만 들어갈 수 있는 디렉터리를 만듭니다. 각각 실행하세요.
umask 077
mkdir -m 700 findings
findings는 결과를 쓸 수 있는 영역입니다. 다시 연결했을 때 이미 있으면 유지하세요. 새 세션에서는 umask 077을 다시 실행합니다. 상대 경로가 실패하면 pwd로 현재 디렉터리를 확인하고 cd /home/auditor/project로 돌아옵니다. 감사 동안 모든 입력 파일, 아카이브 계정, 현재 비밀번호를 보존하세요.
제공된 사전의 일치 항목 복구하기
이 단계에서는 후보 다섯 개를 실제 비밀번호 해시 네 개와 비교합니다. 해시는 비밀번호에서 단방향으로 도출된 값입니다. 오프라인 복구는 저장된 설정으로 후보 해시를 계산해 비교합니다. 비밀번호를 복호화하거나 아카이브에 로그인하지 않습니다.
Auditor의 /home/auditor/project에 머무르세요. 작은 입력 파일들을 각각 읽습니다.
cat inputs/legacy.txt
cat inputs/candidates.txt
이전 데이터의 각 줄은 record_id:hash입니다. $6$은 SHA-512 crypt를 나타냅니다. 저장된 값에는 솔트가 포함되어 같은 비밀번호도 다른 저장 값을 만들게 합니다. 각 레코드 식별자를 유지하세요. 이 작은 합성 사전은 연습을 빠르게 하기 위한 것입니다. 그 속도로 운영 환경의 비밀번호 강도를 추정할 수는 없습니다.
John의 --format=sha512crypt는 형식을 선택하고 --wordlist는 제공된 후보를 읽습니다. pot 파일은 복구된 해시/비밀번호 쌍을 저장합니다. --pot은 공유 기본 파일 대신 비공개 파일을 선택합니다. --session은 실행의 복구 및 로그 파일 위치를 선택합니다. OMP_NUM_THREADS=2는 이 명령에만 작업 스레드 수를 제한합니다. 이 경로에는 공백이 없으므로 따옴표가 필요하지 않습니다.
OMP_NUM_THREADS=2 john --format=sha512crypt --wordlist=inputs/candidates.txt --pot=/home/auditor/project/findings/audit.pot --session=/home/auditor/project/findings/recovery inputs/legacy.txt
프롬프트가 돌아올 때까지 기다립니다. 해시 세 개가 복구되어야 하며 시간과 순서는 달라질 수 있습니다. 반복 실행의 No password hashes left to crack은 입력이 비었다는 뜻이 아니라 pot에 결과가 이미 있다는 뜻일 수 있습니다. --show는 새 복구 실행 없이 저장된 결과를 읽습니다.
john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt
다음 관계를 확인하세요. 순서는 달라도 됩니다.
portal-17:cedar42
portal-23:pebble7
portal-41:birch81
3 password hashes cracked, 1 left
실제 출력을 내보냅니다. >는 표준 출력을 파일로 리디렉션하며 반복하면 해당 결과 파일을 교체합니다. 해시는 수정하지 않습니다.
john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt > findings/recovered.txt
cat findings/recovered.txt
내보내기는 레코드 식별자와 복구된 비밀번호를 유지해야 합니다. 경로에 오타가 나면 수정하고 해당 명령을 다시 실행합니다. 결과가 다른 사람에게도 읽히는 상태라면 chmod 600 findings/recovered.txt로 소유자만 읽고 쓰도록 되돌릴 수 있습니다. 다른 결과 파일에도 같은 방법을 쓸 수 있습니다. pot이나 평문 내보내기를 사고 요약으로 공유하지 마세요.
신원 관계와 불확실성 유지하기
이 단계에서는 비밀번호 없는 복구 목록을 만듭니다. Auditor에 머무르며 이전 직원 명단을 읽으세요.
cat inputs/legacy-roster.tsv
명단은 record_id를 안정적인 employee_id와 표시 이름에 연결합니다. Morgan Rivera라는 사람이 두 명입니다. portal-17은 E101, portal-41은 E103에 속합니다. 이름만으로 이전 레코드를 현재 로그인 이름에 안전하게 연결할 수 없습니다.
여기서 recovered는 원본 해시가 제공된 후보와 일치했다는 뜻입니다. not-recovered는 완료된 이 제한적 실행에서 일치한 후보가 없다는 뜻입니다. 강함, 안전함, 부재, 재사용하지 않음을 뜻하지 않습니다. 모든 레코드에 대해 현재 서비스가 받아들이는지는 아직 알 수 없습니다.
record_id, employee_id, recovery 세 열을 갖는 findings/recovery.tsv를 만듭니다. printf는 \t를 탭, \n을 줄바꿈으로 해석합니다. 작은따옴표는 printf가 읽을 때까지 이 시퀀스를 보존합니다. >는 비밀번호 없는 목록을 생성하거나 교체합니다.
printf 'record_id\temployee_id\trecovery\nportal-17\tE101\trecovered\nportal-23\tE102\trecovered\nportal-41\tE103\trecovered\nportal-58\tE104\tnot-recovered\n' > findings/recovery.tsv
cat findings/recovery.tsv
네 레코드가 명단의 직원 ID와 함께 한 번씩 있는지 확인하세요. 세 개는 복구되었고 하나는 이 예산을 넘어 미해결 상태입니다. 값을 고치려면 printf 텍스트를 수정하고 다시 실행합니다. 비공개 pot과 내보내기는 후속 허용 작업을 지원하고, 이 목록은 비밀번호를 공개하지 않고 결과를 전달합니다.
요약
운영 중인 SSH 서비스를 사용하고 John으로 합성된 이전 비밀번호 세 개를 복구하여 원래 신원을 유지했습니다. 비공개 결과와 비밀번호 없는 목록은 성공한 오프라인 일치와 사전 소진의 한계를 구분합니다. 복구한 비밀번호가 현재 직원 계정에서 작동한다는 사실은 아직 입증되지 않았습니다. 다음 가이드 실습에서는 허용된 정확한 쌍으로 그 별도 판단을 수행합니다.



