[shc] 스크립트(shell script) 암호화 리눅스 bash script

shell script를 암호화하는 프로그램이 있구나. shc라는 프로그램인데, shell script 내용을 RC4 알고리즘으로 암호화해서 실행파일로 만들어준다.  

설치 과정은 아래와 같다.

제작자 홈페이지에서 shc 소스코드를 받는다. 또는 아래의 첨부 파일을 받는다.

shc-3.8.9.tgz

최신 버전은 3.8.9이고 파일명은 shc-3.8.9.tgz다. 터미널창에서 아래와 같이 입력한다.

tar -xzvf shc-3.8.9.tgz (압축 해제)
cd shc-3.8.9
mv shc-3.8.9.c shc.c (소스파일 이름을 shc.c로 변경)
make (컴파일)
sudo make install (/usr/local/bin 폴더에 설치)

암호화는 아래와 같이 하면 되겠다. test.sh 파일을 암호화하는 경우이다.

shc -f test.sh

원본 test.sh로부터 test.sh.x 파일이 생기는데, 이 파일이 암호화된 실행파일이다.

특정 날짜 이후엔 사용하지 못하도록 할 수도 있다.

shc -e 23/05/2013 -m "이를 어째! 시간이 만료되었군요!" -f test.sh  (2013년5월23일에 만료)

-e 옵션은 만료 날짜를 일/월/년(dd/mm/yyyy) 형태로 지정하는 것이고 -m 옵션은 만료되었을 때 표시할 문구를 지정하는 것이다. -m 옵션을 생략하면 문구가 "Please contact your provider"로 정해진다.

script 파일의 첫번째 행에 반드시 shell 지정문(#!/bin/bash)이 있어야 한다. script 형태로 실행할 때는 shell을 지정하지 않아도 큰 문제가 없지만, shc로 암호화할 때는 이 지정문이 없으면 실행파일이 생성되지 않는다.

또 한가지, 이러한 방식의 보호가 생각보다 쉽게 무력화될 수 있다는 점에 유의하자. 파일 자체는 암호화되었지만 실행을 하면 아마도 암호가 풀려서 메모리에 올라갈 것 같다. 즉, 메모리를 덤프하면 내용이 그대로 노출될 가능성이 크다.

그러니, shc만 믿고 암호 등 민감한 정보를 script에 포함시켜서 아무한테나 배포하는 일은 절대로 없도록 해야 한다. 단지 내가 만든 shell script를 남에게 배포할 때 수정하기 어렵도록 보호하는 정도라고 생각하는 편이 안전하다.



핑백

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

628349
4728
1719423

ad_widget_2