강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스보안강좌#7 :“John the Ripper”를 활용한 암호 관리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

“John the Ripper”를 활용한 암호 관리

 

추측하기 어려운 암호를 사용하는 것은 계정보안의 기본이라 할 수 있다.

 

리눅스나 윈도우등 OS에 관계없이 암호가 아예 없거나 단순한 암호를 사용하는 계정에 대한 무작위 대입을 통한 스캔이 예전부터 꾸준히 발생하고 있어 암호 보안은 여전히 끊이지 않는 보안이슈가 되고 있다.

 

실제로 적지 않은 해킹이 고급 기술을 사용하기보다는 단순 암호추측을 통한 사례가 적지 않은 것이 사실이다.

 

따라서 현재의 시스템에서 사용되는 계정 중 id와 동일한 암호를 사용하거나 1111이나 1234등 쉬운 암호를 사용하는 계정을 찾아 추측하기 어려운 암호로 수정하도록 할 경우 일정정도 보안을 강화할 수 있을 것이다.

 

그런데, 암호 파일인 /etc/shadow는 암호화되어 있어 어떤 계정이 쉬운 암호를 사용하는지 알 수 없다. 그래서 어떤 관리자는 스니핑을 걸어두어 로그인하는 유저들의 암호를 일일이 알아내는 경우도 있는데, 이렇게까지 수고할 필요가 없다. 왜냐하면, “John the ripper”라는 암호해독 프로그램을 이용하면 /etc/shadow에서 쉬운 암호를 해독할 수 있기 때문인데, 따라서 어떤 의도로 사용하느냐에 따라 이는 공격 툴이 될 수도 있고 보안 툴이 될 수도 있을 것이다.

 

언젠가 고객 서버가 해킹을 당해서 로그를 살펴보니 이 프로그램을 설치하여 암호를 해독하려고 시도했던 경우도 있었는데, 물론 이는 스니핑과 같이 해독한 암호로 다음에 다시 로그인하기 위해서일 것이다.

 

이제 John the ripper를 설치하기 위해 아래의 홈페이지에 접속 후 소스파일을 다운로드 하여 컴파일 설치하도록 한다. 최근에는 상용버전과 free 버전을 함께 제공하고 있으므로 최신의 free stable 버전을 다운로드하면 된다.

 

.

 

http://www.openwall.com/john/

 

 

8fbf1bfe7faf246d2e517e6d05a2ca70_1654673370_3633.png
 

[그림] John the ripper 홈페이지

 

[root@www root]# tar zxvfp john-1.7.0.2.tar.gz // 압축해제

[root@www root]# cd john-1.7.0.2/src // src 디렉토리로 이동

[root@www src]# make linux-x86-any // 컴파일

[root@www src]# cd ../run/ // run 디렉토리로 이동

[root@www run]# ./unshadow /etc/passwd /etc/shadow > passwd.1

// 암호화된 암호가 저장된 passwd.1 파일 생성

[root@www run]# ./john passwd.1 // 암호해독 시작

olympia (olympia)

allmall (allmall)

lee (lee)

v3 (v3)

1234 (gaucho)

111 (weblog)

.....

 

위의 결과에서 우측이 계정이름이고 좌측이 해당하는 계정의 암호인데, 보는 바와 같이 id와 암호를 동일하게 사용하거나 추측하기 쉬운 암호를 사용하는 계정이 적지 않다는 것을 알 수 있다.

 

위의 결과는 john.pot 파일에 암호화되어 저장되는데, 새롭게 확인하려면 이 파일을 삭제 후 다시 실행하면 된다.

 

.

 

이렇게 쉬운 암호를 사용하는 계정을 확인한 후에는 계정에 대한 lock을 걸어 접속을 차단하거나 추측이 쉽지 않은 암호로 변경하도록 하여야 할 것이다.

 

급히 해당 유저에 대한 접근을 차단하려면 임의로 암호를 변경하기보다는 lock을 걸어 로그인 자체를 차단하도록 설정하는 것이 좋다. 이때는 다음과 같이 passwd -l 옵션을 주어 실행해 주면 된다.

 

.

 

# passwd -l antihong

Locking password for user antihong.

passwd: Success

 

이러한 경우 해당 유저의 /etc/shadow를 보면 아래와 같이 !!가 추가된 것을 알 수 있다.

 

antihong:!!$1$A2VgZpYN$iE/9ITfaIM5hB9zekOXkn1:13931:0:99999:7:::

 

이후 lock을 해제하려면 unlock의 의미인 -u 옵션을 주어 passwd -u user를 실행하거나 직접 /etc/shadow에서 !! 부분만 삭제해 주면 된다.

 

.

 

 

/etc/shadow 파일을 보면 다음과 같이 암호부분에 * 이 되어 있는 것도 있고, !!이 되어있는 것도 있는데, 이 둘의 차이점은 무엇일까?

 

nobody:*:13508:0:99999:7:::

rpm:!!:13508:0:99999:7:::

 

로그인을 한다는 것은 두 가지 방법을 통해 가능하다. 첫 번째는 telnet이나 ftp등과 같이 일반적인 방법인 id/pw 기반의 방법과, 두 번째는 ssh등과 같이 pw가 아닌 키 기반 방식으로 로그인하는 것이다.

 

(물론 sshpw 방식으로 로그인 가능하다.) 여기에서 * id/pw 방식의 로그인은 불가하지만 ssh-key기반의 방식으로 로그인은 가능하다는 의미이며 !! 는 두 가지 모두 불가하다는 의미를 가지고 있다.

 

 

 

그리고 추측이 가능한 쉬운 암호를 사용하고 있는 유저에 대해서는 자동으로 해당 유저에게 암호를 변경하도록 경고 메일을 발송하도록 할 수 있는데, cron에 걸어두면 유용하게 사용할 수 있을 것이다.

 

이는 함께 제공되는 mailer라는 스크립트를 만들어 실행하면 되는데, 기존의 mailer 파일에서 내용을 약간 수정하여 다음과 같이 실행하기만 하면 된다.

 

. 아래는 암호가 동일한 3명의 유저에게 메일이 발송되었음을 알 수 있다.

 

 

 

[root@www run]# ./mailer passwd.1

Sending mail to sensia...

Sending mail to test...

Sending mail to ody...

3 messages sent

 

만약, 위 과정 역시 아래와 같이 간단한 스크립트로 만들어 cron에 걸어둔다면 일정한 시각에(이를테면 매주 월요일) 암호를 체크하여 암호가 쉬운 유저에게 암호를 변경할 것을 권고하는 메일을 발송하게 될 것이다.

 

 

#!/bin/sh

 

cd /root/john-1.7.0.2/run/

rm -f john.pot restore passwd.1

./unshadow /etc/passwd /etc/shadow > passwd.1

./john passwd.1

./mailer passwd.1

 

만약 john the ripper를 실행할 때 아무런 결과 값이 나오지 않고 멈추어 있는 것처럼 보이는 경우가 있는데, 이는 프로그램이 오작동하는 것이 아니라 쉬운 암호를 사용하는 계정이 없는 것이므로 1-2분여 실행 후 Ctrl+C를 실행하여 멈추면 된다.

 

.

 

 

강사 : 홍석범부매니저  소속: 라쿠텐

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,520 개
  • 현재 접속자 :  229 명