跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

CIA Hive Beacon基础设施再现23354使用Apache mod_rewrite实现https流量分发

精选回复

发布于

0x00 前言

上一篇文章介绍了使用Apache的mod_rewrite模块实现http流量分发。在此基础上,本文将介绍https流量分配,并对客户端的证书进行判断。如果证书有效,流量将被转发到真实的服务器。

0x01 简介

本文将介绍以下内容:

在Windows系统下配置Apache打开ssl

在Ubuntu系统下配置Apache打开ssl

使用openssl生成证书的方法和难点

Apache双向身份验证的配置

https流量分配的实现过程

0x02 Windows系统下配置Apache开启ssl

1、下载包含openssl的Apache

地址:

http://httpd.apache.org/download.cgi

所选版本,测试版Apache 2.4.33,下载地址:

https://www.apachehaus.com/cgi-bin/download.plx?DLI=Wu wz 1 all ww 00 kej 9 iug 5 uejvlugrvyrdnwzqmw

2、安装

解压缩后,通过命令行安装:

cd \ Apace24 \ bin

httpd -k安装

3、配置httpd.conf

At \ Apace24 \ conf \ httpd.conf

(1)

定位:

# load module SSL _ module modules/mod _ SSL . so

移除#

(2)

定位:

包括conf/extra/httpd-ahsl . conf

SSLRandomSeed启动内置

SSLRandomSeed连接内置

将include conf/extra/httpd-ahsl . conf更改为include conf/extra/httpd-SSL . conf。

注:

httpd-ahsl . conf是Apache自己的ssl配置。默认情况下,会生成可用的私钥和证书(位于\ Apace24 \ conf \ ssl中),或者可以直接修改httpd-ahsl . conf进行配置。

4、配置httpd-ssl.conf

at \ Apache 24 \ conf \ extra \ httpd-SSL . conf。

(1)

定位:

#虚拟主机的常规设置

DocumentRoot '${SRVROOT}/htdocs '

服务器名www.example.com:443

修改为:

#虚拟主机的常规设置

DocumentRoot '${SRVROOT}/htdocs '

服务器名test.com:443

(2)

定位:

SSL certificate file ' $ { SRVROOT }/conf/server . CRT '

修改您自己的证书文件的路径(生成方法将在后面描述)

(3)

定位:

SSLCertificateKeyFile ' $ { SRVROOT }/conf/server . key '

修改您自己的私钥文件的路径(生成方法将在后面描述)

5、重启apache

httpd.exe-k重启

0x03 Ubuntu系统下配置Apache开启ssl

1、安装apache

sudo apt-get安装apache2

2、安装openssl

安装openssl

3、开启Apache SSL模块

a2enmod ssl

4、编辑文件/etc/apache2/sites-enabled/default-ssl.conf

指定私钥文件和签名证书的路径。

SSLEngine on

SSL certificate file/etc/Apache 2/SSL/test . com . CRT

SSL certificate keyfile/etc/Apache 2/SSL/test . com . key

5、启用Apache默认的SSL虚拟主机

a2ensite默认-ssl

6、重启Apache:

sudo /etc/init.d/apache2重新启动

0x04 生成SSL证书的流程

1、客户端生成一对公钥和私钥(.key文件)

2、客户端生成证书请求文件(.csr文件)

将csr文件发送给CA机构进行验证。如果获得批准,CA机构用自己的私钥签署csr文件,生成证书文件(。crt文件),并将其发送给用户,用户使用该证书来证明其身份。

生成方法:

输入:

用户私钥

用户信息

输出:

Csr文件,包括用户公钥和用户信息

3、CA审核请求,生成证书文件(.crt)

一般csr文档都是发给证书颁发机构CA验证的,但是我们可以自己审核,生成一个自签名的证书(可用于测试,但不可信任)。

0x05 使用openssl生成SSL证书

安装Ubuntu后可以直接运行openssl。

缺省情况下,Openssl是在安装Windows Apache之后安装的,位于\Apache24\bin中。

1、常规方法:

(1) 生成2048位的加密私钥

OpenSSL gen RSA-out server . key 2048

(2) 生成证书签名请求

OpenSSL req-新密钥服务器

然后依次填写配置信息,常用名项要对应域名(测试域名为test.com)。

(3) 生成自签名证书

OpenSSL x509-req-days 3650-in server . CSR-sign key server . key-out server . CRT

2、快捷方法:

通过位于以下地址的网站自动生成openssl配置参数:

https://myssl.com/csr_create.html

填写配置信息后自动生成openssl参数,如下图所示

2-1.png

参数如下:

' OpenSSL req-new-sha 256-new key RSA:2048-nodes-keyut test.com.key-out test.com.csr-subj '/C=CN/ST=Shanghai/L=Shanghai/O=11/OU=22/CN=test . com '

生成私钥文件test.com.key和证书签名请求test.com.csr。

然后生成自签名证书:

