'password'에 해당되는 글 2건

  1. 2008.06.29 리눅스 root 패스워드를 잊어버렸을 때
  2. 2008.06.28 존더리퍼 John the ripper
OS/Linux2008. 6. 29. 05:13

리눅스 root 패스워드를 잊어버렸을 때


리눅스를 사용하면서 가장 난감할 때가 root 패스워드를 잊어버렸을 때일 것이다. 물론 다시 설치하면 해결되겠지만 그러기에는 시간이 너무 아깝다. 더구나 방금 설치를 마치고 재부팅했는데 설치 중에 root 패스워드를 잘못 입력해 로그인 한 번 못해보고 다시 설치해야 한다면 더욱 비참할 것이다.

하지만 리눅스를 만든 사람들이 이런 상황에 대한 대비책을 세워 놓지 않았을 리 없다. 리눅스에는 시스템의 사용 모드를 나타내는 ‘runlevel’이라는 것이 있는데 이는 다음과 같다.

0 - 시스템 종료
1 - Single-User 모드
2 - Multi-User 모드(네트워크 사용 불가)
3 - Multi-User 모드
5 - Multi-User 모드(그래픽 화면 로그인)
6 - 시스템 재시작



위의 runlevel 중 1, 즉 Single-User 모드는 별도의 로그인 과정 없이 root 계정으로 시스템을 사용할 수 있는 모드이다. 따라서 이 모드로 부팅하면 root 패스워드를 변경할 수 있다. Single-User 모드로 부팅하기 위해서는 부트 로더에서 부팅 파라미터를 수정해야 하는데 여기서는 부트 로더로서 GRUB을 사용한다고 가정하고 그 과정을 살펴보겠다.


1. GRUB이 떠서 디폴트로 지정된 OS로 부팅하려고 할 때, 엔터를 쳐서 선택 메뉴로 들어간다.

2. 부팅하고자 하는 것을 선택하고 e를 눌러 Edit 모드로 들어간다. 시스템마다 차이는 있겠지만 보통 다음과 같은 형식으로 나올 것이다.

root (hd0,0)
kernel /boot/vmlinuz-2.6.14-41hs ro root=/dev/hda2
initrd /boot/initrd-2.6.14-41hs.img



3. kernel이 있는 줄을 선택하고 다시 e를 누른다. 그럼 다음과 같이 부팅 파라미터를 수정할 수 있는데 끝에 1 또는 single을 입력하고 엔터를 누른다.

grub edit> kernel /boot/vmlinuz-2.6.14-41hs ro root=/dev/hda2 1


4. 다시 2번의 화면으로 돌아오게 되는데 b를 누르면 부팅을 시작한다.

5. 별도의 로그인 화면이 뜨지 않고 다음과 같이 프롬프트가 뜰 것이다. 이제 root 패스워드를 원하는 것으로 바꿀 수 있다.

sh-3.00# passwd
Changing password for user root.
New UNIX password: _


6. 시스템을 재부팅한다.

sh-3.00# reboot



만약 리눅스 설치 CD가 있다면 rescue 모드로 부팅하여 root 패스워드를 변경할 수도 있다. rescue 모드란 윈도우의 안전 모드에 해당하는 것으로 시스템에 이상이 있어 제대로 부팅할 수 없을 때 사용하는 일종의 복구 모드이다.

1. 리눅스 설치 CD 1번을 넣고 부팅한다(BIOS에서 CD-ROM 부팅 설정이 되어 있어야 한다).

2. rescue 모드로 들어간다. 배포판 별로 차이가 있을 수 있으나 보통 boot: 프롬프트에서 linux rescue를 입력하여 들어간다.

boot: linux rescue

3. 언어와 키보드, 네트워크 설정 등을 한다.

4. 루트 파티션(사용자의 리눅스가 설치된 파티션)을 선택한다.

5. 프롬프트가 뜨고 4에서 선택한 파티션이 /mnt/sysimage에 마운트되었을 것이다.

