查看openssl版本信息

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

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

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

会要求输入两次秘钥,我这里输的是example
现在有了一个encrypted.bin的文件

接下里尝试使用openssl解密

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

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

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

此命令应返回有关公共和私有指数,模数以及用于优化算法的其他方法和数字的信息。
要加密我们的私钥,我们使用以下代码:

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

最后,我们可以使用我们的密钥加密文件了:
先创建一个待加密的文件,这里我创建了test.txt,内容如下

加密

in参数跟的是待加密的文件,-inkey参数跟的是包含公钥的文件,-out跟的是加密后的文件名
查看加密后的文件名内容,已经无法识别了

尝试解密

查看解密后的文件

又恢复了
接下来,我们演示下如何生成数字签名并进行验证。
使用公钥算法直接签署大文件效率很低,因此我们应首先计算要签名的信息的摘要值。 这可以使用以下命令完成:

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

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

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

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

-inkey后面跟的是公钥,-in后面跟的是上一步生成的签名
将结果与之前计算的摘要进行对比,可以看到这个签名是合法的
介绍完了openssl的一些基本使用之后,我们来看看openssl在CTF中的用武之地,比较典型的题目都是和wireshark结合在一起出的,所以这里以一道该类型的题目为例进行示范。
题目给了一个数据包,使用wireshark打开

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

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

一直查看,出现了公钥

出现了私钥

那么大概思路有了:可以从数据包提取出一个加密过的文件,然后使用私钥解密
所以先把私钥单独保存到private.key

接下来任务就是那么加密过文件了
这里直接采取简单粗暴的办法,使用foremost直接提取

可以看到一个key.txt
在output/zip中解压找到了

查看内容

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

得到flag

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

这里为了方便,需要我们填写的信息直接为空,一路回车就可以
接下来在攻击机上使用openssl建立一个监听端口

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

执行后在靶机回显如图

这时候在靶机上开启wireshark抓包
在靶机上输入id,ifconfig两条命令

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

本文介绍了OpenSSL的基本使用,包括查看版本和可用命令、进行文本加密解密、管理公钥、生成数字签名并验证等。还展示了OpenSSL在CTF中结合Wireshark解题,以及在实际攻防场景中加密反弹shell流量的应用。
1058

被折叠的 条评论
为什么被折叠?



