查看openssl版本信息

openssl 查看pem hash_文件名


查看openssl具体可以使用哪些命令

openssl 查看pem hash_文件名_02


有了上面这两步参考,后面有些文中没有提及的用法也可以自行参照学习了现在来试一下简单的加密,比如想使用AES算法使用CBC模式和256位密钥加密文本“Hello World!”,可以执行以下操作

创建明文文档,写入hello world

openssl 查看pem hash_文件名_03


然后使用openssl,指定模式进行加密

openssl 查看pem hash_版本信息_04


会要求输入两次秘钥,我这里输的是example

现在有了一个encrypted.bin的文件

openssl 查看pem hash_版本信息_05


接下里尝试使用openssl解密

openssl 查看pem hash_目标机_06


注意,pass后面跟的是之前输入的密码,密码正确输入后就得到了解密结果hello world接下来我们演示下如何使用openssl管理公钥,这里我们以最流行的RSA为例

输入以下命令以创建1024位的RSA密钥:

openssl 查看pem hash_openssl 查看pem hash_07


现在生成了一个名为key.pem的文件。正如文件名所示,私钥使用Privacy Enhanced Email(PEM)标准进行编码。 使用cat查看:

openssl 查看pem hash_目标机_08


如果想查看关于密钥生成的详细信息,可以

openssl 查看pem hash_版本信息_09


此命令应返回有关公共和私有指数,模数以及用于优化算法的其他方法和数字的信息。

要加密我们的私钥,我们使用以下代码:

openssl 查看pem hash_文件名_10


密钥文件加密后,系统将提示创建密码,这儿我输入的是test。 接下来,我们可以使用以下命令从文件key.pem中提取公钥

openssl 查看pem hash_文件名_11


最后,我们可以使用我们的密钥加密文件了:

先创建一个待加密的文件,这里我创建了test.txt,内容如下

openssl 查看pem hash_文件名_12


加密

openssl 查看pem hash_目标机_13


in参数跟的是待加密的文件,-inkey参数跟的是包含公钥的文件,-out跟的是加密后的文件名

查看加密后的文件名内容,已经无法识别了

openssl 查看pem hash_版本信息_14


尝试解密

openssl 查看pem hash_目标机_15


查看解密后的文件

openssl 查看pem hash_openssl 查看pem hash_16


又恢复了接下来,我们演示下如何生成数字签名并进行验证。

使用公钥算法直接签署大文件效率很低,因此我们应首先计算要签名的信息的摘要值。 这可以使用以下命令完成:

openssl 查看pem hash_openssl 查看pem hash_17


dgst后面跟的是消息摘要的算法,上图中选的是md5,-out后面跟的是输出的摘要文件名,上图是dige,然后指定要进行消息摘要的文件,上图还是以test.txt为例

生成摘要后,可以查看

openssl 查看pem hash_版本信息_18


下一步是计算摘要值的签名,如下所示:

openssl 查看pem hash_版本信息_19


-In参数后跟的是上一步生成的摘要,-out跟的是输出的签名,-inkey跟的是私钥

查看生成的签名

openssl 查看pem hash_openssl 查看pem hash_20


有了签名,那么怎么判断这个签名是否确实是某人生成的呢,这时候可以用对方的公钥进行验证

openssl 查看pem hash_文件名_21


-inkey后面跟的是公钥,-in后面跟的是上一步生成的签名

将结果与之前计算的摘要进行对比,可以看到这个签名是合法的介绍完了openssl的一些基本使用之后,我们来看看openssl在CTF中的用武之地,比较典型的题目都是和wireshark结合在一起出的,所以这里以一道该类型的题目为例进行示范。

题目给了一个数据包,使用wireshark打开

openssl 查看pem hash_文件名_22


直接跟踪tcp数据流,右键->follow->tcpstream即可

openssl 查看pem hash_目标机_23


在右下角的stream出可以继续看其他的数据流

openssl 查看pem hash_openssl 查看pem hash_24

一直查看,出现了公钥

openssl 查看pem hash_版本信息_25


出现了私钥

openssl 查看pem hash_目标机_26


那么大概思路有了:可以从数据包提取出一个加密过的文件,然后使用私钥解密

所以先把私钥单独保存到private.key

openssl 查看pem hash_文件名_27


接下来任务就是那么加密过文件了

这里直接采取简单粗暴的办法,使用foremost直接提取

openssl 查看pem hash_文件名_28


可以看到一个key.txt

在output/zip中解压找到了

openssl 查看pem hash_openssl 查看pem hash_29


查看内容

openssl 查看pem hash_文件名_30


然后使用之前保存的私钥解密

openssl 查看pem hash_文件名_31


得到flag

openssl 查看pem hash_文件名_32

接下来看看openssl在实际攻防场景中的应用。我们知道openssl可以用于加密流量,而在渗透测试中经常会有反弹shell的步骤,一般情况下反弹shell的流量都是明文的,如果目标机安装了ids之类的设备可能攻击行为一下子就被发现了,这时候我们是不是可以考虑使用openssl加密反弹shell时的流量呢?

我们在攻击机上生成秘钥

openssl 查看pem hash_openssl 查看pem hash_33


这里为了方便,需要我们填写的信息直接为空,一路回车就可以

接下来在攻击机上使用openssl建立一个监听端口

openssl 查看pem hash_目标机_34


下图中左边是攻击机的ip,右边是靶机输入用于反弹shell的命令

openssl 查看pem hash_openssl 查看pem hash_35


执行后在靶机回显如图

openssl 查看pem hash_文件名_36


这时候在靶机上开启wireshark抓包

在靶机上输入id,ifconfig两条命令

openssl 查看pem hash_openssl 查看pem hash_37


此时在wireshark中的流量已经被加密了,无法看到流量的明文信息

openssl 查看pem hash_版本信息_38