1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルスクリプト暗号化ツールshcの詳細説明

2022-01-05 14:58:02

シェルスクリプト暗号化ツールshc

<ブロッククオート

shcは、シェルスクリプトを暗号化するためのツールです。その目的は、シェルスクリプトを実行可能なバイナリファイルに変換することです。

アプリケーションシナリオ

シェルスクリプトによるシステムメンテナンスの自動化は、簡単、便利、かつポータブルです。しかし、シェルスクリプトは読み書き可能であり、ユーザー名、パスワード、パス、IPなどの機密情報を漏洩する可能性があります。

機密情報を含むスクリプトの場合、通常はバイナリプログラムにして、ユーザーにソースコードを見せないようにしたい。この必要性から、通常はshcやgzexeを使うが、個人的にはshcをお勧めする。

shcのインストールと使用

yum -y install shc または apt install shc

適当にスクリプトを書いてみよう

# cat test.sh
#! /bin/bash

echo "this is shc test"

shcで暗号化する

shc -r -v -f test.sh

shc -r -f script-name 注意:-rオプションは必須で、-fの後には暗号化するスクリプトの名前をつけます。

# ls -l
total 36
-rw-r--r-- 1 root root 37 Dec 20 21:48 test.sh
-rwx--x--x 1 root root 11160 Dec 20 21:48 test.sh.x
-rw-r--r-- 1 root root 9433 Dec 20 21:48 test.sh.x.c

暗号化により、2つのファイルが生成されます。
test.sh ソースファイル
test.sh.x 暗号化バイナリファイル
C言語版test.sh.x.cスクリプトのソースコード

暗号化されたファイルを実行する

# . /test.sh.x
this is shc test

shc復号化

現在、対応するunshc復号化プログラムが市場に出ているので、直接githubにアクセスして見てみましょう。

https://github.com/yanncam/UnSHc/
x86 mips armアーキテクチャCPUのサポート
しかし、私のテスト結果では、x86のサポートは最高のはずです、著者は彼自身を維持し、他はサードパーティの個人的なメンテナンスであり、互換性は良くはないです。

 # . /unshc.sh /tmp/test.sh.x -o test.txt
 _____ _ _ _
| | | | / ___| | | |
| | | ___ __ \ `--. | |_| | ___
| | | '_ \ `--. \ _ |/ __|
|_| | | | /__/ / | | | (__
 \___/|_| |_\\____/\___| |_/\___|

--- UnSHc - The shc decrypter.
--- Version: 0.8
------------------------------
UnSHc is used to decrypt script encrypted with SHc
Original idea from Luiz Octavio Duarte (LOD)
Updated and modernized by Yann CAM
- SHc : [http://www.datsi.fi.upm.es/~frosal/]
- UnSHc : [https://www.asafety.fr/unshc-the-shc-decrypter/]
------------------------------

[*] Input file name to decrypt [/tmp/test.sh.x]
[+] Output file name specified [test.txt]
[+] ARC4 address call candidate : [0x400d06]
[*] Extracting each args address and size for the 14 arc4() calls with address [0x400d06]...
	[0] Working with var address at offset [0x602179] (0x2a bytes)
	[1] Working with var address at offset [0x602121] (0x1 bytes)
	[2] Working with var address at offset [0x602319] (0xa bytes)
	[3] Working with var address at offset [0x602170] (0x3 bytes)
	[4] Working with var address at offset [0x6020e0] (0xf bytes)
	[5] Working with var address at offset [0x602141] (0x1 bytes)
	[6] Working with var address at offset [0x602127] (0x16 bytes)
	[7] Working with var address at offset [0x602144] (0x16 bytes)
	[8] Working with var address at offset [0x60215d] (0x13 bytes)
	[9] Working with var address at offset [0x6021ad] (0x1 bytes)
	[10] Working with var address at offset [0x6021ae] (0x1 bytes)
	[11] Working with var address at offset [0x6020f9] (0x26 bytes)
	[12] Working with var address at offset [0x6021b3] (0x13 bytes)
	[13] Working with var address at offset [0x6021c8] (0x13 bytes)
[*] Extracting password...
	[+] PWD address found : [0x6021ec]
	[+] PWD size found : [0x100]
[*] Executing [/tmp/MYoKED] to decrypt [/tmp/test.sh.x]
[*] Retrieving initial source code in [test.txt]
[*] All done!
root@Develop:~/UnSHc-master/latest# cat test.txt
#! /bin/bash

echo "this is shc test"

ソースコードを直接復号することは、x86では非常によくサポートされていることがおわかりいただけると思います。原理はヘッダに4096バイトの文字化けしたコードを追加することです。そして、shcで暗号化されたスクリプトは、実行時のps -efでシェルのソースコードを見ることができます。というわけで、shcはあまり役に立ちません!

以上、シェルスクリプト暗号化ツールshcについて詳しく説明しましたが、シェルスクリプト暗号化ツールについては、Scripting Houseの他の関連記事を参照してください