标签归档:加密

【shell】使用shc工具加密Shell脚本

shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接)。

wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.7.tgz
tar vxf shc-3.8.7.tgz 
cd shc-3.8.7
make test

创建一个测试脚本:

[root@server120 tmp]# cat 1.sh
#!/bin/bash
echo "xxoo"
[root@server120 tmp]# shc-3.8.7/shc -f 1.sh
[root@server120 tmp]# ls 1.sh*
1.sh 1.sh.x 1.sh.x.c

可以看到生成了两个文件1.sh.x 1.sh.x.c,其中1.sh.x为二进制文件,赋予执行权限后,可直接执行。

[root@server120 tmp]# file 1.sh.x
1.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

1.sh.x.c 是c源文件。可以删除。

[root@server120 tmp]# mv 1.sh.x xxoo ;./xxoo
xxoo

HTTPS握手过程

握手过程如下:

只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:

1)SSL客户端通过Client Hello消息将它支持的加密套件(加密算法、密钥交换算法、MAC算法)发送给SSL服务器。

例如第一个Cipher Suite:
密钥交换算法为非对称加密算法RSA
数据使用对称加密算法AES_128_CBC
消息完整性使用HASH算法SHA

2)SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。协商后确认的算法如下图所示

3)SSL服务器将数字证书通过Certificate消息发送给SSL客户端,证书里面包含了网站地址,加密公钥,以及证书的颁发机构。
4)SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
5)SSL客户端验证SSL服务器的证书合法后,如果不合法浏览器会提示。如果合法的话,利用证书中的公钥,SSL客户端随机生成的premaster secret(后续加密数据所需要的对称密钥),并通过Client Key Exchange消息发送给SSL服务器。
6)SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
7)SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
8)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
9)SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

TLS/SSL中使用了非对称加密,对称加密以及HASH算法。
1)非对称加密
SSL客户端收到证书后,获得公钥,然后生成随机数密钥用于后续的信息加密,SSL客户端将随机数秘钥发送给SSL服务器,SSL服务器使用私钥解密,这里用到的就是非对称加密。
2)对称加密。
SSL客户端与SSL服务端使用相同的随机数秘钥加解密,使用的对称加密。
3)HASH算法
验证信息的完整性,使用的HASH算法(MD5或者SHA)。

测试服务器支持的加密套件:
Nmap:

[root@server120 ~]# nmap --script ssl-enum-ciphers -p 443 baidu.com

Starting Nmap 6.47 ( http://nmap.org ) at 2017-08-31 16:28 CST
Nmap scan report for baidu.com (123.125.114.144)
Host is up (0.0028s latency).
Other addresses for baidu.com (not scanned): 220.181.57.217 111.13.101.208
PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   SSLv3: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA - strong

另外还可以访问https://www.ssllabs.com/ssltest/analyze.html

 

 

参考文章:
https://superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers