申明:本文仅供技术交流,请自觉遵守网络安全相关法律法规,切勿利用文章内的相关技术从事非法活动,如因此产生的一切不良后果与文章作者无关。
0x00 前言
在前段时间的一个项目中,客户单位授权我司团队给他们做一次红队评估,攻击手法不限,可以社工钓鱼。我是后面才加进项目来的,前面大佬们已经通过技术手段给他们找了很多漏洞出来,到后面没啥可打的了,不过为了满足客户要求,我们决定最后给他来一次钓鱼。于是对于钓鱼毫无经验纯小白的我有了第一次的钓鱼体验,虽然手法有些低端,稚嫩,但第一次的体验还是值得记录一下。
0x01 搭建钓鱼平台
我们向公司申请要一台服务器搭建钓鱼平台,公司表示支持,即刻买了一台vps,centos7的,对于平时爱用ubuntu的我突然就有点不太习惯了,钓鱼平台用的gophish。项目地址:https://github.com/gophish/gophish。搭建过程似乎很简单的样子,无脑执行下面的命令就可以:
wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip
unzip gophish-v0.12.1-linux-64bit.zip
cd gophish-v0.12.1-linux-64bit
vim config.json
修改配置文件如下:
{
"admin_server": {
"listen_url": "0.0.0.0:29037", //修改管理后台地址可以远程访问,修改默认端口
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key",
"trusted_origins": []
},
"phish_server": {
"listen_url": "0.0.0.0:443", //钓鱼网站开放的端口
"use_tls": true,
"cert_path": "example.crt", //没有买域名,网站就是ip+端口,默认的就行
"key_path": "example.key"
},
"db_name": "sqlite3", //下面这些默认就行
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "/var/log/gophish/gophish.log", //日志记录,需要先创建目录和文件,否则无法运行。不想记录日志也可以不配
"level": ""
}
}
然后,执行下面命令:
chmod +x gophish
./gophish
此刻,嘴角微微上扬,然后给我报了一个错:
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
纳尼?搜索了一下,应该是glibc版本不太够,系统安装的版本太低了,通过下面的命令查看:
strings /lib64/libc.so.6 |grep GLIBC_
显示出来的是GLIBC_2.2.5
和GLIBC_2.17
,嗯,确实是太低了,安装一个2.28的吧:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
嘴角微微上扬,然后又给我报错:
configure: error:
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.
那就升级gcc和make吧:
# 升级GCC(默认为4 升级为8)
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
# 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
这样应该可以了吧,重新更新glibc:
cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
嘴角微微上扬,人麻了,又报个错:
configure: error:
*** These critical programs are missing or too old: bison
*** Check the INSTALL file for required versions.
bison -v
看下版本,是没找到命令,那就安装一个:
yum insatll bison -y
这下应该没有问题了吧,重新更新glibc:
cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
嘴角微微上扬,嗯,没报错。最后执行
make && make install
等待了好一会,编译安装完成,再次执行:
./gophish
嘴角微微上扬,嗯,就是要这样,畅行运行。
首次运行会生成一个随机密码,访问管理后台:
使用生成的密码成功登陆。
0x02 钓鱼平台使用
关于gophish的使用,网上有很多文章,我这里就不重复写了,给个参考链接:
https://blog.csdn.net/qq_63980959/article/details/136269087。
这里我强调下面两点:
1.配置发送策略(Sending Profiles)时建议配置上Email Headers,默认的很有可能会被放入垃圾邮件;用来发送钓鱼邮件的邮箱同时启用SMTP和POP3。
2.编写钓鱼邮件(Email Templates)时,一定要将钓鱼邮件中钓鱼网站的链接用{{.URL}}替换。在编写钓鱼邮件和制作钓鱼页面(Landing Pages)学会使用下面的模版变量:
0x03 实施钓鱼攻击
大佬通过之前获取的邮箱和收集的密码成功登入了一个邮箱,该邮箱中并没有联系人列表,看之前发的邮件也没有什么有价值的信息,发的都是一些无关紧要的通知。由于目标单位域名后缀的域名比较贵,我们没有买相似域名来搭建邮服钓鱼,打算就利用获取到的这个邮箱来钓鱼。
起初想的邮件内容是”最近有公司同事电脑中了木马,近期发现xx病毒感染,让下载安全工具检查“这类话术,然后附件发个名称为安全检查.exe类似这样的木马,大佬做了免杀,投递没人上线。后面才知道。客户公司员工用的mac电脑(🤣),不过我们也用的mac电脑办公(😏),mac电脑基本裸机,不用考虑免杀的问题,可以做个.app的程序,.dmg映像或者.pkg的包把恶意代码放里面。如何制作让目标上线CS这里不赘述了,给出两个参考链接:
https://www.freebuf.com/articles/web/350592.html
https://www.cnblogs.com/N0r4h/p/15743229.html
反正在我电脑上按照里面的步骤来是有些问题,最终是做了个.dmg。投递之后也没人上线。
按理说发了两次邮件钓鱼,客户那边应该早发现,把邮箱禁用了,然而并没有,邮箱还能继续登。最后在CTO的建议下,转换思路,钓OA账号密码吧。那么文案该怎么弄呢?
我想起之前挂代理登我自己的网易163邮箱的时候,网易发来了一个异国登陆提醒,邮件内容是长这样:
gophish在编写钓鱼邮件时支持HTML,于是我把这个的HTML代码复制粘帖然后修改,最终呈现的效果如图:
邮件的标题是:【安全提醒】OA账号异地登录通知,URL链接显示的是客户单位的OA登陆地址,但点击进去跳到的是钓鱼链接。
收集到的邮箱有二十多个,最终收到两个提交数据,且均能登陆:
0x04 总结
1.钓鱼网站是https://ip,没有使用相似域名,没有证书,稍有安全意识的人一看就知道是有问题的;且真实的网站当你输入的邮箱名错误时是会直接返回邮箱名错误的,但钓鱼网站不会,也容易会被有点安全意识的人发现,所以我会说手法有些low,稚嫩了。
2.URL链接在电脑端上点击跳到的是我们制作的钓鱼网站,但在手机上点击跳到的是客户单位真实的OA登陆地址。如果显示的是文字如“登陆OA”就不会出现这种情况。另外客户单位用的腾讯企业邮箱,这里的文案是网易邮箱的模版,如果当时换用腾讯企业邮箱的模版是不是会更好?
3.这次钓鱼的后续是,客户单位的人很快就反应过来跳转的网站是恶意网站,禁用了我们获取到的那个邮箱,并对收到钓鱼邮件的人进行了访谈,了解情况,而且还对相关资产进行了排查,分析攻击链路。可以说安全做得很好了。
4.这次就是体验了,钓鱼是一种很直接的方式。github上看到一位钓鱼佬(现实生活和网络上的钓鱼佬)的总结:
文章地址:https://github.com/biggerduck/RedTeamNotes/blob/main/2022%E5%A4%A7%E8%B5%9B%E7%BB%93%E6%9D%9F%E8%AF%AD-%E5%86%8D%E8%B0%88%E9%92%93%E9%B1%BC.pdf
如果喜欢小编的文章,记得多多转发,点赞+关注支持一下哦~,您的点赞和支持是我最大的动力~
原文始发于微信公众号(沃克学安全):记钓鱼小白从0到1的钓鱼体验
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论