6. chroot /mnt/sysimage를 입력하여 시스템의 루트를 /mnt/sysimage에 마운트된 파티션으로 옮긴다. 그 후 root 패스워드를 변경할 수 있다.

sh-3.00# chroot /mnt/sysimage
sh-3.00# passwd
Changing password for user root.
New UNIX password: _


7. exit를 두 번 입력해 시스템을 재부팅한다.

sh-3.00# exit
exit
sh-3.00#exit



root 패스워드 바꾸기가 의외로(?) 간단한 것을 알 수 있다. 보안을 위해서는 CD-ROM 부팅을 통제하고 BIOS에 패스워드를 걸어놓는 게 좋을 수도 있다. 하지만 패스워드를 두 번 입력해야 하는 불편함이 있을 뿐만 아니라 위험부담 또한 존재한다. 만약 BIOS 패스워드를 잊어버린다면? 보안을 강화할 수록 시스템 관리자의 불편과 부담은 커져 간다. 보안과 편리함 사이의 적절한 선을 찾는 것 또한 시스템 관리자의 고민이 아닐 수 없다.

Posted by skensita


1. 존 더 리퍼(John the Ripper)

John the Ripper는 Solar Designer가 개발한 Unix계열 password crack tool이다. 무료 도구이며, UNIX계열 크래킹도구이지만 DOS, Win9x, NT, 2000 등의 플랫폼도 지원한다. 속도를 높이기 위해 Intel MMX기술이나 AMD K6 프로세서의 특수 기능들을 이용한 최적화된 코드를 집어넣기도 하였다.

http://www.openwall.com/john/ 에서 개발버전, 안정버전, linux용, windows용 등을 다운 받을 수 있다.

(지금 게시물에서는 리눅스용을 실제 설치해보거나 해독해본 경험이 없어서 아래 설명하는 부분은 windows용으 로 하겠다_1.7.1버전을 이용하였다_)


2. 패스워드 파일

존더리퍼를 이용하려면 리눅스의 /etc/shadow와 같은 패스워드 파일이 있어야 한다. /etc/shadow 파일의 일부를 보면 다음과 같이 생겼음을 알 수 있다.

level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524
(해커스쿨 레벨8에서 보여주는 레벨9의 패스워드 정보가 있는 부분이다)

콜론(:)으로 각 필드를 구분해 주며 색칠된 부분이 레벨9의 패스워드가 암호화된 부분이다. 바로 이부분을 존더리퍼가 해독하여 패스워드를 보여주는 것이다.


3. 크래킹 과정(Windows용)
우리는 widndows용으로 크래킹을 할 것이므로 리눅스에서 얻어낸 shadow파일을 윈도우즈로 복사해존더리퍼의 압축을 해제한 폴더 안의 run폴더로 붙인다.

command창을 실행시킨 후 shawdow파일을 붙여넣은 run폴더로 들어간다.
(예제에서는 shadow파일을 windows로 복사할 때 11.txt라는 파일로 저장하였다.)

C:\john1701\run>john-mmx 11.txt

C:\john1701\run>john-mmx --show 11.txt
(-show는 크래킹된 패스워드를 보여주라는 옵션이다)

위 명령을 각기 실행한 모습이다. 해당 계정의 패스워드가 크래킹되어 화면에 출력되는 것을 볼 수 있다.

사용자 삽입 이미지


4. 참고
한개의 패스워드 파일을 크래킹하면 john.pot라는 파일이 생성된다. 이 파일에는 크랙된 패스워드가 저장이 되는데, 한번 크래킹한 후 다른 파일을 크래킹 하기위해서는 이 파일을 삭제해주어야 한다.

다음과 같이리다이액션을 이용하여 크랙된 패스워드를 다른파일로 저장할 수 있다.
C:\john1701\run>john-mmx -show 11.txt > 1.txt
(john-mmx -show 11.txt 했을 때 화면에 출력되는 내용이 1.txt에 저장된다)

Posted by skensita