OpenSSL x509-req-days 3650-在test.com.csr-sign key test.com.key-不在test.com.crt

实际测试:

(1) 修改apache服务器的ssl配置

SSLCertificateFile指向自签名证书的路径(。crt文件)

SSLCertificateKeyFile指向私钥文件的路径(。密钥文件)

重新启动apache服务

(2) 客户端修改hosts文件:

街头流氓服务器互联网协议(互联网协议的缩写)对应test.com

如下图

2-2.png

(3) 客户端将自签名证书安装到受信任的根证书颁发机构

安装后如下图

2-3.png

(4) 客户端访问Apache服务器

访问失败,提示它的安全证书没有指定主题备用名称,如下图

2-4.png

常规方法和快捷方法生成的证书均存在这个问题

3、解决方法

证书缺少主题备用名称SAN(主题别名),需要通过配置文件进行添加

参考资料:

https://support.citrix.com/article/CTX135602_

新建文件req.cnf,内容如下:

[请求]

识别名=请求识别名

x509 _扩展=v3_req

提示=否

[请求标识名]

C=美国

ST=VA

L=某个城市

O=我的公司

OU=MyDivision

CN=test.com

[v3_req]

keyUsage=临界,数字签名,关键协议

extendedKeyUsage=serverAuth

subjectAltName=@ alt _ names

[备用名]

DNS。1=test.com

注:

通信网络(交流网的缩写)和DNS.1都需要设定为域名(测试域名为test.com)

生成私钥和自签名证书:

OpenSSL req-x509-nodes-days 365-新密钥RSA:2048-keyut test . com . key-out test . com . CRT-config req。CNF-沙256

修改街头流氓服务器的安全套接层配置,指定新的私钥文件(test.com.key)和证书文件(test.com.crt),重启街头流氓服务

客户端安装自签名证书文件test.com.crt

访问街头流氓服务器,证书有效,一切正常,如下图

2-5.png

补充:

在未来,openssl有可能支持设置参数DNS.1,相关资料:

https://github.com/openssl/openssl/pull/4986

0x06 规则配置实现https流量分发

1、开启双向认证

服务器验证客户端证书,如果客户端证书有效,客户端才能正常访问网页,否则无法访问

(1) Windows系统

1.生成客户端证书

OpenSSL req-new-sha 256-新密钥RSA:2048-nodes-key out用户。键控用户。' CSR-subj '/C=CN/ST=Shanghai/L=Shanghai/O=11/OU=22/CN=user '

OpenSSL x509-请求-365天-在用户中。CSR-签名密钥用户。键控用户。同  

OpenSSL pkcs12-export-cacerts-in密钥用户。键入用户。CRT输出用户。p12

2.服务器编辑文件\Apache24\conf\extra\httpd-ssl.conf

添加客户端证书的路径,指向user.crt

SSLEngine on

SSL证书文件“$ { SRVROOT }/conf/test。com。CRT '

SSLCertificateKeyFile ' $ { SRVROOT }/conf/test。com。“钥匙”

SSL证书文件“$ { SRVROOT }/conf/user”。CRT '

开启客户端认证:

SSLVerifyClient要求

SSLVerifyDepth 10

3.重启Apache

httpd.exe-k重启

4.客户端安装证书user.p12

访问网页时弹框提示,确认证书后正常访问,如下图

3-1.png

(2) Ubuntu系统

1.生成客户端证书

OpenSSL req-new-sha 256-新密钥RSA:2048-nodes-key out用户。键控用户。' CSR-subj '/C=CN/ST=Shanghai/L=Shanghai/O=11/OU=22/CN=user '

OpenSSL x509-请求-365天-在用户中。CSR-签名密钥用户。键控用户。同  

OpenSSL pkcs12-export-cacerts-in密钥用户。键入用户。CRT输出用户。p12

2.服务器编辑文件/etc/apache2/sites-enabled/default-ssl.conf

指定私钥文件、签名证书和客户端证书的路径

SSLEngine on

SSL证书文件/etc/Apache 2/SSL/test。com。同  

SSL证书密钥文件/etc/Apache 2/SSL/test。com。键

SSL证书密钥文件/etc/Apache 2/SSL/user。同  

开启客户端认证:

SSLVerifyClient要求

SSLVerifyDepth 10

3.重启Apache

sudo /etc/init.d/apache2重新启动

4.客户端安装证书user.p12

正常访问

2、流量转发

配置方法参照上篇文章,本文不再赘述

最终能实现对Https的流量进行判断,如果证书有效,转发到真实服务器

如果证书无效,可选择转发到封面服务器或是不提供服务

0x07 小结

本文介绍了Windows操作系统操作系统系统和人的本质系统下配置Apache https的方法,分享加密套接字协议层证书生成方法和配置过程,在技术研究的角度实现了对Https的流量判断,根据条件进行https流量的分发。

至此,成功实现储备的流量分发功能。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。