John the Ripper
IT 위키
더 많은 작업
- John the Ripper; 존 더 리퍼
- 비밀번호 해시에 후보 비밀번호를 대입해 약한 비밀번호를 찾아내는 비밀번호 크래킹 도구
- 1996년 Solar Designer 가 유닉스용으로 처음 공개한 오픈소스 도구로, 지금은 리눅스·윈도우·macOS 에서 돈다
- 관리자는 사용자들이 쉬운 비밀번호를 쓰는지 점검하는 데 쓰고, 공격자는 훔친 해시를 풀어내는 데 쓴다
- 패키지 이름과 명령 이름은 john 이다
해시는 거꾸로 풀 수 없으므로, 후보 비밀번호를 같은 방식으로 해시해 저장된 값과 같은지 비교한다.
| 모드 | 옵션 | 하는 일 |
|---|---|---|
| 싱글 크랙(single) | --single | 계정 이름, 실명 같은 계정 정보를 바꿔 가며 대입한다. 가장 빠르다 |
| 단어 목록(wordlist) | --wordlist=파일 | 사전 파일의 단어와 그 변형(--rules)을 대입한다 → 사전 공격 |
| 증분(incremental) | --incremental | 글자 조합을 차례로 전부 시도한다 → 무차별 대입 공격 |
- 옵션 없이 실행하면 single → wordlist → incremental 순서로 진행한다
- 유닉스 crypt(DES, MD5, SHA-512), 윈도우 LM·NTLM 등 해시 형식을 알아서 판별한다. 확장판(jumbo)은 압축 파일·문서의 비밀번호까지 다룬다
# unshadow /etc/passwd /etc/shadow > mypasswd # passwd 와 shadow 를 한 파일로 합친다 # john mypasswd # 크랙 시작 # john --wordlist=password.lst --rules mypasswd # 사전 파일과 변형 규칙으로 대입 # john --show mypasswd # 찾아낸 비밀번호 보기
- 해시가 든 /etc/shadow 는 root 만 읽을 수 있다. 해시를 손에 넣지 못하게 하는 것이 첫 방어다
- 같은 비밀번호라도 솔트가 다르면 해시가 달라지므로 미리 계산해 둔 표로 한꺼번에 푸는 공격은 막힌다. 그러나 사전에 있는 단어는 하나씩 대입하면 결국 풀리므로 길고 예측하기 어려운 비밀번호가 필요하다